컴퓨터 시스템 : CSAPP 11장 정리 - 11.1 ~ 11.2
CSAPP 11장은 네트워크 프로그래밍(Network Programming)을 다루며, 도입부에서는 우리가 웹 브라우징, 이메일 전송, 온라인 게임 등을 할 때마다 네트워크 응용 프로그램을 사용하고 있음을 강조한다. 흥미로운 점은 이러한 다양한 네트워크 응용 프로그램들이 모두 동일한 기본 프로그래밍 모델을 기반으로 한다는 것이다. 즉, 구조적으로 유사하며, 같은 프로그래밍 인터페이스(주로 소켓)를 사용한다는 점이다.이러한 네트워크 응용 프로그램들은 이미 시스템 프로그래밍에서 배운 개념들—프로세스, 시그널, 바이트 순서, 메모리 매핑, 동적 메모리 할당 등—에 의존한다. 동시에, 클라이언트-서버 모델이라는 새로운 개념도 습득해야 한다. 마지막에는 이 모든 아이디어를 종합하여 실제 웹 브라우저가 접속 가능한..
- 크래프톤 정글 (컴퓨터 시스템: CSAPP)/11장 네트워크 프로그래밍
- · 2025. 5. 2.
컴퓨터 시스템 : CSAPP 9장 정리 - 9.10 가비지 컬렉터 기초
9.10 가지비 컬렉션 (Garbage Collection)명시적 할당자(예: C의 malloc 패키지)에서는 프로그램이 malloc과 free 호출을 통해 힙 블록을 직접 할당하고 해제한다. 따라서 프로그램이 더 이상 필요 없는 블록을 명시적으로 해제하지 않으면 메모리 누수가 발생한다.예를 들어, 다음과 같은 C 함수가 있다고 가정한다:void garbage() { int *p = (int *)Malloc(15213); return; /* 이 시점에서 p는 쓰레기가 된다 */}이 경우, p는 함수가 끝날 때 더 이상 참조되지 않지만, 개발자가 free(p) 호출을 빠뜨렸기 때문에 이 블록은 프로그램이 종료될 때까지 힙 공간을 차지하게 된다.가지비 컬렉터는 이런 문제를 해결하기 위해 만들어졌다..
- 크래프톤 정글 (컴퓨터 시스템: CSAPP)/9장 가상 메모리
- · 2025. 4. 29.
컴퓨터 시스템 : CSAPP 9장 정리 - 9.9.14 분리 가용 리스트
9.9.14 분리 가용 리스트 (Segregated Free Lists)명시적 가용 시트 문제점 :단일 연결 리스트로 모든 가용 블록을 관리하면, 원하는 크기의 블록을 찾기 위해 모든 블록을 선형 탐색해야 해서 시간이 오래 걸린다.해결책:"분리 저장소 (Segregated Storage)"라는 기법을 사용하여, 크기별로 여러 개의 가용 리스트를 유지한다. 즉, 비슷한 크기의 블록들끼리 따로 모아서 관리하는 것이다.기본 아이디어가능한 블록 크기 전체를 여러 '크기 클래스(size class)'로 나누어 분류한다.예를 들면:{1}, {2}, {3, 4}, {5–8}, ..., {1025–2048}, {2049–4096}, {4097–∞}작은 블록은 세밀하게 구분하고, 큰 블록은 대략적인 크기별로 묶을 수도 ..
- 크래프톤 정글 (컴퓨터 시스템: CSAPP)/9장 가상 메모리
- · 2025. 4. 29.