페이지 크기와 페이지 테이블 항목 크기의 차이점은 무엇입니까?


최상의 답변

음, 페이지 크기는 1 페이지에 필요한 공간입니다. )

여기서 약간의 배경 지식을 제공하기 위해 페이지 테이블은 OS가 인위적으로 시스템에서 사용할 수있는 주 메모리의 총량을 늘립니다. 물리적 메모리는 메모리 (DRAM)의 주소에있는 실제 비트이고, 가상 메모리는 작업을 수행하기 위해 프로세스에 OS가있는 위치를 알려줍니다. 2 ^ 34 비트가 일반적으로 가장 많이 사용되는 RAM 임에도 불구하고 2 ^ 64 비트의 주소 공간을 허용합니다. (2 ^ 32 비트는 4GB이므로 2 ^ 34는 16GB입니다.)

현재 대부분의 기본 페이지 테이블 크기 는 4096입니다. 각 프로세스에 대해 kb이지만 프로세스에 더 많은 프로세스 공간이 필요한 경우 페이지 테이블 항목 수가 증가 할 수 있습니다. 페이지 테이블 크기는 초기에 더 작거나 더 큰 양이나 메모리에 할당 될 수도 있습니다. “대부분의 프로세스에 가장 적합한 크기는 보통 4kb입니다. 따라서 페이지 테이블 항목 크기 은 32 비트 주소 공간에 주소를 저장할 수있는 정확한 공간입니다.

여기에 예를 들어 보겠습니다. 32 비트 논리 주소 공간이있는 시스템을 고려하십시오. 이러한 시스템의 크기는 4KB (212)이고 페이지 테이블은 최대 1 백만 개의 항목 (232/212)으로 구성 될 수 있습니다. 각 항목이 4 바이트로 구성되어 있다고 가정합니다. , 각 프로세스는 페이지 테이블에만 최대 4MB의 물리적 주소 공간이 필요할 수 있습니다.

완전히 이해하는 방법

답변 : 4 바이트 (32 비트) )는 32 비트 주소 공간에 주소를 저장할 수있는 정확한 공간입니다. 4 바이트의 항목 1 백만 개가 각각 4MB를 만들기 때문에 프로세스에는 최대 4MB의 물리적 주소 공간이 “필요할 수 있습니다”.

답변

페이지 ble 은 프로세스별로 운영 체제에 의해 유지됩니다. 모든 프로세스에는 자체 페이지 테이블이 있습니다 , 이것이 페이지 테이블에 프로세스 식별자를 저장할 필요가없는 이유입니다. 페이지 테이블은 주어진 논리적 / 가상 페이지 번호를 실제 물리적 프레임 / 페이지 주소에 매핑합니다.

메모리 참조의 논리 주소는 다음 형식입니다.

논리 주소 : <가상 페이지 번호 ( p), offset (d)>

Page-number (가상 페이지 번호)는 페이지 테이블을 조회하고 매핑 된 물리적 프레임의 기본 주소를 가져 오는 데 사용됩니다. 프레임의 기본 주소 (f)는 다음과 같은 물리적 메모리 프레임 주소를 얻기 위해 페이지 (d)의 오프셋과 결합됩니다.

f = page-table [p]

물리적 주소 : <물리적 프레임 주소 (f), 오프셋 (d)>

이제 다음과 같은 시스템을 고려하십시오.

1. 논리적 주소 공간 : 32 비트 2. 페이지 크기 : 4KB (2 ^ 12) 3. 페이지 테이블 항목 크기 : 4 바이트 4. 물리적 메모리 : 2GB

참고 사항 4 페이지 테이블 엔트리의 바이트는 물리적 프레임의 기본 주소와는 별도로 여러 유형의 정보를 효과적으로 저장합니다.이 정보는 메모리 보호 (유효 / 무효 비트), 액세스 유형 (읽기 / 쓰기), 부기 등을위한 것일 수 있습니다. 저는 물리적 프레임 주소 (f)를 참조하고 실제로 4 바이트 항목의 특정 부분을 참조합니다.

페이지 테이블의 크기를 계산해 보겠습니다.

크기 페이지 테이블 = (항목 수 * 각 항목의 크기)

위의 매개 변수가 주어지면 32 비트 논리 주소는 다음과 같이 분할됩니다.

<(2 ^ 32) / ( 2 ^ 12) 페이지 번호 용 비트, 페이지로 오프셋 용 12 비트> 또는

<페이지 번호 용 20 비트, 페이지로 오프셋 용 12 비트>.

이제 페이지 테이블의 항목 수 (총 가상 페이지 번호)가 2 ^ 20 개가 될 수 있음을 계산할 수 있습니다. 따라서 페이지 테이블의 크기는 다음과 같습니다.

(2 ^ 20) * 4bytes = 4MB의 공간 (프로세스 당).

이 정도의 공간은 모든 프로세스의 페이지 테이블을위한 물리적 메모리에 필요합니다. 주 메모리가 2GB 뿐이며 모든 프로세스의 페이지 테이블을위한 4MB의 공간이있는 것은 좋은 생각이 아닐 수 있습니다. 또한 많은 가상 주소에 물리적 페이지 주소가 매핑되지 않을 수 있습니다. 그러나 , 여전히 페이지 테이블 크기가 커집니다. 가상 페이지 번호에 “유효”비트가 설정되어 있지 않더라도 해당 슬롯이 페이지 테이블에 존재해야합니다.

공유의 경우 메모리, 프로세스 당 페이지 테이블을 가지려면 해당 페이지에 대한 공유 액세스를 갖는 모든 프로세스의 페이지 테이블에 동일한 물리적 페이지의 항목이 필요하므로 시스템은 동일한 물리적 프레임 주소에 대해 여러 항목을 유지하게됩니다. 물리적 메모리를 잘 활용하지 못합니다.

또한 모든 프로세스의 페이지 테이블에는 가상 주소 당 하나의 항목이 포함된다는 것을 이해할 수 있습니다. 따라서 테이블의 크기는 논리 / 가상 크기에 비례합니다. 실제로 엄청날 수있는 주소 공간.

우리의 목표는 페이지 테이블을 저장하는 데 필요한 물리적 메모리의 양을 줄이거 나 최적화하는 것입니다. 반전 된 페이지 테이블이 그러한 솔루션 중 하나입니다.

반전 된 페이지 테이블 은 모든 프로세스에 대해 운영 체제에서 유지 관리하는 전역 페이지 테이블입니다. 전체 시스템에는 페이지 테이블이 하나뿐이므로 각 프로세스에 해당하는 페이지 테이블 항목을 식별하기 위해 페이지 테이블에 추가 정보를 저장해야 함을 의미합니다.

물리적 프레임 당 하나의 항목을 저장하고 각 위치의 내용이 이고 각 위치의 인덱스가 물리적 프레임 주소 인 선형 배열입니다. 이제 수식이 변경됩니다.

= page-table [f]

이 말은 가상 페이지 번호에서 조회가 더 이상 발생할 수 없음을 의미합니다. pid가 “id”이고 가상 페이지 번호가 “p”인 일치하는 항목을 찾으려면 전체 테이블을 항목별로 검색해야합니다. 일치에 해당하는 인덱스 위치는 물리적 프레임 주소 (f)이며 오프셋 (d)과 결합하여 물리적 주소를 제공합니다.

반전 된 페이지에서 조회 시간을 쉽게 추론 할 수 있습니다. 간단한 페이지 테이블 과 비교할 때 테이블이 훨씬 더 높을 수 있습니다.

그러나 테이블은 물리적 프레임 주소 당 하나의 항목을 저장하고 전체 시스템에 단일 페이지 테이블이 있기 때문에 반전 된 페이지 테이블이 사용하는 메모리 양이 상당히 감소했습니다. 어떻게?

동일한 매개 변수를 다시 고려하세요.

1. 논리적 주소 공간 : 32 비트 2. 페이지 크기 : 4KB (2 ^ 12) 3. 페이지 테이블 항목 크기 : 4 바이트. 4. 물리적 메모리 : 2GB (2 ^ 31)

페이지 테이블의 항목 수 = 물리적 페이지 수 =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 개의 물리적 페이지 또는 프레임

1 바이트 프로세스 식별자를 사용한다고 가정하겠습니다. 각 페이지 테이블 항목의 크기는 다음과 같습니다.

8 비트 (PID) +20 비트 ( 가상 페이지 번호) +4 비트 (액세스 정보) = 32 비트 = 4 바이트

페이지 테이블 크기 = (2 ^ 19) * 4 = 전체 시스템의 경우 2MB

반전 된 페이지 테이블의 성능은 일반적으로 해시 된 페이지 테이블을 통해 처리됩니다. 그러나 성능과는 별개로 반전 된 페이지 테이블을 사용하는 한 가지 단점이 더 있습니다. 공유 메모리입니다.

하나의 항목 만 있기 때문입니다. 실제 프레임 당 페이지 테이블에서 정확히 하나의 가상 페이지 번호를 포함하는 경우 더 이상 동일한 실제 프레임을 서로 다른 프로세스의 여러 가상 페이지 번호에 매핑 할 수 없습니다.이 문제를 해결할 수있는 방법이 있지만 여기에 작성할 세부 정보를 알지 못합니다. .

출처-운영 체제 개념 (Silberschatz et al)

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다