aupOS设备管理与_第1页
aupOS设备管理与_第2页
aupOS设备管理与_第3页
aupOS设备管理与_第4页
aupOS设备管理与_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-12-221内容纲要内容纲要 中断 IO缓冲 设备分配2021-12-222中断的概念 中断源 引起中断发生的事件 中断请求 中断源向CPU发出的请求中断处理信号 中断响应 CPU收到中断请求后,转去执行相应的中断处理程序 中断优先级 为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别2021-12-223中断的分类 根据中断源产生的条件,可把中断分为外中断和内中断。 外中断是指来自外部设备的中断,外中断在狭义上一般被称为中断。 内中断主要指在处理机和内存内部产生的中断。内中断一般称为陷阱(trap)。2021-12-224中断

2、和陷阱的区别 陷阱通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。 陷阱处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的。 CPU在执行完一条指令之后,下一条指令开始之前响应中断,而陷阱则可能是在指令执行期间发生并被处理。 例如执行指令非法时,尽管被执行的非法指令不能执行结束,但CPU仍可对其进行处理。 陷阱处理程序通常被规定在各自的进程上下文中执行,而中断处理程序则一定在系统上下文中执行。2021-12-225软中断 软中断则是通信进程之间用来模拟硬中断的一种信号通信方式。 其中断源发中断请求或软中断信号后,CPU或接收进程在适当的

3、时机自动进行中断处理或完成软中断信号所对应的功能。 在有些系统中,大部分的陷阱是转化为软中断处理的。2021-12-226软中断 特点 其优先级一般低于系统调度程序的优先级,可以用来执行不十分紧急的任务 用于实现系统调用、调试等工作 实例 除法溢出(/0) int指令 单步调试中断(CPU的状态寄存器的某位置1的时候,每条指令执行后都会产生一个调试中断)2021-12-227INTEL i386的中断向量 0 31 : 不可屏蔽中断32 47: 可屏蔽中断48 255 : 软中断 Linux采用0 x80作为系统调用所采用的中断向量,用于陷入核心态,进行核心处理2021-12-228中断处理过

4、程CPU检查响应中断的条件是否满足。CPU响应中断的条件是:有来自于中断源的中断请求、CPU允许中断。如果CPU响应中断,则CPU关中断,使其进入不可再次响应中断的状态。保存被中断进程现场。分析中断原因,调用中断处理子程序。在多个中断请求同时发生时,处理优先级最高的。执行中断处理子程序。对陷阱来说,在有些系统中则是通过陷阱指令向当前执行进程发软中断信号后调用对应的处理子程序执行。退出中断,恢复被中断进程的现场或调度新进程占据处理机。开中断,CPU继续执行。2021-12-229内容纲要内容纲要 中断 IO缓冲 设备分配2021-12-2210缓冲的引入 需设置缓冲区缓解与外设速度不匹配。 引入

5、缓冲的必要性 引入缓冲的一个例子是网络通信:如果从远地终端发来数据(串行)仅用1个bit缓冲来接收,则必须在每收到一位数据时便中断CPU一次。对于速率为9.6 kb/s 数据通信来说,意味着中断CPU的频率也为9.6k次。2021-12-22111bit/100s8位缓冲中断通知CPUCPU响应取走处理(800s内)1bit/100s1位缓冲中断通知CPUCPU响应取走处理(100s内)端口(1位缓冲)(8位缓冲) 缓冲的引入 寄存器2021-12-2212u 进程读取数据块时,若已在缓冲区就立刻读取,不阻塞进程。当缓冲区空时才阻塞进程,启动磁带或磁盘数据块读入,这就是所谓的提前读。u 当进程

6、输出数据块到磁带或磁盘时,只需写入缓冲区,直到缓冲区满之后才开始启动磁带或磁盘。既减少了输出操作和中断次数,又提高了传输速度。利用缓冲区实现的这种功能就称为延迟写。 引入缓冲技术,系统对设备读写可实行“提前读”和“延迟写”方式。缓冲的引入 引入缓冲的必要性 2021-12-2213凡是数据到达速率与数据离去速率不同的地方都可以设置缓冲区。 根据I/O控制方式,缓冲的实现方法有两种; 一种是采用专用硬件缓冲器,例如I/O设备,或控制器中的数据缓冲寄存器。 另一种方法是利用系统内存空间和软件方法实现的缓冲技术,也称软件缓冲。 主要讨论利用内存和软件实现的缓冲技术。 缓冲的引入 引入缓冲的必要性 2

7、021-12-2214 缓冲的种类 缓冲技术是利用空间来换取时间,加快系统I/O数据处理速度。缓冲区的设置也根据设备的类型有关 块设备的缓冲区的大小应为块的大小; 字符设备的缓冲区大小一般以一行大小设置。 根据系统不同配置,一般可把缓冲技术分为单缓冲、双缓冲和多缓冲以及缓冲池几种。 缓冲的引入 2021-12-2215操作系统用户进程I/O设备进入进入移动到(a)无缓冲(b)单缓冲(c)双缓冲I/O设备I/O设备进入移动到(d)循环缓冲I/O设备进入移动到 缓冲的种类 2021-12-2216单缓冲 以块传输为例。 假定T 为从块设备传输一块到缓冲区的时间,对其进行计算(或加工)时间为C。 n

8、 无缓冲;数据直接进入用户区,一块处理时间显然为:T+C。 n 设置单缓冲区;从缓冲区将数据传送到用户区时间为 M ;处理一块时间为:max ( T,C )+M。假定,连续输入 n 块数据,且T=C,不考虑最初输入和最后的计算,中间任何一块处理时间均为:T+M,或C+M。2021-12-2217用户进程输入时间T移动时间M计算时间C设备输入:缓冲区:拷贝到用户区:用户区数据:用户进程计算:空满tT=CM满满满空结束对于TC,CT ? 单缓冲 2021-12-2218单缓冲下设备并行问题: 单缓冲属于临界资源,不允许多个进程同时对一个缓冲区操作,故设备之间不能达到并行操作。 进一步说明:假定输入

9、到缓冲块数据被立即打印出去,此时C 为打印一个数据块时间,并且仍假定 T=C,即输入的速度=输出的速度。这时输入与输出是串行操作的,即输入一个块数据时,输出等待,反之亦然。为使设备之间能够并行操作,就必须引入双缓冲。 单缓冲 2021-12-2219 双缓冲 解决两台外设之间,I/O与计算之间并行操作问题是设置双缓冲。假定输入输出设备速度相同都需T 时间,如下图。 缓冲区1:缓冲区2:设备输入设备输出 输入数据 输出数据 输入数据t 输入数据 输出数据T CPU在计算时,输入设备也可以进行输入;CPU将输入到一个缓冲区的数据取走的同时,输入设备可向另一个缓冲区输入数据。2021-12-2220

10、双缓冲分析:双缓冲只是说明设备之间、CPU和设备并行操作简单模型,不能用于实际并行操作,有两个原因: n 计算机系统中外围设备较多,各设备差异很大,双缓冲下设备间完全并行操作很难实现,可存在并行,但很不完全。n CPU速度远高于外设,尤其出现阵发性I/O操作,使得CPU与设备间并行难以实现,因而,双缓冲情况下匹配设备和CPU速度受到制约。n现代系统中一般使用多缓冲的循环缓冲或缓冲池结构。 双缓冲 2021-12-2221循环缓冲 n双缓冲在并行时由于各自推进速度的差异使得并行受到很大限制;n可利用多缓冲来平滑计算与输入输出设备、输入设备与输出设备并行双方之间的数据流;n多缓冲通常组织成循环缓冲

11、的形式。 通常多个缓冲的大小相同。 多缓冲组成 I/O设备进入移动到2021-12-2222EECFFFNext-ENext-FCurrent-F123456EEFFFFNext-ENext-F123456(a)(b)对用于输入的多缓冲分成三种类型,并有三个指针: 空缓冲区E:Next-E 指示进程下一个可用缓冲区E 满缓冲区 F:Next-F 指示进程下一个可用缓冲区F 工作缓冲区 C:Current指示进程正在使用缓冲区 循环缓冲 E空F满进程可利用申请和释放两个过程使用循环缓冲区申请一个缓冲区:对于计算进程,申请由Next-F指示缓冲区F供计算使用提取数据(复制到进程区),且作为当前工作

12、缓冲区,Next-F指针后移一个缓冲区。同理对于输入进程是将当前Next-E作为工作缓冲区,Next-E指针后移一个缓冲区。释放一个缓冲区:对于计算进程,释放已提取完数据缓冲区(由C改成E)。对于输入进程来说,已向当前空缓冲区输入完数据,应释放并将其改成缓冲区F。输入与计算并行操作中,应考虑两种同步情况:Next-E追上Next-F:意味输入进程输入数据速度大于计算进程处理数据速度,已将全部缓冲区装满。这时阻塞输入进程,这种情况称为系统受计算限制。Next-F追上Next-E:计算进程处理数据的速度大于输入进程的速度。这种情况称为系统受输入限制。并行的一方速度超出了另一方不断工作所能完成的总量

13、(缓冲区全满),多缓冲的作用也就消失了。2021-12-2223缓冲池 面向字符/块设备缓冲区都可以有两种属性: n 私用缓冲区(专用缓冲区):前面介绍的循环缓冲就是针对某一特定设备的,会产生严重的问题: 有大量I/O操作进程因分配缓冲区不足造成阻塞。 进程无I/O请求使得所分配缓冲区资源浪费。n 公用缓冲区,为所有进程所共享,即当进程需要进行I/O时,需要向系统申请一个缓冲,系统就在属于公共的缓冲区中进行分配,造成按需分配的管理方式,需建立缓冲池管理。 因此,为了提高缓冲区的利用率,通常不将缓冲区与某一具体设备固定的联系在一起,而是将所有的缓冲区集中管理。2021-12-2224 缓冲池的组

14、织 缓冲池由多个缓冲区组成,每个都可以用于输入/输出,可以分为三种类型队列: n 空缓冲队列emq;队首指针F(emq),队尾指针L(emq)。n 满输入数据的输入缓冲队列inq,队首指针F(inq),队尾指针L(inq)。n 满输出数据的输出缓冲队列outq,队首指针F(outq),队尾指针L(outq)。 缓冲池 F(emq)空缓冲1空缓冲2空缓冲eL(emq)F(inq)输入满1输入满2输入满iL(inq)F(outq)输出满1输出满2输出满oL(outq) 缓冲区的组织 缓冲首部:用来标识该缓冲区和用于管理;缓冲体:用来存放数据。2021-12-2225进程从三种队列中申请和取出缓冲区

15、,进行存数、取数操作,然后再放入相应队列。这些缓冲区被称为工作缓冲区,有4种工作缓冲区: n 用于收容设备输入数据的收容输入缓冲区hin; n 用于提取设备输入数据的提取输入缓冲区sin; n 用于收容CPU输出数据的收容输出缓冲区hout; n 用于提取CPU输出数据的提取输出缓冲区sout。 缓冲池 缓冲池的组织 缓冲区ihin缓冲区j缓冲区k缓冲区msoutsinhout提取输入收容输出CPU收容输入输入机提取输出输出机缓冲池2021-12-2226 缓冲池管理 注意:由于缓冲队列是系统内各进程所公用的资源,是临界资源,在多个进程访问一个队列时应该互斥,同时也需要同步。这是生产者与消费者

16、问题的变形。为每个队列设置一个互斥信号量S(type),初值为1;队列缓冲区资源信号量RS(type);空缓冲区、输入满和输出满三个队列初值分别为n、0、0。下面给出过程get_buf和put_buf的描述。 get_buf:供进程申请缓冲区用的过程(或者操作);put_buf:供进程将缓冲区放入相应缓冲区队列的过程(或操作)。2021-12-2227其中;type 表示缓冲队列类型number为缓冲区号work_buf 则表示工作缓冲区类型(实际也对应一个缓冲区号) 过程get_buf和put_buf的描述 2021-12-2228F(emq)L(emq)进程请求输入时,缓冲池中缓冲区变化空

17、缓冲2空缓冲eF(inq)L(inq)输入缓冲2输入缓冲1输入缓冲i收容输入输入机hin注:各队列1,2为相对编号进程请求输入数据number=k 空缓冲1空缓冲1结束输入缓冲k 缓冲区工作方式 2021-12-2229内容纲要内容纲要 中断 IO缓冲 设备分配2021-12-2230设备分配 由于设备、控制器和通道资源的有限性,不是每一个进程随时随地都能得到这些资源; 进程必须首先向设备管理程序提出资源申请; 然后,由设备分配程序根据相应的分配算法为进程分配资源; 如果申请进程得不到它所申请的资源时,将被放入资源等待队列中等待,直到所需要的资源被释放。 一个进程只有获得了通道、控制器和所需设

18、备三者之后,才具备进行I/O操作的物理条件。2021-12-2231设备分配中的数据结构 系统设备表(SDT )SDT整个系统一张,每个设备一个表目。 设备控制表(DCT) 系统中每个设备都有一张DCT(由SDT指向)。 控制器控制表(COCT) COCT也是每个控制器一张表 (在DMA方式时,这项是没有的),有些表项的含义与DCT相类似。 通道控制表(CHCT)每个通道一张表,可以挂接多个控制器。2021-12-2232表目表目1表目表目i设备类型设备标识DCT指针指针设备驱动程序入口设备类型设备标识设备忙/闲标志重复执行次数/时间COCT指针指针获得设备的进程号设备等待队列首指针设备等待队

19、列尾指针系统设备表(SDT)设备控制表(DCT)通道标识通道忙/闲标志与通道连接的控制器表首址与通道连接的控制器表首址通道等待队列首指针通道等待队列尾指针控制器标识控制器忙/闲标志CHCT指针指针控制器等待队列首指针控制器等待队列尾指针通 道 控 制 表(CHCT)控制器控制表(COCT)设备分配中的数据结构 2021-12-2233设备分配需要考虑的因素 在多道程序环境下,系统资源总是由操作系统进行分配的,以使得系统有序的工作。 合理的设备分配需要考虑3个因素: I/O设备的固有属性 物理特性独占(打印机);共享(磁盘) 分配算法 类似于进程调度算法 设备分配的安全性,分配时应考虑是否会发生

20、死锁,同时避免各进程循环等待现象的发生 安全分配方式 进程发出I/O申请便进入阻塞状态直至I/O完成被唤醒(请求与保持不成立) 不安全分配方式 申请I/O之后可继续执行后续的“计算”,不被阻塞,这样可以并行操作。 2021-12-2234设备分配原则 设备分配的原则是根据设备特性、用户要求和系统配置情况决定的。 设备分配的总原则 既要充分发挥设备的使用效率,尽可能的让设备忙,但又要避免由于不合理的分配方法造成进程死锁; 还要做到把用户程序和具体物理设备隔离开来,即用户程序面对的是逻辑设备,而分配程序将在系统把逻辑设备转换成物理设备之后,再根据要求的物理设备号进行分配。 2021-12-2235

21、设备分配过程2021-12-2236设备分配方式 静态分配 在用户作业开始执行之前,由系统一次分配该作业所要求的全部设备、控制器和通道; 一旦分配之后,这些设备、控制器和通道就一直为该作业所占用,直到该作业被撤消; 静态分配方式不会出现死锁,但设备的使用效率低; 静态分配方式并不符合设备分配的总原则。 动态分配 当进程需要设备时,通过系统调用命令向系统提出设备请求,由系统按照事先规定的策略给进程分配所需要的设备、I/O控制器和通道,一旦用完之后,便立即释放; 动态分配方式有利于提高设备的利用率; 如果分配算法使用不当,则有可能造成进程死锁。2021-12-2237设备分配策略 先请求先分配 多

22、个进程对同一个设备提出I/O请求时(无论是显式,还是隐式的),按照进程提出的先后顺序。 当该设备空闲时,系统从该设备的请求队列的队首取下一个I/O请求消息,将设备分配给发出这个请求消息的进程。 优先级高者先分配 各个进程按进程的优先级排成一个设备申请队列,优先级相同,则再按照先来先服务的原则。 该设备空闲时,系统从I/O请求队列队首取下一个具有最高优先级进程发来的I/O请求命令,并将设备分配给发出该命令的进程。2021-12-2238缓冲的引入 需设置缓冲区缓解与外设速度不匹配。 引入缓冲的必要性 引入缓冲的一个例子是网络通信:如果从远地终端发来数据(串行)仅用1个bit缓冲来接收,则必须在每收到一位数据时便中断CPU一次。对于速率为9.6 kb/s 数据通信来说,意味着中断CPU的频率也为9.6k次。2021-12-2239单缓冲 以块传输为例。 假定T 为从块设备传输一块到缓冲区的时间,对其进行计算(或加工)时间为C。 n 无缓冲;数据直接进入用户区,一块处理时间显然为:T+C。 n 设置单缓冲区;从缓冲区将数据传送到用户区时间为 M ;处理一块时间为:max ( T,C )+M。假定,连续输入 n 块数据,且T=C,不考虑最初输入和最后的计算,中间任何一块处理时间均为:T+M,或C+M。2021-12-2240循环缓冲 n双缓冲在并行时由于各自推

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论