高速缓存与缓冲区
标签: 操作系统
学习人数: 13.8k

1. 磁盘高速缓存(Disk Cache)

操作系统中使用磁盘高速缓存技术来提高磁盘的I/O速度,对高速缓存复制的访问要比原始数据访问更为高效。不过,磁盘高速缓存技术不同于通常意义下的介于CPU与内存之间的小容量高速存储器,而是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此,磁盘高速缓存在逻辑上属于磁盘,物理上则是驻留在内存中的盘块。

 

2. 缓冲的分类

①单缓冲

单缓冲是操作系统提供的一种最简单的缓冲形式,在设备和处理机之间设置一个缓冲区。设备和处理机交换数据时,先把被交换数据写入缓冲区,然后需要数据的设备或处理机从缓冲区取走数据,因此设备与处理器对缓冲区的操作是串行的。

在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,然后操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理的时间为 C。由于T和C是可以并行的,当T>C时,系统对每一块数据的处理时间为M十T,反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C, T)+M。

在字符设备输入时,缓冲区用于暂存用户输入的一行数据。在输入时,用户进程阻塞以等待一行数据输入完毕;在输出时,用户进程将一行数据送入缓冲区后继续执行计算。当用户进程已有第二行数据要输出时,若第二行数据尚未输出完毕,则用户进程阻塞。

a)单缓冲 b)双缓冲 c)循环缓冲

缓冲区工作方式

②双缓冲

引入双缓冲可以提高处理器与设备的并行操作程度。在块设备输入时,输 入设备先将第一个缓冲区装满数据,在输入设备装填第二个缓冲区的同时,操作系统可以将第一个缓冲区的数据传送到用户区供处理器进行计算;当第一个缓冲区中的数据处理完后,若第二个缓冲区已经装满,则处理器又可以处理第二个缓冲区的数据,而输入设备又可以装填第一个缓冲区。

系统处理一块数据的时间可以粗略地认为是MAC(C, T)。如果C<T,可使块设备连续输入;如果C>T,则可使CPU不必等待设备输入。对于字符设备,若釆用行输入方式,则釆用双缓冲可使用户在输入完第一行之后,在CPU执行第一行中的命令的同时,用户可继续向第二缓冲区输入下一行数据。而单缓冲情况下则必须等待一行数据被提取完毕才可输入下一行的数据。

③循环缓冲

循环缓冲包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,多个缓冲区构成一个环形。循环缓冲用于输入/输出时,还需要有两个指针in和out。对输入而言,首先要从设备接收数据到缓冲区中,in指针指向可以输入数据的第一个空缓冲区;当运行进程需要数据时,从循环缓冲区中取一个装满数据的缓冲区,并从此缓冲区中提取数据,out指针指向可以提取数据的第一个满缓冲区。输出则正好相反。进程将处理过的需要输出的数据送到空缓冲区中,而当设备空闲时,从满缓冲区中取出数据由设备输出。

循环缓冲一般适用于特定的I/O进程和计算进程,因而当系统中进程很多时将会有许多这样的缓冲,这不仅要消耗大量的内存空间,而且利用率不高。

④缓冲池

缓冲区按其使用状况可以形成三个队列:空缓冲队列、装满输入数据的缓冲队列(输入队列)和装满输出数据的缓沖队列(输出队列)。还应具有四种缓冲区:用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区、 用于收容输出数据的工作缓冲区及用于提取输出数据的工作缓冲区。

缓冲区的工作方式

当输入进...

登录查看完整内容


课后作业


登录后开始许愿

暂无评论,来抢沙发