공부방/운영체제

페이징 메모리 서술형 풀어보기

EVO. 2023. 6. 22. 22:24

1. 32비트 CPU를 가진 운영체제가 페이징 기법으로 메모리를 관리한다. 페이지의 크기가 8KB이고, 현재 컴퓨터에 1GB의 메모리가 있을 때 다음 질문에 답하라.

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

(2) 페이지와 프레임 크기는 각각 얼마인가?

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

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

(5) 페이지 테이블의 한 항목 크기가 4바이트라고 할 때, 페이지 테이블의 크기는 얼마인가? 단위와 함께 쓰라.

(6) (5)번에 이어서 현재 100개의 프로세스가 실행되고 있다면 시스템 내에 생성된 전체 페이 지 테이블의 크기는 얼마인가?

(7) (5)번에 이어서 사용자 프로세스가 현재 코드, 데이터, 스택, 힙을 합쳐 총 60000바이트를 사용하고 있다면 이 프로세스는 현재 몇 개의 페이지로 구성되며 몇 개의 물리 프레임을 필요 로 하는가?

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

(9) 페이지 테이블은 프로세스마다 있는가? 세그먼테이션처럼 시스템에 1개만 두지 않는 이유 가 무엇인가? 이유를 있는대로 말하라.

 

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

 

3. 그림 9-3의 상황은 그림 9-2의 상황에서 char *p = (char *)malloc(200); 으로 200바이 트를 동적 할당받은 상황이다. 이 상황에서 다음 코드가 순서대로 실행될 때 각 경우에 대해 9-3이 어떻게 변해 가지는지 그림으로 보이고(물리 메모리 프레임은 임의로 결정해도 됨) 변수 a, b, c, d의 값이 얼마인지 말하라. char *a = (char *)malloc(1000); char *b = (char *)malloc(2000); char *c = (char *)malloc(2000); char *d = (char *)malloc(2000);

 

4. TLB에 답하라.

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

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

(3) TLB에 적재되는 내용은 페이지 테이블의 일부분으로 볼 수 있는가?

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

(5) TLB의 사용이 효과적인 이유는 무엇인가?

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

(7) 페이지의 크기가 4KB이고 TLB 항목이 1024개라면, 이 TLB를 사용하였을 때 TLB reach 는 얼마인가? 그리고 이 값은 무엇을 뜻하는가?

(8) TLB의 가격이 비싼 이유는 무엇인가?

 

5. 다음 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]를 액세스하기 위해 물리 메모리는 총 몇 번 액세스되는가?

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

(3) (2)의 문제에 비추어 보아 작은 크기의 TLB도 매우 유용한 이유를 참조의 지역성을 들어 간단히 설명하라.

 

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

 

7.(선택입니다.) 페이지의 크기가 4KB인 32비트 운영체제에서, 프로세스 A가 코드와 데이터 영역을 합쳐 10000개 페이지, 힙에서 동적할당받은 페이지는 총 1000개이고, 스택으로 2000 개의 페이지를 사용하고 있다고 할 때, 2-레벨 페이지 테이블을 사용하는 경우, 프로세스 A에 대해 페이지 디렉터리와 합쳐 페이지 테이블로 사용되는 전체 메모리 량은 얼마인가? 최종 모 습을 그림 9-22와 같은 형태로 그려라(페이지 테이블이나 페이지 디렉터리 항목 안에 프레임 번호를 기입하지 않아도 된다. 화살표만 있으면 된다). 계산 과정도 설명하라. 이 사례에서 2레벨 페이지 테이블을 사용하면 기존 페이지 테이블 방식에 비해 얼마나 메모리 낭비를 줄일 수 있는가?

 

 

예상 답

 

 

 

 

 

(4)번 3002번 아닙니다. 3003번입니다.