메모리 할당(Memory Allocation)
- 가상 메모리는 실제 메모리(Physical Memory)에 올라와 있지 않기 때문에 실제 메모리(RAM)에 올려서 CPU가 연산을 실행할 수 있게 하는 작업이 필요.
- 이 과정을 메모리 할당이라고 한다.
- 실제 메모리에 올라가면 그 때 물리적 주소(Pysical Address)가 생긴다.
1. 연속메모리 할당
- 프로세스를 하나의 덩어리로 프로세스 전체를 실제 메모리에 할당함.
- 전체를 다 올리기 때문에 가상메모리가 안 쓰임.
1-1. 고정크기할당
- 메모리(physcial memory)를 일정 크기로 나눠서 각 프로세스가 하나의 파티션에 할당됨.
- 크기가 작은 프로세스가 하나의 파티션에 할당되면 메모리 공간이 남는(hole) 낭비 발생. (내부 단편화)
- 크기가 큰 프로세스는 실행이 안됨.
1-2. 가변크기할당
- 각 프로세스의 크기에 맞춰 메모리를 할당.
- 하나의 파티션의 크기 = 하나의 프로세스의 크기
- 각 프로세스 사이의 남는 공간이 생겨서 메모리 낭비 발생. (외부 단편화)
2. 비연속메모리할당
- 하나의 프로세스를 나눠서 나눈 것 하나하나를 실제 메모리(RAM)에 할당.
- 프로세스 안의 모든 조각이 RAM에 올라가는 것이 아니라 cpu가 접근하려는 데이터, 그리고 공간지역성/시간지역성에 따라 필요한 조각들만 할당 됨.
- 프로세스를 나누는 기준에 따라 세그멘테이션과 페이징으로 나뉜다.
2-1. 세그멘테이션
- 의미단위로 프로세스를 분할.
- 메모리(RAM)는 안나눠져 있음.
- 세그먼트 테이블에 의해서 논리주소가 물리주소로 변환 됨.
- 내부단편화 無, 외부단편화 有
2-2. 페이징
- 일정크기로 물리메모리와 가상메모리를 분할 함.
- 물리메모리의 분할 1 = 프레임, 가상메모리의 분할 1 = 페이지
- 페이지 테이블에 의해 가상주소가 물리 주소로 변환됨.
- 내부단편화 有, 외부단편화 無
'Study Output for Myself > Computer Science' 카테고리의 다른 글
[CS]스레드와 멀티스레딩 (0) | 2022.08.19 |
---|---|
[CS]원시값과 객체의 메모리 저장 (0) | 2022.07.25 |
[CS]가상메모리 (0) | 2022.07.21 |
[CS]프로그래시브 랜더링이란? (0) | 2022.05.30 |
[CS] 쿠키, 세션 (0) | 2022.05.25 |