OS(十九):设备管理之 缓冲管理

1、缓冲引入

  为缓和CPU和I/O设备速度不匹配的矛盾,提高CPU和I/O设备的并行性,I/O设备在与处理机交换数据时都使用了缓冲区。

  缓冲管理主要职责是组织好这些缓存区,提供获得和释放缓冲区的手段。

  1、缓和CPU和I/O设备间速度不匹配的矛盾;

  2、减少对CPU的中断频率,放宽对CPU中断响应时间的限制。

2、单缓冲和双缓冲

  单缓冲,每当用户进程发出一 I/O 请求时,操作系统便在主存中为之分配一缓冲区。在字符设备输入时。缓冲区用于暂存用户输入的一行数据,在输入期间,用户进程被挂起以等待数据输入完毕;在输出时,用户进程将一行数据输入到缓冲区后,继续进行处理。

  双缓冲,也称为缓冲对换(Buffer Swapping)。在设备输入是,先将数据送入第一缓冲区,装满后转向第二缓冲区。

 0

  单缓冲,任一时刻只能实现单方向的数据传输;为实现双向数据传输,在设置两个缓冲区,一个用作发送缓冲区,一个用作接收缓冲区。

3、缓冲池(Buffer Pool)

3.1、缓冲池的组成

3.1.1、缓冲区类型

  空(闲)缓冲区;

  装满输入数据的缓冲区;

  装满输出数据的缓冲区。

3.1.2、队列类型

  空缓冲队列emq;

  输入队列 inq;

  输出队列 outq;

3.1.3、工作缓冲区

  用于收容输入数据的工作缓冲区

  用于提取输入数据的工作缓冲区

  用于收容输出数据的工作缓冲区

  用于提取输出数据的工作缓冲区

3.2、缓冲区的工作方式

  缓冲区工作在收容输入、提取输入、收容输出和提取输出四种工作方式。

 0

  收容输入:输入进程需要输入数据,调用GetBuf(emq)过程,从空缓冲队列emq的队首摘下一空缓冲区,将它作为收容输入工作缓冲区hin。

  提取输入:进程需要输入数据时,调用GetBuf(inq),从输入队列inq的队首取得一个缓冲区,作为提取输入工作缓冲区(sin),计算进程从中提取数据。

  收容输出:进程需要输出时,调用GetBuf(emq)过程从空缓冲队列emq的队首取得一个空缓冲区,作为收容输出工作缓冲区hout。

  提取输出:输出进程调用GetBuf(outq)过程,从输出队列的队首取得一装满输出数据的缓冲区,作为提取输出工作缓冲区sout。

 

posted @   无虑的小猪  阅读(208)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示

目录在这里