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

操作系统【OS】I/O核心子系统

 

定义

举例

用户层软件

 

  • 用户层软件实现了与用户交互的接口
  • 用户层软件将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务
  • 用户可直接使用该层提供的、与I/0操作相关的库函数对设备进行操作
  • 如发送read命令
  • 如讲二进制整数转换为ascii码的格式打印
  • Eg: prinftf("hello, world!");会被翻译成等价的write系统调用,当然,用户层软件也会在系统调用时填入相应参数

设备独立性软件

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

设备驱动程序

  • 负责检查用户I/O的合法性了解I/O设备的状态传递有关参数设置设备的工作方式执行OS发出的I/O命令启动I/O设备,完成I/O操作。
  • 若更换物理设备,只需要修改设备驱动程序不需要修改应用程序
  • 将收到的抽象要求转换为具体要求【主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等】
  • 响应通道发来的中断请求,根据中断类型调用响应的中断处理程序
  • 驱动程序一般会以一个独立进程的方式存在。
  • 如将解析好的read命令转换为指令
  • 如计算磁盘的柱面号,磁头号,扇区号
  • 如设备寄存器写命令
  • 如将逻辑块号转换为物理地址

中断处理程序

  • 当I/0任务完成时,I/O控制器会发送一个中断信号, 系统会根据中断信号类型找到相应的中断处理程序并执行。中断处理程序的处理流程如下:
  • 如中断当前进程,执行相关指令

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

相关文章:

  • React 中 keys 的作用是什么?
  • 【多线程】探索Java中的多线程编程
  • 【excel技巧】excel单元格内如何换行?
  • 正式成为研究生一个月就可以改变一个人
  • xshell+xming显示jmeter的gui页面
  • 损失函数和评估函数
  • 【git 学习】--- ubuntu18.04 搭建本地git服务器
  • qt中怎么在鼠标停留的位置上显示该点的坐标位置
  • 敏捷or瀑布: Salesforce项目应该选哪一个?
  • 常见面试题-MySQL专栏(一)
  • vscode Coder Runner 运行C++
  • JVM | 命令行诊断与调优 jhsdb jmap jstat jps
  • 基于YOLOv8模型和UA-DETRAC数据集的车辆目标检测系统(PyTorch+Pyside6+YOLOv8模型)
  • 50.MongoDB快速入门实战
  • Java Object类详解
  • Controller接收Postman的raw参数时,属性值全部为空
  • Python:控制台输入密码passwod的方法
  • 全面解析优化企业Microsoft 365网络的加速方案
  • 数据结构笔记——树和图(王道408)(持续更新)
  • 【每日一题Day359】LC2520统计能整除数字的位数 | 数学模拟