缓冲管理
1、目的
为了缓和CPU与I/O 设备速度不匹配的矛盾,减少对CPU的中断频率,提高CPU和I/O 设备的并行性,在现代操作系统中,几乎所有的I/O 设备在与处理机交换数据时都用了缓冲区(内存中)。缓冲管理的主要职责是组织好这些缓冲区,并提供获得和释放缓冲区的手段。
2、实现方式
1)单缓冲
2)双缓冲
3)循环缓冲
可能出现的问题(瓶颈)
Nexti 指针追赶上Nextg 指针,这种情况被称为系统受计算限制。(很少)
Nextg 指针追赶上Nexti 指针,这种情况被称为系统受I/O 限制。(常见)
4)公用缓冲池
①组成:三种缓冲队列+四种缓冲区
三种缓冲队列
空缓冲队列emq;
输入队列inq;
输出队列outq;
四种缓冲区
用于收容输入数据的工作缓冲区hin;
用于提取输入数据的工作缓冲区sin;
用于收容输出数据的工作缓冲区hout;
用于提取输出数据的工作缓冲区sout;
②操作方法:为使诸进程能互斥地访问缓冲池队列,可为每一队列设置一个互斥信号量MS(type)。此外,为了保证诸进程同步地使用缓冲区,又为每个缓冲队列设置了一个资源信号量RS(type)。
Procedure Getbuf(type)
begin
Wait(RS(type));
Wait(MS(type));
B(number):=Takebuf(type);
Signal(MS(type));
end
begin
Wait(RS(type));
Wait(MS(type));
B(number):=Takebuf(type);
Signal(MS(type));
end
Procedure Putbuf(type,number)
begin
Wait(MS(type));
Addbuf(type,number);
Signal(MS(type));
Signal(RS(type));
end
begin
Wait(MS(type));
Addbuf(type,number);
Signal(MS(type));
Signal(RS(type));
end
③工作方式