[现代操作系统] I/O软件

作者: mbinary | 来源:发表于2018-06-17 15:05 被阅读11次

    IO软件目标

    • 设备独立性(device independence): 编写的程序能够访问任何设备而无需事先指定. 即程序的通用性
    • 统一命名(uniform naming): 一个文件或一个设备的名字应该是一个简单的字符串或数字.
    • 错误处理(error handling): 错误应该尽可能接近硬件得到处理. 处理不了再上传
    • 同步(synchronous) 和 异步(asynchronous)(即中断驱动): 大都数物理 I/O 是 异步的

    IO处理方式

    • 程序控制 I/O
      让 CPU 做全部 I/O工作,成为程序控制 I/O
      CPU 要不断地查询设备, 这成为 pollingbusy waiting
    • 中断驱动 I/O
      缺点是 中断发生在每个事件上, 同样要花一些时间,
      如打印一个缓冲区的字符, 每个字符都要中断一次
    • 使用DMA
      需要特殊的硬件 DMA 控制器, 每个缓冲区中断一次

    IO软件层次

    中断处理程序

    中断发生时软件需要做的

    设备驱动程序

    每个连接到计算机上的 I/O 设备都需要某些设备特定的代码来对其进行控制 , 注意 设备控制器是硬件上的, 驱动程序是软件上的.

    位置

    为了访问设备的硬件(即设备控制器的寄存器), 设备驱动程序需要是系统内核的一部分.

    其实也可以构造运行在用户空间的驱动程序,使用系统调用来读写设备寄存器. 这样可以使内核与驱动程序, 驱动程序之间隔离, 消除驱动程序干扰内核造成的系统崩溃.

    功能

    • 接收来自其上方与设备无关的软件发出的抽象的读写请求
    • 如果需要, 驱动程序 必须对设备进行初始化,还可能对电源需求和日志事件进行管理

    运行

    驱动程序在执行期间动态地装在到系统


    与设备无关的I/O软件

    功能

    • 缓冲


    • 错误报告
    • 分配与释放专用设备
    • 提供与设备无关的块大小
    • 设备驱动程序的统一接口

    用户空间的IO软件

    • C 语言中的 printf

    • 假脱机(spoolilng)
      如果一个进程打开它, 然后很长时间不使用, 则其他进程都无法打印 . 另外一种方法是 创建一个 守护进程(daemon)假脱机目录. 一个进程要打印一个文件时, 首先生成要打印的整个文件, 并且放在假脱机目录, 由守护进程打印该目录下的文件, ,,守护进程是唯一允许使用打印机特殊文件的进程.

    相关文章

      网友评论

        本文标题:[现代操作系统] I/O软件

        本文链接:https://www.haomeiwen.com/subject/rtzbeftx.html