CS:APP - 가상 메모리 1

현대 시스템은 가상 메모리(Virtual memory). VM이라고 알려진 메인 메모리의 추상화를 제공한다. 1. 가상 메모리를 왜 공부해야 하는가 가상 메모리는 중요하다. 가 [Read More]

CS:APP - 예외적인 제어흐름, 비지역성 점프

1. 비지역성 점프(Nonlocal jumps) C는 setjmp와 longjmp 함수를 제공한다. #include <setjmp.h> int setjmp(jmp_buf env); int sigsetjmp(sigjmp_buf env, int savesigs); // Returns: 0 from setjmp, nonzero from longjmps setjmp 함수는 현재 '호출하는 환경'을 env 버 [Read More]

CS:APP - 예외적인 제어흐름, 시그널 2

이 글에서는 동시성을 다룬다. 1. 시그널 블록, 블록 해제 묵시적 블록 방법 커널은 핸들러에 의해 처리되고 있는 모든 대기 시그널의 처리를 막는다. 명시적 블록 방법 si [Read More]

CS:APP - 예외적인 제어흐름, 시그널 1

Signal! 시그널은 작은 메시지 형태로, 프로세스에게 시스탬 내에 어떤 종류의 이벤트가 일어났다는 것을 알려준다. 먼저 man 7 signal을 통해 시그널에 어떤 종류가 있는 [Read More]

CS:APP - 예외적인 제어흐름, 프로세스

이 글은 프로세스에 대해 정리한 글이다. 먼저 프로세스에 대한 정보 두 가지를 언급한다. 첫번째 프로세스(process)는 프로그램(program)의 인스 [Read More]

CS:APP - 예외적인 제어흐름, 예외 상황

1. 예외적인 제어흐름 (Exceptional Control Flow) 프로그램 카운터(program counter)는 아래와 같이 연속된 값들을 가정한다. \[ a_0, a_1, ..., a_{n-1} \] 인스트럭션 \(I_k\) [Read More]

CS:APP - 링킹 2

이번 글에서는 실행 파일, 라이브러리 링크, 라이브러리 삽입에 대해 정리한다. 1. 실행 가능한 목적 파일 실행 가능한 목적 파일은 완전히 링크된 상태이기 때문에 .rel 섹션 [Read More]

CS:APP - 링킹 1

리눅스와 ELF-64 포맷 기준. 1. 컴파일러 드라이버 gcc와 같은 컴파일러 드라이버(Compiler driver)는 필요에 따라 전처리기, 컴파일러, 어셈블러, [Read More]

CS:APP - 캐시 메모리

오늘은 캐시 메모리에 대해 정리. 짧게짧게 정리함. 1. cache hit, cache miss 찾으려는 데이터가 이미 캐시돼있다면 cache hit이 발생한다. 즉 메인 메모리를 거치지 않고 빠르게 데이 [Read More]