操作系统第五章_02 I/O软件层次结构

举报
花花叔叔 发表于 2022/08/12 23:13:01 2022/08/12
【摘要】 🏫中北大学软件学院 🥇本篇文章对操作系统的IO软件层次进行具体介绍,总统的梳理各层次之间的关系 文章目录 知识总览用户层软件设备独立性软件设备驱动程序中断处理程序知识回顾 知...

🏫中北大学软件学院
🥇本篇文章对操作系统的IO软件层次进行具体介绍,总统的梳理各层次之间的关系

知识总览

在这里插入图片描述

用户层软件

用户层软件实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。

Eg:printf(“hello, world!");

用户层软件将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务。

Eg:printf(“hello, world!”); 会被翻译成等价的 write 系统调用,当然,用户层软件也会在系统调用时填入相应参数。

Windows 操作系统向外提供的一系列系统调用,但是由于系统调用的格式严格,使用麻烦,因此在用户层上封装了一系列更方便的库函数接口供用户使用(Windows API)。

在这里插入图片描述

设备独立性软件

设备独立性软件,又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。

在这里插入图片描述
主要实现的功能:

  • 向上层提供统一的调用接口(如 read/write 系统调用)
  • 设备的保护
    原理类似与文件保护。设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。
  • 差错处理
    设备独立性软件需要对一些设备的错误进行处理
  • 设备的分配与回收
  • 数据缓冲区管理
    可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异
  • 建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序
    用户或用户层软件发出I/O操作相关系统调用的系统调用时,需要指明此次要操作的I/O设备的逻辑设备名(eg:去学校打印店打印时,需要选择 打印机1/打印机2/打印机3 ,其实这些都是逻辑设备名)
    设备独立性软件需要通过“逻辑设备表(LUT,Logical UnitTable)”来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序

在这里插入图片描述
操作系统系统可以采用两种方式管理逻辑设备表(LUT):
第一种方式,整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统。
第二种方式,为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中

设备驱动程序

各式各样的设备,外形不同,其内部的电子部件(I/O控制器)也有可能不同

为何不同的设备需要不同的设备驱动程序?
佳能打印机的厂家规定状态寄存器为 0 代表空闲,1代表忙碌。有两个数据寄存器
在这里插入图片描述
惠普打印机的厂家规定状态寄存器为 1代表空闲,0代表忙碌。有一个数据寄存器
在这里插入图片描述
不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作

主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等。

不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道。因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。

中断处理程序

当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。中断处理程序的处理流程如下:
在这里插入图片描述

知识回顾

在这里插入图片描述
在这里插入图片描述

文章来源: blog.csdn.net,作者:花花叔叔,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_52077949/article/details/124448912

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。