문제

나는 조금 혼란스러워서 가상 메모리의 아이디어가 항상 존재 하였다.

그러나 순수한 세분화를 이해할 때, 모두 램에로드 된 세그먼트로 나뉘어져있는 가상 주소 공간을 상상하고 있습니다.

세분화가있는 가상 메모리의 차이는 아마도 RAM이 아닌 몇 가지 세그먼트가 있습니다.

이 올바른 것입니까?

질문을 추가합니다. 페이징과 결합 된 세분화와 2 레벨 페이징? 이는 세그먼트 메소드의 "한계"보호를 제외하고는 동일합니다.또는 또 다른 차이점이 있습니까?

도움이 되었습니까?

해결책

아니오, 올바르지 않습니다. 예를 들어, x86에서 세그먼트 화는 세그먼트 선택기 (세그먼트 레지스터, 예를 들어 DS로로드)와 세그먼트에 오프셋 된 두 부분으로 구성된 "멀리"포인터를 사용합니다. 세그먼트 오프셋은 항상 0에서 시작됩니다. CPU는 세그먼트 선택기를 사용하여 세그먼트 선형 기본 주소, 길이 및 액세스 권한이 포함 된 세그먼트 디스크립터를 찾습니다. 모든 액세스는 길이가 확인됩니다. 세그먼트 제한 외부의 메모리에 액세스하거나 유효하지 않은 액세스 (예 : 읽기 전용 세그먼트에 쓰기)를 사용하면 CPU가 일반적인 보호 오류를 생성합니다.

세그먼트 주소는 항상 0 기반이며 세그먼트 선택기에 세그먼트베이스가 암시적이고, OS는 해당 데이터를 사용하는 프로그램에 영향을주지 않고 메모리를 조각 모음 및 조각 모음으로 이동할 수 있습니다. ( "플랫"메모리 모델과 대조 "일부 데이터를 이동하는 경우 모든 포인터를 가리키는 모든 포인터를 업데이트해야합니다.)

이제 페이징이 비활성화되면 선형 세그먼트 기본 주소는 물리적 메모리 주소입니다. 페이징이 활성화되면 세그먼트 데이터에 대한 모든 액세스가 평소와 같이 MMU로 변환됩니다.

다른 팁

이 수준에서 메모리 관리를 이해하는 데 진지한 경우 운영 체제 개념 Silberchatz, Galvin 및 Gagne.저렴하고 오래된 에디션을 찾을 수 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top