1)교재 298쪽, 그림 7-8 메모리 할당 방법에 대하여 충분히 설명하세요.
- 메모리에 프로세스를 적재하는 방법은 크게 연속 메모리 할당과 불연속 메모리 할당 방법으로 분류한다.
- 연속 메모리 할당은 메모리에 프로세스를 적재할 때 연속적으로 적재하는 방법을 말하고, 단일 프로그래밍 환경과 다중 프로그래밍 환경으로 구분하여 살펴볼 수 있다.
- 먼저 단일 프로그래밍 환경에서의 연속 메모리 할당은 운영체제가 상주한 영역인 모니터, 사용자 프로그램이 들어 있는 영역인 사용자, 사용하지 않는 영역인 미사용으로 나눌 수 있다.
- 메모리를 제어하는 모든 권한이 사용자에게 있기 때문에 사용자가 주소를 잘못 지정하면 운영체제가 손상될 수 있다.
- 그래서 프로세서에 경계(한계) 레지스터를 두어 이를 방지한다. 즉, 사용자 프로그램이 메모리 주소를 참조할 때마다 경계 레지스터를 검사한 후 실행되도록 하는 것이다.
- 다음으로 다중 프로그래밍 환경에서의 연속 메모리 할당을 지원하는 방법은 크게 고정 분할 방법과 가변 분할 방법으로 구분할 수 있다.
- 고정 분할 방법은 메모리를 크기가 서로 다른 여러 개의 고정된 크기로 분할하고 분할된 각 메모리는 프로세스, 즉 작업 하나를 실행할 수 있다.
- 가변 분할 방법은 고정된 경계를 없애고 각 프로세스가 필요한 만큼 메모리를 할당하는 것을 말한다.
- 연속 메모리 할당에서는 고정 분할이나 가변 분할이 효과적인 메모리 활용 방법은 아니다. 또한, 내부나 외부 단편화 문제가 발생할 수 있다. 물론 제한된 압축을 활용하여 메모리 할당을 변화시켜서 외부 단편화를 해결하면 연속적인 공간을 만들 수 있지만, 실행 시간을 낭비하는 결과를 초래한다.
- 그래서 외부 단편화를 해결하고 내부 단편화를 최소화하려고 소개한 새로운 방법이 바로 분산 메모리 할당이다.
- 분산 메모리 할당은 불연속 메모리 할당이라고도 하는데, 프로그램 하나가 물리적 주소의 여러 공간에 분산해서 올라갈 수 있도록 하는 방법이다.
- 이 방법도 크게 고정 분할과 가변 분할로 분류할 수 있다. 고정 분할에 해당하는 페이징은 프로그램 하나를 분할하는 기준에 따라 동일한 크기로 나눠 메모리로 적재하는 방법이고, 가변 분할에 해당하는 세그먼테이션은 크기는 일정하지 않지만 의미 단위로 나눠 메모리로 적재하는 방법이다.
2)최초적합 방법과 최적적합 방법, 최악적합 방법에 대하여 각각 비교 설명하세요. 연속 메모리 할당 방법, 불연속 메모리 할당 방법, 고정 분할, 가변 분할 등과 연관하여 설명하여야 한다(그림 7-8).
- 최초 적합 방법은 프로세스를 사용 가능 공간 중 충분히 큰 첫 번째 공간에 할당하는 것이고, 최적 적합 방법은 프로세스를 충분히 큰 사용 가능 공간 중에서 들어갈 수 있는 가장 작은 공간에 할당하는 것이고, 최악 적합 방법은 프로세스를 가장 큰 사용 가능 공간에 할당하는 것을 말한다.
- 최초 적합 방법은 검색을 사용 가능 공간의 리스트 맨 앞이나 이전의 최초 적합 검색이 끝났던 곳에서 시작하면 충분히 큰 사용공간을 빨리 찾을 수 있다. 하지만, 공간 활용률이 떨어질 수 있다는 단점이 있다.
- 최적 적합 방법은 사용 가능 공간이 크기 순으로 정렬되어 있지 않으면 전체를 검색해야 한다. 따라서 사용 가능 공간을 계속 정렬하는 과정이 필요하므로 비효율적일 수 있다. 사용 가능 공간 이용률은 향상될 수 있으나 할당 과정에 많은 시간이 소요될 수 있다는 단점이 있다.
- 최악 적합 방법은 공간이 크기 순으로 정렬되어 있지 않으면 전체를 검색해야 한다. 가장 큰 사용 가능 공간에 할당하기 때문에 가장 작은 또 다른 사용 가능 공간을 만드는 최적 적합보다 메모리 활용 면에서 더 유용하다.
3)페이징, 세그멘테이션 등에 대하여 각각 비교 설명하세요. 연속 메모리 할당 방법, 불연속 메모리 할당 방법, 고정 분할, 가변 분할 등과 연관하여 설명하여야 한다(그림 7-8). 세그멘테이션의 메모리 할당방법이 최초적합 방법과 최적적합 방법, 최악적합 방법을 사용한다면 페이징의 메모리 할당 방법은 무엇인가요? 세그멘테이션은 프로그램과 데이터를 논리적으로 독립된 주소 공간으로 나누고 쉽게 공유하고 쉽게 보호할 수 있게 하려고 등장하였다.
- 페이징은 프로세스를 크기가 동일한 페이지로 나누고,
메인 메모리도 프레임이라는 고정 크기 블록으로 나눠 이 프레임에 페이지를 적재하는 방법이다.
- 페이징 방법에서는 빈 프레임에 어떤 페이지든 적재할 수 있어 메모리를 효율적으로 사용할 수 있다.
- 프레임 간에 외부 단편화도 발생하지 않는다.
- 한 프로세스의 페이지를 메인 메모리의 여러 위치에 분산 적재하여 운영체제의 페이지 관리 부담이 크다.
- 프레임 단위로 적재하므로 어떤 프로세스에 필요한 공간이 페이지 크기와 맞지 않으면, 마지막 페이지에 할당된 프레임이 완전히 차지 않아 내부 단편화가 발생할 수 있다.
- 세그먼테이션은 프로세스 관점을 지원하며 메모리를 크기가 변할 수 있는 세그먼트로 나눈다.
- 세그먼테이션은 메모리의 사용자 관점을 지원하는 불연속 메모리 할당 방법으로, 논리적 영역을 세그먼트의 집합으로 인식한다. 세그먼트의 구성으로는 프로그램을 구성하는 서브루틴, 프로시저, 함수나 모듈 등이 있다.
- 페이징과 달리 프로세스에 따라 세그먼트 크기가 달라 메모리를 크기가 일정한 페이지 프레임으로 나누지 않고 동적 분할(가변 분할) – 최적 적합 알고리즘, 최초 적합 알고리즘 - 방법으로 할당한다는 중요한 차이가 있다.
- 동적 분할을 사용하기 때문에 외부 단편화가 발생할 수 있다. 외부 단편화 문제는 대부분 평균 세그먼트 크기에 의존하는데, 일반적으로 평균 세그먼트 크기가 작으면 외부 단편화 또한 작다.
- 페이징은 물리적 주소 없이도 큰 가상 주소 공간이 가능하게 하려고 등장하였고, 세그먼테이션은 프로그램과 데이터를 논리적으로 독립된 주소 공간으로 나누고 쉽게 공유, 보호할 수 있게 하려고 등장하였다.