操作系统——I/O核心子系统

假脱机技术(SPOOLing技术)

需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。
但是408大纲将假脱机技术归为“I/O核心子系统”的功能。

用软件的方式模拟假脱机技术。
在这里插入图片描述
输入井:模拟脱机输入时的磁带,用于收容I/O设备输入的数据。
输出井:模拟脱机输出时的磁带,用于收容用户进程输出的数据。
输入进程:模拟脱机输入时的外围控制机
输出进程:模拟脱机输出时的外围控制机

可以把一台物理设备虚拟成逻辑上的多台设备,可将独占是设备改造成共享设备。
作用:缓解设备与CPU的速度矛盾,实现预输入、缓输出。

I/O调度

用某种算法确定一个号的顺序来处理各个I/O请求。

设备保护

在UNIX系统中,设备被看做是一种特殊的文件,每个设备都会有一个对应的FCB,因此设备保护就相当于文件保护。

设备分配与回收

在这里插入图片描述

静态分配

进程运行前为其分配全部所需资源,运行结束后归还资源。破坏了“请求和保持”条件,不会发生死锁。

动态分配

进程运行过程中动态申请设备资源

设备分配管理中的数据结构

设备控制表(DCT): 系统为每个设备配置一张DCT,用于记录设备情况
在这里插入图片描述
控制器控制表(COCT): 每个设备控制器都会对应一张COCT,操作系统根据COCT的信息对控制器进行操作和管理。
在这里插入图片描述
通道控制表(CHCT): 每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理。
在这里插入图片描述
系统设备表(SDT): 记录了系统中全部设备的情况,每个设备对应一个表目
在这里插入图片描述

设备分配步骤的改进

①根据进程请求的逻辑设备名查找SDT(注:用户编程时提供的逻辑设备名其实就是“设备类型”)
②查找SDT,找到用户进程指定类型的、并且空闲的设备,将其分配给该进程。操作系统在逻辑设备表(LUT)中新增一个表项。
③根据DCT找到cOCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
④根据COCT找到CHCT,若通遣忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。

缓冲区管理

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小,一般情况下,更多的是利用内存作为缓冲区。

作用:

1、缓和CPU与I/O设备之间速度不匹配的矛盾
2、减少对CPU的中断频率,放宽对CPU中断相应时间的限制
3、解决数据粒度不匹配的问题
4、提高CPU与I/O设备之间的并行性

单缓冲:

假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。
注意: 当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

例题——单缓冲

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

双缓冲:

假设某用户进程请求某种块设备读入若干块的数据。若采用双缓冲的策略,操作系统会在主存中为其分配两个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)

例题——双缓冲

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

循环缓冲区:

将多个大小相等的缓冲区链接成一个循环队列
在这里插入图片描述

循环池:

缓冲池由系统中共用的缓冲区组成。这些缓冲区按使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)。
在这里插入图片描述
根据一个缓冲区在实际运算中扮演的功能不同,又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(hout)、用于提取输出数据的工作缓冲区(sout)
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值