2010-06-08 4 views
2

일부 OS 실험을하고 있습니다. 지금까지 모든 코드는 하드 디스크와 플로피를 조작하기 위해 리얼 모드 BIOS 인터럽트를 사용했습니다. 하지만 내 코드가 CPU의 보호 모드를 활성화하면 모든 실제 모드 BIOS 인터럽트 서비스 루틴을 사용할 수 없게됩니다. 하드 디스크와 플로피를 어떻게 R/W 할 수 있습니까? 하드웨어 드라이버를 지금 사용해야한다는 느낌이 들었습니다. 내가 맞습니까? 왜 OS가 개발하기가 어렵습니까?CPU가 보호 모드에있을 때 하드 디스크를 R/W하는 방법?

나는 기계 설비 모두에서 읽기 및 특정 제어 또는 데이터 쓰기에 의해 제어 등록하는 것을 알고있다. 예를 들어, 명령 블록 레지스터의 하드 디스크 범위는 0x1F0에서 0x1F7까지입니다. 하지만 PC 플랫폼에서 너무 많은 하드웨어의 등록 주소가 같은지 궁금합니다. 아니면 사용하기 전에 감지해야합니까? 어떻게 그들을 감지 ??

보호 모드에서 플로피 또는 하드 디스크를 읽는 방법에 대해 잘 모르겠으므로 플로피에서 필요한 모든 커널 파일을 메모리로로드하려면 BIOS 인터럽트를 사용해야합니다. 그러나 커널 파일이 실제 모드 1M 공간 제한을 초과하면 어떻게해야합니까?

모든 응답에 대해 깊은 감사를드립니다.

+0

Linux (http://lxr.linux.no/+trees) 또는 * BSD (http://fxr.watson.org/)와 같은 기존 OS에서 어떻게 처리되는지 확인할 수 있습니다. –

+1

@RSamuelKlatchko 학습의 목적으로 Linux 소스 코드를 읽는 사람 ***에게 조언하지 않겠습니다. MINIX가 더 좋은 아이디어 일 수 있습니다. – DividedByZero

답변

2

드라이버를 반드시 작성해야하는 것은 아닙니다. 리얼 모드로 되돌아 가서 BIOS 서비스를 호출 한 다음, 완료되면 보호 모드로 돌아갈 수 있습니다. 이것은 본질적으로 DPMI DOS 익스텐더 (DOS4GW, 코즈웨이 등)가 작동하는 방법입니다.

코즈웨이 도스 익스텐더의 소스 코드는 공개 도메인이므로 참조 할 수 있습니다. http://www.devoresoftware.com/freesource/cwsrc.htm

관련 문제