操作系统缓冲区管理(单缓冲,双缓冲,循环缓冲,缓冲池)

news2024/11/17 23:36:42

目录

  • 1.什么是缓冲区
    • 1.有什么作用
  • 2.单缓冲
    • 1.常考题型:计算每处理一块数据平均需要多久
      • 1.假设输入时间T大于处理时间C
      • 2.假设输入时间T小于处理时间C
    • 2.单缓冲通信
  • 3.双缓冲
    • 1.计算数据处理的时间
      • 1. 假设T>C+M
      • 2.假设T<C+M
    • 2.双缓冲通信
  • 4.循环缓冲
  • 5.缓冲池
    • 1.共用缓冲区
    • 2.工作缓冲区
    • 3.数据输入输出操作

1.什么是缓冲区

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

1.有什么作用

①缓和CPU与I/O设备之间速度不匹配的矛盾
②减少对CPU的中断频率,放宽对CPU中断相应时间的限制
③解决数据粒度不匹配的问题
如:输出进程每次可以生成一块数据,但I/O设备每次只能输出一个字符
④提高CPU与I/O设备之间的并行性

2.单缓冲

假设某用户进程请求某种块设备读入若干块的数据。
若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。
注意:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;
缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

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

技巧:假定一个初始状态,分析下次到达相同状态需要多少时间,这就是处理一块数据平均所需时间。
在“单缓冲”题型中,可以假设初始状态为工作区满,缓冲区空

1.假设输入时间T大于处理时间C

处理一块数据的平均用时=T+M。(M为传送时间)
在这里插入图片描述

2.假设输入时间T小于处理时间C

处理一块数据的平均用时=C+M。
在这里插入图片描述

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

2.单缓冲通信

两台机器之间通信时,可以配置缓冲区用于数据的发送和接受。
在这里插入图片描述
显然,若两个相互通信的机器只设置单缓冲区,在任一时刻只能实现数据的单向传输

3.双缓冲

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

1.计算数据处理的时间

1. 假设T>C+M

处理一块数据的平均用时=T.
在这里插入图片描述

2.假设T<C+M

在这里插入图片描述
总之,T<C+M意味着设备输入数据块的速度要比处理机处理数据块的速度更快。
每处理一个数据块平均耗时C+M

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

2.双缓冲通信

在这里插入图片描述
若两个相互通信的机器设置双缓冲区,则同一时刻可以实现双向的数据传输

4.循环缓冲

将多个大小相等的缓冲区链接成一个循环队列
注:以下图示中,橙色表示已充满数据的缓冲区,绿色表示空缓冲区。

在这里插入图片描述

5.缓冲池

1.共用缓冲区

缓冲池由系统中共用的缓冲区组成。
这些缓冲区按使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)。
在这里插入图片描述

2.工作缓冲区

另外,根据一个缓冲区在实际运算中扮演的功能不同,
又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(hout)、用于提取输出数据的工作缓冲区(sout)

在这里插入图片描述

3.数据输入输出操作

①输入进程请求输入数据
从空缓冲队列中取出一块作为收容输入数据的工作缓冲区(hin)。
冲满数据后将缓冲区挂到输入队列队尾。
②计算进程想要取得一块输入数据
从输入队列中取得一块冲满输入数据的缓冲区作为“提取输入数据的工作缓冲区(sin)”。
缓冲区读空后挂到空缓冲区队列。
③计算进程想要将准备好的数据冲入缓冲区
从空缓冲队列中取出一块作为“收容输出数据的工作缓冲区(hout) ”。数据冲满后将缓冲区挂到输出队列队尾。
④输出进程请求输出数据
从输出队列中取得一块冲满输出数据的缓冲区作为“提取输出数据的工作缓冲区(sout) ”。
缓冲区读空后挂到空缓冲区队列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1142364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java版直播商城平台规划及常见的营销模式 电商源码/小程序/三级分销+商城免费搭建

涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

第十三章---枚举类型与泛型

一&#xff0c;枚举类型 1.使用枚举类型设置常量 设置常量时&#xff0c;我们通常将常量放置在接口中&#xff0c;这样在程序中就可以直接使用。该常量稚因为在接口中定义常量时&#xff0c;该常量的修饰符为 final 与 static。 public interface Constants ( public static …

C#两个表多条件关联写法

文章目录 C#两个表多条件关联写法两个表实体类准备实体类数据初始化第一种 sql的左关联第二种相当于sql的 INNER JOIN写法一&#xff1a;FROM a FROM b where 多条件关联写法二&#xff1a; FROM JOIN INTO写法三&#xff1a; FROM JOIN 省略into C#两个表多条件关联写法 两个…

order by数据过多引起的cpu飙升

测试环境 1.目前数据库类型为pg数据库2.目前数据库业务为共享数据库,为减少其他业务对本次测试的影响,故选在业务空闲时间执行3.服务器性能为8C 32GB 500GB硬盘 原程序测试结果 优化后程序结果 出现原因 当数据量大时&#xff0c;order by排序操作会消耗大量的CPU资源&#…

Android登录注册页面(第三次作业)

第三次作业 - 登录注册页面 题目要求 嵌套布局。使用线性布局的嵌套结构&#xff0c;实现登录注册的页面。&#xff08;例4-3&#xff09; 创建空的Activity 项目结构树如下图所示&#xff1a; 注意&#xff1a;MainActivity.java文件并为有任何操作&#xff0c;主要功能集中…

Python---continue关键字对while...else结构的影响(只是跳过某次,之后继续正常结束,执行else)

回顾&#xff1a; 在Python循环中&#xff0c;经常会遇到两个常见的关键词&#xff1a;break 与 continue break&#xff1a;代表终止整个循环结构 continue&#xff1a;代表中止当前本次循环&#xff0c;继续下一次循环 break&#xff1a; 英 /breɪk/ v. 打破&#xff…

供应 JOSEF约瑟 电源监视继电器 HJZZ-92/2A HJZZ-91 DC220V

品牌&#xff1a;JOSEF约瑟名称:监视综合继电器型号:HJZZ-91、HJZZ-92/2A额定电压:48,110,220VDC/110,220,380VAC功率消耗:≤10W触点容量:250V5A 系列型号&#xff1a; HJZZ-91分闸、合闸、电源监视综合装置&#xff1b; HJZZ-92/1分闸、合闸、电源监视综合装置&#xff1b;…

SpringCore 完整学习教程1,入门级别

1. SpringApplication SpringApplication类提供了一种方便的方式来引导从main()方法启动的Spring应用程序。在很多情况下&#xff0c;你可以委托给静态的SpringApplication.run方法&#xff0c;如下面的例子所示: import org.springframework.boot.SpringApplication; import…

PgSQL-执行器机制-Unique算子

PgSQL-执行器机制-Unique算子 PgSQL中输出去重的元组有多种方法&#xff0c;比如通过HashAgg或者GroupAgg。这里我们介绍第三种方法&#xff0c;通过Unique算子来完成这个功能。当然语句上可以是&#xff1a;select distinct(id1) from t; 1、ExecUnique 执行器执行算子的函数都…

3.加载天地图

愿你出走半生,归来仍是少年&#xff01; 上一篇文章构建出来基础的白球&#xff0c;现在需要给它添加底图啦。先上最常用的天地图。 1.天地图 天地图做过Gis开发的应该都知道&#xff0c;需要先申请key然后才能使用。然后天地图是基于XYZ的标准进行切片的&#xff0c;所以直接…

FreeRTOS 延时函数和软件定时器 详解

目录 什么是延时函数&#xff1f; 1.延时函数分类 2.vTaskDelay 与 HAL_Delay 的区别 什么是定时器&#xff1f; 1.软件定时器优缺点 2.软件定时器原理 3.软件定时器相关配置 4.单次定时器和周期定时器 软件定时器相关 API 函数 1. 创建软件定时器 2. 开启软件定时器…

C++STL----list的使用

文章目录 list简介list的使用默认成员函数的使用list容器元素的修改front和backpush_front和pop_frontpush_back和pop_backinserterase list迭代器begin和endrbegin和rend list大小控制resizeclear list操作函数sortspliceremoveremove_ifuniquemergereverseassign CSTL----lis…

CloudFlare系列--使用第三方来自定义CDN的IP(笨牛详细版)

原文网址&#xff1a;CloudFlare系列--使用第三方来自定义CDN的IP(笨牛详细版)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用自定义节点来提高CloudFlare的CDN节点的访问速度。 CloudFlare的CDN很强大&#xff0c;可以防DDos等攻击&#xff0c;也可以提高国外服务器的访…

假如我有一台服务器,我会让它提供三种服务

一、提供照片上传、存储和下载服务 随着移动互联网时代的持续快速发展&#xff0c;PC互联网日益势微&#xff0c;各大互联网门户网站的博客、空间也跟着凋零&#xff0c; 作为博客、空间的标配功能的相册也随之被关闭。 2019年3月6日网易相册发布停运公告并于当年5月8日正式停…

网络安全—小白自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

yo!这里是进程间通信

目录 前言 进程间通信简介 目的 分类 匿名通道 介绍 举例&#xff08;进程池&#xff09; 命名管道 介绍 举例 共享内存 介绍 共享内存函数 1.shmget 2.shmat 3.shmdt 4.shmctl 举例 1.框架 2.通信逻辑 消息队列 信号量 同步与互斥 理解信号量 后记…

漫谈广告机制设计 | 混排:广告与自然结果的交锋博弈(2)

话说前文&#xff0c;在彼此不同的利益面前&#xff0c;自然侧和广告侧在混排战场展开了一番较量&#xff0c;一个浑水摸鱼&#xff0c;一个暗渡陈仓。最终双方不得不坐下来&#xff0c;为了平台整体的利益&#xff0c;一起谈谈各自的诉求&#xff0c;商讨一下解决方案。 第三…

安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境

目录 一、操作系统 1.1.什么是操作系统 1.2.常见操作系统 1.3.个人版本和服务器版本的区别 1.4.Linux的各个版本 二、VMware Wworkstation Pro虚拟机的安装 1.下载与安装 注意&#xff1a;VMWare虚拟网卡 2.配置虚拟网络编辑器 三、安装配置 WindowsServer 1.创建虚拟…

讲述为什么要学习Adobe XD以及 Adobe XD下载安装

首先 我们要了解 Adobe XD 是个什么东西 XD是Adobe公司专门开发出来面向交互、界面设计的矢量绘图工具。 然后是 他可以做什么&#xff1f; 最基本的 可以做UI界面设置 所有 手机 平板 电脑等设备的UI界面 我们都可以通过XD完成 还有就是原型设置 我们可以做各种界面图 还有…

寄存器、CPU缓存、内存。以及他们之间的关系

寄存器 CPU寄存器是CPU内部的高速存储区域&#xff0c;用于临时存储数据和指令。寄存器是CPU的重要组成部分&#xff0c;用于提高程序的执行效率。它们比主存储器更快&#xff0c;可以使得CPU更有效地处理数据和执行指令。 寄存器可以分为不同类型&#xff0c;下面列出部分AR…