输入输出系统——I/O系统

1)系统调用与库函数
不允许运行在用户态的应用进程,去直接调用运行在核心态(系统态)的OS过程。
应用进程在运行时,又必须取得OS所提供的服务。
于是:
OS在用户层中引入了系统调用,应用程序可以通过它,间接调用OS中的I/O过程,对I/O设备进行操作。
2)设备分配中的虚拟技术—— SPOOLing技术
虚拟性是OS的四大特征之一。
多道程序技术将一台物理CPU虚拟为多台逻辑CPU,实现多个用户共享一台主机
多道程序技术,专门利用程序模拟脱机I/O的外围机,完成设备I/O操作。

称这种联机情况下实现的同时外围操作为SPOOLing 技术(Simultaneaus Periphernal Operating On—Line,或称为假脱机操作)
一般进程对独占设备的需求被假脱机模拟到磁盘上。所以实现设备虚拟,多道是前提,还需高速、大容量、可随机存取的外存支持。

主要有三大部分
输入井和输出井
输入缓冲区和输出缓冲区
输入进程和输出进程
SPOOLing技术的使用:
当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给用户进程,

SPOOLing系统的特点
提高了I/O的速度
将独占设备改造为共享设备
最终,实现了虚拟设备功能

引入缓冲区的主要原因:
缓和CPU与I/O设备间速度不匹配的矛盾。
缓冲区数据成批传入内存,也可进一步减少对CPU的中断频率
最终目的:提高CPU和I/O设备的并行性。

使用缓冲区的方式:
1)单缓冲、多缓冲
OS在主存中为之分配一个缓冲区。
CPU和外设轮流使用,一方处理完后等待对方处理。

两个缓冲区,CPU和外设不再针对一块交替
可能实现连续处理无需等待对方。前提是CPU和外设对一块数据的处理速度相近。而如下图情况CPU仍需等待慢速设备。

2)循环缓冲
设置多块缓冲区
用循环结构组织,只供两个相关进程使用
顺一个方向放入或取出

3)缓冲池(Buffer Pool)
系统将多个缓冲区形成一个缓冲池。
池中缓冲区为系统中所有的进程共享使用(如UNIX系统在块设备管理中设置了一个15个缓冲区组成的缓冲池)
组织形式:队列及队列指针
①缓冲池的组成
空缓冲区;
装满输入数据的缓冲区;
装满输出数据的缓冲区;

工作状态决定了current有四种工作缓冲区:
收容输入数据的工作缓冲区;
提取输入数据的工作缓冲区;
收容输出数据的工作缓冲区;
提取输出数据的工作缓冲区;

四种工作方式:
收容输入:Getbuf(emq),hin;输入数据填入一空缓冲区;Putbuf(inq,hin)
提取输入: Getbuf(inq),sin;从输入缓冲队列中取出一数据区的内容;Putbuf(emq,sin)
收容输出: Getbuf(emq),hout;输出数据填入一空缓冲区;Putbuf(outq,hout)
提取输出: Getbuf(outq),sout;从输出缓冲队列中取一数据区的内容;Putbuf(emq,sout)

1)磁盘性能简述
首先与格式有关
数据的组织和格式
盘片、面、磁道、扇区
为方便处理,每条磁道存储容量相同,每个磁道上的每个扇区相当于一个盘块。磁盘”格式化”的过程就是按规定的格式规划盘块。
与速度有关
磁盘类型
固定磁头(每道一磁头)
移动磁头(每盘一磁头)
访问时间的计算
寻道时间(到磁道)
旋转延迟(到扇区)
传输时间
传输时间占总时间的比例最小,磁盘读写速度的提高要选择合适的调度算法,减少前两项用时,使所有作业的磁盘处理时间均衡。

2)磁盘调度方法
对所有请求访问磁盘的进程进行合理调度,使对磁盘的平均访问时间最小。
目标:使平均寻道时间最少。
算法:
FCFS
最短寻道时间优先SSTF
扫描算法SCAN(磁盘电梯调度算法)
循环扫描算法CSCAN
N-Step-SCAN算法
FSCAN算法

原文地址:https://www.cnblogs.com/Kirino1/p/10084683.html