。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

CS

메모리 관리 전략

quarrrter 2023. 11. 23. 17:34

*논리 메모리 영역(=가상 메모리 영역)

프로세스가 보는 메모리 영역

 

*물리 메모리 영역

실제로 사용되는 메모리 영역(RAM)

 

*논리 주소(=가상 주소)

CPU가 프로세스를 실행하며 보는 주소 값 

 

*물리 주소

실제 메모리에서 사용되는 주소

 

=> CPU가 프로세스를 실행할 때 사용하는 주소 값과 실제 주소 값이 다르므로 논리 주소를 물리 주소로 변환 해줘야하는데 

이 동작을 하는 하드웨어 장치를 메모리 관리 장치(MMU, Memory Management Unit)라고 한다. 

CPU에 위치하며, 보호해야 하는 메모리 영역에 대한 접근을 제한해 메모리를 보호하는 역할 

 


연속 메모리 할당 

 

고정 분할 방식 : 메모리 영역을 분할한 뒤 각 영역에 프로세스를 할당하는 방식 

=>분할된 영역의 크기는 서로 다를 수 있으며, 분할된 크기는 고정된다. 단편화 문제가 발생할 수 있음.

 

외부 단편화: 8MB 같은 크기로 고정 분할을 하면 6MB를 쓰고 남은 2MB와 8MB의 메모리 공간을 합치면 10MB의 프로세스를 공간에 할당할 수 있지만 고정분할 때문에 할당하지 못한다.

내부 단편화: 3MB, 4MB 프로세스를 할당할 때 분할된 크기보다 작은 프로세스가 할당되어 메모리 공간이 남는 경우 

 

가변 분할 방식: 할당할 프로세스의 크기에 따라 메모리 공간을 분할

1. 최초 적합(first-fit) : 가용 메모리 공간에서 프로세스 크기만큼 비어 있는 메모리 공간을 찾아 차례대로 프로세스를 로드하는 방식 

2. 최적 적합(best-fit) : 할당하려는 프로세스 크기 이상인 가용 메모리 공간 중에서 가장 작은 공간에 프로세스를 할당하는 방식 

3. 최악 적합(worst-fit) : 할당하려는 프로세스 크기보다 큰 가용 메모리 공간 중 가장 큰 공간에 프로세스를 할당하는 방식

 

*메모리 압축 

외부 단편화를 해결하는 방법으로, 사용중인 메모리 공간을 재배치해서 흩어져 있는 가용 메모리 공간을 하나로 합치는 것, 메모리 집약

 


비연속 메모리 할당

 

페이징 

=> 프로세스의 논리 메모리 영역과 물리 메모리 영역을 각각 일정한 크기의 페이지와 프레임으로 나눈다. (페이지 테이블을 사용해 페이지와 프레임에는 각각 번호를 할당해 프로세스의 페이지와 메모리의 프레임을 매핑한다.) 페이지 테이블은 프로세스의 페이지 정보와 페이지에 매핑하는 프레임의 주소 값을 저장하고, 각 프로세스의 PCB에 저장된다. 

 

=> 페이지를 물리 메모리에 연속으로 할당할 필요가 없어 외부 단편화 문제를 해결할 수 잇지만, 프로세스의 크기가 페이지 수로 나누어 떨어지는 지는 보장하지 않는는다. ㅍ프로세스의 마지막 페이지가 페이지의 크기보다 작을 수 있어 내부 단편화 문제가 발생할 수 있다. 또한 페이지 테이블을 저장하기 위한 메모리 공간이 추가로 필요하다. 

 

세그먼테이션

=> 프로세스의 메모리 영역을 논리적 단위인 세그먼트로 분할해 메모리를 할당한다. 

=> 세그먼테이션 테이블을 사용해 세그먼트의 논리 주소를 물리 주소로 매핑한다. 세그먼트 테이블은 세그먼트 번호를 인덱스로 사용하며, 세그먼트별 시작주소인 base와 세그먼트 길이인 limit를 저장한다. 

=> 프로세스의 메모리 영역을 논리적 단위로 나눠 저장하므로 단위별로 데이터를 보호하기 쉽다는 장점이 있지만 세그먼트의 므기가 균등하지 않아 외부 단편화 문제가 발생할 수 있다, 오버플로가 발생하면 다른 프로세스와 메모리 영역이 겹칠 수 있고 그러면 스왑아웃해야한다는 단점이 있다.

'CS' 카테고리의 다른 글

캐시 메모리  (0) 2023.11.25
가상 메모리  (1) 2023.11.25
스케줄링  (0) 2023.11.23
프로세스  (0) 2023.11.23
커널  (2) 2023.11.23