1.I/O缓冲技术

1.1缓冲技术的引入

缓解处理机与设备间速度不匹配的矛盾;实现设备与处理机一定程度的并行操作;减少设备的中断频率,放宽对中断响应时间的限制。

1.2提前读与延后写

指用户进程从 I/O缓冲区中取走前一个数据以后,立即发出对下一个数据的输入请求。操作系统将在适当的时候响应该请求以便把用户进程需要的下一个数据从用户进程指定的输入设备读入到I/O 缓冲区中。显然,用户进程加工前一个数据的工作与操作系统输入下一个数据的工作可以同时进行。
延后写是指,当用户进程请求输出数据时,操作系统将很快把用户进程请求输出的数据从用户进程的工作区中取走并将其暂时存放在I/O缓冲区中。直到用户进程指定的输出设备空闲时, 操作系统才把暂时存放在I/O缓冲区中的用户进程的输出数据写入用户进程指定的输出设备上。显然,用户进程生成下一个输出数据的工作与操作系统输出前一个输出数据的工作可以同时进行。

1.3硬件缓冲和软件缓冲

硬件缓冲区配置在设备中,具有专门的用途。对处理机透明,不需要处理机的直接管理,不会影响系统性能。软件实现的缓冲区是内存空间的一部分。其目的是为了弥补硬件缓冲区的不足。因为并非所有外设都拥有,或者足够拥有硬件缓冲区。操作系统中介绍的缓冲区都是指软件缓冲区。

1.4缓冲区的组织形式

单缓冲:
简单,仅在内存中为进程对某个设备的I/O访问分配一个缓冲区,如图:
假定,一块数据从外部设备输入到内存所花费的时间为T,在内存中移动所花费的时间为M,被用户进程加工处理所花费的时间为C,那么在没有使用I/O缓冲区的情况下,平均每块数据的处理时间近似为:T+C。在使用单I/O缓冲区的情况下,平均每块数据的处理时间近似为:max(T,C)+M
相对于没有I/O缓冲区的情形, 单I/O缓冲区能提高用户进程的运行效率。
如果用户进程在对有关数据进行加工处理时不释放I/O缓冲区, 那么用户进程的性能并不能得到改善。如果T远远大于C,即外部设备的I/O速度比用户进程的计算速度慢得多,那么,单I/O缓冲区不会显著改善用户进程的性能。
双缓冲:
增加一个缓冲区,两个缓冲区可以交替使用。当数据从缓冲区复制到用户进程空间时,输入设备不必等待,可立即开始向另一个缓冲区输入数据。因此,增加了一个缓冲区后,前述的平均工作时间可近似为:max(T,C)。 另外,若用户进程阵发性I/O的数据超过一个缓冲区而不满两个缓冲区,双缓冲使进程不会在I/O数据期间被阻塞。
循环缓冲 :
当用户进程处理数据的速度较快、外部设备处理数据的速度较慢,或者用户进程阵发性输入/输出的数据较多时,必须考虑增加缓冲区的数量以改善系统性能,这就是多缓冲区方式。多个I/O缓冲区常常被组织成一个环形队列,故,称为循环缓冲。实质上,双缓冲可以看作是循环缓冲的一个特例。
缓冲池
上述三种缓冲区的组织形式仅适用于某种特定的I/O进程和计算进程,属于专用缓冲。当系统中的设备很多时,将会有许多这样的循环缓冲区,消耗大量的内存空间,而且其利用率也不高。为了提高缓冲区的利用率,可以采用公共缓冲池技术,其中的缓冲区可为多个设备和进程服务。
两种缓冲池:分别用于块型设备和字符型设备。用于块型设备的缓冲池:缓冲区较大,其长度通常与外部设备物理块的长度相同;用于字符型设备的缓冲池:缓冲区较小,其长度通常为8个字节、16个字节等。若单个缓冲区的容量太大会造成资源浪费,而太小的缓冲区则会增加系统管理开销。缓冲池中的缓冲区通常组织成链表结构。需要缓冲区时,从链表中申请一个或多个缓冲区。使用完毕时,释放的缓冲区将被链接到链表中。缓冲区和缓冲池都属于操作系统空间,用户进程不能直接对缓冲区中的数据进行操作:1.只能通过系统调用间接地使用;2.让操作系统将缓冲区中的数据复制到用户进程空间,或者相反。 

2.虚拟设备

2.1虚拟设备的引入

独占型设备的速度一般较慢,进程常需要长时间等待I/O传输完成,影响进程的推进速度;进程在占有设备期间不一定一直使用此设备,而其他申请该设备的进程只能阻塞等待,降低了设备的利用率,影响其他进程的推进速度。引入虚拟设备技术,能解决独占设备利用率不高的问题,以及解决进程推进速度的问题。

2.2虚拟设备技术的实现

虚拟设备技术类似缓冲区技术,可以认为是为设备提供了多个更大的、甚至在实际工作中是无限长度的缓冲区,进一步提高系统效率。虚拟设备技术的实现:在独占型设备与进程之间加入一个共享型设备作为过渡,如图:
共享型设备的某一区域是由若干个设备块构成的,对进程而言相当于真实的设备。由于共享型设备较独占型设备的速度较快。所以,进程I/O所需的时间较短,提高了进程的推进速度。又由于共享型设备的存储容量很大,可提供多个这样的区域,因而虚拟设备的数量多,一般可为每个需要使用设备的进程提供一个。这些进程不用排队等待,他们的推进速度也就不受任何影响。这样,多个进程可以同时使用同一独占型设备,而每个进程对应一个虚拟设备,提高了设备利用率。 

2.3输入型虚拟设备的实现

对于输入型虚拟设备,数据的流向: 独占型设备->共享型设备 ->进程空间/内存。
假定用于输入的独占型设备是读卡机,用于实现虚拟设备的共享型设备是磁盘,则对于进程所发出的资源申请命令、使用命令及释放命令,操作系统需要完成的工作如下:
①申请分配一台虚拟设备(磁盘区域),分配一台实设备(一台读卡机),将信息由实设备(读卡机)连续地传输到虚拟设备(磁盘区域),释放实设备(读卡机);
②使用将数据从虚拟设备(磁盘区域)传输到进程空间;
③释放回收虚拟设备(磁盘区域)。

2.4输出型虚拟设备的实现

对于输出型虚拟设备来说,数据的流向:内存->共享型设备->独占型设备
假定用于输出的独占型设备是打印机,用于实现虚拟设备的共享型设备是磁盘,则对于进程所发出的资源申请命令、使用命令及释放命令,操作系统需要完成的工作如下:
①申请  分配一台虚拟设备(磁盘区域);
②使用  将数据由进程空间传送到虚拟设备(磁盘区域);
③释放  申请一台实设备(一台打印机),将数据由虚拟设备(磁盘区域)输出到实设备(打印机),回收实设备(打印机)。

[OS复习]设备管理2相关推荐

  1. OS复习——设备管理习题

    OS复习--设备管理习题 在I/O系统中引入缓冲的主要原因是什么?某文件占10个磁盘块,现要把该文件的磁盘块逐个读入主存缓冲区,并送用户区进行分析.一个缓冲区与磁盘块大小相等.把一个磁盘块读入缓冲区的 ...

  2. [OS复习]设备管理4

    1.引入磁盘调度的例子 假定:一个硬盘的扇区长度为512个字节,磁道长度为32个扇区,平均寻道时间为20ms,传输速率为1MB/s,转速为3600rpm.显然, 如果一个长度为128K个字节的文件存放 ...

  3. [OS复习]设备管理1

    1.设备管理概述 设备管理的主要功能包括:设备分配.设备映射.设备驱动.I/O缓冲区管理 1.1设备分配 多道程序系统中的设备不允许用户直接使用,而是由操作系统统一调度和控制.设备分配功能是设备管理的 ...

  4. [OS复习]设备管理3

    1.磁盘设备的管理 1.1磁盘的性能和安全性 磁盘是计算机系统最重要的外部存储设备之一 .影响磁盘性能和数据安全性的主要因素: 1.磁盘性能参数:转速.寻道时间.磁盘缓存: 2.磁盘控制器:IDE.S ...

  5. [OS复习]进程管理2

    问题:多个进程竞争内存资源 1.解决方法 方案一:采用交换技术,换出一部分进程到外存,以腾出内存空间 方案二:采用虚拟存储技术,每个进程只能装入一部分程序和数据(存储管理部分) 2.对换技术(交换技术 ...

  6. [OS复习]文件管理

    1.复习要点提要 文件管理系统.文件的基本概念操作.文件目录.文件的逻辑组织与访问.文件记录与数据块的关系.文件共享.文件存储空间与空闲空间的管理 预先提出的问题: 什么是文件?文件由什么组成?文件如 ...

  7. [OS复习]进程管理5

    线程 1.多线程 操作系统中引入进程的目的: 为了描述和实现多个程序的并发执行,以改善资源利用率及提高系统的吞吐量. 操作系统引入线程的目的: 这是为了减少程序并发执行时系统所付出的额外开销(减少管理 ...

  8. [OS复习]操作系统综述2

    1.操作系统的功能 操作系统的主要任务: (1)管理处理机 (2)存储器管理(内存) (3)管理输入/输出设备(外设) (4)管理数据文件(文件) (5)提供接口服务 1.1 接口功能: 指操作系统为 ...

  9. [OS复习]文件管理2

    1.文件目录 1.1文件目录的内容 基本信息:文件名.文件类型.文件组织等: 地址信息:卷(存储文件的设备).起始地址,(起始物理地址).文件长度(以字节.字或块为单位)等. 访问控制信息:文件所有者 ...

最新文章

  1. 睡还是被睡,这是一个问题!
  2. java程序设计_这份Java程序设计手册被刷爆了,1000G视频+50大项目+200面试题
  3. Tensorflow中2D卷积API使用
  4. 【鬼网络】之Linux网络设置
  5. 【渝粤题库】广东开放大学 文化服务营销管理 形成性考核
  6. c语言程序设计答案万年历备忘录,基于JavaScript(网页脚本语言)编写的万年历(含源文件)...
  7. 中国企业海外人才发展白皮书
  8. 『高级篇』docker之安全认证kubernetes命令熟悉(40)
  9. qt界面嵌入web_使用Qt WebAssembly而不是JavaScript创建Web用户界面
  10. 2999元起?一加8系列外观配置价格全曝光:看完想买!
  11. 开始Azure之旅,参加深度培训 (转)
  12. 在asp.net 中实现只允许数字输入的文本框
  13. python单链表实现荷兰国旗问题_[算法题] 荷兰国旗问题
  14. Atitit android app 最佳实践2021目录1. Android strudio,,and viruse machine need down another... 11.1. P
  15. MySQL数据库学习资料(一)
  16. Protel DXP 2004 SP3_SP4 注册机
  17. AT32F437基于LVGL的仪表显示案例
  18. 企业运维之服务管理 -- supervisord
  19. DevOps 工程师需要必备哪些技能?
  20. Prescan 8.5.0 许可证过期(Could not checkout a valid license)

热门文章

  1. 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
  2. hdu 5692 Snacks(dfs序+线段树区间更新)
  3. NYOJ 1186 心理阴影(两个圆环的相交面积)
  4. OpenSTF 平台搭建
  5. Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例...
  6. Egret IDE中搜索,过滤文件,只搜索.ts
  7. Sublime Less 自动编译成css
  8. Delphi 7下使用VT实现树型列表结合控件
  9. mysql:Failed to read auto-increment value from storage engine
  10. 用C/C++扩展你的PHP