缓冲区管理
1.操作系统的概念与功能2.操作系统的特征3.操作系统的发展与分类4.操作系统的运行机制5.中断和异常6.系统调用7.计算机系统体系结构8.操作系统引导 (Boot)9.虚拟机10.进程的概念、组成、特征11.进程的状态与转换、进程的组织12.进程控制13.进程通信14.线程的概念、作用和属性15.线程的实现方式和多线程模型16.线程的状态与转换、组织与控制17.调度的概念与层次18.进程调度的时机、方式、切换与过程19.闲逛进程20.调度算法的评价指标21.调度算法22.调度算法(一)23.调度算法(二)24.调度算法(三)25.进程同步与进程互斥26.进程互斥的软件实现方法27.进程互斥的硬件实现方法28.互斥锁29.信号量机制30.信号量实现进程互斥、同步、前驱关系31.生产者-消费者问题32.多生产者-多消费者问题33.吸烟者问题34.读者-写者问题35.哲学家进餐问题36.管程37.死锁38.死锁的处理策略39.(一)预防死锁40.(二)避免死锁41.(三)死锁检测和解除42.内存的基础知识43.内存管理的概念44.覆盖与交换45.连续分配管理方式46.动态分区分配算法47.基本分页存储管理的基本概念48.基本地址变换机构49.具有快表的地址变换机构50.两级页表51.基本分段存储管理方式52.段页式管理方式53.虚拟内存的基本概念54.请求分页管理方式55.页面置换算法56.页面分配策略57.内存映射文件58.初识文件管理59.文件的逻辑结构60.文件目录61.文件的物理结构(文件分配方式)62.逻辑结构与物理结构63.文件存储空间管理64.文件的基本操作65.文件共享66.文件保护67.文件系统的层次结构68.文件系统的全局结构(布局)69.虚拟文件系统&文件系统挂载(安装)70.IO设备的概念和分类71.IO控制器72.IO控制方式73.IO软件层次结构74.IO应用程序接口&设备驱动程序接口75.IO核心子系统76.假脱机技术(SPOOLing技术)77.设备的分配与回收
78.缓冲区管理
79.磁盘的结构80.磁盘调度算法81.减少延迟时间的方法82.磁盘的管理83.固态硬盘缓冲区管理
一、缓冲区的概念
(一)实现方式
缓冲区是一个存储区域,可以有两种实现方式:
-
用专门的硬件寄存器组成缓冲区 :
成本较高,容量较小,一般仅用在对速度要求非常高的场合
-
利用内存的一部分作为缓冲区:
一般情况下的选择。I/O 软件层次结构的“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区
——补充:本节介绍的是“内存作为缓冲区”
(二)作用
- 缓和 CPU 与 I/O 设备之间速度不匹配的矛盾
- 减少对 CPU 的中断频率,放宽对 CPU 中断响应时间的限制
- 解决数据粒度不匹配的问题(对粒度的理解:数据交换规模)
- 提高 CPU 与 I/O 设备之间的并行性
二、单缓冲
理解:
-
缓冲区为空时将其设为写状态,只有写满后才可以设为读状态,读状态时只有把数据读完才能变为写状态。
-
这里比较抽象难理解,往缓冲区输入数据和输出数据都是原子操作,空的时候才能输入,满的时候才能输出。如何定义“空”和“满”则实际由用户编程决定。
结论:采用单缓冲策略,处理一块数据平均耗时 Max(T, C)+M
三、双缓冲
采用双缓冲的策略即在主存中为其分配两个缓冲区
(补充,第二张甘特图有点问题,建议自己画一遍捋一捋)
结论:采用双缓冲策略,处理一块数据平均耗时 Max(T, C+M)
——使用单/双缓冲在通信时的区别
假设两台机器 A,B 之间通信时,配置缓冲区用于数据的发送和接受。
两台机器各自配置:
- 单缓冲区:在任一时刻只能实现数据的单向传输。(类比半双工通信)
- 双缓冲区:在同一时刻可以实现双向的数据传输。(类比全双工通信)
四、循环缓冲区
理解:看作循环队列,其中
out 指针类比充满数据的缓冲区队列的队头,用于取
in 指针类比空缓冲区的队列的队头,用于存
五、缓冲池
(绿色对话框模拟的时④的过程)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!