《现代操作系统》– 输入/输出、磁盘调度算法

1.I/O设备的概念

存储设备:用来存放各种信息的设备成为存储设备,例如:软盘、硬盘、光盘和磁带等。

I/O设备:用来向计算机输入和输出信息的设备,例如:键盘、鼠标、显示器、打印机等。

在现代计算机系统中有些设备既可以做存储设备,也可以做I/O设备,例如:软盘、硬盘等。

计算机外部设备组成:

Fig5_2

2.设备控制器

操作系统与控制器打交道,而不是与设备直接打交道。

控制器的任务是把串行的位流转换为字节块,并进行必要的错误校正工作。字节块通常首先在控制器内部的一个缓冲区按位进行组装,然后在对校验和进行校验并证明字节块没有错误后,再将它复制到主存中。

 

3.设备I/O方式

①询问(Query):实时系统中必需采用,在一般简单系统中也广泛采用,但系统开销较大,每次进行输入输出工作,都需要由主机CPU干预;

②中断(interrupt):当主机接到外部信号(如内、外部设备完成或出错)时,马上停止原来的工作,考虑去处理这一事件,处理完毕后,主机又回到原来的断点继续工作。

有硬中断和软中断之分,中断按级别分类排队工作;可按字符、字、块的传递产生中断;实时控制常用实时时钟中断,起自动控制作用;中断工作主要由中断请求、中断响应和中断服务处理组成。“中断”的产生使管理工作更能“自动化”.

③通道(Channel):有硬通道和软通道之分,硬通道,例如,典型的DMA(Direct Memory Access)工作方式;软通道是软件设计中使用的各种“标识”、“缓冲”等;

医生(CPU)查房(“询问”),以便及时掌握病情(I/O请求)。病床旁红灯是(I/O)紧急请求医生(CPU)按钮(“中断请求”)。常规医疗处理医生(CPU)委托护士(“硬通道”)去做。但护士(通道)只有执行权而无修改权。

 

4.数据传送控制方式

①程序直接控制方式:程序直接控制方式是指由程序直接控制内存或CPU和外围设备之间进行信息传送的方式。通常又称为“忙—等”方式或循环测试方式。

在数据传送过程中,必不可少的一个硬件设备是I/O控制器,它是操作系统软件和硬件设备之间的接口,它接收CPU的命令,并控制I/O设备进行实际的操作。

下面讲述程序直接控制方式的工作过程。由于数据传送过程中输入和输出的情况比较类似,下面只给出输出数据时的工作过程。

(1)把一个启动位为“1”的控制字写入该设备的控制状态寄存器。

(2)将需输出数据送到数据缓冲寄存器。

(3)测试控制状态寄存中的“完成位”,若为0,转(2),否则转(4)。

(4)输出设备将数据缓冲寄存器中的数据取走进行实际的输出。

②中断控制方式:

(1)进程需要数据时,将允许启动和允许中断的控制字写入设备控制状态寄存器中,启动该设备进行输入操作。

(2)该进程放弃处理机,等待输入的完成。操作系统进程调度程序调度其他就绪进程占用处理机。

(3)当输入完成时,输入设备通过中断请求线向CPU发出中断请求信号。CPU在接收到中断信号之后,转向中断处理程序。

(4)中断处理程序首先保护现场,然后把输入缓冲寄存器中的数据传送到某一特定单元中去,同时将等待输入完成的那个进程唤醒,进入就绪状态,最后恢复现场,并返回到被中断的进程继续执行。

(5)在以后的某一时刻,操作系统进程调度程序选中提出的请求并得到获取数据的进程,该进程从约定的内存特定单元中取出数据继续工作。

③DMA方式:DMA方式又称直接存储器访问(Direct Memory Access)方式。其基本思想是在外设和主存之间开辟直接的数据交换通路。

DMA方式的特点是:

(1)数据传送的基本单位是数据块。

(2)所传送的数据是从设备送内存,或者相反。

(3)仅在传送一个或多个数据块的开始和结束时,才需中断CPU,请求干预,整块数据的传送是在DMA控制器控制下完成的。

DMA控制器一次给打印机提供一个字符,而不必打扰CPU,本质上,DMA是程序控制I/O,只是由DMA控制器而不是主CPU做全部工作。

④通道控制方式:通道控制方式与DMA方式相类似,也是一种内存和设备直接进行数据交换的方式。与DMA方式不同的是,在通道控制方式中,数据传送方向存放数据的内存始址及传送的数据块长度均由一个专门负责输入/输出的硬件——通道来控制。另外,DMA方式每台设备至少需要一个DMA控制器,而通道控制方式中,一个通道可控制多台设备与内存进行数据交换。

 

5.缓冲技术

引入缓冲的主要目的有以下几点:

1.缓和处理机和I/O设备间速度不匹配的矛盾

2.减少对CPU的中断次数

3.提高CPU和I/O设备之间的并行性

①单缓冲:单缓冲是操作系统提供的最简单的一种缓冲形式。每当一个进程发出一个I/O请求时,操作系统便在主存中为之分配一缓冲区,该缓冲区用来临时存放输入/输出数据。

②双缓冲:解决外设之间并行工作的最简单的办法是设置双缓冲。当一个缓冲区正在被复制到用户空间的时候,另一个缓冲区正在收集新的输入。

双缓冲方式和单缓冲方式相比,虽然双缓冲方式能进一步提高CPU和外设的并行程度,并能使输入设备和输出设备并行工作,但是在实际系统中很少采用这一方式,这是因为在计算机系统中的外设很多,又有大量的输入和输出,同时双缓冲很难匹配设备和CPU的处理速度。因此现代计算机系统中一般使用环形缓冲或缓冲池结构。

③环形缓冲:环形缓冲技术是在主存中分配一组大小相等的存储区作为缓冲区,并将这些缓冲区链接起来,每个缓冲区中有一个指向下一个缓冲的指针,最后一个缓冲区的指针指向第一个缓冲区,这样n个缓冲区就成了一个环形。此外,系统中有个缓冲区链首指针指向第一个缓冲区。

image

④缓冲池:缓冲池中的缓冲区一般有以下三种类型:空闲缓冲区、装输入数据的缓冲区和装输出数据的缓冲区。

空缓冲队列emq。输入队列inq。输出队列outq。

image

6.假脱机:是多道程序设计系统中处理独占I/O设备的一种方式。考虑一种典型的假脱机设备:打印机。尽管在技术上可以十分容易地让任何用户进程打开表示该打印机的字符特殊文件,但是假如一个进程打开它,然后很长时间不使用,则其他进程都无法打印。

另一种方法是创建一个特殊进程,称为守护进程,以及一个特殊目录,称为假脱机目录。一个进程要打印一个文件时,首先生成要打印的整个文件,并且将其放在假脱机目录下。由守护进程打印该目录下的文件,该进程是允许使用打印特殊文件的惟一进程。通过保护特殊文件来防止用户直接使用,可以解决某些进程不必要长期空占打印机的问题。

 

7.磁盘:

控制器是否可以同时控制两个或多个驱动器进行寻道,这就是重叠寻道。

在老式的磁盘上,每磁道扇区数对所有柱面都是相同的。而现代磁盘则被划分成环带,外层的环带比内层的环带拥有更多的扇区。

光盘:聚碳酸酯基片中的凹陷处成为凹痕(0),凹痕之间未被烧的区域称为槽脊(1)。

 

8.磁盘调度算法:

决定因素:①寻道时间(将磁盘臂移动到适当的柱面上所需的时间)②旋转延迟(等待适当扇区旋转到磁头下所需的时间)③实际数据传输时间

①先来先服务:很难优化寻道时间。

11,1,36,16,34,9,12                      111

②最短寻道优先(SSF):处理与磁头距离最近的请求以使寻道时间最小化。

image

 

11,12,9,16,1,34,36                      61

③电梯算法:当一个请求处理完之后,磁盘或电梯的驱动程序检查方向位,如果是UP,磁盘臂或电梯舱移至下一个更高的未完成的请求。如果更高的位置没有未完成的请求,则方向取反。

image

11,12,16,34,36,9,1                      60

 

9.时钟软件

在不同的操作系统中,时钟驱动程序的任务也不同,但一般包括以下内容:

(1)维护日期时间。
(2)防止进程的运行时间超出其允许的时间。
(3)对CPU使用进行记帐。
(4)处理用户进程提出的时间闹钟系统调用。
(5)对系统某些部分提供监视定时器。
(6)支持直方图监视和统计信息搜集。

第一项功能维护日期时间(也称为实际时间)并不困难。它仅需要像我们前面提到的那样,每次时钟滴答增加一次计数器。需要注意的是日期时间的位数。对于60Hz的时钟,32位的计数器刚刚超过两年就会溢出。显然系统无法用32位存储1970年1月1日开始的滴答数来存储实际时间。

有三种方法解决这个问题,第一种方法是使用64位计数器。因为1秒以内需执行多次维护计数器的工作,因此提高了维护时钟的代价。

第二种办法使用一个辅助计数器来对滴答计数直至累计一秒为止。因为232秒超过136年,这种方法直至22世纪都会工作得很好。

第三种方法按滴答计数,但是相对系统启动时间,而不是相对一个确定的外部时刻。当读后备时钟或用户输入实际时间时,根据当前的时间计算系统启动时间并以一种方便的格式存储于系统中。以后当询问每天的时间时,存储的时间加上计数器中的时间就是当前时间。

image

时钟的第二项功能是防止进程运行太长的时间。无论何时启动一个进程,调度程序都应该用一个以时钟滴答计算的进程时间片的值初始化一个计数器。当每次时钟中断时,中断驱动程序把时间片计数器减1,当它为零时,时钟驱动程序调用调度程序来建立其他的进程。

第三项功能为CPU记帐。完成这项工作的最方便的方法是无论何时启动一个进程就启动一个和主系统定时器不同的第二个定时器,当进程暂停时,读出该定时器的内容看一看进程运行了多长时间。为了使记帐正确,当中断发生时,保存第二个定时器的内容,当中断结束时,恢复第二个定时器的内容。

 

转载请标注来源www.blogfshare.com    By:AloneMonkey

本文链接:http://www.alonemonkey.com/operating-system-four.html