携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第34天,点击查看活动详情
假脱机技术(SPOOLing)
-
脱机
- 脱离主机的控制进行输入输出
- 缓解了设备与CPU的速度矛盾,实现预输入,缓输出
-
假脱机
- 由软件来模拟实现脱机技术
- 需要多道程序技术支持
-
组成
-
输入井、输出井(磁盘)
- 模拟磁带,收容IO设备输入的/用户输出的数据
-
输入进程、输出进程
- 由操作系统控制,对用户透明,模拟外围控制机
-
输入缓冲区、输出缓冲区(内存)
- 中转站
-
-
管理程序
- 预输入程序
- 井管理程序
- 缓输出程序
-
数据流向
-
输入数据
- 输入设备-输入缓存区-输入井
- 设备-内存-磁盘
-
输出数据
- 输出井-输出缓冲区-输出设备
- 磁盘-内存-设备
-
-
应用:共享打印机的实现
-
宏观上允许多个进程使用
-
将独占式设备改造为共享设备
- 独占设备:只允许各个进程串行使用,一段时间满足一个设备
- 共享设备:允许多个进程同时使用设备(宏观上同时,微观上交替)
- 当多个用户进程提出输出打印的请求时,系统会答应它们的请求,但是并不是真正把打印机分配给他们,而是由假脱机管理进程为每个进程做两件事: (1)在磁盘输出井中为进程申请一个空闲缓冲区(也就是说,这个缓冲区是在磁盘上的),并将要打印的数据送入其中; (2)为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是用来说明用户的打印数据存放位置等信息的),再将该表挂到假脱机文件队列上。
- 当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出井传送到输出缓冲区,再输出到打印机进行打印。用这种方式可依次处理完全部的打印任务
- 虽然系统中只有一个台打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现对打印机的共享。
- SPOOLing 技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备。
-