• 单缓冲、双缓冲、循环缓冲


    缓冲区管理

    什么是缓冲区?有什么作用?

    缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区。
    使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度非常高的场合(存储器管理寄存器,有对页表访问的频率较高,因此使用速度很快的联想寄存器 来存放页表项的副本)

    一般情况下更多的是使用内存作为缓冲区,“设备独立性软件”的缓冲区就是要组织管理好这些缓冲区。

    缓冲区的作用

    1. 缓和CPU和IO设备之间速度不匹配矛盾。
    2. 减少对CPU的中断频率,放宽对CPU中断相应的时间限制
    3. 解决数据粒度不匹配的问题
    4. 提高CPU和IO设备之间的并行性。

    单缓冲

    什么是单缓冲:

    假设某用户进程请求某块设备读入若干块数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区。
    当缓冲区不为空时不能往里面放入数据,只有缓冲区为空才能放入数据,但是一次放入的数据必须充满整个缓冲块,才能从缓冲区把数据传出。

    结论:采用单缓冲策略,处理一块数据平均耗时MAX(C,T)+M。其中C是CPU处理工作区的时间,T是从IO到缓冲区的时间,M是缓冲区的数据存到工作区的时间。

    双缓冲

    若采用双缓冲策略,操作系统会在主存中为其分配两个缓冲区。
    采用双缓冲策略,处理一个数据块的平均耗时是Max(T, C+M).

    使用单缓冲/双缓冲在通信时的区别

    单缓冲
    在这里插入图片描述
    双缓冲。若是双缓冲通信,则同一时刻可以实现双向的数据传输。
    在这里插入图片描述
    管道通信中的管道就是缓冲区。要想实现双向通信必须设置两个管道。

    循环缓冲区

    将大小相等的缓冲区连接成一个循环队列。循环队列中有两种缓冲区,一种是没有数据的空闲缓冲区,一种是由数据的满缓冲区。又有两个指针分别指向空缓冲区和满缓冲区。

    在这里插入图片描述

    缓冲池

    缓冲池有系统中共用的缓冲区组成。这些缓冲区按照使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列、装满输出数据的缓冲队列
    根据一个缓冲区在实际运算中扮演的功能不同,又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(hout)、用于提取输出数据的工作缓冲区(sout)。

    在这里插入图片描述

  • 相关阅读:
    锋利的BFC
    inline和inline-block的间隙问题
    margin和padding的四种写法
    js中Math.round、parseInt、Math.floor和Math.ceil小数取整小结
    使用vscode自动编译less
    redux获取store中的数据
    react显示隐藏动画
    react使用路由
    react中使用fetchjsonp获取数据
    vue兼容到ie9
  • 原文地址:https://www.cnblogs.com/itjiangpo/p/14181374.html
Copyright © 2020-2023  润新知