참고도서: Operating System Concepts (10/E) Abraham Silberschatz, Peter B. Galvin, Greg Gagne
9장 - 메인 메모리
9.1 내부 단편와와 외부 단편와 사이의 차이점을 설명하라.
외부 단편화는 프로세스가 메모리에 연속적인 공간에 적재되고 방출 되면서 생기는 사용 가능한 공간의 분산 때문에 생기는 문제이다. 메모리의 전체 사용 가능한 공간은 프로세스를 수용할 수 있지만, 이 공간이 메모리 곳곳에 분산되어 있어 프로세스를 메모리에 적재할 수 없게 된다. 내부 단편화는 프로세스의 크기가 페이지 크기의 배수보다 작아서 프로세스에 할당된 페이지가 최대 페이지 크기-1 만큼 사용하지 않는 공간으로 할당되는 문제이다.
9.2 페이지의 크기가 항상 2의 거듭제곱인 이유는 무엇인가?
페이지의 주소는 2진수 비트로 나타내서, 이를 다시 둘로 나눠 주소값과 offset값으로 나눈다. 페이지의 크기 역시 2의 거듭제곱으로 설정해야 페이지 주소와 오프셋을 표현하기에 용이하다.
9.3
프로그램을 코드와 데이터 두 부분으로 나누어서 저장할 수 있다면, 코드영역은 항상 읽기전용으로 사용될 수 있고 reentrance code 가 되어 여러 프로세스에 해당 페이지를 공유할 수 있게 된다. 이 코드를 필요로 하는 각 프로세스의 페이지 테이블에 이 페이지의 주소를 기입하면 여러 프로세스가 읽기전용으로 하나의 페이지를 함께 공유할 수 있게된다.
9.4 1024개의 워드 크기 페이지를 사용하고 총 64페이지로 구성된 논리 주소 공간을 고려하자. 이 논리 주소 공간은 32프레임의 물리 메모리로 사상된다.
논리 주소는 몇 비트로 구성되는가?
페이지의 갯수는 64개이고, 페이지의 크기는 1024 워드이다. 논리 주소의 크기는 페이지 갯수 X 페이지 크기로 구할 수 있기 때문에 26(64) X 210(1024) = 216 이라는 것을 알 수 있다. 따라서 논리 주소는 총 16비트로 구성된다.
물리 주소는 몇 비트로 구성된느가?
위와 비슷한 맥락에서 프레임의 개수는 32개이고, 프레임의 크기는 페이지의 크기와 같기 때문에 1024 워드가 된다. 계산해보면 25(64) X 210(1024) = 215 가 되기 때문에 물리 주소는 총 15비트로 구성된다.
9.5
페이지 테이블의 두 항목이 하나의 페이지 프레임을 가리키도록 하면, 프로세스마다 코드영역의 데이터를 각각 사본으로 가지고 있는 것이 아니라, 하나의 페이지를 가지고 여러 프로세스에서 사용할 수 있게 되기 때문에 메모리 공간을 아낄 수 있다. 또, 한 장소에서 다른 장소로 메모리를 복사할 때도 이 영역에 해당하는 페이지는 항상 같은 프레임을 가리키도록 하면 되기 때문에 시간을 아낄 수 있다.
9.6 300KB, 600KB, 350KB, 200KB, 750KB 및 125KB의 6개의 메모리 파티션을 고려할 때, 115KB, 500KB, 358KB, 200KB, 375KB 크기의 프로세스를 최초 적합 최적 적합 및 최악 적합 알고리즘을 사용하여 할당하는 과정과 결과를 설명하라
최초 적합: 최초 적합 알고리즘은 대상 프로세스를 적재할 수 있는 가용가능한 공간을 만나면 곧바로 프로세스를 적재시킨다. 딸라서 5개의 프로세스는 다음과 같이 적재된다.
115KB -> 300KB(185KB 남음)
500KB -> 600KB(100KB 남음)
358KB -> 750KB(392KB 남음)
200KB -> 200KB(0KB 남음)
375KB -> 392KB(17KB 남음)
최적 적합: 최적 적합 알고리즘은 전체 가용메모리 공간을 모두 확인한 뒤 대상 프로세스를 적재할 수 있는 가장 작은 공간에 프로세스를 적재한다.
115KB -> 125KB(10KB 남음)
500KB -> 600KB(100KB 남음)
358KB -> 750KB(392KB 남음)
200KB -> 200KB(0KB 남음)
375KB -> 392KB(17KB 남음)
최악 적합ㅣ 최악 적합 알고리즘은 전체 가용메모리 공간을 모두 확인한 뒤 대상 프로세스를 적재할 수 있는 가장 큰 공간에 프로세스를 적재한다.
115KB -> 750KB(635KB 남음)
500KB -> 635KB(135KB 남음)
358KB -> 600KB(242KB 남음)
200KB -> 242KB(42KB 남음)
적재 불가
9.7 1-KB 페이지 크기를 가정할 때 다음 주소 참조에 대한 페이지 번호 및 오프셋은 무엇인가
1KB는 1024 바이트 이므로 페이지 오프셋은 하위 10비트임을 알 수 있다. 이를 기준으로 페이지 번호와 오프셋을 구하면
9.8 BTV 운영체제는 21비트 가상 주소를 사용하지만 특정 임베디드 장치에는 16비트 물리 주소만을 사용할 수 있다. 또한 2KB 페이지 크기를 사용한다. 다음 테이블에는 각각 몇개의 항목이 존재하는가?
기존의 단일 레벨 페이지 테이블: 페이지의 개수 X 페이지의 크기를 구하면 논리주소 크기를 구할 수 있는데 이미 우리는 페이지의 개수가 21개이고 페이지 크기가 2048바이트, 즉 211 비트임을 알고 있기 때문에 페이지 테이블의 항목 갯수는 221 / 211 = 210 이 된다.
역 페이지 테이블: 역페이지 테이블의 항목 개수는 물리주소공간 / 페이지 사이즈를 구하면 얻을 수 있다. 따라서 216 / 211 = 25 가 된다.
9.9 64KB 의 물리 메모리에 맵핑된 4KB 페이지 크기의 256 페이지의 논리 주소공간을 고려하자.
논리 주소에 몇 비트가 필요힌가? 논리주소의 크기는 페이지 갯수 X 페이지 크기로 구해진다. 따라서 256 X 4KB = 28 X 212 = 220 이므로 논리주소에는 총 20비트가 필요하다.
물리주소에는 몇 비트가 필요한가? 물리주소의 크기는 프레임 갯수 X 프레임 크기로 구해진다. 따라서 64 X 4KB = 26 X 212 = 218 이므로 물리 주소에는 총 18비트가 필요하다.