I / O 子系统的层次结构

          I / O 软件涉及的面非常广,往下与硬件有着密切的联系,往上又与用户直接交互,它与进程管理、存储器管理、文件管理等都存在着一定的联系,即它们都可能

      需要 I / O 软件来实现 I / O 操作。

          为了使复杂的 I / O 软件具有清晰的结构,良好的可移植性和适应性,在 I / O 软件中普遍采用了层次结构,将系统输入 / 输出功能组织称一系列的层次,每一层都

      利用其下层提供的服务,完成输入 / 输出功能中的某些子功能,并屏蔽这些功能实现的细节,向高层提供服务。在层次式结构的 I / O 软件中,只要层次间的接口不变,

      对某一层次中的修改都不会引起其下层或高层代码的变更,仅最底层才涉及硬件的具体特性。

          一个比较合理的层次划分图如下:

          

         整个 I / O 系统可以看成具有四个层次的系统结构,各层次及其功能如下:

         (1)、用户层 I / O 软件

                      实现与用户交互的接口,用户可直接调用在用户层提供的、与 I / O 操作有关的库函数,对设备进行操作。

                     一般而言,大部分的 I / O 软件都在操作系统内部,但仍有一小部分在用户层,包括与用户程序链接在一起的库函数,以及完全运行于内核之外的

             一些程序。用户层软件必须通过一组系统调用来获取操作系统服务。

         (2)、设备独立性软件

                     用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护、以及设备分配与释放等,同时为设备管理和数据传送提供必要的存储空间。

                     设备独立性也称为设备无关性,使得应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备物理设备这两个概念。在

              应用程序中,使用逻辑设备名来请求使用某类设备;而在系统实际执行时,必须将逻辑设备名映射成物理设备名使用。

               ------------------------------------------------------------

                      使用逻辑设备名的好处:

                       a.增加设备分配的灵活性

                       b.易于实现 I / O重定向,所谓 I / O 重定向,是指用于 I /O 操作的设备可以更换(即重定向),而不必改变应用程序

              -------------------------------------------------------------

                      为了实现设备独立性,必须在驱动程序之上设置一层设备独立性软件。总体来说,设备独立性软件的主要功能可分为以下两个方面:

                      a.执行所有设备的公有操作。包括:对设备分配与回收;将逻辑设备名映射为物理设备名;对设备进行保护,禁止用户直接访问设备;

                         缓冲管理;差错控制;提供独立于设备的大小统一的逻辑块,屏蔽设备之间信息交换单位大小和传输速率的差异。

                      b.向用户层(或文件层)提供统一接口。无论何种设备,它们向用户所提供的接口应该是相同的。例如,对各种设备的读 / 写 操作,在

                          应用程序中都统一使用  read / write 命令等。

            (3)、设备驱动程序

                          与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动 I / O 设备工作的驱动程序。

                         通常,每一类设备配置一个设备驱动程序,它是 I / O 进程与设备控制器之间的通信程序,常以进程形式存在。设备驱动程序向上层用户

                    程序提供一组标准接口,设备具体的差别被设备驱动程序所封装,用于接收上层软件发来的抽象 I / O 要求,如  read  和 write 命令,转换为

                    具体要求后,发送给设备控制器,控制  I / O 设备工作;它也将由设备控制器发来的信号传送给上层软件。从而为 I / O 内核子系统隐藏了设备

                    控制器之间的差异。

            (4)、中断处理程序

                    用于保存被中断进程的 CPU 环境,转入相应的中断处理程序进行处理,处理完并恢复被中断进程的现场后,返回到被中断进程。

                    中断处理层的主要任务有:进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态等。由于中断处理与硬件紧密

                 相关,对用户而言,应尽量加以避免,故应放在操作系统的底层,系统的其余部分尽可能少地与之发生联系。

             (5)、硬件设备

                           I / O 设备通常包括一个机械部件和一个电子部件。为了达到设计的模块性和通用性,一般将其分开:电子部件称为设备控制器(或适配器),

                     在个人计算机中,通常是一块插入主板扩充槽的印刷电路板;机械部件则是设备本身。          

                          设备控制器通过寄存器与CPU 通信,在某些计算机上,这些寄存器占用内存地址的一部分,称为内存映像 I / O ;另一些计算机则采用 I / O 

                     专用地址,寄存器独立编址。操作系统通常向控制器寄存器写命令来执行  I / O 功能。控制器收到一条命令后,CPU 可以转向进行其他工作,而

                    让设备控制器自行完成具体的  I / O 操作。当命令执行完毕后,控制器发出一个中断信号,操作系统重新获得 CPU 的控制权并检查执行结果,此

                    时,CPU 仍旧是从控制器寄存器中读取信息来获得执行结果和设备的状态信息。

                           -------------------------------------------------------------------------------------

                           设备控制器的主要功能为:

                           a.接收和识别 CPU 或通道发来的命令,如磁盘控制器能接收读、写、查找等命令。

                           b.实现数据交换,包括设备和控制器之间的数据传输;通过数据总线或通道,控制器和主存之间的数据传输

                           c.发现和记录设备及自身的状态信息,供 CPU 处理使用

                           d.识别设备地址

                           ------------------------------------------------------------------------------------ 

                           为实现上述功能,设备控制器包含以下组成部分:

                            

                             a.设备控制器与CPU 的接口。

                                 该接口有三类信号线:数据线、地址线和控制线。数据线通常与两类寄存器相连接:数据寄存器(存放从设备送来的输入数据或从CPU 

                              送来的输出数据)和控制 / 状态寄存器(存放从 CPU 送来的控制信息或设备的状态信息)。

                             b.设备控制器与设备的接口。

                                  设备控制器连接设备需要相应数量的接口,一个接口连接一台设备。每个接口中都存下数据、控制和状态三种类型的信号。

                             c. I / O 控制逻辑。

                                    用于实现对设备的控制。它通过一组控制线与 CPU 交互,对从 CPU 收到的  I / O 命令进行译码,CPU 启动设备时,将启动命令发送给

                                  控制器,同样通过地址线把地址发送给控制器,由控制器的  I / O 逻辑地址进行译码,并相应地对所选设备进行控制。

                           ----------------------------------------------------------------------------------------------------

                           类似于文件系统的层次结构,I / O 子系统的层次结构也是需要我们记忆的内容,但记忆不是死记硬背,我们以用户对设备的一次命令来总结各层

                        次的功能,帮助各位读者记忆:

                            例如,当用户要读取某设备的内容的时候,通过操作系统提供的 read 命令接口,这就经过了用户层

                                        操作系统提供给用户使用的接口,一般是统一的通用接口,也就是几乎每个设备都可以响应的统一命令,如 read 命令,用户发出的 read

                               命令,首先经过设备独立层进行解析,然后再交往下层;

                                        接下来,不同类型的设备,对 read 命令的行为会有所不同,如磁盘接收 read 命令后的行为,与打印机接收  read 命令后的行为是不同的。

                                因此,需要针对不同的设备,把read 命令解析成不同的指令,这就经过了设备驱动层;   

                                        命令解析完成后,需要中断正在执行的进程,转而执行 read 命令,这就需要中断处理程序

                                        最后,命令真正抵达到硬件设备,硬件设备的控制器按照上层传达的命令操控硬件设备完成相应的功能。


                           

            

                  

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
I/O(输入/输出)子系统是计算机系统中负责处理输入和输出设备的模块化组件。它通常由多个层次结构组成,每个层次负责不同的功能。以下是常见的 I/O 子系统层次结构: 1. 用户接口层: - 用户接口层是最上层的层次,提供用户与 I/O 子系统之间的交互界面。它包括用户应用程序和操作系统的系统调用接口,允许用户对设备进行访问和控制。 2. 文件系统缓存层: - 文件系统缓存层负责缓存文件系统中的数据,以提高数据读写的效率。它会在内存中维护一个缓存区,存储最近访问的文件数据,避免频繁地从磁盘读取数据。 3. 设备驱动程序层: - 设备驱动程序层是连接操作系统和硬件设备之间的桥梁。它包括具体的设备驱动程序,用于与硬件设备进行通信和控制。每个设备都有相应的设备驱动程序,负责管理设备的初始化、数据传输、中断处理等操作。 4. 中断处理层: - 中断处理层负责处理设备发出的中断信号。当设备完成一次操作或发生异常时,会触发中断信号,通知 CPU 切换到相应的中断处理程序。中断处理层负责识别和处理不同的中断类型,并调用相应的中断处理程序。 5. 设备控制层: - 设备控制层是 I/O 子系统的底层,直接与硬件设备进行交互。它包括设备控制器和设备本身。设备控制器负责管理设备的寄存器、命令解析、数据传输等操作,而设备本身是具体的硬件设备,如磁盘驱动器、网络接口卡等。 这是一个简化的 I/O 子系统层次结构示例,不同的操作系统可能会有略微不同的实现方式。每个层次都有不同的功能和责任,共同协作以实现高效的输入/输出操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值