어떤 프로그램(혹은 프로세스)이 실행되기 위해서는 그 프로그램이 반드시 메모리(주 기억장치)에 적재되어야 한다. 오직 하나의 프로세스만 지원하는 단일 프로그래밍 시스템에서는 운영체제가 적재된 메모리 공간을 제외한 나머지 영역을 하나의 프로세스가 독점하여 사용하게 된다. 따라서 메모리 공간을 효율적으로 사용하기 위한 운영체제의 특별한 기법이 필요 없다. 그러나 다수의 프로세스를 지원하는 다중 프로그래밍 시스템에서는 운영체제가 적재된 메모리 공간을 제외한 나머지 영역이 다시 분할되어야 한다. 이러한 분할은 정적 또는 동적으로 이루어지기 때문에 메모리 공간을 보다 효율적으로 이용하기 위한 운영체제의 메모리 관리 기능이 요구된다.
효율적인 메모리 관리 정책을 결정하기 위해서는 기본적으로 다음과 같은 사항들을 고려해야 한다.
- 다중 프로그래밍 정도
- 다중 프로그래밍은 CPU의 이용률을 극대화하기 위한 기법으로서 동시에 다수의 프로세스가 메모리에 존재하게 된다. 이 때 동시에 존재할 수 있는 최대 프로세스 개수를 "다중 프로그래밍 정도(degree of multiprogramming)"라고 일걷는다. 만약 다중 프로그래밍 정도가 1이라면 오직 한개의 프로세스만을 지원하는 단일 프로그래밍 시스템을 의미하고 다중 프로그래밍 정도가 N이라면 N개의 프로세스를 지원하는 다중 프로그래밍 시스템을 의미한다. 따라서 다중 프로그래밍의 정도가 높을수록 CPU의 이용률도 향상될 것이다.
- 메모리 공간 분할
- 다중 프로그래밍 기법을 지원하기 위해서는 메모리 공간을 분할하여야 한다. 분할하는 방법에는 고정 분할(fixed partition)과 가변 분할(variable partition)이 있다. 고정 분할은 분할의 크기를 고정하는 것으로써 "정적(static) 분할"이라고도 부르며 가변 분할은 분할의 크기가 가변적인 것으로써 "동적(dynamic) 분할"이라고도 부른다. 또한 고정 분할 방법에는 모든 분할의 크기를 동일하게 할 수도 있고 서로 다르게 할 수도 있다. 고정 분할에서는 다중 프로그래밍의 정도가 고정적이지만 가변 분할에서는 다중 프로그래밍의 정도가 가변적이다. 따라서 메모리 공간의 분할 방법에 따라 메모리 관리 기법이 달라진다.
- 메모리 할당 연속성
- 프로세스를 적재하기 위한 메모리 공간은 연속적(contiguous) 혹은 불연속적(noncontiguous)으로 할당할 수 있다. 연속 할당은 프로세스의 주소 공간을 하나의 메모리 분할에 연속적으로 할당을 하는 것이고 불연속 할당은 프로세스의 주소 공간을 분할하여 서로 다른 메모리 분할에 불연속적으로 할당하는 것이다. 연속 할당에서 프로세스의 메모리 주소는 연속적이지만 불연속 할당에서 프로세스의 메모리 주소가 불연속적이다. 따라서 메모리 공간의 할당 방법에 따라 메모리 관리 기법이 달라진다.
- 메모리 공간 스와핑
- 다중 프로그래밍의 정도를 조절하기 위해 메모리에 적재된 프로세스를 잠시 보조 기억장치로 내보내는 스와핑(swapping)기법을 사용할 수 있다. 스와핑 기법에서 스왑 아웃(swap out)된 프로세스를 스왑 인(swap in) 할 때 그 프로세스가 반드시 이전에 적재되었던 분할로 적재할 수도 있고, 다른 분할로 적재할 수도 있다. 이는 프로세스가 초기에 할당받은 메모리 분할에서 실행하다가 다른 분할에서도 실행 가능함을 의미한다. 따라서 할당받은 메모리 공간의 교체 여부에 따라 메모리 관리 기법이 달라진다.
Reference
개념 이해를 위한 운영체제
'CS > 운영체제' 카테고리의 다른 글
[Chapter 5] 개념 이해를 위한 운영체제 [메모리 관리 - 다중 프로그래밍 시스템] (0) | 2025.02.27 |
---|---|
[Chapter 5] 개념 이해를 위한 운영체제 [메모리 관리 - 단일 프로그래밍 시스템] (0) | 2025.02.27 |
[Chapter 4] 개념 이해를 위한 운영체제 [교착상태 - 교착상태 해결책] (0) | 2025.02.26 |
[Chapter 4] 개념 이해를 위한 운영체제 [교착상태 - 개요] (0) | 2025.02.26 |
[Chapter 3] 개념 이해를 위한 운영체제 [병행성 - 리눅스 병행성] (0) | 2025.02.25 |