磁盘I/O
I/O系统层次及功能
用户层软件
用户层软件实现的是与用户进行交互的接口,用户可以通过调用用户层软件提供的I/O库函数对设备进行操作
用户软件必须通过一组系统调用来获取操作系统服务
设备独立性软件
什么是设备独立性?
设备独立性指的是应用程序独立于具体使用的物理设备,从而引入了“逻辑设备”的概念
设备独立性能够带来什么好处?
- 设备分配时的灵活性
- 易于实现I/O的重定向
设备独立性软件都有什么功能?
- 执行公共设备的共有操作
- 对独立设备的分配与回收
- 将逻辑设备名映射为物理设备名
- 对设备进行保护
- 缓冲管理
- 向用户层软件提供统一接口
设备驱动程序
通常也称“设备处理程序”,它是I/O进程与设备控制器之间的通信程序, 又由于经常以进程的形式存在,所以称之为设备驱动程序。
任务:
- 接收上层软件发来的抽象I/O请求,并将其转为具体要求发送给设备控制器,然后启动设备去执行请求
- 将设备控制器发来的信号发送给上层软件
功能:
- 接收由设备独立性软件发来的命令和参数
- 检查用户I/O请求的合法性
- 发出I/O命令(向设备控制器)
- 及时相应由控制器或者通道发来的中断请求,并根据中断的类型调用相应的中断处理程序
- 若OS设有通道,驱动程序还能根据用户的I/O请求自动构建通道程序
设备处理方式
- 为每一类设备设置一个进程
- 整个系统设置一个进程
- 不设置专门的处理程序,但为各类设备设置相应的设备处理程序
中断处理层
中断处理层软件的主要工作是进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态。
处理过程:
- 唤醒被阻塞的驱动进程
- 保护被中断进程的CPU环境
- 载入相应的设备处理程序
- 中断处理
- 恢复被中断进程的现场
I/O缓冲
设置缓冲区的目的是什么?
- 可以缓和CPU(快)和I/O设备(慢)之间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 提高CPU和IO设备之间的并行性
缓冲区
单缓冲
数据从I/O设备到缓冲区和从缓冲区到工作区不能同时进行
双缓冲
数据从I/O设备到缓冲区和从缓冲区到工作区可以同时进行
SPOOLing
SPOOLing技术又称假脱机技术,其含义是在联机的情况下实现外围操作,这样就不会导致CPU近乎闲置
SPOOLing技术的组成
- 输入井和输出井(位置:磁盘)
- 输入缓冲区和输出缓冲区(位置:内存)
- 输入进程和输出进程(由OS提供)
- 井管理程序
SPOOLing技术的特点
- 提高了I/O速度
- 将独占设备改造为共享设备(后来的进程可以将需要输出的数据存放在缓冲区)
- 实现了虚拟设备的功能
错题
用户程序发出磁盘I/O请求后,系统的正确处理流程是
用户程序–>系统调用处理程序–>设备驱动程序–>中断处理程序