Study Output for Myself/Computer Science
[CS]메모리 할당
Dahyee
2022. 7. 22. 12:42
메모리 할당(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 = 페이지
- 페이지 테이블에 의해 가상주소가 물리 주소로 변환됨.
- 내부단편화 有, 외부단편화 無