📜  操作系统中的内核 I/O 子系统

📅  最后修改于: 2021-09-27 14:36:24             🧑  作者: Mango

先决条件 – 微内核
内核提供了许多与 I/O 相关的服务。一些服务,如调度、缓存、假脱机、设备保留和错误处理——由内核提供,s I/O 子系统构建在硬件和设备驱动程序基础设施上。 I/O 子系统还负责保护自己免受错误进程和恶意用户的侵害。

  1. I/O 调度 –
    调度一组 I/O 请求意味着确定执行它们的良好顺序。应用程序发出系统调用的顺序是最佳选择。调度可以提高系统的整体性能,可以公平地将设备访问权限共享给所有进程,减少平均等待时间、响应时间、完成I/O的周转时间。

    操作系统开发人员通过为每个设备维护一个请求的等待队列来实现调度。当应用程序发出阻塞 I/O 系统调用时,请求被放置在该设备的队列中。 I/O 调度器重新排列顺序以提高系统的效率。

  2. 缓冲 –
    缓冲区是存储在两个设备之间或设备与应用程序之间传输的数据的内存区域。进行缓冲有三个原因。
    1. 首先是应对数据流的生产者和消费者之间的速度不匹配。
    2. 缓冲的第二个用途是为具有不同数据传输大小的数据提供适配。
    3. 缓冲的第三个用途是支持应用程序 I/O 的复制语义,“复制语义”的意思是,假设应用程序想要将数据写入存储在其缓冲区中的磁盘上。它调用write()系统的调用,提供指向缓冲区的指针和指定要写入的字节数的整数。
  3. 缓存 –
    缓存是保存数据副本的快速内存区域。访问缓存副本比原始文件容易得多。例如,当前正在运行的进程的指令存储在磁盘上,缓存在物理内存中,然后再次复制到 CPU 的二级和一级缓存中。

    缓冲区和缓存之间的主要区别在于,缓冲区可能仅保存数据项的现有副本,而缓存根据定义,保存驻留在其他位置的项目的更快存储的副本。

  4. 假脱机和设备保留 –
    假脱机是保存设备输出的缓冲区,例如不能接受交错数据流的打印机。尽管打印机一次只能处理一项作业,但多个应用程序可能希望同时打印它们的输出,而不会将它们的输出混合在一起。

    操作系统通过阻止所有输出继续到打印机来解决此问题。所有应用程序的输出都存储在一个单独的磁盘文件中。当应用程序完成打印时,假脱机系统将相应的假脱机文件排队以输出到打印机。

  5. 错误处理——
    使用受保护内存的操作系统可以防止多种硬件和应用程序错误,因此每个小机械故障通常不会导致整个系统故障,设备和 I/O 传输可能会以多种方式失败,无论是由于暂时原因,例如当网络过载或出于永久性原因时,例如当磁盘控制器出现故障时。
  6. I/O 保护 –
    错误与保护问题密切相关。用户进程可能会尝试发出非法 I/O 指令来破坏系统的正常函数。我们可以使用各种机制来确保系统中不会发生这种中断。

    为了防止非法 I/O 访问,我们将所有 I/O 指令定义为特权指令。用户不能直接发出 I/O 指令。