当前位置: 首页 > article >正文

I/O软件层次结构(用户层软件,设备独立性软件,设备驱动程序,中断处理程序,硬件)

文章目录

  • 1.用户层软件
  • 2.设备独立性软件
    • 1.主要实现的功能
    • 2.逻辑设备表(LUT)
  • 3.设备驱动程序
  • 4.中断处理程序
    • 2.中断处理程序的处理流程
  • 4.硬件

1.用户层软件

用户层软件实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作
用户层软件将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务

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

2.设备独立性软件

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

1.主要实现的功能

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

2.逻辑设备表(LUT)

在这里插入图片描述

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

3.设备驱动程序

主要负责对硬件设备的具体控制,将上层发出的一系列命令(read/write)转化成特定设备“能听得懂”的一系列操作。
包括设置设备寄存器;检查设备状态等
不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道。
因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。

注:驱动程序一般会以一个独立进程的方式存在。

4.中断处理程序

当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。

2.中断处理程序的处理流程

在这里插入图片描述

4.硬件

执行I/O操作,有机械部件、电子部件组成。详情见博主的: IO控制器
设备驱动程序和中断处理程序是直接和硬件打交道的

理解并记住I/O软件各个层次之间的顺序,要能够推理判断某个处理应该是在哪个层次完成的(最常考的是设备独立性软件、设备驱动程序这两层。
只需理解一个特点即可:
直接涉及到硬件具体细节、且与中断无关的操作肯定是在设备驱动程序层完成的;
没有涉及硬件的、对各种设备都需要进行的管理工作都是在设备独立性软件层完成的)


http://www.kler.cn/a/105128.html

相关文章:

  • 【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)
  • [开源]一个低代码引擎,支持在线实时构建低码平台,支持二次开发
  • 【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar
  • PyTorch基础(18)-- torch.stack()方法
  • LuatOS-SOC接口文档(air780E)--log - 日志库
  • 网工内推 | 国企,解决方案工程师,最高30k,有软考证书优先
  • Linux Shell :正则表达式
  • 反射的作用( 越过泛型检查 和 可以使用反射保存所有对象的具体信息 )
  • [SQL开发笔记]BETWEEN操作符:选取介于两个值之间的数据范围内的值
  • rpc入门笔记0x01
  • vue2、vue3中路由守卫变化
  • Lua入门使用与基础语法
  • QCC 音频输入输出
  • 2023年系统设计面试如何破解?进入 FAANG 面试的实战指南
  • Kafka3.x安装以及使用
  • python爬虫入门(三)正则表达式
  • [C#基础训练]FoodRobot食品管理部分代码-1
  • Office技巧(持续更新)(Word、Excel、PPT、PowerPoint、连续引用、标题、模板、论文)
  • 【Java 进阶篇】Java Request 原理详解
  • 【Docker】Docker Swarm介绍与环境搭建