728x90

크래프톤정글 65

크래프톤 정글 - 5-1Week 24.02.08 - 24.02.14 부제 : 설날과 CSAPP

회고 설날이 껴 있어서 1박2일 전주에 내려갔다 왔다. 오랜만에 가족, 친척을 봐서 좋았지만 내심 이렇게 2일동안 뒤쳐지는게 아닐까 하고 생각을 하기도 했다. 참 무서운 곳이다 정글은. 설날이 껴있기에 정글도 5주차를 2주동안 진행해서 5-1과 5-2로 나누도록 하겠다. 5-1주차에는 CSAPP에 집중하려고 노력했다. 일단 책의 범위도 많고, 한번 할 때 완벽하게는 당연히 못하지만 꼼꼼하게 잘 읽어놓으면 다음에 무조건 도움이 될 것이라고 생각해서 하루에 한 챕터씩 끝내려고 노력했다. 정말 힘들었지만 그래도 CSAPP와 조금 더 친해진 느낌이 든다. 미래의 일이나 여러가지 고민이 점점 많아지는 것 같다. 내가 잘하고 있다고는 생각하지만 이게 언제까지 일지도 잘 모르겠고, 앞으로 잘 해낼 수 있을까도 음 사..

24.02.14 간단한 정리, 백준, C++, Keyword

간단한 정리 6장 정리 6.1.1 랜덤 - 접근 메모리(RAM : Random Access Memory) 동적(DRAM) : 메인메모리, 그래픽 시스템의 프레임버퍼 정적(SRAM) : 캐시메모리 정적RAM(SRAM) 각 비트를 이중안전(bistable) 메모리 셀에 저장 두 가지 상태외 다른 상태들은 모두 불안정하다. - 역진자와 유사하다. 동적RAM(DRAM) 각 비트를 전하로 캐패시터에 저장 외란에 민감하다. DRAM 칩 내의 셀들은 슈퍼셀들로 나누어지며 각각은 DRAM셀들로 이루어진다. 슈퍼셀은 직사각형 배열이다. 정보는 pin이라고 부르는 외부 커넥터를 통해 칩의 안과 밖을 흘러 다닌다. 일반DRAM 슈퍼셀(i,j)의 내용을 읽으려면 메모리 컨트롤러는 행 주소i를 DRAM에 보내고, 다음에 열 주..

24.02.13 CSAPP 9

CSAPP 9. 가상 메모리 메모리를 보다 효율적이고 더 적은 에러를 갖도록 관리하기 위해서 현대의 시스템은 가상메모리(VM : Virtual Memory)이라고 알려진 메인 메모리 추상화를 제공한다. 가상 메모리는 한 개의 깔끔한 메커니즘을 사용해서 세 개의 중요한 기능을 제공한다. 메인 메모리를 디스크에 저장된 주소공간에 대한 캐시로 취급해서 메인 메모리 내 활성화 영역만 유지하고, 데이터를 디스크와 메모리안에 필요에 따라 전송하는 방법으로 메인 메모리를 효율적으로 사용한다. 각 프로세스에 통일된 주소공간을 제공함으로써 메모리 관리를 단순화한다. 각 프로세스의 주소공간을 다른 프로세스에 의한 손상으로부터 보호한다. 9.1 물리 및 가상주소 방식 컴퓨터 시스템의 메인메모리는 M개의 연속적인 바이트 크기..

24.02.12 CSAPP 8, Stack & Queue 구현

CSAPP 8. 예외적인 제어흐름 시스템들은 또한 내부 프로그램 변수에 의해 표시되지 않으며, 프로그램의 실행과는 반드시 관련되어 있지 않은 시스템 상태의 변화에도 반응할 수 있어야 한다. 급격한 변화를 예외적인 제어흐름이라고 부른다. 예외적인 제어흐름은 컴퓨터 시스템의 모든 수준에서 발생한다. 8.1 예외 상황 예외 상황은 부분적으로는 하드웨어와 운영체제에 의해서 구현된 예외적인 제어흐름의 한 가지 형태다. 예외 상황은 어떤 프로세서 상태의 변화에 대한 대응으로, 제어흐름의 갑작스런 변화다. 프로세서가 이벤트가 발생했다는 것을 감지하면, 예외 테이블이라고 하는 점프 테이블을 통해서 이 특정 종류의 이벤트를 처리하기 위해 특별히 설계 된 운영체제 서브루틴(예외처리 핸들러)으로 간접 프로시저 콜을 하게된다..

24.02.11 CSAPP 6.1.2 - 6, LinkedList 구현

CSAPP 6.1.2 디스크 저장장치 디스크의 구조 디스크는 원판(platter)로 구성된다. 각 원판들은 두개의 옆면 즉 표면으로 이루어져 있으며, 이들은 자성을 띤 기억 물질로 코팅 되어 있다. 원판의 중심부에 있는 회적하는 축(spindle)은 원판을 고정된 회전율로 돌려주며, 이 비율은 대개 분당 5,400 에서 15,000번 회전하는 비율(RPM)을 갖는다. 디스크는 일반적으로 밀봉된 저장기에 들어있는 한 개 이상의 원판들을 가진다. 디스크의 각 표면은 트랙이라고 하는 여러개의 동심원들로 이루어져있다. 각 트랙은 섹터들의 집합으로 나누어진다. 각 섹터는 섹터위에 자성물질로 인코딩 된 동일한 수의 데이터 비트(일반적으로 512바이트)를 가진다. 섹터들은 아무 데이터도 기록되지 않은 갭으로 분리되어..

24.02.08 CSAPP 6.1

CSAPP 6. 메모리 계층구조 메모리 시스템은 여러가지 용량, 비용, 접근 시간을 갖는 저장장치들의 계층구조다. CPU 레지스터들은 가장 자주 이용하는 데이터를 보관한다. 작고 빠른 캐시 메모리는 CPU부근에서 비교적 느린 메인메모리에 저장된 데이터와 인스트럭션들의 부분집합에 대한 준비장소로 사용된다. 메인메모리는 크고 느린 디스크들에 저장된 데이터를 준비하는데 사용되고, 다시 이 디스크들은 네트워크로 연결된 다른 머신들의 디스크나 테이프에 저장된 데이터를 위한 준비장소로 사용된다. 메모리 계층구조는 잘 작성된 프로그램이 어느 특정 수준의 저장장치를 다음 하위 수준의 저장장치보다 좀 더 자주 접근하는 경향을 갖기 때문에 작동하다. 그래서 다음 수준에 있는 저장장치는 더 느릴 수 있으며, 비트당 크기도 ..

크래프톤 정글 - 4Week 24.02.01 - 24.02.07

회고 4주차부터는 c언어가 시작됐고, rb트리 구현이 과제로 주어졌다. 아에 처음은 아니지만 python을 계속 써와서 다시 적응하는데 좀 시간이 걸렸다. 레드블랙 트리를 이해하고 구현하는데 좀 시간을 많이 사용했는데, 구현부분에서는 예림님과 재희님이 큰 도움을 주셔서 편하게 할 수 있었다. 뭔가 뭔가 더 잘할 수 있을 것 같은데 약간약간이 아쉬운 것 같다. 조금만 더 힘내봅시다룽 이제 5주차가 시작하고 설날 연휴가 껴있어서 생각보다 길게 진행이 된다. 쳐지지 않고 이 익스텐션을 잘 유지하면서 공부해보자 CSAPP 7. 링커 Linking 링킹(linking)은 여러개의 코드와 데이터를 모아서 연결하여 메모리에 로드 될 수 있고 실행 될 수 있는 한 개의 파일로 만드는 작업이다. 링킹은 컴파일 시에 수행..

24.02.07 C & C++

C & C++ 선언(declaration)과 정의(definition) 프로그래밍에서 선언(declaration)과 정의(definition)는 명백히 다른 역할을 하지만 혼동하여 사용하기 쉽다. 선언과 정의의 가장 큰 차이는 ‘메모리를 할당하는가’ 이다. 메모리를 할당하지 않고, 대상의 이름만 알려준다면 선언이고 대상의 메모리가 할당된다면 그것은 정의다. 선언 컴파일러가 참조할 식별자(identifier)와 이름을 알립니다. 식별자란 변수의 타입과 함수의 인수목록을 뜻하며 이름은 변수, 함수, 클래스의 이름, 네임 스페이스를 뜻합니다. 정의 정의는 식별자와 이름으로부터 코드를 생성하여, 함수가 호출되거나 변수를 사용할 때 생성된 코드를 참조한다. 정의는 고유 사양으로 프로그램에는 정의가 하나만 있어야 ..

24.02.05 CSAPP 8.55, RB트리 구현

CSAPP 8.5.5 시그널 핸들러 작성하기 핸들러는 이해하기 어렵게 만드는 몇 가지 특성을 가진다. 핸들러는 메인프로그램과 동시적으로 돌아가고, 같은 전역변수를 공유하며, 그래서 메인 프로그램과 다른 핸들러들과 뒤섞일 수 있다. 어떻게 그리고 언제 시그널들이 수신 될 수 있는지는 종종 직관적이지 않다. 다른 시스템들은 다른 시그널 처리 방식을 갖는다. 안전한 시그널 처리 G0 핸들러는 가능한 한 간단하게 유지하라. 문제를 피하는 최상의 방법은 핸들러를 작고 단순하게 유지하는 것이다. G1 핸들러에서 비동시성-시그널-안전한 함수만 호출하라. 비동기성-시그널-안전한 또는 단순히 안전한 함수는 그것이 재진입 가능하거나 어떤 시그널 핸들러에 의해 중단 될 수 없기 때문에 어떤 시그널 핸들러로 부터 안전하게 호..

24.02.04 CSAPP 8.1.2 - 8.1.3, 8.5 - 8.5.4, C & C++

CSAPP 8.1.2 예외의 종류 예외상황은 네 가지 종류로 구분 할 수 있다. 인터럽트 트랩 오류 Fault 중단 abort 인터럽트 인터럽트는 프로세서 외부에 있는 입출력 디바이스로부터 시그널의 결과로 비동기적으로 발생한다. 하드웨어 인터럽트는 비동기적이며, 즉 특정 인스트럭션을 실행해서 발생하는 것이 아니라는 의미에서 그렇다. 하드웨어 인터럽트를 위한 예외 핸들러는 종종 인터럽트 핸들러 라고 부른다. 네트워크 어댑터, 디스크 컨트롤러, 타이머 칩 같은 입출력 디바이스들은 프로세서 칩의 핀에 시그널을 보내서 인터럽트를 발생시키고, 인터럽트를 발생시킨 디바이스를 식별하는 예외번호를 시스템 버스에 보낸다. 현재의 인스트럭션이 실행을 완료한 후에, 프로세서는 인터럽트 핀이 high로 올라갔다는 것을 발견하..

728x90