如何在保护模式下与磁盘或光盘进行交互?
问题描述:
我正在尝试编写一个爱好实验操作系统。我有这个问题。如何在保护模式下与磁盘或光盘进行交互?
在实模式中,我可以依靠BIOS来处理磁盘和光盘(有时使用LBA BIOS扩展)。但是一旦我进入保护模式,我就不能再使用BIOS中断了。那么,我应该写我自己的设备驱动程序吗?有没有最佳做法?
谢谢!
答
有几种方法:
- 虚拟化在保护模式下的BIOS界面
- 写自己的保护模式驱动程序
- 不支持的驱动器
当然,最后其中一个对于通用系统来说并不好,但它有其用处,就像我目前正在研究的军用产品一样 - 出于安全原因,他们不希望使用可移动媒体。
编写自己的驱动程序有以下几个优点:
- BIOS界面是一个“忙等待”执行。每个BIOS磁盘访问都会阻止操作系统中的所有进程。
- 此外,驱动器I/O是几个抽象层之一,其中许多抽象层实现文件系统要复杂得多。
- 你不需要从头开始。从Linux磁盘驱动程序开始。请参阅this。
感谢您的回复。至于你的军事产品,如果它不支持驱动器,它会从哪里启动?它会在哪里加载程序来运行? – smwikipedia 2011-05-01 07:41:34
从不可移动介质:闪存焊接到位。程序驻留在NVRAM中,但是通过串行链接有一个明确的,受密码保护的更新机制。 – wallyk 2011-05-01 15:25:11