第六章 输入输出系统【操作系统】2

简介: 第六章 输入输出系统【操作系统】2

3. 解决瓶颈问题

通道往往成为I/O的瓶颈如图:


改单通路为多通路解决瓶颈问题



6.3 中断机构和中断处理程序

6.3.1 中断简介

中断在操作系统中有着特殊重要的地位,它是多道程序得以实现的基础,没有中断,就不可能实现多道程序,因为进程之间的切换是通过中断来完成的。另一方面,中断也是设备管理的基础,为了提高处理机的利用率和实现CPU与I/O设备并行执行,也必需有中断的支持。

1. 中断和陷入

1)中断,是指CPU对I/O设备发来的中断信号的响应。由外部设备引起,故又称为外中断。

2)陷入,是由CPU内部事件引起的中断,如程序出错等等,故又称为内中断。

中断和陷入的主要区别是信号的来源,即是来自 CPU 外部,还是 CPU 内部。
2. 中断向量表和中断优先级

1)中断向量表。
通常是为每种设备配以相应的中断处理程序,并把该程序的入口地址放在中断向量表中的一个表项,并为每一个设备的中断请求规定一个中断号,它直接对应于中断向量表的一个表项。当 I/O 设备发来中断请求信号时,由中断控制器确定该请求的中断号,并去查找中断向量表取得设备中断处理程序的入口地址,这样便可转入中断处理程序执行。

2)中断优先级。多个中断信号同时到达时,根据优先级分别先后处理。

3. 对多中断源的处理方式

1)屏蔽(禁止)中断。
类似于关中断,当处理机正在处理一个中断时,将屏蔽掉所有的中断,让它们等待。直到处理机处理完本次中断后,再去检查是否有中断发生。

2)嵌套中断。

CPU 优先响应最高优先级的中断请求。高优先级的中断请求可以抢占正在运行的低优先级中断的处理机。

6.3.2 中断处理程序

中断处理程序是I/O系统中最低的一层,它是整个I/O系统的基础。中断机构的处理过程:

(1)CPU测定是否有未响应的中断信号。程序每当执行完当前指令后,处理机都要测试是否有未响应的中断信号。

(2)保护被中断进程的CPU环境。

(3)转入相应的设备处理程序。由处理机对各个中断源进行测试,以确定引起本次中断的 I/O 设备,并向提供中断信号的设备发送确认信号。在该设备收到确认信号后,就立即取消它所发出的中断请求信号。然后,将相应的设备中断处理程序的入口地址装入到程序计数器中。这样,当处理机运行时,便可自动地转向中断处理机程序。

(4)中断处理。

(5)恢复CPU现场并退出中断。



6.4 设备驱动程序

设备处理程序通常又称为设备驱动程序,它是I/O系统的高层与设备控制器之间的通信程序,其主要任务是接收上层软件发来的抽象I/O要求,如read或write命令,再把它转换为具体要求后,发送给设备控制器,启动设备去执行;反之,它也将由设备控制器发来的信号传送给上层软件。由于驱动程序与硬件密切相关,故通常应为每一类设备配置一种驱动程序。

6.4.1 设备驱动程序概述

1. 设备驱动程序的功能

(1) 将接受到的抽象(逻辑)要求转化为具体(物理)要求。

(2) 检查用户I/O请求的合法性, 设置设备的工作方式。

(3) 发出I/O命令

(4) 及时响应由控制器或通道发来的中断请求

(5) 对有通道系统, 能根据I/O请求, 自动地构造通道程序
2.设备驱动程序的特点

3. 设备处理方式

6.4.2 设备驱动程序的处理过程

在多道程序系统中,驱动程序一旦发出 I/O 命令,启动了一个 I/O 操作后,驱动程序便把控制返回给 I/O 系统,把自己阻塞起来,直到中断到来时再被唤醒。具体的 I/O 操作是在设备控制器的控制下进行的,因此,在设备忙于传送数据时,处理机又可以去干其它的事情,实现了处理机与 I/O 设备的并行操作。


(1) 将抽象的要求转化为具体的要求

(2) 检查I/O请求的合法性、 读出并检查设备的状态

(3) 传送必要的参数、设置工作方式

(4) 向控制器发送控制命令启动I/O设备, 将自己阻塞

(5) 完成I/O后, CPU响应中断唤醒相应的设备驱动进程

16. 磁盘存取时间

6.4.3 对I/O设备的控制方式

1. 使用轮询的可编程I/O方式
处理机对 I/O 设备的控制采取轮询的可编程I/O方式,即在处理机向控制器发出一条 I/O 指令启动输入设备输入数据时,要同时把状态寄存器中的忙/闲标志 busy 置为 1,然后便不断地循环测试 busy。当 busy=1 时,表示输入机尚未输完一个字(符),处理机应继续对该标志进行测试,直至 busy=0,表明输入机已将输入数据送入控制器的数据寄存器中。于是处理机将数据寄存器中的数据取出,送入内存指定单元中,这样便完成了一个字(符)的 I/O。接着再去启动读下一个数据,并置 busy=1

2. 使用中断的可编程I/O方式
采用中断的可编程I/O方式,即当某进程要启动某个 I/O 设备工作时,便由 CPU 向相应的设备控制器发出一条 I/O 命令,然后立即返回继续执行原来的任务。设备控制器于是按照该命令的要求去控制指定 I/O 设备。此时,CPU 与 I/O 设备并行操作。一旦数据进入数据寄存器,控制器便通过控制线向 CPU 发送一中断信号,由 CPU 检查输入过程中是否出错,若无错,便向控制器发送取走数据的信号,然后再通过控制器及数据线将数据写入内存指定单元中。

适用于低速流设备,如键盘,鼠标。

3. 直接存储器(DMA)访问方式
中断驱动 I/O 比程序 I/O 方式更有效,但须注意,它仍是以字(节)为单位进行 I/O 的,每当完成一个字(节)的 I/O 时,控制器便要向 CPU 请求一次中断。换言之,采用中断驱动 I/O 方式时的 CPU 是以字(节)为单位进行干预的。

从而引入直接存储器访问方式,其特点如下:

1)数据传输的基本单位是数据块,即在 CPU 与 I/O 设备之间,每次传送至少一个数据块;

2)所传送的数据是从设备直接送入内存的,或者相反;

3)仅在传送一个或多个数据块的开始和结束时,才需 CPU 干预,整块数据的传送是在控制器的控制下完成的。

4. I/O通道控制方式

I/O 通道方式是 DMA 方式的发展,它可进一步减少 CPU 的干预,即把对一个数据块的读(或写)为单位的干预减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现 CPU、通道和 I/O 设备三者的并行操作。而通道能与 I/O 设备并行是因为 I/O 通道实际上是一种特殊的处理机,它具有执行 I/O 指令的能力,并通过执行通道 I/O 程序来控制 I/O 操作。增设 I/O 通道的主要目的是为了建立独立的 I/O 操作,或者说是使一些原来由 CPU 处理的 I/O 任务转由通道来承担。

6.5 与设备无关的I/O软件

为了方便用户和提高OS的可适应性与可扩展性,在现代OS的I/O系统中,都无一例外地增加了与设备无关的I/O软件,以实现设备独立性,也称为设备无关性。其基本含义是:应用程序中所用的设备,不局限于使用某个具体的物理设备。这是在设备驱动程序之上设置的一层软件,称为与设备无关的I/O软件,或设备独立性软件。

6.5.1 与设备无关(Device Independence)软件的基本概念

1. 以物理设备名使用设备

2. 引入了逻辑设备名

3. 逻辑设备名到物理设备名的转换

6.5.2 与设备无关的软件

1. 设备驱动程序的统一接口

2. 缓冲管理

3. 差错控制

4. 对独立设备的分配与回收

5. 独立于设备的逻辑数据块

6.5.3 设备分配

1. 设备分配中的数据结构
通过在系统配置:①设备控制表 DCT;②控制器控制表 COCT;③通道控制表 CHCT;④系统设备表 SDT;实现都独占设备的分配。

同时,在系统中需要配置一张逻辑设备表 LUT,用于将逻辑设备名映射为物理设备名。

2. 设备分配时应考虑的因素

3. 独占设备的分配程序

6.5.4 逻辑设备名到物理设备名映射的实现

1. 逻辑设备表 LUT(Logicla Unit Table)

(1) 逻辑设备表(LUT)

逻辑设备名 物理设备名 驱动程序入口地址
/dev/tty 3 1024

/dev/print 5 2048

(2) 逻辑设备表的设置

整个系统只设一张LUT不允许有相同的逻辑设备名, 用在单用户系统中。

每个用户设一张LUT, 用户登录建立进程时,建立一张LUT并将该表放入该进程的PCB中,用在多用户系统中。

2.逻辑设备表的设备问题

6.6 用户层的I/O软件

一般而言,大部分的 I/O 软件都在操作系统内部,但仍有一小部分在用户层,包括系统调用、与用户程序链接在一起的库函数,以及完全运行于内核之外的假脱机系统等。

6.6.1 系统调用和库函数

1. 系统调用

2. 库函数

6.6.2 假脱机(Spooling)系统

如果说可以通过多道程序技术将一台物理CPU 虚拟为多台逻辑 CPU,从而允许多个用户共享一台主机,那么,通过 SPOOLing 技术便可将一台物理 I/O 设备虚拟为多台逻辑 I/O 设备,同样允许多个用户共享一台物理 I/O设备。
1. 假脱机技术

脱机输入、脱机输出技术。该技术是利用专门的外围控制机,先将低速I/O设备上的数据传送到高速磁盘上,或者相反。

事实上,当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机功能,把低速 I/O 设备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样,便可在主机的直接控制下,实现脱机输入、输出功能。此时的外围操作与 CPU 对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为 SPOOLing,或称为假脱机操作。

2. SPOOLing 系统的组成
1)输入井和输出井。这是在磁盘上开辟的两个存储空间。输入井是模拟脱机输入时的磁盘设备;输出井是模拟脱机输出时的磁盘。

2)输入缓冲区和输出缓冲区。为了缓和 CPU 和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。

3)输入进程和输出进程。输入进程也称为预输入进程,用于模拟脱机输入时的外围控制机。输出进程也称为预输出进程,用于模拟脱机输出时的外围控制机。

4)井管理程序。用于控制作业与磁盘井之间信息的交换。当作业执行过程中向某台设备发出启动输入或输出操作请求时,由操作系统调用井管理程序,由其控制从输入井读取信息或将信息输出至输出井。


3. SPOOLing系统的特点

1)提高了I/O的速度。

2)将独占设备改造为共享设备。

3)实现了虚拟设备功能。
4. 假脱机打印机系统

打印机是经常要用到的输出设备,属于独占设备。利用 SPOOLing 技术,可将之改造为一台可供多个用户共享的设备,从而提高设备的利用率。主要有以下三部分:

1)磁盘缓冲区。用于暂存用户程序的输出数据。

2)打印缓冲区。缓和 CPU 和磁盘之间速度不匹配的矛盾,设置在内存中,暂存从磁盘缓冲区送来的数据。

3)假脱机管理进程和假脱机打印进程。由假脱机管理进程为每个要求打印的用户数据建立一个假脱机文件,并把它放入假脱机文件队列中,由假脱机打印进程依次对队列中的文件进行打印。




每当用户进程发出打印输出请求时,由假脱机管理进程完成两项工作:①在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存;②为用户进程申请一张空闲的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到假脱机文件队列上。

真正的打印输出是假脱机打印进程负责的,当打印机空闲时,该进程首先从假脱机文件队列的队首摘取一张请求打印表,然后根据表中的要求将要打印的数据由输出井传送到内存缓冲区,再交付打印机进行打印。

5. 守护进程
除了假脱机打印机系统可以实现打印机共享,也可以为打印机建立一个守护进程。由守护进程执行一部分原来假脱机管理进程实现的功能。另一部分由请求进程自己完成,每个要求打印的进程先生成一份要求打印的文件,然后放入假脱机文件队列中。守护进程是按照目录中的文件依次来完成诸进程对该设备的请求的。

6.7 缓冲区管理

在现代操作系统中,几乎所有的I/O设备在与处理机交换数据时都用了缓冲区。

单缓冲区、双缓冲区、环形缓冲区、缓冲池。

6.7.1 缓冲的引入

6.7.2 单缓冲区和双缓冲区

1. 单缓冲区

块设备输入时, 输入到缓冲区的时间为T, OS将数据从缓冲区传到用户区的时间为M, CPU处理这块数据的时间为C; 显然T和C是可以并行的。


2. 双缓冲区

为了加快I/O速度提高设备利用率,又引入了双缓冲机制(缓冲对换 Buffer Swapping); 如果C<T, 块设备可连续输入。



6.7.3 环形缓冲区

1. 环形缓冲区的组成
I/O进程和计算进程对缓冲区的使用相当于生产者消费者问题, 当两者之间速度基本相匹配时,双缓冲能获得较好的效果, 但两者之间速度变化很大相差很远时效果不理想; 可将多个缓冲组成循环形式。以输入为例, 空缓冲区为R, 已装满数据的缓冲区为G, 正在使用的工作缓冲区为C, 使用时要考虑进程的同步:


2. 环形缓冲区的使用


3. 进程之间的同步问题

当计算进程要用缓冲区的数据时调用Getbuf(Nextg)过程, 将Nextg指示的缓冲区提供给计算进程使用, 并令Current 指针指向它的第一单元, Nextg 移向下一个G。
当输入进程要空缓冲区输入数据时调Getbuf(Nexti)过程,将Nexti指示的缓冲区供给输入进程, Nexti下移。

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
5天前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
2天前
|
安全 API 调度
移动应用与系统:探索移动应用开发与操作系统的融合之道
本文旨在探讨移动应用开发与移动操作系统之间的紧密联系,分析如何通过优化开发策略和系统设计,提升移动应用的性能和用户体验。我们将从移动应用开发的基本概念入手,逐步深入到移动操作系统的核心机制,揭示两者相互影响、相互促进的内在逻辑。通过案例分析和实践指导,本文将为读者提供一套行之有效的方法论,助力在移动应用领域取得卓越成就。
13 3
|
5天前
|
人工智能 安全 数据安全/隐私保护
移动应用与系统:构建现代数字生态的双引擎在数字化浪潮席卷全球的今天,移动应用与系统作为连接用户与数字世界的重要桥梁,正发挥着越来越重要的作用。它们不仅改变了人们的生活方式,也推动了各行各业的创新与发展。本文将深入探讨移动应用开发的最新趋势、移动操作系统的演进历程以及两者如何共同塑造我们的未来。
随着智能手机的普及和移动互联网的快速发展,移动应用已成为人们日常生活中不可或缺的一部分。从社交媒体到移动支付,从在线教育到远程办公,移动应用无处不在,极大地丰富了我们的生活体验。与此同时,移动操作系统也在不断进化,为应用提供了更加稳定、高效的运行环境。本文旨在分析当前移动应用开发的热点技术、探讨移动操作系统的未来发展方向,并展望这两者如何相互促进,共同推动数字经济的繁荣。
|
7天前
|
开发工具 Android开发 开发者
移动应用与系统:探索移动应用开发和操作系统的奥秘
本文将深入探讨移动应用开发和移动操作系统的相关话题,包括技术原理、开发工具和最佳实践。通过详细的分析和实例,读者将能够了解移动应用开发的全过程以及移动操作系统的核心机制。无论是初学者还是经验丰富的开发者,都能从中获得有价值的见解和指导。
|
10天前
|
存储 人工智能 安全
移动应用与系统:探索移动应用开发与移动操作系统的融合之道##
在当今数字化时代,移动应用已成为人们日常生活中不可或缺的一部分。无论是用于社交、娱乐还是工作,移动应用都扮演着重要的角色。然而,要实现这些应用的高效运行,一个稳定且功能强大的移动操作系统是至关重要的。本文将深入探讨移动应用开发与移动操作系统之间的紧密联系,揭示它们如何共同塑造了我们的数字世界。 ##
|
6天前
|
人工智能 中间件 物联网
移动应用与系统:探索移动应用开发和操作系统的奥秘
本文将深入探讨移动应用开发和操作系统的基本概念、关键技术及其发展趋势。我们将从移动应用的生命周期、开发工具和技术栈的选择,到移动操作系统的架构设计、性能优化,再到未来的发展方向,如人工智能、物联网和5G技术的融合,为您全面解析这个充满创新与机遇的领域。无论您是开发者、设计师还是对移动技术感兴趣的读者,本文都将为您提供丰富的信息和启发。
|
8天前
|
人工智能 安全 搜索推荐
移动应用与系统:探索移动应用开发与操作系统的融合之道
本文深入探讨了移动应用开发与移动操作系统之间的紧密联系,分析了它们如何相互影响、相互促进,共同推动移动互联网的发展。不同于传统的技术解析,本文以通俗易懂的方式,引导读者理解移动应用与系统背后的技术原理,同时启发思考未来移动技术的发展趋势。
|
3月前
|
安全 Linux 网络安全
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
|
3月前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
|
2月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
下一篇
无影云桌面