【汤4操作系统】深入掌握操作系统-输入输出系统篇

news2024/11/24 13:59:48

第五章 输入输出系统

I/O系统简介

  • 设备管理对象:主要是IO设备

  • 设备管理的基本任务:完成用户提出的IO请求,提高IO速率以及改善IO设备的利用率

  • 主要功能有:

    • 隐藏物理设备细节。IO系统对IO设备进行适当的抽象,以隐藏掉物理设备的实现细节,统一向用户提供少量的、抽象的读写命令

    • 与设备的无关性。允许应用程序使用抽象的逻辑设备名来使用某类设备,使得应用程序独立于具体使用的物理设备,从而有效的提高OS的可移植性和易适应性

    • 提高处理及和IO设备的利用率

    • 对IO设备进行控制。通过设备驱动程序启动IO设备进行数据传输并能对数据的传输方式进行有效的控制

    • 确保对设备的正确共享。

    • 错误处理

IO设备和设备控制器等硬件:

  • 在IO系统中,除了需要直接用于IO和存储信息的设备外,还需要有相应的设备控制器和高速总线。

  • 在大、中型计算机系统中,还配置了IO通道或IO处理及

通常,设备并不是直接与CPU通信,而是与设备控制器通信,因此在设备与设备控制器之间有一接口

设备控制器

设备和控制器之间的相连

  • 数据信号线:传送数据信号

  • 状态信号线:指示设备当前信号

  • 控制信号线:由设备控制器向IO设备发送控制信号

设备控制器:

  • 设备控制器是CPU与IO设备之间的接口,它接收从CPU发来的命令,并去控制IO设备工作,以使处理机从繁杂的设备控制事务中解脱

  • 设备控制器的主要职责是控制一个或多个IO设备,以实现IO设备和计算机之间的数据交换

  • 若控制器可以连接多个设备时,则应该含有多个设备地址,并使每个设备地址对应一个设备

IO通道

通道是一种特殊的执行IO指令的处理机

IO中断处理程序

IO设备完成IO操作后,设备控制器便向CPU发送了一个IO中断信号。

CPU相应中断时,保存被中断进程的CPU现场,通过中断向量表转向执行相应的IO中断处理程序

IO中断处理程序的工作过程如下

  • 检查本次IO操作的完成情况。中断处理程序通过读设备控制器的状态寄存器来检查本次IO操作的完成情况。

  • 进行IO结束或错误处理

  • 唤醒被IO操作阻塞的进程

  • 启动下一个请求。

  • 中断返回

设备驱动程序【了解】

设备驱动程序是IO进程与设备控制器之间的通信程序,它接收来自上层软件的、抽象的IO命令,再把它转换成具体要求后,发送给设备控制器,从而启动设备进行数据传送。

处理过程

  • 将抽象要求转换为具体要求

  • 检查IO请求的合理性

  • 读出和检查设备的状态

  • 传送必要的参数

  • 启动IO设备

对IO设备的控制方式

使用轮询的可编程IO

中断驱动方式

DMA控制方式

IO通道控制方式

与设备无关的IO软件

  • 设备独立性

  • 为什么引入?

    • 为了方便用户和提高OS的可适应性与可扩展性

  • 应用程序独立于具体使用的物理设备

  • 为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。

  • 实现设备独立性带来的好处

    • 设备分配时的灵活性:进程能以逻辑设备名称来请求某类设备时,系统可以立即将该类设备中的任何一台分配给进程,仅当当前类设备全部分配完毕时, 进程才会被阻塞

    • 易于实现IO重定向:用于IO操作的设备可以更换,而不必改变应用程序

  • 设备独立性软件

    • 驱动程序是一个与硬件紧密相关的软件

    • 为了实现设备独立性,必须在驱动程序上设置一层软件,称为设备独立性软件

用户层的IO软件

脱机:脱离主机的控制进行的输入输出操作

假脱机(Spooling)系统

通过假脱机技术,将一台物理IO设备虚拟成多台逻辑IO设备,允许多个用户共享一台物理IO设备。

  • 什么是Spooling技术

Spooling技术是软件的方式对脱机输入/输出系统的模拟

  • 用一道程序模拟脱机输入时的外围控制机的功能,把低速IO设备上的数据传输到高速磁盘上

  • 用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传输到低速输出设备上

  • 外围操作与CPU对数据处理同时进行,将这种在联机情况下实现的同时外围操作的技术称为SPOOLing

  • SPOOLing系统的组成

  • 输入井和输出井。在磁盘上开辟出来的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容IO设备输入的数据;输出井模拟脱机输出的磁盘

  • 输入缓冲区和输出缓冲区。用于缓和CPU和磁盘之间速度不匹配问题,暂存输入设备/输出设备的数据,中转站

  • 输入进程和输出进程。输入进程页称为预输入进程,用于模拟脱机输入时外围控制机。输出进程也称为缓输出进程

  • 井管理程序。用于控制作业与磁盘井之间的信息交换

  • SPOOling系统的特点

    • 提高了IO速度。缓和了CPU和低速IO设备之间速度不匹配的矛盾

    • 将独占设备改造为共享设备

    • 实现了虚拟设备功能。实现了将独占设备变换为若干台对应的逻辑设备的功能。

  • 如何利用SPOOLing技术实现共享打印机

  • 磁盘缓冲区

  • 打印缓冲区

  • 假脱机管理进程和假脱机打印进程

执行过程

  • 当用户进程发出打印输出请求时,假脱机打印机系统并不是立即把打印机分配给该用户进程,而是由假脱机管理进程完成两项任务:

    • 在磁盘缓冲区为之申请一个空闲盘块,并将要打印的数据送入其中暂存

    • 为用户进程申请一张空白的用户请求打印表,将请求填入,挂到假脱机文件队列上。

    • 对于用户进程而言,打印请求已经得到满足

  • 真正的打印输出是由假脱机打印进程执行的,当打印机空闲从队列的队首摘取请求打印表, 根据要求将数据从输出井传送到内存缓冲区,再交付打印机进行打印,重复执行直到队列为空,此后假脱机打印进程阻塞自己,直到再有打印请求。

对于每个用户而言,系统并非即时执行其程序输出数据的真实打印操作,而只是即时将数据输出到缓冲区,这是的数据并未被真正打印;真正的打印操作是在打印机空闲且该打印任务在等待队列中排到队首时进行;并且打印操作本身也是利用CPU的一个时间片,没有使用专门的外围机;以上对用户是屏蔽的。

设备分配

缓冲区

引入缓冲区的原因

  • 缓和CPU和IO设备速度不匹配的矛盾

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

  • 解决数据粒度不匹配问题

  • 提高CPU和IO设备的并行性

    • 提高系统的吞吐量和设备的利用率

单缓冲区

  • 如果在生产者与消费者之间设置了一个缓冲区,则生产者无需等待消费者就绪,便可把数据输出到缓冲区。可提升IO速度

双缓冲区:

  • 由于缓冲区是共享资源,生产者和消费者在使用缓冲区时必须互斥。如果消费者尚未取走缓冲区的数据,即时生产者又生产出新的数据,也无法将它送入缓冲区,等待。

  • 为了加快输入和输出速度,提高设备利用率,引入了双缓冲

环形缓冲区

  • 当输入速度和输出速度基本匹配时,采用双缓冲能获得较好的效果,可使生产者和消费者基本上能并行操作。若两者的速度相差甚远,双缓冲的效果不理想。随着缓冲区数量的增加,情况有所改善

缓冲池

  • 上述的缓冲区是专门为了特定的生产者和消费者设置的,它们属于专用缓冲。当系统较大时,应该有许多这样的循环缓冲,这不仅要消耗大量的内存空间,而且其利用率不高。

  • 为了提高缓冲区的利用率,采用既可以用于输入又可以用于输出的公用缓冲区,在池中设置了多个可供若干进程共享的缓冲区。

    • 缓冲池和缓冲区的区别:缓冲区仅仅是一组内存块的链表,而缓冲池则是包含了一个管理的数据结构及一组操作函数的管理机制,用于管理多个缓冲区。

  • Getbuf和Putbuf过程【什么玩意】

    • 为了使诸进程能互斥的访问缓冲池队列,可为每一队列设置一个互斥信号量MS(type)。此外,为了保证诸进程同步的使用缓冲区,又为每个缓冲队列设置了一个资源信号量RS(type)

void Getbuf(unsigned type) {
    Wait(RS(type));
    Wait(MS(type));
    //用于将从type所指示的队列的队首摘下一个缓冲区
    B(number) = Takebuf(type);
    Signal(MS(type));
}
void Putbuf(type,number) {
    Wait(MS(type));
    //将由参数number所指示的缓冲区B挂在type队列上
    Addbuf(type,number);
    Signal(MS(type));
    Signal(RS(type));
}

磁盘调度

磁盘调度的目标是使磁盘的平均寻道时间最少,提高磁盘IO速度

  • 磁盘IO速度高低、磁盘系统的可靠性直接影响到计算机的性能

提升磁盘IO速度的主要途径

  • 选择性能好的磁盘

  • 采用好的磁盘调度算法

  • 设置磁盘高速缓存

  • 其他方法

  • 采用高度可靠、快速的容量磁盘系统-磁盘冗余阵列

磁盘简述:

磁盘设备可以包括一个或多个物理盘片,每个磁盘片分为一个或两个存储面,每个盘面上都有若干磁道,磁道之间留有必要的缝隙,每条磁道又从逻辑上划分成若干扇区。

磁盘分类:

  • 固定头磁盘。这种磁盘在每条磁道上都有一读写磁头,所有的磁头都被装在一刚性磁臂中。通过这些磁头可以访问所有各磁道进行并行读写,有效的提高了磁盘的 IO速度,主要用于大容量磁盘上

  • 移动头磁盘。每个盘面配有一个磁头。为了访问所有磁道,需要移动进行训导,只能以串行方式读写,IO速度慢,结构简单用于中小型磁盘。

磁盘访问时间

磁盘调度算法

在书中只需要访问到右侧没有磁道就行,即到184就可以了。

书中的SCAN是LOOK

书中的C-SCAN是C-LOOK方法

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

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

相关文章

selenium 要点击的元素被其他元素遮挡 or 无法找到非可视范围内的元素

selenium 无法找到非可视范围内的元素 org.openqa.selenium.StaleElementReferenceException: The element reference of is stale; either the element is no longer attached to the DOM, it is not in the current frame context, or the document has been refreshed se…

Java根据word模板生成word文档并转成PDF文件

1. 处理word模板 1.1 定义word模版 1.2 定义完我们的模板之后,我们要将文档保存为xml的格式 定义完我们的模板之后,我们要将文档保存为xml的格式 1.3 xml格式化 生成的xml格式看起来比较乱,没有层次感, 所以需要格式化一下 格式化 1.4 修改xml 基础信息…

TestNG官方文档中文版

TestNG官方文档中文版(1) -介绍 T e s t NG 的 官 方 文 档 请 见 :http://testng.org/doc/documentation-main.html 1 介绍 T e s t N G 是 一 个 设 计 用 来 简 化 广 泛 的 测 试 需 求 的 测 试 框 架 , 从 单 元 测 试 (隔 离测试- 个类)到集成测试(测试由有…

Visio2013绘制任意曲线

曲线上蓝色的‘弯曲点‘,随着拉伸曲线,它自己会增减,这里要和’连接点‘区分开,连接点是用来连接别的图形的。

git通过ssh代理连接github(gitee不支持),并更改端口

文章目录 需求github使用ssh代理的方案gitee无法实现ssh代理gitee的暂时解决方案 参考 需求 git clone github/gitee远程仓库,使用ssh协议,并且走本地的http代理(端口3128)。 运行环境是Ubuntu 20.04。 github使用ssh代理的方案 修改~/.ssh/config文…

解决containerd+k8s集群搭建镜像拉取不到的问题

解决containerdk8s集群搭建镜像拉取不到的问题 下载离线镜像导入镜像初始化集群安装calico插件安装MetalLB部署一个nginx应用并暴露端口 之前我写了一篇containerdk8s搭建集群的文章,文章地址: https://blog.csdn.net/m0_51510236/article/details/1308…

系统架构设计师-系统工程与信息系统基础(3)

一、企业信息化与电子商务 1、企业资源计划(ERP) ERP是由MRP(物料需求计划)、MRPll(制造资源计划)一步步演化而来。 MARPll:核心是物流,主线是计划。 ERP:打通了供应链&a…

小白也能玩转Docker:应用部署、迁移与备份

目录 1、应用部署 1.1、Mysql 1.2、Ngixn 1.3、Redis 1.4、RabbitMQ 1.5、Elasticsearch 1.6、Zookeeper 2、迁移与备份 2.1容器保存为镜像 2.2镜像备份 2.3镜像恢复与迁移 1、应用部署 1.1、Mysql 拉取mysql的镜像: docker pull mysql:5.7 为mysql镜…

C语言深度刨析(二)——符号

文章目录 前言注释符号几个似非而是的注释问题y x/*p如何编写出出色的注释 接续符和转义符单引号、双引号逻辑运算符位运算符左移和右移0x01<<23的值为多少&#xff1f; 花括号、--操作符2/(-2)的值是多少&#xff1f;运算符的优先级运算符的优先级表一些容易出错的优先…

JavaEE课程设计(项目详细设计)

目录 项目文件组织结构 springbootschemaApplication dao controller application.yml entity annotation interceptor config 项目文件组织结构 这是后端部分的源码结构图 springbootschemaApplication springbootschemaApplication是整个项目的入口 package …

AI热门垂直领域大模型盘点(附论文)

上回分享了一些通用大模型的使用感受&#xff0c;今天咱们就来聊聊垂直领域大模型&#xff0c;照旧附上论文资料&#xff0c;同学们自取哈&#xff01; 其实照目前的趋势来看&#xff0c;垂直领域大模型的未来发展是要比通用大模型好的&#xff0c;一是通用大模型有GPT4这座难…

Java手动编码实现与k8s交互式shell

前言 要手动编码&#xff0c;和k8s做shell交互&#xff0c;我们需要弄清以下两个问题&#xff1a; 1、Java如何与k8s做shell交互 2、前端界面如何与Java后台交互 3、多个用户并发访问如何实现 问题1&#xff1a; k8s官方提供了各种语言的KubernetesAPI&#xff0c;对于Ja…

用AI修复郭德纲远古相声;小红书爆款文案Prompt模板;用AI经营一家三明治店;AI将实现80%编程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; B站UP主使用AI修复郭德纲远古相声&#xff0c;10天播放近70万 B站UP主 野老相声-风景-4K修复 使用了AI换脸技术&#xff0c;对郭德纲、…

【ArcGIS Pro二次开发】(41):勘测定界txt文件转数据库(批量)

在规划工作中有时候会收到一种带坐标点的txt文件&#xff1a; 上网查了一下资料&#xff0c;这是根据《勘测定界界址点坐标交换格式》制作的固定格式文件。 其中包含了坐标系、精度、地块编号、地块名称、坐标点等信息。 这个工具的目的就是将TXT格式坐标批量转换为数据库文件…

生物群落(生态)数据统计分析与绘图

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线&#xff0c;通过多个来自经典…

一些WEB测试方法

ladys and 乡亲们&#xff0c;long time no see&#xff0c;发个笔记&#xff1a;&#xff09; 首先&#xff0c;WEB是咋组成的 Web应用程序一般是B/S模式&#xff0c;一个Web应用程序是由完成特定任务的各种Web组件(web components)构成的并通过Web将服务展示给外界&#xff…

最喜爱的编程语言——Python

一、编程语言发展 编程语言&#xff08;programming language&#xff09;可以简单的理解为一种计算机和人都能识别的语言。一种能够让程序员准确地定义计算机所需数据的计算机语言&#xff0c;并精确地定义在不同情况下所应当采取的行动。 编程语言处在不断的发展和变化中&…

上海亚商投顾:沪指延续调整 机器人概念股掀涨停潮

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 大小指数今日略显分化&#xff0c;沪指全天震荡调整&#xff0c;深成指、创业板指则拉升翻红。机器人概念股掀涨停…

手把手教你使用抖音DOU+创作个性化视频!

抖音DOU是抖音推出的一项全新功能&#xff0c;旨在为用户提供更加个性化、丰富多彩的内容创作和交流体验。DOU提供了一系列强大的创作工具&#xff0c;包括音频剪辑、特效滤镜、场景转换、字幕编辑等&#xff0c;让用户可以轻松地将自己的创意通过视频分享到抖音平台上来。下面…

数值分析第四章节 用Python实现数值积分与数值微分

参考书籍&#xff1a;数值分析 第五版 李庆杨 王能超 易大义编 第4章 数值积分与数值微分 文章声明&#xff1a;如有发现错误&#xff0c;欢迎批评指正 文章目录 梯形公式矩形公式辛普森公式柯特斯公式复合梯形公式复合辛普森公式 4.1数值积分概论 4.1.1数值积分基本思想 使用某…