문제2063--메모리 관리

2063: 메모리 관리

[만든사람 : ]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

주기억장치를 비교적 작은 고정 사이즈 파티션으로 나눈 것을 페이지 프레임이라 한다.
각 프로세스 또한 같은 크기의 고정 조각으로 나눈다고 가정했을 때, 나누어진 프로세서의 조각을 페이지라 부른다.
이 때 페이지는 주기억장치의 페이지 프레임에 저장될 수 있다.

프로세스는 페이지가 프레임의 어떤 위치에 저장되어 있는지 알기 위해 페이지 테이블을 관리한다.
예를 들어 다음과 같이 페이지와 페이지 프레임으로 나뉘어진 프로세스와 주기억장치와 페이지 테이블이 있다고 생각해보자.
나뉘어진 페이지와 페이지 프레임은 0번부터 순서대로 번호가 부여된다. 이렇게 부여된 페이지 번호와 프레임을 사용하여 페이지 테이블을 관리하는데 페이지 테이블은 각 페이지가 어떤 프레임에 저장되었는지를 표시하는 것이다.
이 때 페이지의 크기를 알면 페이지가 저장된 주기억장치의 주소를 알 수 있다.
예를 들어 페이지의 크기가 1024byte라 생각해보자. 여기에서 메모리의 주소는 1바이트의 저장공간을 가르킨다고 가정한다.
그렇다면 0번 프레임의 시작 주소는 0, 1번 프레임의 시작주소는 1024, 2번 프레임의 시작주소는 2048과 같이 프레임 번호에 페이지의 크기를 곱하여 해당 프레임의 시작 주소를 계산할 수 있다.

프로세스의 0번 페이지는 3번 프레임에 저장되어 있기 때문에 0번 페이지의 주기억장치 주소는 3*1024가 되어 3072가 된다. 

프로세스의 페이지 수와 페이지의 크기, 페이지 테이블이 주어졌을 때, 주기억 장치에 저장된 페이지의 시작 주소를 출력하시오.



입력 설명

1번째 줄에 페이지 수(N)와 페이지 크기(K)가 입력된다.
\((1 \le N \le 100,000, 1 \le K \le 4096)\)
2번째 줄부터 N줄에 걸쳐 공백으로 구분된 페이지 번호\((P_i)\)와 프레임 번호\((PF_i)\)가 입력된다.
\((0 \le PF_i \le 2000000)\)

출력 설명

N줄에 걸쳐 공백으로 구분된 페이지 번호와 페이지 시작주소가 출력된다.
페이지 번호는 오름차순으로 출력한다.

입력 예시 Copy

3 1024
0 3
1 1
2 7

출력 예시 Copy

0 3072
1 1024
2 7168 

게시판

작성자제목(댓글)
글이 없습니다.

출처/분류