728x90
반응형
Goal
- 여러 메모리 관리 기법에 대해 설명할 수 있다.
운영체제는 한정된 크기의 메모리를 효율적으로 다루기 위해 다양한 방식의 메모리 관리 방법을 사용한다.
운영체제는 메모리 관리를 통해 다음과 같은 기능을 제공해준다.
- 여러 프로세스가 동시에 실행될 수 있도록 메모리 공간 제공
- 메모리 보호(리소스 보호)
- 공유 (메모리 공유를 통해 통신이 가능)
- 사용자(프로그래머)를 위한 메모리 어드레싱 방법 제공
그렇다면 어떤 메모리 관리 기법이 있는지 알아보자.
메모리 관리 정책
- 가져오기 정책(fetch policy) : 필요로 하는 데이터를 언제 메모리로 가져올지 결정
- 배치 정책(placement policy) : 가져온 데이터를 메모리 어느 위치에 올려 놓을지 결정
- 교체 정책(replacement policy) : 어떤 데이터를 메모리에서 내보내고 가져올지 결정
가져오기/적재 (fetch/load)
- 요구 적재(demand fetch) : 요청 시 메모리에 적재
- ex) 요구 페이징(demand paging)
- dynamic loading
- 예상 적재(anticipatory fetch) : 미리 예상하여 메모리에 적재
- ex) 참조 가능성이 높은 페이지 미리 적재
배치(placement)
- 최초 적합(first fit) : 프로그램이나 데이터가 들어갈 수 있는 위치 중 처음 발견한 위치에 배치
- 다른 배치 방법에 비해 빠름
- 메모리 공간 활용도가 떨어질 수 있다.
- 최적 적합(best fit) : 빈 공간을 확인한 이후, 적당한 크기 가운데 가장 작은 공간에 배치
- 메모리 단편화가 적게 발생하지만, 탐색 비용이 많이 발생
- 최악 배치(worst fit) : 빈 공간을 확인한 이후, 가장 큰 공간에 배치
- best fit과 마찬가지로 전체 탐색이 필요
- 최적 배치와 반대되는 접근 방법으로, 최적 배치는 남는 공간의 활용도가 적은 반면 최악 배치는 남는 공간에 다른 프로세스 및 다른 데이터를 배치할 수 있게된다.
교체(replacement)
- ex) swapping, page-replacement
*swapping : 프로세스를 메모리에서 쫒아 내고, 필요할 때 다시 메모리로 가져오는 기법으로 부족한 메모리 공간으로 인해 사용하는 방법이다.
이때 쫒겨난 프로세스가 보관되는 영역을 스왑 영역이라고 한다.
- swap-out : 프로세스를 메모리에서 쫒아내 스왑 영역에 저장
- swap-in : 스왑 영역에서 다시 메모리를 로드
*page-replacement - 페이지를 교체하는 방법
(가상 메모리 참고)
메모리 분할
- 고정 분할 방식 : 메모리를 같은 크기로 분할
- 장점 : 관리가 수월
- 단점 : 할당된 영역 중 쓸모없는 공간이 발생할 수 있다. (내부 단편화)
- ex) paging, buddy system
- 가변 분할 방식 : 메모리를 필요 크기에 따라 분할
- 장점 : 필요로하는 크기 만큼의 공간만 할당하면 된다.
- 단점 : 관리가 어렵다. 외부 단편화가 발생할 수 있다.
- ex) segmentation
메모리 할당
- 연속 메모리 할당(contiguous memory allocation) : 연속된 메모리 공간에 할당하는 방법
- ex) 배열
- 비연속 메모리 할당(noncontiguouse memory allocation) : 여러 조각으로 나누어, 비연속적인 메모리 공간에 할당하는 방법
- ex) 동적 메모리 할당(dynamic memory allocation)
가상 메모리(Virtual Memory)
가상 메모리란 실제 메모리 크기와 상관 없이 메모리를 이용할 수 있도록 가상의 메모리 주소를 사용하는 방법이다.
가상 메모리를 사용하면 다음과 같은 이점이 있다.
- 실제 메모리 크기 보다 더 큰 공간을 사용할 수 있다. (외부 저장 장치 메모리 공간 사용)
- 가상의 주소 공간을 사용하여 논리적인 연속성을 제공해준다.
- 물리 메모리 주소 공간을 알 필요가 없어진다.
가상 메모리의 가장 대표적인 기법으로 세그멘테이션(segmentation)과 페이징(paging)기법이 있는데, 이 내용에 대해서는 가상 메모리편에서 다룰 예정이다.
운영체제는 기본적으로 가상 메모리 시스템으로 운영되기 때문에 이러한 가상 메모리 시스템을 이해할 필요가 있다.
728x90
반응형
'운영체제' 카테고리의 다른 글
가상 메모리(virtual memory) (2) | 2020.11.25 |
---|---|
메모리 관리 3 - 메모리 단편화(Memory Fragmentation) (0) | 2020.11.23 |
메모리 관리 1 - 주소 바인딩 (0) | 2020.11.20 |
교착 상태(Dead Lock) (0) | 2020.11.19 |
동기화(Synchronization) (0) | 2020.11.13 |