Computer Science
[CSAPP] 4.1 The Y86-64 Instruction Set Architecture
학습 주제 Processor 설계를 학습해야 하는 이유와 더불어서 살펴볼 Y86-64 ISA에 대해 살펴볼 예정이다. 정리한 내용 개요 지금까지는 machine-level program 수준으로만 computer-system을 살펴봤었다. 지금 chapter에서는 processor 하드웨어의 설계를 간략히 봐볼 것이다. 왜 하드웨어 설계를 학습해야 할까? 지적으로 흥미롭고(intellectually interesting) 중요한 것이기 때문. 동작이 어떻게 돌아가는지 배우는 것에는 본질적인 가치가 있다. 전반적인 Computer System이 어떻게 동작하는지를 이해 가능. Chapter6에서 나올 memory system을 위해, processor-memory간의 interface를 중점으로 봐도 좋음..
[CSAPP] 9.7 Case Study: The Intel Core i7 / Linux Memory System
9.7 Case Study: The Intel Core i7 / Linux Memory System Linux 실행하는 Intel Core i7에 대해서 case study하면서 virtual memory mechanisms에 대해서 보자. Haswell microarchitecture는 64bit virtual, physical address space를 허용한다. 하지만 현재 Core i7은 48bit virtual address space와 52bit physical address space를 지원한다. 그리고 compatibility mode는 32bit virtual, physical address space를 지원한다. 아래 그림은 Core i7 memory system을 보여준다. 가장 바깥..
[CSAPP] 9.8 Memory Mapping (메모리 맵핑)
9.8 Memory Mapping Linux는 disk에 있는 어떠한 object를 매핑함으로써 virtual memory 영역을 초기화 할 수 있는데, 이러한 기법을 memory mapping이라고 한다. 매핑되는 obejct로는 다음 두가지가 있다. Regular file(in the Linux file system) virtual memory 영역은 executable object file과 같은, 연속적인 section의 regular disk file에 mapping 될 수 있다. 각 file section들은 page크기로 나눠지고 각 나눠진 조각들은 virtual mameory를 이루는 virtual page들 각각의 초기 값이 된다. demand paging으로 인해, 이 virtual p..
[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..