분류 전체보기

    [CSAPP] 8.3 System Call Error Handling (시스템 콜 에러 처리)

    8.3 System Call Error Handling (시스템 콜 에러 처리) Unix system-level 함수들은 에러를 마주칠 때 다음과 같은 동작을 수행한다. -1을 리턴한다. 전역 정수형 변수인 errno를 설정한다. 아래의 코드를 살펴보자. 이와 같이 -1을 check하고 strerror함수를 통해 errno 변수도 체크하고 있다. 하지만 이러한 error-handling 방식은 가독성 때문에 보통 포기하고 있다. 이 장에서는 가독성도 챙기면서 에러 핸들링을 하는 방식을 간략하게 살펴볼 것. Fork 함수 wrapper 함수이다. (앞의 글자만 대문자로 하고 있음) 여기서 원 함수 fork를 호출, 그리고 error 핸들링, 그리고 fork의 반환값을 반환하는 과정을 수행한다. 또한 문제가..

    [CSAPP] 8.2 Processes (프로세스)

    8.2 Processes (프로세스) Exception은 OS kernel에서 process라는 개념을 제공하기 위한 가장 기본적인 building block이다. Modern system에서의 프로그램 프로그램을 실행시키면, 마치 processor와 memory를 독접적으로 사용하고 있는 것처럼 보인다. 이러한 환상은 process라는 개념에 의해 우리에게 제공된다. precess란 전통적으로 process의 정의는 an instance of a program in execution 이다. 각 프로그램들은 context 안에서 실행된다. context란? 프로그램이 정상적으로 실행하는 데에 필요로 하는 상태들로 구성된다. memory상의 program의 code와 data stack, general p..

    [CSAPP] 9.3 VM as a Tool for Caching(캐싱 도구로서의 VM)

    9.3 VM as a Tool for Caching(캐싱 도구로서의 VM) 결론짓자면, VM은 디스크에 저장된 N개의 바이트 크기의 셀 배열로 구성됨. 각 바이트는 특정 가상주소를 가지며, 배열의 인덱스로 작용함. 디스크 안의 배열 정보는 메인 메모리에 캐시됨. 메모리 계층구조 안에 있는 캐시는 블록 단위로 분할되며, 디스크와 메인 메모리 사이의 징검다리 역할을 해줌. VM system은 가상메모리를 규정된 사이즈 블록 단위로 분할하여 관리함. 이 분할된 블록을 가상페이지라고 부른다. 각 가상 페이지는 $P = 2^p$바이트의 크기를 가짐. 물리 메모리도 물리 페이지로 분할되어 사용된다. 가상페이지의 집합은 세개의 독립된 부분집합으로 이루어진다. Unallocated : VM 시스템에 의해 아직까지 할당..

    [CSAPP] 9.2 Address Spaces(주소 공간)

    9.2 Address Spaces(주소 공간) 주소공간(Address Spaces)는 음수가 아닌 정수 주소의 정렬된 집합이다. 만일 주소공간의 정수가 연속적이라면, 그 공간은 선형주소공간(Linear address space)라고 한다. 여기에서는 문제를 간단히 정의하기 위해 언제나 주소공간이 선형주소공간의 성격을 띈다고 가정한다. 가상메모리를 갖는 시스템에서 CPU는 Virtual Adress Space라 불리는 N=2^n주소의 주소공간에서 가상의 주소를 생성한다. 주소공간의 크기는 가장 큰 주소를 표시하는데 필요한 비트 수로 나타낸다. 예를 들어. N=2^n 주소를 갖는 가상 주소공간은 n비트 주소공간이라 부른다. 현대 시스템은 32비트 또는 64비트 가상 주소공간을 지원한다. 컴퓨터 시스템은 이 ..

    [CSAPP] 9.1 Physical and Virtual Addressing(물리 및 가상주소 방식)

    9.1 Physical and Virtual Addressing(물리 및 가상주소 방식) 컴퓨터 시스템의 메인 메모리는 M개의 연속적인 바이트 크기 셀의 배열로 구성된다. 각 바이트는 고유의 물리 주소(PA)를 가진다. 첫번째 바이트는 주소0 두번째는 1… CPU가 메모리에 접근하는 가장 자연스러운 방식은 물리 주소를 사용하는 것이며, 이를 물리 주소 방식이라고 부른다. 초기 PC는 물리 주소방식을 사용하였으며 일부 시스템에서는 이 방식을 계속해서 사용하고 있다. 그러나 현대의 프로세스들은 가상주소방식이라는 형태를 사용한다. CPU가 가상주소를 생성해서 메인 메모리에 접근하면, 이 주소는 메모리로 보내지기 전에 적절한 물리 주소로 변환된다. 가상주소를 물리 주소로 변환하는 작업은 주소 번역이라고 한다. ..