Chap.10 memory allocate

oneju·2023년 5월 18일
0

CSAPP

목록 보기
4/4

가상 메모리

메인 메모리에서 cpu에 가상 주소를 보내면 CPU 는 MMU(Memory Manage Unit) 라는 하드웨어에 주소를 전달한다

여기서 MMU는 전달받은 가상 주소를 메인 메모리 안에 존재하는 페이지 테이블에서 찾아 물리 주소로 바꿔서 캐시에 전달하고 상태를 확인한다

만약 cached 라면, 그것이 CACHE HIT !

uncached 상태라면 CACHE MISS 로 버스를 타고 메인 메모리에서 데이터를 가져오면 된다.

동적 메모리 할당

malloc : (memory allocate) 힙 영역에 동적으로 메모리를 할당하는 함수

free : 할당된 메모리를 해제하는 함수

realloc : (re-allocate) 이미 할당한 공간에 크기를 재조정하는 함수

명시적 할당기

명시 : 글로 분명하게 드러내 보이다.
묵시 : 은연 중에 뜻을 나타내 보이다.

1. Implicit Free List
: 묵시적 가용 리스트를 이용해서 명시적 할당기를 구현하는 방법
heap 영역에서 블록들을 순차적으로 확인해가며 조건에 맞는 가용 블록을 찾으면 그 곳에 블록을 삽입하는 방식

2. Explicit Free List
: 명시적 가용 리스트를 이용해서 명시적 할당기를 구현하는 방법
가용 블록들 끼리 연결 시킨 후 successor로 이동해 가며 조건에 맞는 가용 블록에 블록을 삽입하는 방식

3. Segregated List : 분리된 리스트
명시적 가용 리스트와 같이 가용 블럭끼리 연결 시키지만, 블록의 크기를 기준으로 (주로 2n2^n을 기준으로 사용한다.) 리스트의 집합을 달리해 적합한 위치를 더 빠르게 찾을 수 있다.

find - fit

fit 한 가용 블록을 찾는 함수로 first-fit, next-fit, best-fit, worst-fit 4가지 방법이 있다.
1. first-fit
: 처음부터 끝까지 이동해가면서 블록이 들어갈 수 있다면 탐색 완
2. next-fit
: 마지막으로 블록이 들어간 위치를 저장해 둔 후, 그 다음 위치부터 탐색 → 만약 끝까지 탐색했는데 맞는 위치를 찾을 수 없다면, 처음부터 다시 탐색
3. best-fit
: 처음부터 끝까지 탐색을 하면서 블록이 들어갈 수 있는 가용 블록들 중 크기가 가장 작은 블록 반환
4. worst-fit
: best-fit 과 반대의 개념, 크기가 가장 큰 블록 반환

profile
hello, world

0개의 댓글