새소식

인기 검색어

컴퓨터공학/운영체제

9장 페이징 메모리

  • -

Q1 : 페이징에서 논리 주소는 페이지 번호와 옵셋으로 구성된다. 1GB의 메모리를 가진 32비트 컴퓨터에서 한 페이지의 크기가 8KB인 경우 다음 질문에 답하라.

 

(1) 논리 주소에서 페이지 번호와 옵셋의 크기는 각각 몇 비트인가?

 

A  : 페이지번호의 크기 : 19비트. 옵셋의 크기 : 13비트

 

 

(2) 물리 메모리는 몇 개의 프레임이 존재하는가?

 

A : 2^30 / 2^13 = 2^17

 

 

(3) 사용자 주소 공간의 크기가 2GB일 때, 이 컴퓨터에서 작성할 수 있는 응용프로그램의 크기는 얼마인지 이유와 함께 말하라.

 

A : 2GB. 프로세스의 주소공간은 실제주소공간이 아닌 가상공간이기 때문에 운영체제가 정해준 사용자 공간의 크기만큼 작성가능하다.

 

 

(4) 페이지 테이블의 한 항목 크기가 4바이트라고 할 때, 페이지 테이블의 크기는 얼마인가?

 

A : 2^19 * 4 = 2^21 = 2MB

 

 

(5) 현재 프로세스가 100개 실행되고 있다면 이 시스템에는 전체 페이지 테이블을 저장하기 위해 총 얼마의 메모리가 공간이 사용되는가?

 

A : 2MB * 100 = 200MB

 

 

(6) 사용자 프로세스가 현재 코드, 데이터, 스택, 힙을 합쳐 총 60000바이트를 사용하고 있다 면 이 프로세스는 현재 몇 개의 페이지로 구성

되며 몇 개의 물리 프레임을 필요로 하는가?

 

A : 8개의 페이지, 8개의 물리 프레임

 

 

(7) 커널은 프로세스의 페이지 테이블과 별도로 커널만을 위한 페이지 테이블을 가지고 있는 가? 시스템 호출이 처리되는 것과 연관하여 답하라.

 

A : 아니요. 만약 커널만을 위한 페이지 테이블을 가진다면 응용프로그램이 시스템 호출을 통해 커널모드로 바뀔때마다 커널의 페이지테이블로 바꾼뒤 물리메모리에 접근하고 시스템 호출이 종료되면 다시 프로세스의 페이지테이블로 변경해야하는데 이렇게 되면 페이지테이블을 2번 변경해야 하므로 모든 프로세스의 페이지 테이블에 커널페이지가 동일하게 들어가있다.

 

 

Q2 : 페이지 테이블은 어디에 존재하는가? 그 이유는 무엇인가?

 

A2 : 메모리에 저장되어있다. 페이지 테이블의 크기가 크기 때문이다.

 

 

Q3 : TLB에 답하라.

 

(1) 일종의 캐시 메모리이다. TLB에 적재되는 내용은 페이지 테이블의 일부분인가?

 

A : 최근에 접근한 페이지 번호와 프레임 번호를 저장하므로 페이지 테이블의 일부이다.

 

 

(2) TLB는 어디에 존재하는가?

 

A : MMU내에 존재한다.

 

 

(3) TLB는 왜 사용되는가? 즉 사용하는 목적은 무엇인가?

 

A : 페이지 테이블의 크기가 크기때문에 메모리에 저장되는데 실제 프로세스가 적제된 물리 메모리에 접근하기 위해선 페이지 테이블이 적재되어있는 물리주소로 접근한뒤 다시 페이지 테이블에서 프레임번호를 받아 해당 프레임의 물리주소로 이동해 실행속도를 저하시키는 문제점을 해결하기 위해

 

 

(4) TLB의 크기는 보통 얼마 정도되는가? TLB를 그런 정도의 크기(작든지 커든지)를 가지는 이유는 무엇인가?

 

A : 64~1024 정도의 크기이다. TLB는 동시에 페이지 번호를 비교해야 하므로 하드웨어가 고가이기 때문에 크기가 작다.

 

 

(5) TLB가 일반적인 메모리나 캐시 메모리와 특별히 다른 점은 무엇인가?

 

A : 다른 메모리들과 달리 TLB는 순차적으로 하나씩 비교하는것이 아니라 모든 항목을 동시에 비교한다.

 

 

Q4 : 다음 C 프로그램이 실행되는 동안 발생하는 상황에 대해 다음 질문에 답하라.

int n[3000];
int sum = 0;

for(i=0; i<3000; i++) {
	sum += n[i]; // 여기서 n[i] 액세스 
}

- 32비트 CPU에서 실행되고,
- 페이지의 크기는 4KB이다. - int는 4바이트이다.
- 배열 n의 논리 주소는 0x2000부터 시작한다.
- 배열 n이 적재되는 물리 주소는 학생이 마음대로 설정하라.
- 페이지 테이블은 0xA000에서 부터 시작된다.

 

(1) TLB가 없는 경우, n[i]를 액세스하기 위해 물리 메모리는 총 몇 번 액세스되는가? 그림으로 그리고 설명하라.

 

A : 총 2 * i 번 액세스 된다. 논리주소를 물리주소로 바꾸기위해 페이지 테이블이 저장되어 있는 물리주소로 액세스 하여 페이지 테이블에서 해당 페이지에 매칭되어있는 프레임 번호를 받아와 해당 프레임의 주소로 다시 액세스하기 때문이다. 

페이지 크기가 2^12 = 4KB 이므로, 배열 n[3000]은 3개의 페이지에 걸쳐있다. (페이지0, 1, 2에 연속된다고 가정한다)

배열의 한 항목에 접근하기 위해 해당 항목의 논리주소에 대응하는 페이지테이블에 접근한다. 이 후 페이지테이블로부터 얻은 물리주소로 접근한다. 배열의 한 항목당 페이지 테이블 n[i]의 물리메모리 총 2번 물리메모리에 접근하므로 n[i] 전체에 액세스 하기위해 물리메모리는 2 * 3000 = 6000번 액세스 된다.

 

(2) TLB가 있는 경우 n[i]를 액세스하기 위해 물리 메모리는 총 몇 번 액세스되는가? 그림으로 그리고 설명하라.

 

A : 1과 다르게 TLB가 있는 경우, 배열의 항목이 페에지의 시작인 경우에만 페이지 테이블에 액세스한다. n[0] ~ n[1023]이 페이지 0, n[1024] ~ n[2047]이 페이지 1 나머지가 페이지2에 속한다 가정할 때 n[0], n[1024], n[2048]에 접근시에만 TLB miss로 페이지테이블에 액세스하므로 n[i] 전체에 액세스하기 위해 물리메모리는 3000+3 = 3003번 액세스 된다.

 

(3) 작은 크기의 TLB로도 매우 유용한 이유를 참조의 지역성을 들어 설명하라.

 

A : 프로그램은 실행중에 짧은 시간 내 일종구간의 메모리 영역을 반복적으로 액세스 하는 경향이 있는데 이를 참조의 지역성이라고 한다. 프로그램 코드나 반복문 배열 등은 현재번지의 주변의번지가 다시 액세스될 가능성이 높다. 이 경우 TLB hit가 계속됙어 페이지 테이블에 액세스 하는 횟수가 줄어 프로그램 실행속도가 향상된다. 때문에 작은 크기의 TLB로도 매우 유용하다.

 

(4) TLB가 메모리 액세스 패턴(순차 액세스와 랜덤 액세스)에 대해 어떤 영향을 받는지 설명 하라.

 

A : 순차액세스의 경우 참조의 지역성을 형성하므로 TLB의 사용으로 프로그램 실행속도 개선에 많은 도움이 된다. 반면 랜덤 액세스의 경우 참조의 지역성을 형성하지 않아 TLB miss가 자주 발생하며 그에 따라 페이지 테이블에 액세스하는 횟수도 늘어나 TLB를 통해 얻는 프로그램의 실행속도 향상이 크지 않다.

 

 

Q5 : 페이징에서 페이지 테이블과 관련된 2가지 문제점을 지적하고 해결책을 간단히 설명하라.

 

A5 : 첫번째 문제점은 메모리에 1번 액세스 하려면 페이지 테이블의 항목읽기 1번 + 데이터 액세스 1번 총 2번의 물리 메모리 액세스가 필요한 문제점이 있다. 이는 TLB를 사용하여 한번 접근했던 페이지 테이블의 항목을 저장하는 방식 으로 해결 할 수 있다. 두번째 문제점은 페이지 테이블의 낭비이다. 프로세스의 실제 크기는 매우 작아 대부분의 페이지 테이블이 비어 있는 문제가 있다. 이는 역페이지 테이블을 사용하거나 멀티레벨 페이지 테이블을 사용하여 해결가능한데 역 페이지 테이블은 프로세스마다 페이지를 만드는것이 아닌 물리 메모리의 프레을 기준으로 시스템에  하나의 페이지 테이블을 만들어 프로세스 번호, 페이지 번호, 프레임 번호 이 세가지를 저장하는 방법이고 멀티레벨  페이지 테이블은 페이지 테이블 하나가 가득 차면 새로운 페이지 테이블을 생성하는 방법이다.

 

 

Q6 : 2-레벨 페이지 테이블의 기존 페이지 테이블의 낭비를 줄이게 되는 이유를 간단히 설명하라.

 

A6 : 프로세스 마다 페이지 테이블을 생성하는 것이 아니라 하나의 페이지 테이블에 여러개의 프로세스의 페이지를 할당 하여 페이지 테이블이 가득 찼을때 새로운 페이지 테이블을 생성하여 페이지 디렉터리에 새로 생성한 페이지 테이 블의 물리 프레임 번호를 저장하기때문에 페이지 테이블이 비어있어 메모리를 낭비되는 것을 막는다.

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

11장 파일 시스템 관리  (0) 2023.05.28
10장 가상 메모리  (0) 2023.05.28
7장 교착상태  (0) 2023.05.28
6장 스레드 동기화  (0) 2023.05.28
5장 CPU 스케줄링  (0) 2022.01.13
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.