博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5-4-2缓冲区管理
阅读量:3960 次
发布时间:2019-05-24

本文共 1016 字,大约阅读时间需要 3 分钟。

学习目标:

对于循环缓冲区和缓冲池有个印象即可


学习内容:

重点:

1、单缓冲的结论
2、双缓冲的结论


1.缓冲区

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。

使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器
管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放
页表项的副本)
一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理
好这些缓冲区

2.缓冲区作用

在这里插入图片描述

3.单缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。

注意:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

常考题型:计算每处理一块数据平均需要多久?

技巧:假定一个初始状态,分析下次到达相同状态需要多少时间,这就是处理一块数据平均所需时间。

在“单缓冲”题型中,可以假设初始状态为工作区满,缓冲区空。

3.1T>C时

在这里插入图片描述

3.2T<C时

在这里插入图片描述

3.3结论

采用单缓冲策略,处理一块数据平均耗时 Max(C, T)+M

4.双缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用双缓冲的策略,操作系统会在主存中为其分配两个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)

双缓冲题目中,假设初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空

4.1假设T>C+M

在这里插入图片描述

4.2假设T<C+M

在这里插入图片描述

4.3结论

采用双缓冲策略,处理一个数据块的平均耗时为 Max (T, C+M)

5.循环缓冲区

在这里插入图片描述

6.缓冲池

缓冲池由系统中共用的缓冲区组成。这些缓冲区按使用状况可以分为:空缓冲队列、装满输入数

据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)。

另外,根据一个缓冲区在实际运算中扮演的功能不同,又设置了四种工作缓冲区:用于收容输入

数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓
冲区(hout)、用于提取输出数据的工作缓冲区(sout)

①输入进程请求输入数据

在这里插入图片描述
②计算进程想要取得一块输入数据
在这里插入图片描述
③计算进程想要将准备好的数据冲入缓冲区
在这里插入图片描述
④输出进程请求输出数据
在这里插入图片描述

转载地址:http://fzmzi.baihongyu.com/

你可能感兴趣的文章
ELF 格式详解
查看>>
chromium 使用
查看>>
linux 检测虚拟机类型
查看>>
go - 运行时:内存不足
查看>>
top 使用
查看>>
Linux Netlink通信机制详解
查看>>
rsync 远程同步
查看>>
nano使用
查看>>
c函数
查看>>
linux 链接
查看>>
centos6.x 添加开机启动服务
查看>>
zfs 简单使用
查看>>
linux EXT4格式分区扩容
查看>>
实现 du 命令
查看>>
git revert reset 使用
查看>>
一些比较好的golang安全项目
查看>>
HTTP状态码
查看>>
go语言
查看>>
mysql mariaDB 以及存储引擎
查看>>
游戏行业了解介绍
查看>>