2010-07-16 5 views
2

나는 순수한 세분화 때문에 혼란스러워하고 내 머리 속에 항상 가상 메모리의 아이디어가 존재했다.순수 세분화

하지만 순수 분할은 또한 RAM에로드 된 세그먼트로 나뉘어 가상 주소 공간을 상상한다는 것을 이해합니다.

분할과 가상 메모리의 차이점은 RAM에없는 세그먼트가있을 가능성이 있습니다.

이 정보가 맞습니까?

I 질문을 추가하십시오 : 페이징과 결합 된 세그먼트 화와 2 단계 페이징간에 실질적인 차이점이 있습니까? 세그먼트 방법의 "제한"보호를 제외하고는 동일합니다. 아니면 또 다른 차이점이 있습니까?

+0

용어가 약간 틀립니다. "가상 메모리"는 RAM에 액세스하기 전에 주소를 변경할 수있는 모든 시스템을 설명합니다. * 분할 *은 가상 메모리의 한 형태입니다. * 페이징 *은 일반적으로 많이 사용되는 또 다른 형식입니다. 어쩌면 당신은 "가상 메모리"와 "페이징"을 혼동하고 있을까요? – Karmastan

+0

페이징과 순수 페이지나에 대해 혼란스러워합니다. 세그먼트 화 및 순수 분할. 순수한 무엇입니까? – makakko

답변

2

아니요, 정확하지 않습니다. 예를 들어 x86에서 세그먼트 화는 세그먼트 선택기 (세그먼트 레지스터 (예 : DS)에로드 됨)와 세그먼트에 대한 오프셋의 두 부분으로 구성된 "멀리"포인터를 사용합니다. 세그먼트 오프셋은 항상 0부터 시작합니다. CPU는 세그먼트 선택기를 사용하여 세그먼트의 LINEAR 기본 주소, 길이 및 액세스 권한을 포함하는 세그먼트 설명자를 찾습니다. 모든 액세스는 길이가 점검됩니다. 세그먼트 제한을 벗어나거나 잘못된 액세스 (예 : 읽기 전용 세그먼트에 쓰기)로 인해 메모리에 액세스하려고하면 CPU가 일반 보호 오류를 생성합니다.

세그먼트 주소는 항상 0 기준이며 세그먼트 기준은 세그먼트 선택기에 내재되어 있기 때문에 OS는 세그먼트를 이동하고 조각 모음을 수행하여 해당 데이터를 사용하는 프로그램에 영향을 미치지 않습니다. (이것을 "플랫"메모리 모델과 비교해 보겠습니다. 일부 데이터를 옮기면 포인터를 가리키는 포인터를 모두 업데이트해야합니다.)

이제 페이징을 사용하지 않으면 LINEAR 세그먼트 기본 주소가 실제 메모리 주소가됩니다 . 페이징이 활성화되면 세그먼트 데이터에 대한 모든 액세스가 평상시처럼 MMU에 의해 변환됩니다.

+0

그렇습니다. 세그먼트 화와 2 단계 페이징에는 차이가 있습니다. 2- 또는 (다중) 레벨 페이징은 페이지 테이블에서 사용되는 메모리를 줄이는 기술입니다. – zvrba

+0

유일한 분할 메모리 시스템에서는 MMU를 사용할 수 없습니까? 내 말은 TLB 같은 캐시를 사용하여 느린 RAM이 각 세그먼트의 기본 및 제한을 확인하지 못하게하는 것입니다. 내가 아는 한, TLB는 page-frame, page-frame 등 페이징을 위해 잘 동작한다. 세그멘테이션의 경우, 필자는 segment-limit-frame, segment- 제한 프레임 ... – makakko

+0

아니요, MMU는 유일한 세그먼트 시스템에서 기능이 없습니다. 세그먼트 설명자는 일반적으로 다른 방식으로 CPU에 의해 캐시됩니다. – zvrba

0

이 수준에서 메모리 관리를 중요하게 생각하면 Silberschatz, Galvin 및 Gagne가 Operating System Concepts을 읽으면 훌륭한 설명을 찾을 수 있습니다. 당신은 저렴한 구형 에디션을 찾을 수 있어야합니다.