열정 실천

주기억장치 Main Memory 본문

CS/OS

주기억장치 Main Memory

구운오니 2024. 11. 23. 16:08
728x90

 
메인 메모리는 CPU가 직접 접근할 수 있는 유일한 Storage이다. 
 
int a = 0; (변수 - Symbolic)
이렇게 변수명으로 선언된 값을 compileler를 거쳐
relocatable addresses 이되고
Linker, Loader를 거쳐
absolute addresses (실제 물리 주소)가 된다.
 
 
 
CPU 안에 있는 레지스터인 Memory-Management Unit (MMU)는 가상 주소를 물리주소로 변환하는 역할을 한다. 
 
CPU 에서의 가상 주소를 Memory의 실제 주소에 바인딩하는 방법에는 
 
1. continuous Memory Allocation
2. Paging 
3. Segmentation
 
이렇게 3가지 방법이 있다. 
 
 

연속할당

 Continuous Memory Allocation
 
Process 하나에 관한 정보 모두를 연속적으로 그대로 memory 한 공간에 할당하는 것이다.  여러 Process들이 저장되고 지워지고 하다보면 남은 공간이 여러 개 나누어 지는데 이를 hole이라고 한다.
 
맨 처음부터 가능한 hole에 바로 할당되는 것을
first-fit
가능한 공간 중 할당 후 가장 작은 hole을 남기는 것을 best-fit 
가능한 공간 중 할당 후 가장 큰 hole을 남기는 것을 worst-fit

이라고 한다. 
 
first-fit은 가장 빠르게 할당되지만 메모리 공간을 효율적으로 사용하는 방법은 아니다. 
best-fit은 외부단편화의 크기를 줄일 수 있다. 하지만 best-fit이 좋다. worst-fit이 좋다고 말할 순 없는게 다음에 들어올 데이터의 크기는 모르기 때문이다!
 
20MB의 hole에 15MB 크기의 메모리를 할당받으면 5MB의 외부단편화가 생긴다. 
4MB 크기의 메모리 공간만 사용하는데 6MB 크기의 메모리를 할당받으면 2MB의 내부단편화가 생긴다. 
 
 
 

세그멘테이션
 Segmetation

 
프로세스 하나의 메모리는 여러 논리적인 구조인 세그먼트로 분리가 되는데 이 세그먼트 단위로 나누어 각각 다른 위치에 저장하는 방법이다. 각각의 세그먼트가 저장되는 물리 주소를 알기위해 세그먼트 테이블이 존재한다. 맨 마지막 데이터는 페이지보다 작을 수 있기 때문에 내부 단편화가 발생할 수 있다. 
 
 

페이징
Paging 

 
논리 주소를 동일한 크기인 page로 나누고 물리 주소에 동일한 크기인 frame으로 옮겨진다. 마찬가지로 논리주소의 페이지 번호에 해당하는 물리 주소의 프레임 번호가 적힌 페이지 테이블이 존재한다. 모두 같은 크기로 저장되기 때문에 각각의크기에 맞는 자리를 찾을 필요도 없어 빠르고 외부단편화가 발생하지 않는다. 
 



이해하기 쉽게 그림도 그려놨는데 버스 이동 중 급하게 올려서
다음 번에 수정하는걸루..ㅎㅎ

 

728x90