(루트리스 OS 만들기) 분할, 보호 모드 페이징(인텔 수동 해석)

* 참조 : http://blog.naver.com/PostView.nhn?blogId=jeix2&logNo=80007589533&viewDate=¤tPage=1&listtype=0

=> 유용한 이미지가 많은 것 같습니다.

나중에 봐요.

* 원천 : 인텔 매뉴얼 “3.4.5. 시스템 설명자” “VOLUME 3A: 시스템 프로그래밍 안내서 파트 1” 참조

인텔 설명서를 있는 그대로 해석했습니다.

영어는 못하지만 궁금해서요…


3.2 세그먼트 사용


IA-32 아키텍처에서 제공합니다.

세분화 메커니즘매우 광범위한 시스템 설계를 수행하는 데 사용할 수 있습니다.

설계프로그램을 보호하기 위해 분할을 사용하는 경우는 거의 없습니다.

평면 모델 수업,

여러 프로그램과 작업을 안정적이고 안정적으로 실행할 수 있는 강력한 운영 체제 환경을 만듭니다.

세분화 사용 다중 세그먼트 모델 있다

3.2.1 단순 평면 모델



시스템의 가장 간단한 메모리 모델은 “플랫 모델”입니다.

이 시스템에서 운영 체제와 응용 프로그램은 연속적이고 분할되지 않은 주소 공간에 액세스합니다.

최대 확장성을 허용하기 위해 기본 플랫 모델은 시스템 설계자와 애플리케이션 프로그래머로부터 아키텍처의 분할 메커니즘을 숨깁니다.



IA-32 아키텍처로 기본 플랫 메모리 모델을 구현하려면 적어도 두 개의 세그먼트 레지스터를 만들어야 합니다.

하나는 코드 세그먼트 참조용,

다른 것 데이터 세그먼트 참조용오전. (그림 3-2 참조) 그러나 두 세그먼트는 전체 선형 주소 공간을 매핑합니다.

즉, 두 세그먼트 디스크립터가 같을 때

기본 주소는 “0”이고 세그먼트 제한은 4GB입니다.

세그먼트 제한을 4GB로 설정하면 세분화 메커니즘이 제한을 벗어난 메모리 참조에 대한 예외를 생성합니다.

(제한을 벗어난 메모리 참조에 대한 예외 생성)은 불가능합니다.

주어진 주소에 물리적 메모리가 없는 경우에도 마찬가지입니다.

ROM(EPROM)은 일반적으로 물리적 주소 공간의 맨 위에 있습니다.

이는 프로세서가 FFFF_FFF0H에서 실행을 시작하기 때문입니다.

RAM(DRAM)은 주소 공간의 끝에 있습니다.

리셋 초기화 후 DS 데이터 세그먼트의 초기 베이스 주소가 0이기 때문이다.

이때 참고할 메모리 맵



-- 사이트광고 -->

3.2.2 보호된 평면 모델



보호된 평면 모델은 세그먼트 제한에는 실제 물리적 메모리 주소가 존재하는 주소 범위만 포함됩니다.

그 외에는 기본 플랫 모델과 비슷합니다.

일반 보호 예외(#GP)는 존재하지 않는 메모리에 액세스를 시도하거나 시도할 때 발생합니다.

이 모델은 일부 유형의 버그에 대한 최소 하드웨어입니다.

보호를 제공합니다.


보호된 플랫 모델에 더 많은 보호를 제공하기 위해 추가 복잡성을 추가할 수 있습니다.

예를 들어 사용자 코드/데이터와 감독자 코드/데이터를 분리하려면

이를 위해서는 4개의 세그먼트 정의가 필요합니다.

: 사용자의 경우 권한 레벨 3에 해당하는 코드 및 데이터 세그먼트, 관리자의 경우 권한 레벨 0에 해당하는 코드 및 데이터 세그먼트

need a ment 일반적으로 이러한 세그먼트는 모두 겹칩니다.

그리고 선형 주소 공간의 주소 0에서 시작합니다.

이 평면 세분화 모델은 간단한 페이징 구조를 따릅니다.

운영 체제를 보호하고 작업 또는 프로세스별로 구분된 페이징 구조를 추가하여 응용 프로그램 간 상호 보호도 가능합니다.

유사한 디자인은 몇몇 유명합니다

멀티태스킹 운영 체제에서 사용됩니다.

3.2.3. 다중 세그먼트 모델



다중 세그먼트 모델은 코드, 데이터 구조, 프로그램 및 작업에 대한 필수 보호를 제공하기 위해 세분화 메커니즘의 전체 기능을 활용합니다.

여기서 각 프로그램(또는 작업)에는 자체 세그먼트 설명자와 세그먼트 테이블이 있습니다.

세그먼트는 할당된 프로그램에 대해 전적으로 개인 소유가 될 수 있습니다.

또한 프로그램 간에 공유할 수도 있습니다.

시스템에서 실행되는 모든 세그먼트와 각 프로그램의 실행 환경에 대한 액세스는 하드웨어에 의해 제어되고 관리됩니다.


세그먼트 경계, 경계를 넘어 외부 주소에 대한 참조에 대한 액세스 확인 및 특정 세그먼트에 대한 불법 행위는 보호를 위해 사용됩니다.

그럴 수도 있습니다.

예를 들어, 코드 세그먼트가 읽기 전용 세그먼트로 지정되기 때문에 하드웨어는 코드 세그먼트에 쓰는 것을 방지합니다.

세그먼트에 대해 생성된 액세스 권한에 대해.

이 정보는 보호 링 또는 평면을 설정하는 데 사용할 수 있습니다.

(내가 컴파일한 것을 보십시오: http://cotkdrl1.blog.me/10152722953 ) 보호 수준은 응용 프로그램입니다.

이는 무단 액세스로부터 운영 체제 프로시저를 보호하는 데 사용됩니다.


-- 사이트광고 -->