1

최근에 간단한 OS를 작성하려고합니다. 이것은 큰 프로젝트입니다.
내 코드를 작성할 때 최신 OS가 보호 모드에서 하드웨어에 어떻게 연결되는지 궁금합니다
리얼 모드에서는이 작업을 수행하기 위해 BIOS 인터럽트를 호출 할 수 있습니다.
그러나 보호 모드에서이 목표를 달성하는 방법에 대해 궁금합니다. (명령어를 사용하고 사용하고 있습니까?)
일부 Linux 소스 코드를 추적했지만 적절한 코드를 찾을 수 없습니다.보호 모드의 하드웨어 드라이버에 대해

나는 그것이 많은 사람들에게 기본적인 질문이라는 것을 안다. plz는 나를 도와 준다.
그리고 내 불쌍한 영어에 대해 유감스럽게 생각합니다.

+1

[x86 어셈블리 보호 모드 키보드 액세스] (http://stackoverflow.com/questions/219120/x86-assembly-protected-mode-keyboard-access)의 속임수로 표시했습니다. 그것은 100 % 동일하지 않습니다 -이 질문은 그 하나의 수퍼 집합이지만 해결책은 같습니다. –

답변

1

보호 모드에서 CPU는 커널 모드 또는 사용자 모드로 실행될 수 있습니다. 커널 모드에서는 항상 하드웨어에 액세스 할 수 있습니다. BIOS 인터럽트를 호출하는 것은 오래된 방법이지만 현대 OS에는 일반적으로 하드웨어 용 장치 드라이버가 있으며 BIOS를 너무 자주 호출하지 않습니다. 하드웨어 데이터 시트를 알고 있다면 inout을 사용하여 하드웨어에 직접 액세스 할 수 있습니다. 또한 최신 PCI 및 PCI Express 장치의 경우 메모리 매핑 IO (X86 CPU도이를 지원함)를 지원하므로 mov을 사용하여 하드웨어에 액세스 할 수 있습니다.

x86의 경우 CPU는 사용자 수준 프로그램이 내부 및 외부 명령을 사용하여 하드웨어에 액세스하도록 허용합니다. 인텔 CPU 매뉴얼에서 찾을 수 있습니다. DPL, CPL을 설정하십시오. (나는 정확한 이름을 잊었다).

Linux Device Drivers, 3rd edition과 같은 장치 드라이버에 대한 책을 읽는 것이 좋습니다. http://lwn.net/Kernel/LDD3/

+0

tks, 많이 도와주세요. – mike820324