缓冲管理
来源:互联网 发布:2016零售业数据 编辑:程序博客网 时间:2024/05/20 06:42
----- 为了缓和CPU与I/O设备之间速度不匹配的矛盾,提高CPU和I/O设备的并行性,在现代操作系统中,几乎所有的I/O设备在与处理机
交换数据时都用了缓冲区。缓冲管理的主要职责是组织好这些缓冲区,并提供获得和释放缓冲区的手段。
1、缓冲的引入
---- 在设备管理中,引入缓冲区的主要原因可归结为以下几点:
-- 1)缓和CPU与I/O设备间速度不匹配的矛盾。
事实上,凡在数据到达速率与其离去速率不同的地方,都可设置缓冲区,以缓和它们之间速率不匹配的矛盾。
CPU的运算速度远远高于I/O设备的速率,如果没有缓冲区,则在输出数据时,必然会由于打印机的速度跟不上CPU的速度而使CPU停下来
等待;然而在计算阶段,打印机又空闲无事。如果在打印机或控制器中设置一缓冲区,用于快速暂存程序的输出数据,以后由打印机“慢慢地”
从中取出数据打印,这样就可提高CPU的工作效率。类似地,在输入设备与CPU之间也设置缓冲区,也可使CPU的工作效率得以提高。
-- 2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
-- 3)提高CPU与I/O设备之间的并行性。
缓冲的引入可显著地提高CPU与I/O设备间的并行操作程度,提高系统的吞吐量和设备的利用率。
例如,在CPU和打印机之间设置了缓冲区后,便可使CPU与打印机并行工作。
2、单缓冲和双缓冲
-- 1)单缓冲(Single Buffer)
在单缓冲情况下,每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区(图a)。
-- 在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,CPU对这一块
数据处理(计算)的时间为C。T和C是可以并行的。(图b)(缓冲区存满之后才能取?互斥访问)
当T>C时,系统对每一块数据的处理时间为M+T,反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C,T)+M.
-- 在字符设备输入时,缓冲区用于暂存用户输入的一行数据,在输入期间,用户进程被挂起以等待数据输入完毕;在输出时,用户进程将一行
数据输入到缓冲区后,继续进行处理。当用户进程已有第二行数据输出时,如果第一行数据尚未被提取完毕,则此时用户进程应阻塞。
-- 2)双缓冲(Double Buffer)
为了加快输入和输出速度,提高设备利用率,人们又引入了双缓冲区机制,也称为缓冲对换(Buffer Swapping)。
在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区。此时操作系统可以从第一缓冲区中移出数据,并送入用户进程。
接着由CPU对数据进行计算。在双缓冲时,系统处理一块数据的时间可以粗略的认为是Max(C,T)。如果C<T,可使块设备连续输入;如果C>T,
则可使CPU不必等待设备输入。对于字符设备,若采用行输入方式,则采用双缓冲通常能消除用户的等待时间,即用户在输入完第一行之后,在
CPU执行第一行中的命令时,用户可继续向第二缓冲区输入下一行数据。
例题:某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析。假设一个缓冲区与一个磁盘块大小相同,把一个
磁盘块读入缓冲区的时间为100us,将缓冲区的数据传送到用户区的时间是50us,CPU对一块数据进行分析的时间为50us。在单缓冲区和双缓冲
区结构下,读入并分析完该文件的时间分别是1550us和1100us。
单缓冲:(100+50)×10=1500us,记得最后一个磁盘块的处理时间还有50us,所以总共是1550us。
双缓冲:100×10=1000us,加上将最后一个缓冲区的数据传输到用户区并由CPU处理完的时间50+50=100us,总共是1100us。
- 缓冲管理
- 环形缓冲管理
- 转载:缓冲池管理
- Android GDI显示缓冲管理
- Core Video的缓冲管理
- 缓冲技术之四:LRU缓冲管理策略分析
- 页面缓冲(Page Cache)的管理
- 内存中的高速缓冲页的管理
- 管理音频缓冲|线程切换Sleep
- 自动处理管理驾驶舱冲缓冲
- Android GDI之显示缓冲管理
- Android 图片缓冲的管理-内存缓存
- Mysql的innodb缓冲池管理
- Unity3D——对象管理缓冲池
- 缓冲
- 缓冲
- 缓冲
- 缓冲
- C语言getpwnam()函数:从密码文件中取得指定账号的数据
- 二叉树------二叉查找树转化为双向链表
- ES6学习---let
- socket服务端多线程
- r语言学习日记(一)
- 缓冲管理
- L2-004. 这是二叉搜索树吗?
- NB-IoT:归一化网络,多样化应用
- Servlet 生命周期、工作原理
- freemarker的使用心得,freemarker使用心得
- hibernate xml配置方式
- #include <sys/types.h>的作用
- Yii2之资源配置$jsOptions与$cssOptions
- XHR 实例 GET 和 POST 异步和同步