리얼 모드
Real mode시리즈의 일부 |
x86 아키텍처용 마이크로프로세서 모드 |
---|
괄호 안에 표시된 첫 번째 지원 플랫폼 |
리얼 모드는 리얼 어드레스 모드라고도 불리며 모든 x86 호환 CPU의 동작 모드입니다.이 모드는 실제 모드의 주소가 항상 메모리 내의 실제 위치에 대응하고 있기 때문에 붙여진 이름입니다.리얼 모드는 20비트의 세그먼트 메모리 주소 공간(1MB의 주소 지정 가능 메모리)과 모든 주소 지정 가능 메모리, I/O 주소 및 주변 하드웨어에 대한 무제한 직접 소프트웨어 액세스를 특징으로 합니다.Real 모드는 메모리 보호, 멀티태스킹 또는 코드 특권 수준을 지원하지 않습니다.
보호모드가 도입된80286이 출시되기 전에는 리얼모드가 x86 [1]CPU에서 사용 가능한 유일한 모드였습니다.하위 호환성을 위해 리셋 시 모든 x86 CPU가 리얼모드로 기동합니다.단, 다른 모드로 기동할 때는 다른 시스템에서 리얼모드를 에뮬레이트할 수 있습니다.
역사
286 아키텍처는 (특히) 하드웨어 수준의 메모리 보호를 가능하게 하는 보호 모드를 도입했습니다.그러나 이러한 새로운 기능을 사용하려면 보호 모드용으로 특별히 설계된 새로운 운영 체제가 필요했습니다.x86 마이크로프로세서의 주요 설계 사양은 이전의 모든 x86 칩에 대해 작성된 소프트웨어와 완전히 역호환된다는 것이기 때문에, 286 칩은 '리얼 모드'로 시작되었으며, 즉 새로운 메모리 보호 기능을 끄고 8086 및 8088용으로 작성된 운영 체제를 실행할 수 있도록 했습니다.2018년 현재 현재 x86 CPU(x86-64 CPU 포함)는 리얼 모드 운영체제를 부팅할 수 있으며 에뮬레이션이나 가상화 없이 이전 x86 칩용으로 작성된 소프트웨어를 실행할 수 있습니다.
IBM이 선보인 PC BIOS는 DOS 운영체제(MS-DOS, DR-DOS 등)와 마찬가지로 실제 모드로 작동합니다.Microsoft Windows 의 초기 버전은 리얼 모드로 동작했습니다.Windows/386 에서는, 프로텍트 모드를 어느 정도 사용할 수 있게 되어, Windows 3.0 에서는 리얼 모드로 실행하거나 Windows/386 의 방법으로 프로텍트 모드를 사용할 수 있게 되었습니다.Windows 3.0 에는, 「실제 모드」, 「표준 모드」, 및 「386 확장 모드」의 몇개의 모드가 있습니다.이 모드에서는 80386 프로세서의 가상화 기능의 일부가 필요하기 때문에, 80286에서는 동작하지 않습니다.Windows 3.1 에서는 리얼 모드의 서포트가 없어져, 적어도 80286 프로세서가 필요한 최초의 메인스트림 운영 환경입니다.이러한 버전은 모두 특정 기능에 대해서만 보호 모드로 전환되었기 때문에 최신 x86 운영 체제로 간주할 수 없습니다.Unix, Linux, OS/2, Windows NT는 기동시에 CPU를 보호 모드로 전환해, 리얼 모드로 돌아가지 않고, 항상 보호 모드의 메리트를 모두 얻을 수 있기 때문에, 최신의 OS로 간주되고 있습니다.64비트 운영체제는 부팅 단계에서만 실제 모드를 사용하며 OS 커널은 CPU를 롱 [2]모드로 전환합니다.특히 80286의 보호 모드는 80386에서 도입된 향상된 보호 모드보다 훨씬 더 원시적입니다. 보호 모드는 386 보호 모드라고도 하며 최신 32비트 x86 운영 체제가 [citation needed]실행되는 모드입니다.
어드레싱 용량
8086, 8088 및 80186은 20비트주소버스를 탑재하고 있습니다만, 이러한 프로세서에 대해서 인텔이 선택한 비정상적인 세그먼트어드레싱 스킴에 의해서, 실제로는 유효 주소가 생성되어 21비트의 유효 비트가 됩니다.이 방식에서는 16비트주소 오프셋을 추가하기 전에 4비트의 세그먼트 번호(최저 유효0이 4개인 20비트 번호 작성)를 이동합니다.세그먼트와 오프셋이 모두 0xFFF0 + 0xFFF일 때 최대 합계가 발생합니다.FF = 0x10FFEF. 8086, 8088 및 80186에서는 20비트가 오버플로우하는 유효 주소의 결과는 주소가 주소 범위의 0 끝까지 "주소"되기 때문입니다. 즉, 모듈로 2^20(2^20 = 1048576 = 0x100000).단, 80286은 24개의 어드레스 비트를 갖추고 있어 실제 모드에서도 유효 주소를 24비트로 계산합니다.따라서 세그먼트 0xFFF 및 오프셋이 0x000F보다 큰 경우 80286은 실제로 두 번째 메가바이트 메모리의 선두에 액세스하지만 80186 이전 버전은 첫 번째 메가바이트의 선두에 있는 [offset]-0x10과 동일한 주소에 액세스합니다.(80186 이전 버전에서는 주소 0에서 시작하는 주소 공간의 첫 번째 킬로바이트는 인터럽트 벡터테이블의 영속적인 이동 불능 위치입니다).따라서 실제 모드에서 80286 이후의 x86 CPU에 의해 주소 지정 가능한 실제 메모리 양은 1MB + 64KB – 16B = 1,194,096B입니다.
A20 라인
80286 이전의 일부 프로그램은 랩 어라운드(모듈로) 메모리 주소 지정 동작을 이용하도록 설계되었기 때문에 80286은 하위 호환성에 문제가 있었습니다.21번째 어드레스 라인(칩에서 나오는 실제 로직 신호 와이어)을 로직 로우(0)로 강제하면 이전 프로세서의 어드레스 산술과 일치하는 모듈로-2^20 효과가 발생하지만 80286은 이 기능을 실행할 수 있는 내부 기능이 없습니다.IBM은 IBM PC/AT에서 80286을 사용할 때 소프트웨어 설정 가능한 게이트를 포함하여 80286의 A20 핀과 시스템버스 사이의 A20 주소 라인을 활성화 또는 비활성화(강제적으로 0으로 설정)함으로써 이 문제를 해결했습니다.이것을 Gate-A20(A20 게이트)라고 부릅니다.대부분의 HIMEM 버전IBM-/MS-DOS용 SYS 확장 메모리 드라이버는 Gate-A20을 제어하고 프로그램의 필요에 맞게 조정하기 위한 소프트웨어인 "A20 핸들러"를 설치했다는 메시지를 로드했을 때 잘 표시되었습니다.보호 모드에서는, A20 회선을 유효하게 할 필요가 있습니다.그렇지 않으면 물리 주소 지정 에러가 발생해, 시스템이 크래쉬 할 가능성이 있습니다.현재의 레거시 부트 로더(GNU GRUB 등)는 A20 [3]회선을 사용합니다.
리얼 모드로 전환
인텔은 x86 패밀리에 프로텍트 모드를 도입했습니다.이 모드를 사용하는 운영체제는 완전히 새로운 모드로 동작하며 프로텍트 모드 운영체제 하에서 동작하는 모든 프로그램도 프로텍트 모드로 동작합니다.리얼 모드와 다소 제한된 286 보호 모드 간의 상당한 차이 때문에 리얼 모드용으로 작성된 프로그램은 다시 작성되지 않으면 보호 모드에서 실행할 수 없습니다.따라서 사용자가 의존하는 기존 리얼 모드 애플리케이션의 광범위한 기반에서 리얼 모드를 포기하는 것은 업계에 문제를 일으켰고 프로그래머들은 모드 간에 자유롭게 전환할 수 있는 방법을 모색했습니다.그러나 인텔은 프로세서 사용 목적에 따라 80286에서 보호모드로 쉽게 전환할 수 있었지만 실제 모드로 되돌릴 수 있는 방법은 없었습니다.386 이전에는 프로세서를 리셋하는 방법밖에 없었습니다.리셋 후에는 항상 리얼 모드로 기동하여 이전 x86 CPU와의 호환성을 8086으로 되돌립니다.프로세서를 리셋해도 시스템의 RAM이 클리어 되는 것은 아니기 때문에, 이것은 어색하고 비효율적이지만, 실제로는 실현 가능합니다.보호 모드에서는 프로세서의 상태가 메모리에 저장되고 다음으로 프로세서가 리셋되어 리얼 모드로 재기동되어 리얼 모드 코드를 실행하여 저장된 상태를 메모리에서 복원합니다.그런 다음 프로그램이 보호 모드로 다시 전환할 준비가 될 때까지 다른 리얼 모드 코드를 실행할 수 있습니다.Real 모드로 전환하려면 시간이 많이 소요되지만 이 기술을 사용하면 보호 모드 프로그램이 완전히 Real 모드로 실행되는 BIOS와 같은 서비스를 사용할 수 있습니다(원래 8088 기반 IBM Personal Computer 모델(머신 유형) 5150용으로 설계됨).이 모드 전환 기술은 DPMI(에뮬레이트되지 않은 실제 DOS) 및 DOS/4GW와 같은 DOS 익스텐더에 의해 사용되는 기술이기도 합니다.DPMI 시스템 또는 DOS 익스텐더는 DOS 또는 BIOS 콜을 호출하기 위해 실제 모드로 전환한 후 보호 모드에서 실행되는 응용 프로그램으로 돌아갑니다.
사양
NT 커널로 변경됨에 따라 운영체제는 컴퓨터를 부팅하기 위해 DOS를 필요로 하지 않을 뿐만 아니라 사용할 수도 없게 되었습니다.Windows 3.1x 이후 MS-DOS 를 리얼 모드로 재기동할 필요가 없어져 Windows Me 에서는 지원되지 않게 되었습니다.현재 DOS 응용 프로그램을 실행하는 유일한 방법은 DOSBox 나 x86 가상화 제품과 같은 에뮬레이터를 사용하는 것입니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "A Brief x86 History".
- ^ "Booting · Linux Inside". 0xax.gitbooks.io. Retrieved November 10, 2020.
- ^ "A20 Line - OSDev Wiki". wiki.osdev.org. Retrieved September 10, 2020.
외부 링크
- Chourdakis, Michael (May 21, 2015). "The Real, Protected, Long mode assembly tutorial for PCs". Code Project.