728x90

71

CSAPP 6.1

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

책/CSAPP 2024.02.09

CSAPP 9.9, 9.11

CSAPP 9.8.8 가용블록의 분할 할당기가 크기가 맞는 가용 블록을 찾은 후에 가용 블록의 어느정도를 할당할지에 대해 정책적 결정을 내려야 한다. 한 가지 옵션은 이 가용 블록 전체를 사용하는 것이다. 비록 간단하고 빠르지만, 큰 단점은 내부 단편화가 생긴다는 것이다. 만일 배치 정책으로 인해 크기가 잘 맞는다면, 일부 추가적인 내부 단편화는 수용할 수도 있다. 그렇지만 크기가 잘 안맞는다면, 할당기는 대개 가용 블록을 두 부분으로 나누게 된다. 첫 번째 부분은 할당한 블록이 되고, 새로운 가용 블록이 된다. 9.9.9 추가적인 힙 메모리 획득하기 할당기가 요청한 블록을 찾을 수 없다면, 메모리에서 물리적으로 인접한 가용 블록들을 합쳐서(연결해서) 더 큰 가용 블록을 만들어 본다. 이렇게 해도 충분히..

책/CSAPP 2024.02.07

CSAPP 8.1.2 - 8.1.3, 8.5 - 8.5.4

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

책/CSAPP 2024.02.04

CSAPP 8.1, 8.1.1

CSAPP 8.1 예외상황 예외 상황은 부분적으로는 하드웨어와 운영체제에 의해서 구현된 예외적인 제어흐름의 한 가지 형태다. 예외상황은 어떤 프로세서 상태의 변화에 대한 대응으로, 제어 흐름의 갑작스런 변화다. 예를 들어, 가상 메모리 페이지 오류, 산술 오버플로우가 발생하거나 어떤 인스트럭션이 divide by zero를 시도하는 경우다. 프로세서가 이벤트가 발생했다는 것을 감지하면, 예외 테이블 이라고 하는 점프 테이블을 통해서 이 특정 종류의 이벤트를 처리하기 위해 특별히 설계된 운영체제 서브루틴(예외처리 핸들러)으로 간접 프로시저 콜을 하게 된다. 예외 처리 핸들러가 처리를 끝 마치면, 예외상황을 발생 시킨 이벤트의 종류에 따라서 다음과 같은 세 가지 중의 한 가지 일이 발생한다. 핸들러는 제어를..

책/CSAPP 2024.02.04

CSAPP 7.4, 7.9, 8

CSAPP 7.4 재배치 가능한 목적파일 컴파일 파이프라인에서 어셈블리 단계의 결과물 C 언어 프로젝트의 임시 결과물로 간주, 이후 최종 결과물을 만드는 주 재료다. 링커가 수행하는 과정에서 비롯된다. 링커는 재배치 가능한 목적 파일 여러개를 모아서 더 큰 목적파일을 형성하는데, 하나의 재배치 가능한 목적 파일에서 나타나는 기계 수준의 명령어는 다른 재배치 가능한 목적 파일에서 나온 기계 수준의 명령어 다음에 위치한다. (즉, 명령어가 이동할 수 있거나 재배치 가능하다는 점을 의미한다) 따라서, 재배치 가능한 목적 파일에서 명령어는 주소를 갖지 않는다. 링크 단계를 거치고나서 명령어는 주소를 갖는다. 7.9 실행 가능 목적 파일의 로딩 실행 가능 목적파일 prog를 실행하기 위해서, 리눅스 쉘의 명령줄에..

책/CSAPP 2024.02.03

CSAPP 7, 7.1, 7.4

CSAPP 7. 링커Linking 링킹(linking)은 여러개의 코드와 데이터를 모아서 연결하여 메모리에 로드 될 수 있고 실행 될 수 있는 한 개의 파일로 만드는 작업이다. 링킹은 컴파일 시에 수행 할 수 있으며, 이때 소스코드는 머신코드로 번역된다. 프로그램이 메모리에 로드되고, 로더에 의해서 실행될 때는 로드타임에 응용 프로그램에 의해서 심지어 실행시에도 수행될 수 있다. 링커는 독립적인 컴파일을 가능하게 한다. 큰 규모의 응용 프로그램을 한 개의 소스 파일로 구성하는 대신 별도로 수정할 수 있고, 컴파일 할 수 있는 보다 관리할 만한 규모의 더 작은 모듈들로 나눌 수 있다. 이 모듈 중에 한 개를 변경할 때, 이 파일만을 간단히 재 컴파일하고 다른 파일들을 재 컴파일할 필요 없이 이 응용을 다시..

책/CSAPP 2024.02.02

CSAPP 9.9.4 - 9.9.7

9.9.4 단편화 나븐 힙 이용도의 주요 이유는 단편화라고 알려진 현상이다. 이것은 가용 메모리가 할당 요청을 만족시키기에는 가용하지 않았을 때 일어난다. 단편화에는 두 종류의 단편화가 있다. 내부 단편화 할당된 블록이 데이터 자체보다 더 클때 일어난다. 이것은 여러가지 이유로 일어날 수 있다. 예를 들어, 할당기의 구현이 요청한 데이터 보다 더 큰 할당된 블록들에 최소 크기를 부여할 수도 있다. 할당기는 정렬 제한사항을 만족시키기 위해서 블록의 크기를 증가시킬 수도 있다. 내부 단편화는 정량화 시키기가 간단하다 이것은 단순히 할당된 블록의 크기와 이들의 데이터 차이의 합이다. 그래서 시간 상 어디서든 내부 단편화의 양은 이전에 요청한 패턴과 할당기 구현에만 의존한다. 외부 단편화 할당 요청을 만족시킬 ..

책/CSAPP 2024.01.31

CSAPP 9.8 - 9.9.3

CSAPP 9.8 메모리 매핑 리눅스는 가상 메모리 영역의 내용을 디스크의 객체에 연결해서 초기화 한다. 이 과정은 메모리 매핑이라고 알려져 있다. 영역들은 다음 두 종류의 객체 중의 하나로 매핑 될 수 있다. 리눅스 파일 시스템 내의 일반파일 : 한 영역은 실행 가능 목적파일과 같은 일반 디스크 파일의 연속적인 섹션으로 매핑 될 수 있다. 파일 섹션은 페이지 크기의 조각들로 나누어지고, 이들은 각각 가상페이지의 초기 내용을 포함하고 있다. 요구 페이징 때문에 CPU가 처음 페이지에 접근할 때(즉, 페이지의 주소공간의 영역내에 들어가는 가상주소를 만들어 내는)까지는 이 가상 페이지들 중 아무것도 실제로 물리 메모리로 스왑되어 들어오지 않는다. 만일 이 영역이 파일섹션보다 더 크다면, 이 영역은 0으로 패..

책/CSAPP 2024.01.30

CSAPP 9.6 - 9.7

9.6 주소의 번역 주소 번역은 N원소 가상주소 공간(Virtual Address Space : VAS)과 M - 원소 물리주소 공간(Physical Address Space : PAS)의 원소들 간의 매핑이다. MAP : VAS → PAS U Ø MAP(A) A’ : 가상 주소 A의 데이터가 PAS의 물리주소 A’에 존재한다면 Ø : 가상 주소 A의 데이터가 PAS의 물리메모리에 존재하지 않다면 CPU내에 있는 제어 레지스터인 페이지 테이블 베이스 레지스터(Page table base register : PTBR)는 현재 페이지테이블을 가리킨다. n 비트 가상주소는 두 개의 컴포넌트를 가진다. p비트 가상페이지 오프셋(virtual page offset : VPO)과 (n-p) 비트 가상페이지 번호(v..

책/CSAPP 2024.01.29

CSAPP 9-9.5

24.01.28 CSAPP CSAPP 9 가상메모리 한 시스템의 프로세스들은 CPU와 메인메모리를 다른 프로세스들과 공유한다. 메모리를 보다 효율적이고 더 적은 에러를 갖도록 관리하기 위해서 현대의 시스템은 가상메모리 VM이라고 알려진 메인메모리의 추상화를 제공한다. 가상메모리는 각 프로세스에 하나의 크고 통합된 사적 주소공간을 제공한다. 이것은 하드웨어 예외, 하드웨어 주소번역, 메인메모리, 디스크파일, 커널 소프트웨어들 사이의 상호작용이다. 가상메모리는 한 개의 깔끔한 매커니즘을 사용해 세 주요 기능을 제공한다. 메인메모리를 디스크에 저장 된 주소공간에 대한 캐시로 취급해서 메인메모리내 활성화 영역만 유지하고, 데이터를 디스크와 메모리간에 필요에 따라 전송하는 방법으로 메인 메모리를 효율적으로 사용한..

책/CSAPP 2024.01.28
728x90