보호 모드
Protected mode시리즈의 일부 |
x86 아키텍처용 마이크로프로세서 모드 |
---|
괄호 안에 표시된 첫 번째 지원 플랫폼 |
컴퓨팅에서 보호 모드는 보호 가상 주소 [1]모드라고도 하며 x86 호환 중앙 처리 장치(CPU)의 동작 모드입니다.시스템 소프트웨어는 가상 메모리, 페이징, 안전한 멀티태스킹 등의 기능을 사용하여 운영체제의 애플리케이션 소프트웨어 제어를 [2][3]강화할 수 있습니다.
x86 보호 모드를 지원하는 프로세서의 전원이 켜지면 이전 x86 [4]프로세서와의 하위 호환성을 유지하기 위해 실제 모드에서 명령 실행을 시작합니다.보호 모드는 시스템 소프트웨어가 하나의 디스크립터 테이블을 설정하고 제어 레지스터 0(CR0)[5]에서 보호 활성화(PE) 비트를 활성화한 후에만 시작할 수 있습니다.
보호 모드는 1982년 [6]인텔의 80286 (286) 프로세서가 출시되면서 x86 아키텍처에 처음 추가되었으며 이후 1985년 [7]80386 (386)이 출시되면서 확장되었습니다.protected mode에 의해 추가된 기능 강화에 의해 널리 채택되어 x86 [8]아키텍처의 모든 후속 기능 강화의 기반이 되었습니다.단, 명령어 추가나 새로운 레지스터 등의 기능 강화도 리얼 모드에 이점을 가져다 주었습니다.
역사
286의 전신인 인텔 8086은 원래 [9]메모리용으로 20비트 어드레스 버스를 탑재하고 있습니다.이것에 의해, 프로세서는 2바이트([9]1메가바이트)의 메모리에 액세스20 할 수 있게 되었습니다.당시 1메가바이트는 비교적 많은 양의 [10]메모리로 간주되었기 때문에 IBM Personal Computer의 설계자는 처음 640킬로바이트를 애플리케이션과 운영 체제에서 사용하도록, 나머지 384킬로바이트는 BIOS(Basic Input/Output System)와 추가 장치용으로 [11]예약했습니다.
메모리 비용이 낮아지고 메모리 사용량이 증가함에 따라 1MB 제한이 큰 문제가 되었습니다.인텔은 이 제한을 [11]다른 제품과 함께 286 출시로 해결하고자 했습니다.
286
286과 함께 출시된 초기 보호 모드는 널리 [11]사용되지 않았습니다. 예를 들어, Coiency(1982년부터),[12] Microsoft Xenix(1984년경)[13] 및 [14]Minix에서 사용되었습니다.프로세서를 리셋하지 않고서는 리얼 모드로 되돌릴 수 없기 때문에 BIOS 또는 DOS 콜에 액세스 할 수 없는 등, 몇개의 단점이 있어,[15] 폭넓은 사용을 방해하고 있습니다.또한 286은 4개의 세그먼트 레지스터를 통해 16비트 세그먼트에서만 메모리에 액세스할 수 있습니다.즉, [11]한 번에 256킬로바이트에 해당하는 416*2바이트만 액세스할 수 있습니다.세그먼트 레지스터를 보호 모드로 변경하면 6바이트 세그먼트 기술자가 메모리에서 CPU로 로드되기 때문에 세그먼트 레지스터 로드 명령은 수십 번의 프로세서 사이클이 소요되어 8086보다 훨씬 느립니다.따라서 대규모 데이터 구조에 액세스하기 위해 세그먼트 주소를 즉시 계산하는 전략은r128 킬로바이트(두 데이터 세그먼트의 합계 크기)를 넘는 r은 8086/8088에서 마스터한 소수의 프로그래머에게도 실용적이지 않게 되었습니다.
286은 전원을 [4]켤 때 처음에 real 모드로 들어가면서 8086과 하위 호환성을 유지했습니다.Real 모드는 8086과 거의 동일하게 기능하기 때문에 기존 8086 소프트웨어의 대부분은 최신 286에서 수정 없이 실행할 수 있습니다.리얼 모드는, 보호 모드를 설정할 수 있는 보다 기본적인 모드로서 기능해, 일종의 치킨 앤 에그 문제를 해결했습니다.286 의 확장 기능에 액세스 하기 위해서, operating system은 메모리내에 보호 모드로 메모리 액세스를 제어하는 테이블을 셋업 해, 이러한 테이블의 주소를 프로세서의 특수한 레지스터에 세트 해, 프로세서를 보호 모드로 설정합니다.이것에 의해, 24비트 어드레싱을 유효하게 해, 프로세서는 2바이트의 메모리([9]16메가바이트)에 액세스24 할 수 있게 되었습니다.
386
1985년 [7]386이 출시되면서 이전 보호 모드의 광범위한 채택을 막는 많은 문제가 [11]해결되었다.386은 32비트의 주소 버스 크기로 출시되었으며, 2바이트의 메모리 액세스를 허용하며32,[16] 이는 4기가바이트에 해당합니다.세그먼트 사이즈도 32비트로 증가했습니다.즉, 4기가바이트의 풀주소 공간에 액세스 할 수 있기 때문에,[16] 복수의 세그먼트간에 전환할 필요는 없습니다.어드레스 버스와 세그먼트레지스터의 사이즈가 증가했을 뿐만 아니라, 동작의 시큐러티와 [17]안정성을 높이기 위해서, 그 외의 많은 신기능이 추가되었습니다.보호 모드는 현재 Microsoft Windows, Linux [18]등 x86 아키텍처에서 실행되는 거의 모든 최신 운영 체제에서 사용됩니다.
게다가 인텔은, 286 보호 모드의 장해로부터 멀티 유저 DOS 의 요구를 만족시키기 위해서, 다른 가상 8086 [19]모드를 추가해, 복수의 가상화 8086 프로세서를 386 상에서 에뮬레이트 할 수 있게 되었습니다.그러나 보호 모드 자체를 가상화하기 위해 필요한 하드웨어 x86 가상화는 20년 [20]더 기다려야 했습니다.
386개의 보호 모드 추가
386 릴리스에서는 보호 [2]모드에 다음 기능이 추가되었습니다.
- 페이징
- 32비트의 물리 주소 공간 및 가상 주소 공간(32비트의 물리 주소 공간은 80386SX 및 구형 286 버스를 사용하는 기타 386 프로세서에는 없습니다.)[21]
- 32비트 세그먼트오프셋
- 리셋하지 않고 리얼 모드로 되돌릴 수 있는 기능
- 가상 8086 모드
보호 모드 시작 및 종료
386이 출시될 때까지 보호모드는 보호모드가 시작되면 리얼모드로 직접 전환할 수 있는 방법을 제공하지 않았습니다.IBM은 키보드 컨트롤러를 통해 CPU를 재설정하고 시스템 레지스터, 스택 포인터 및 종종 인터럽트 마스크를 실시간 클럭 칩의 RAM에 저장하는 방법을 고안했습니다.이것에 의해, BIOS 는 CPU 를 같은 상태로 복원해,[clarification needed] 리셋 하기 전에 코드 실행을 개시할 수 있었습니다.이후, 키보드 컨트롤러 방식보다 훨씬 빠르고 깨끗한 286 CPU를 재설정하는 데 세 가지 결함이 사용되었습니다(IBM AT 호환 하드웨어에 의존하지 않고 모든 시스템의 80286 CPU에서 작동합니다).
보호 모드로 들어가려면 먼저 글로벌 기술자 테이블(GDT)을 null 기술자, 코드 세그먼트 기술자 및 데이터 세그먼트 기술자의 3개 이상의 엔트리로 작성해야 합니다.IBM 호환 머신에서는 CPU가 1메가바이트 이상의 메모리에 액세스할 수 있도록 모든 주소 라인을 사용할 수 있도록 A20 라인(21번째 주소 라인)도 활성화해야 합니다(전원 투입 후 인텔 8088 기반 IBM PC 및 PC/XT [22]모델용으로 작성된 이전 소프트웨어와의 호환성을 보장하기 위해 처음 20개만 사용할 수 있습니다).이러한 두 단계를 수행한 후 PE 비트를 CR0 레지스터로 설정하고 프리페치 입력 큐를 [23][24]클리어하기 위해 원점프를 수행해야 합니다.
; MASM 프로그램 ; 보호 모드로 들어갑니다(PE 비트 설정). 움직이다 EBX, CR0 ; 제어 레지스터 0(CR0)을 EBX에 저장합니다. 또는 EBX, PE_BIT ; ORing으로 PE 비트를 설정하고 EBX에 저장합니다. 움직이다 CR0, EBX ; EBX를 CR0으로 되돌립니다. ; 프리페치 큐 클리어; (멀리뛰기 명령 jmp 사용) jmp CL이어라벨 CLEAR_LABEL:
386 릴리스에서는 286에서 필요한 초기 설정 단계를 수행할 필요 없이 실제 모드 값을 사용하여 세그먼트 레지스터를 로드하고 A20 회선을 비활성화한 후 CR0 레지스터에서 PE 비트를 클리어함으로써 보호 모드를 종료할 수 있습니다.[25]
특징들
보호 모드에는 보안과 시스템 [3]안정성을 높이기 위해 애플리케이션 소프트웨어에 대한 운영 체제의 제어를 강화하도록 설계된 많은 기능이 있습니다.이러한 추가 기능에 의해, 적절한 하드웨어 [26]서포트가 없으면, operating system은 큰폭으로 어려워지거나, 심지어 불가능하게 기능합니다.
권한 수준
보호 모드에서는 4개의 특권 수준 또는 링이 있으며 0 ~3의 번호가 매겨져 있으며 링0이 가장 특권이 있고 3이 가장 작습니다.호출음을 사용하면 시스템소프트웨어가 태스크의 데이터 액세스, 콜게이트 또는 특권 [27]명령 실행을 제한할 수 있습니다.대부분의 환경에서 운영 체제와 일부 장치 드라이버는 링 0으로 실행되고 애플리케이션은 링 [27]3으로 실행됩니다.
리얼 모드 어플리케이션 호환성
인텔 80286 프로그래머 레퍼런스 [28]매뉴얼에 따르면
80286은 대부분의 8086 및 80186 응용 프로그램과의 상위 호환성을 유지합니다.대부분의 8086 어플리케이션프로그램은 80286 상에서 보호모드로 재컴파일 또는 재조립하여 실행할 수 있습니다.
대부분의 경우, 리얼 모드 코드와의 바이너리 호환성, 최대 16MB의 물리 메모리 및 1GB의 가상 메모리에 액세스할 수 있는 기능은 애플리케이션 프로그래머에게 [29]가장 명백한 변화였습니다.이것은 한계가 없는 것은 아니었다.응용 프로그램이 다음 기술 중 하나를 사용 또는 사용하는 경우 [30]실행되지 않습니다.
- 세그먼트 산술
- 특권 절차
- 하드웨어 다이렉트 액세스
- 코드 세그먼트에 쓰기
- 데이터 실행
- 겹치는 세그먼트
- BIOS 인터럽트가 인텔에 의해[31] 예약되어 있기 때문에 BIOS 기능의 사용
실제로는 거의 모든 DOS 애플리케이션 프로그램이 이러한 규칙을 [32]위반했습니다.이러한 제한으로 인해 386에는 가상 8086 모드가 도입되었습니다.이러한 잠재적인 장애에도 불구하고 Windows 3.0과 그 후속 제품은 실제 모드와의 바이너리 호환성을 이용하여 많은 Windows [33]2.x(Windows 2.0 및 Windows 2.1x) 응용 프로그램을 보호 모드로 실행할 수 있습니다.
가상 8086 모드
386 릴리스에서는 인텔 매뉴얼에서 가상 8086 모드라고 부르는 보호 모드가 제공되고 있습니다.Virtual 8086 모드는 8086용으로 이전에 작성된 코드를 수정하지 않고 다른 태스크와 동시에 실행할 수 있도록 설계되어 있으며 보안이나 시스템의 [34]안정성을 해치지 않습니다.
그러나 가상 8086 모드는 모든 프로그램과 완전히 하위 호환되지는 않습니다.세그먼트 조작, 특권 명령, 직접 하드웨어 액세스 또는 자체 수정 코드를 사용해야 하는 프로그램은 운영 [35]체제에서 처리되어야 하는 예외를 생성합니다.또한 가상 8086 모드에서 실행되는 애플리케이션은 I/O(입출력)와 관련된 명령을 사용하여 트랩을 생성하므로 [36]성능에 부정적인 영향을 미칠 수 있습니다.
이러한 제한으로 인해 원래 8086에서 실행되도록 설계된 일부 프로그램은 가상 8086 모드에서 실행할 수 없습니다.그 결과 시스템 소프트웨어는 레거시 소프트웨어를 취급할 때 시스템 보안 또는 하위 호환성을 침해해야 합니다.이러한 절충의 예는 Windows NT의 릴리스에서 볼 수 있습니다.이 릴리스에서는, 「부정한」[37] DOS 애플리케이션의 하위 호환성이 떨어집니다.
세그먼트 어드레싱
리얼 모드
리얼 모드에서는 각 논리 주소는 물리 메모리 위치를 직접 가리키며 각 논리 주소는 2개의 16비트 부분으로 구성됩니다.논리 주소의 세그먼트 부분에는 16바이트의 세분화된 세그먼트의 기본 주소가 포함됩니다. 즉, 세그먼트는 물리 주소 0, 16, 32, ..., 2-16에서20 시작할 수 있습니다.논리 주소의 오프셋 부분은 세그먼트 내부의 오프셋을 포함합니다. 즉, 물리적 주소는 다음과 같이 계산할 수 있습니다.physical_address : = segment_part × 16 + offset
(주소행 A20이 유효한 경우) 각각 (segment_part × 16 + offset) mod20 2 (A20이 [clarification needed]꺼진 경우) 모든 세그먼트의 크기는 2바이트입니다16.
보호 모드
보호 모드에서는segment_part는 16비트 셀렉터로 대체됩니다.13비트(비트3 ~ 비트15)에는 디스크립터 테이블 내의 엔트리의 인덱스가 포함됩니다.다음 비트(비트 2)는 동작이 GDT와 함께 사용되는지 LDT에서 사용되는지 여부를 지정합니다.실렉터의 하위2비트(비트1과 비트0)가 조합되어 요구의 특권을 정의합니다.여기서 0과 3의 값은 각각 최고와 최저의 특권을 나타냅니다.즉, 디스크립터 테이블 내의 디스크립터의 바이트오프셋은 하위 3비트가 제로인 경우 16비트셀렉터와 동일합니다.
디스크립터 테이블엔트리는 세그먼트의 실제 선형 주소, 세그먼트크기의 제한값 및 일부 속성 비트(플래그)를 정의합니다.
286
디스크립터 테이블엔트리 내의 세그먼트주소는 24비트의 길이를 가지므로 물리 메모리의 모든 바이트를 세그먼트의 바인드로 정의할 수 있습니다.디스크립터 테이블엔트리 내부의 한계치는 16비트이므로 세그먼트 길이는 1바이트에서16 2바이트 사이일 수 있습니다.계산된 선형 주소는 물리적 메모리 주소와 같습니다.
386
디스크립터 테이블엔트리 내의 세그먼트주소는 32비트로 확장되어 물리 메모리의 모든 바이트를 세그먼트의 바인드로 정의할 수 있습니다.디스크립터 테이블엔트리 내의 제한치는 20비트로 확장되어 입도 플래그(G비트, 줄여서 G비트)로 완성됩니다.
- G비트가 제로 제한인 경우 입도가 1바이트입니다.즉, 세그먼트 사이즈는 1, 2, ..., 2바이트가20 될 수 있습니다.
- G비트가 1개의 제한인 경우 2바이트의 입도를12 가집니다.즉, 세그먼트 사이즈는 1 × 212, 2 × 212, ..., 220 × 212 바이트가 될 수 있습니다.페이징이 꺼진 경우 계산된 선형 주소는 물리적 메모리 주소와 동일합니다.페이징이 켜져 있는 경우 계산된 선형 주소가 페이징 입력으로 사용됩니다.
386 프로세서는 주소 오프셋에도 32비트 값을 사용합니다.
286 보호 모드와의 호환성을 유지하기 위해 새로운 디폴트플래그(약칭 D비트)가 추가되었습니다.코드 세그먼트의 D비트가 꺼진 경우(0) 이 세그먼트 내의 모든 명령어는 기본적으로 16비트 명령어로 해석되며, 켜진 경우 32비트 명령어로 해석됩니다.
세그먼트 기술자 항목 구조
80286 세그먼트 기술자 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
80386 세그먼트 기술자 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
장소:
- A는 액세스 비트입니다.
- R은 가독 비트입니다.
- C(비트 42)는 [38]X에 의존합니다.
- X = 1인 경우 C는 적합 비트이며, (특권 수준을 변경하지 않고) 이 세그먼트에 원거리 할당 가능한 특권 수준을 결정합니다.
- C = 0인 경우 DPL과 동일한 특권 수준을 가진 코드만 여기로 점프할 수 있습니다.
- C = 1일 경우 DPL에 관련된 권한 수준이 같거나 낮은 코드가 여기로 점프할 수 있습니다.
- X = 0이면 C가 방향 비트입니다.
- C = 0이면 세그먼트가 커진다.
- C = 1이면 세그먼트가 작아집니다.
- X = 1인 경우 C는 적합 비트이며, (특권 수준을 변경하지 않고) 이 세그먼트에 원거리 할당 가능한 특권 수준을 결정합니다.
- X는 실행 가능 [38]비트입니다.
- X = 1이면 세그먼트는 코드 세그먼트입니다.
- X = 0이면 세그먼트가 데이터 세그먼트입니다.
- S는 세그먼트 타입 비트이며, 일반적으로 시스템 [38]세그먼트에 대해 삭제해야 합니다.
- DPL은 디스크립터 특권 수준입니다.
- P는 현재 비트입니다.
- D는 기본 오퍼랜드 크기입니다.
- G는 입도 비트입니다.
- 80386 디스크립터의 비트 52는 하드웨어에서 사용되지 않습니다.
페이징
386은 가상 8086 모드 추가와 더불어 보호 [39]모드에도 페이징을 추가했습니다.페이징을 통해 시스템 소프트웨어는 메모리의 일부인 페이지에 대한 태스크 접근을 제한하고 제어할 수 있습니다.많은 운영 체제에서 페이징은 각 태스크에 대해 독립된 가상 주소 공간을 생성하기 위해 사용되며, 한 태스크가 다른 태스크의 메모리를 조작하는 것을 방지합니다.또한 페이징을 통해 페이지를 프라이머리 스토리지에서 벗어나 하드 디스크 [40]드라이브와 같은 더 느리고 큰 세컨더리 스토리지로 이동할 수 있습니다.따라서 프라이머리 [40]스토리지에서 물리적으로 사용할 수 있는 메모리보다 더 많은 메모리를 사용할 수 있습니다.
x86 아키텍처에서는 페이지 디렉토리와 페이지 테이블이라는2개의 배열을 통해 페이지를 제어할 수 있습니다.원래 페이지 디렉토리의 크기는 1페이지, 4킬로바이트로 1,024페이지 디렉토리 엔트리(PDE)를 포함하고 있었습니다만, 그 후 x86 아키텍처가 확장되어 페이지 사이즈가 커졌습니다.각 PDE에는 페이지 테이블에 대한 포인터가 포함되어 있습니다.페이지 테이블은 원래 4킬로바이트 크기로 1,024개의 Page Table Entry(PTE; 페이지테이블 엔트리)를 포함하고 있었습니다.각 PTE에는 실제 페이지의 실제 주소에 대한 포인터가 포함되어 있으며 4킬로바이트 페이지가 사용되는 경우에만 사용됩니다.항상 1 페이지 디렉토리만 액티브하게 사용할 [41]수 있습니다.
멀티태스킹
286에서 도입된 링, 특권 콜게이트 및 Task State Segment(TSS; 태스크스테이트 세그먼트)를 사용함으로써 x86 아키텍처에서 프리엠프티브 멀티태스킹이 가능했습니다.TSS를 사용하면 범용 레지스터, 세그먼트셀렉터 필드 및 스택을 다른 태스크에 영향을 주지 않고 모두 변경할 수 있습니다.또한 TSS를 통해 태스크의 권한 수준과 I/O 포트 권한을 다른 태스크와 독립시킬 수 있습니다.
많은 운영체제시스템에서는 TSS의 모든 기능이 [42]사용되지 않습니다.이는 일반적으로 휴대성에 관한 문제 또는 하드웨어 태스크스위치로 [42]인한 성능 문제 때문입니다.그 결과 많은 운영체제는 하드웨어와 소프트웨어를 모두 사용하여 멀티태스킹시스템을 [43]만듭니다.
운영 체제
OS/2 1.x 등의 운영체제는 프로세서를 보호모드와 실제모드로 전환하려고 합니다.리얼 모드 프로그램은 컴퓨터를 쉽게 크래시 할 수 있기 때문에 이것은 느리고 안전하지 않습니다.OS/2 1.x는 제한적인 프로그래밍 규칙을 정의하여 패밀리 API 또는 바인딩된 프로그램을 실제 모드 또는 보호 모드로 실행할 수 있도록 합니다.일부 초기 Unix 운영체제시스템, OS/2 1.x 및 Windows에서는 이 모드를 사용했습니다.
Windows 3.0은 16비트 보호 모드로 리얼 모드 프로그램을 실행할 수 있었습니다.보호 모드로 전환할 때 리얼 모드에서 사용되던 단일 권한 수준 모델을 유지하기로 결정했기 때문에 Windows 응용 프로그램과 DLL이 인터럽트를 잠그고 직접 하드웨어 액세스를 수행할 수 있습니다.그것은 Windows 9x 시리즈까지 지속되었다.Windows 1.x 또는 2.x 프로그램이 올바르게 작성되어 세그먼트 연산을 피할 경우 실제 모드와 보호 모드 모두에서 동일하게 실행됩니다.Windows 프로그램은 일반적으로 소프트웨어 가상 메모리 스킴을 구현하여 프로그램이 실행되지 않을 때 프로그램 코드와 데이터를 메모리로 이동시키기 때문에 절대 주소를 조작하는 것은 위험합니다.프로그램은 실행 중이 아닐 때만 핸들을 메모리 블록에 유지해야 합니다.Windows 3.0이 보호 모드로 실행 중일 때 이전 프로그램을 시작하면 경고 대화 상자가 트리거되어 Windows를 실제 모드로 실행하거나 응용 프로그램의 업데이트된 버전을 가져오도록 제안합니다.MEMORY 매개 변수를 사용하여 MARK 유틸리티를 사용하여 정상 작동 프로그램을 업데이트하면 이 대화 상자가 표시되지 않습니다.일부 GUI 프로그램을 16비트 보호 모드로 실행하고 다른 GUI 프로그램을 실제 모드로 실행할 수 없습니다.Windows 3.1에서는 리얼 모드가 지원되지 않게 되어 액세스 할 수 없었습니다.
최신 32비트 운영체제에서는 가상8086 모드는 DPMI 호환 DOS 익스텐더 프로그램(가상 DOS 머신 경유)이나 Windows 3.x 애플리케이션(Windows의 서브시스템 경유) 및 OS/에서 특정 클래스의 디바이스 드라이버(BIOS 기능을 사용한 화면 해상도 변경 등)를 실행하기 위해 여전히 사용됩니다.2.0(및 그 이후의 OS/2) 및 32비트 Windows NT, 모두 32비트 커널에 의해 제어됩니다.그러나 가상 8086 모드가 롱 모드에서 삭제되었기 때문에 64비트 운영 체제(롱 모드에서 실행)에서는 더 이상 이 모드가 사용되지 않습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Memory access control method and system for realizing the same". US Patent 5483646. May 23, 1995. Archived from the original (Patent) on September 26, 2007. Retrieved 2007-07-14.
The memory access control system according to claim 4, wherein said first address mode is a real address mode, and said second address mode is a protected virtual address mode.
- ^ a b Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture. Intel. May 2019. Section 2.1.3 The Intel 386 Processor (1985).
- ^ a b root (July 14, 2007). "Guide: What does protected mode mean?" (Guide). Delorie Software. Retrieved 2007-07-14.
The purpose of protected mode is not to protect your program. The purpose is to protect everyone else (including the operating system) from your program.
- ^ a b Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture. Intel. May 2019. Section 3.1 Modes of Operation.
- ^ Collins, Robert (2007). "Protected Mode Basics" (PDF). ftp.utcluj.ro. Archived from the original (PDF) on 2011-07-07. Retrieved 2009-07-31.
- ^ Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture. Intel. May 2019. Section 2.1.2 The Intel 286 Processor (1982).
- ^ a b "Intel Global Citizenship Report 2003". Archived from the original (Timeline) on 2008-03-22. Retrieved 2007-07-14.
1985 Intel launches Intel386 processor
- ^ Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture. Intel. May 2019. Section 2.1 Brief History of Intel 64 and IA-32 Architecture.
- ^ a b c "A+ - Hardware" (Tutorial/Guide). PC Microprocessor Developments and Features Tutorials. BrainBell.com. Retrieved 2007-07-24.
- ^ Risley, David (March 23, 2001). "A CPU History". PCMechanic. Archived from the original (Article) on August 29, 2008. Retrieved 2007-07-24.
What is interesting is that the designers of the time never suspected anyone would ever need more than 1 MB of RAM.
- ^ a b c d e Kaplan, Yariv (1997). "Introduction to Protected-Mode". Internals.com. Archived from the original (Article) on 2007-06-22. Retrieved 2007-07-24.
- ^ "General Information FAQ for the Coherent Operating System". January 23, 1993.
- ^ "Microsoft XENIX 286 Press Release" (PDF) (Press release). Microsoft.
- ^ "MINIX Information Sheet". Archived from the original on January 7, 2014.
- ^ Mueller, Scott (March 24, 2006). "P2 (286) Second-Generation Processors". Upgrading and Repairing PCs, 17th Edition (Book) (17 ed.). Que. ISBN 0-7897-3404-4. Retrieved 2017-07-11.
- ^ a b 80386 Programmer's Reference Manual (PDF). Santa Clara, CA: Intel. 1986. Section 2.1 Memory Organization and Segmentation.
- ^ Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture. Intel. May 2019. Section 3.1 Modes of Operation.
- ^ Hyde, Randall (November 2004). "12.10. Protected Mode Operation and Device Drivers". Write Great Code. O'Reilly. ISBN 1-59327-003-8.
- ^ Charles Petzold, 인텔의 32비트 Wonder:80386 마이크로프로세서, PC 매거진, 1986년 11월 25일, 페이지 150-152
- ^ Tom Yager (6 November 2004). "Sending software to do hardware's job". InfoWorld. Retrieved 24 November 2014.
- ^ Shvets, Gennadiy (June 3, 2007). "Intel 80386 processor family" (Article). Retrieved 2007-07-24.
80386SX — low cost version of the 80386. This processor had 16 bit external data bus and 24-bit external address bus.
- ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes 3A, 3B, 3C, and 3D: System Programming Guide". Intel. Section 21.33.1 Segment Wraparound, page 21-34.
- ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes 3A, 3B, 3C, and 3D: System Programming Guide". Intel. 9.9.1 Switching to Protected Mode, page 9-13.
- ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes 3A, 3B, 3C, and 3D: System Programming Guide". Intel. Section 9.10.2 STARTUP.ASM Listing, page 9-19.
- ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes 3A, 3B, 3C, and 3D: System Programming Guide". Intel. Section 9.9.2 Switching Back to Real-Address Mode, page 9-14.
- ^ Intel 80386 Programmer's Reference Manual 1986 (PDF). Santa Clara, CA: Intel. 1986. Chapter 7, Multitasking.
- ^ a b Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture. Intel. May 2019. Section 6.3.5 Calls to Other Privilege Levels.
- ^ 80286 and 80287 Programmer's Reference Manual (PDF). Santa Clara, CA: Intel. 1987. Section 1.2 Modes of Operation.
- ^ 80286 and 80287 Programmer's Reference Manual (PDF). Santa Clara, California: Intel. 1987. Section 1.3.1 Memory Management.
- ^ 80286 and 80287 Programmer's Reference Manual (PDF). Santa Clara, California: Intel. 1987. Appendix C 8086/8088 Compatibility Considerations.
- ^ "Memory access control method and system for realizing the same" (Patent). US Patent 5483646. May 6, 1998. Retrieved 2007-07-25.
This has been impossible to-date and has forced BIOS development teams to add support into the BIOS for 32 bit function calls from 32 bit applications.
- ^ Robinson, Tim (August 26, 2002). "Virtual 8086 Mode". berliOS. Archived from the original (Guide) on October 3, 2002. Retrieved 2007-07-25.
... secondly, protected mode was also incompatible with the vast amount of real-mode code around at the time.
- ^ Robinson, Tim (August 26, 2002). "Virtual 8086 Mode". berliOS. Archived from the original (Guide) on October 3, 2002. Retrieved 2007-07-25.
- ^ Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes 3A, 3B, 3C, and 3D: System Programming Guide. Intel. May 2019. Section 20.2 Virtual 8086 Mode.
- ^ Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes 3A, 3B, 3C, and 3D: System Programming Guide. Intel. May 2019. Section 20.2.7 Sensitive Instructions.
- ^ Robinson, Tim (August 26, 2002). "Virtual 8086 Mode". berliOS. Archived from the original (Guide) on October 3, 2002. Retrieved 2007-07-25.
A downside to using V86 mode is speed: every IOPL-sensitive instruction will cause the CPU to trap to kernel mode, as will I/O to ports which are masked out in the TSS.
- ^ Dabak, Prasad; Millind Borate (October 1999). Undocumented Windows NT (Book). Hungry Minds. ISBN 0-7645-4569-8.
- ^ a b c "Global Descriptor table - OSDev Wiki".
- ^ "ProtectedMode overview [deinmeister.de]" (Website). Retrieved 2007-07-29.
- ^ a b "What Is PAE X86?" (Article). Microsoft TechNet. May 28, 2003. Retrieved 2007-07-29.
The paging process allows the operating system to overcome the real physical memory limits. However, it also has a direct impact on performance because of the time necessary to write or retrieve data from disk.
- ^ Gareau, Jean. "Advanced Embedded x86 Programming: Paging" (Guide). Embedded.com. Retrieved 2007-07-29.
Only one page directory may be active at a time, indicated by the CR3 register.
- ^ a b zwanderer (May 2, 2004). "news: Multitasking for x86 explained #1". NewOrer. NewOrder. Archived from the original (Article) on 2007-02-12. Retrieved 2007-07-29.
The reason why software task switching is so popular is that it can be faster than hardware task switching. Intel never actually developed the hardware task switching, they implemented it, saw that it worked, and just left it there. Advances in multitasking using software have made this form of task switching faster (some say up to 3 times faster) than the hardware method. Another reason is that the Intel way of switching tasks isn't portable at all
- ^ zwanderer (May 2, 2004). "news: Multitasking for x86 explained #1". NewOrer. NewOrder. Archived from the original (Article) on 2007-02-12. Retrieved 2007-07-29.
... both rely on the Intel processors ability to switch tasks, they rely on it in different ways.