如何在保护模式下与磁盘或光盘进行交互?

问题描述:

我正在尝试编写一个爱好实验操作系统。我有这个问题。如何在保护模式下与磁盘或光盘进行交互?

在实模式中,我可以依靠BIOS来处理磁盘和光盘(有时使用LBA BIOS扩展)。但是一旦我进入保护模式,我就不能再使用BIOS中断了。那么,我应该写我自己的设备驱动程序吗?有没有最佳做法?

谢谢!

有几种方法:

  • 虚拟化在保护模式下的BIOS界面
  • 写自己的保护模式驱动程序
  • 不支持的驱动器

当然,最后其中一个对于通用系统来说并不好,但它有其用处,就像我目前正在研究的军用产品一样 - 出于安全原因,他们不希望使用可移动媒体。

编写自己的驱动程序有以下几个优点:

  • BIOS界面是一个“忙等待”执行。每个BIOS磁盘访问都会阻止操作系统中的所有进程。
  • 此外,驱动器I/O是几个抽象层之一,其中许多抽象层实现文件系统要复杂得多。
  • 你不需要从头开始。从Linux磁盘驱动程序开始。请参阅this
+0

感谢您的回复。至于你的军事产品,如果它不支持驱动器,它会从哪里启动?它会在哪里加载程序来运行? – smwikipedia 2011-05-01 07:41:34

+0

从不可移动介质:闪存焊接到位。程序驻留在NVRAM中,但是通过串行链接有一个明确的,受密码保护的更新机制。 – wallyk 2011-05-01 15:25:11