【操作系统】第五章:设备管理

简介: 第五章:设备管理

@[toc]

设备管理

5.1.1 IO设备的概念和分类

什么是I/O设备

将数据输入到计算机,或者可以接收计算机输出数据的外部设备

image-20220823165143306

image-20220823165236711

I/O设备的分类--按使用特性分类

image-20220823165619531

I/O设备的分类--按传输速率分类

image-20220823165658686

I/O设备的分类--按信息交换的单位分类

image-20220823165813147

5.1.2 IO控制器

IO设备的机械部件

image-20220823170132611

IO设备的电子部件

CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的"中介",用于实现CPU对设备的控制。

这个电子部件就是I/O控制器,又称设备控制器。担当一个管家的角色。

IO控制器的功能:

  1. 接收和识别CPU发出的命令(老板发话)
  2. 向CPU报告设备的状态(回答老板)
  3. 数据交换(交换资料)
  4. 地址识别

image-20220913175242982

IO控制器的组成

image-20220913180306491

image-20220913180504802

image-20220913180629649

5.1.3 IO控制方式

程序直接控制方式

操作流程:

  1. CPU向控制器发出读指令。设备启动。
  2. 轮询检查控制器的状态(一直循环检查,直到设备准备完成)
  3. 设备准备好后将数据传送给控制器,并且报告自身状态
  4. 控制器将输入的数据放到数据寄存器中,并将状态改为已就绪状态
  5. CPU发现状态寄存器变了之后开始从数据寄存器中读取数据放到CPU的寄存器中,再把CPU的寄存器中的数据放入内存中
  6. 如CPU还要继续读入数据,在发出下一条指令

image-20220824160329585

为什么将数据读入到CPU寄存器中还要放到内存中?

以一个C语言程序为例,需要读入一个变量a,a创建在内存中,读入数据后还要将数据赋值给a。

还可能是因为读入的数据接下来还要用。

image-20220824160648981

CPU干预的频率

很频繁,在IO操作之前,完成之后需要CPU接入,并且在等待IO设备完成的过程中CPU需要不断地轮询检查

数据传送地单位

每次读/写一个字

数据的流向

读操作:IO设备->CPU(寄存器)->内存

写操作:内存->CPU(寄存器)->IO设备

每次读写都需要CPU的参与

优点

实现简单,在读/写指令之后,加上实现循环检查的一系列指令即可。

缺点

CPU和IO设备只能串行工作,CPU需要一直轮询检查,并且CPU长期处于忙等状态,资源利用率低。

中断驱动方式

如何解决忙等问题:让CPU不在一直轮询检查下去,IO设备完成之后在提醒CPU去读入,实现了并行。提高了资源利用率。

image-20220824161337305

image-20220824161408804

缺点:每次都只能读入一个字的数据,效率依然很低。

DMA方式

解决每次只能读入一个字的问题,改成读入一个块,而且中间不需要经过CPU。

image-20220824161500110

image-20220824162059585

image-20220824162157569

缺点:每次只能读入一个数据块或连续的数据块,CPU还是需要发出多条指令。

通道控制方式

CPU只能每次发出一条指令读入一个数据块,可以将CPU要读入数据的通道程序告诉通道,让它来执行,等它执行完后在告诉我。

一个通道可以控制多个IO控制器

一个IO控制器可以控制多个IO设备

image-20220824162423800

image-20220824162606067

总结

image-20220824162638996

5.1.4 IO软件层次结构

从用户提出请求到得到应答之间所经历的部分。

image-20220824172001202

用户层软件

image-20220913184415400

设备独立性软件

  1. 向上层提供统一的调用接口(如read/write系统调用)
  2. 设备的保护
  3. 差错处理
  4. 设备的分配和回收
  5. 数据缓冲区管理
  6. 建立逻辑设计名到物理设备名的映射关系,根据设备类型选择调用相应的驱动程序。

image-20220913185144106

image-20220913185222546

设备驱动程序

image-20220913185254008

image-20220913185319296

image-20220913185355337

image-20220913185424902

image-20220913185655196

中断处理程序

image-20220913185802803

image-20220913185837402

image-20220913185912322

5.2.2 缓冲区管理

image-20220824175405406

缓冲区的作用

CPU读写速度块,IO设备读写速度慢。假如CPU写十个字节数据,每输出一个IO处理一个,但IO设备处理的非常慢,IO设备处理完后就会发出一个中断,让CPU去写下一个数据,这样产生了大量的中断,导致效率很低,资源利用率不高。

所以引入了缓冲区,CPU把要输出的数据都放到缓冲区中,IO设备自己去处理内存中的缓冲区数据。这样就缓和了CPU和IO设备之间速度不匹配的矛盾。(比如菜鸟驿站,不在一个一个送到家中,而是让人自己去取)。也减少了对CPU的中断频率,放宽对CPU中断相应时间的限制。

如果输出进程每次输出一块数据,但IO设备每次只输出一个字符,那就只能一个字符一个字符的输出,这样效率就太低了。

提高了CPU和IO设备之间的并行性能。

单缓冲

image-20220824181723585

双缓冲

image-20220824182635509

image-20220824182953763

结论:处理一个数据块的平均耗时位Max(T,C+M)

单/双缓冲在通信时的区别

image-20220825100607099

image-20220825100623097

循环缓冲区

将多个大小相等的缓冲区链接成一个循环队列

in指针指向下一个可以冲入数据的空缓冲区

out指针指向下一个可以取出数据的满缓冲区

image-20220825100756477

缓冲池

缓冲池由系统中共用的缓冲区组成,这些缓冲区按使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列),装满输出数据的缓冲数列(输出队列)

输入进程请求输入数据

  1. 将空缓冲队列的一个缓冲区拿出来放到收容输入的缓冲区中
  2. 数据充满之后放到输入队列的队尾上

计算进程想要取得一块输入数据

  1. 将输入队列的队头加入到提取输入的缓冲区中
  2. 完成后将缓冲区加入到空缓冲区的队尾上

image-20220825101758384

5.2.3 设备的分配和回收

设备分配要考虑的因素

  1. 设备的固有属性

设备的固有属性可以分为三种:

独占设备:一个时段只能分配给一个进程(入打印机)

共享设备:可同时分配给多个进程使用(如磁盘),各进程往往时宏观上同时共享使用设备,而微观上交替使用

虚拟设备:采用SPOOLing技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(共享打印机)

  1. 设备分配算法

先来先服务,优先级高者优先,短任务优先

  1. 设备分配的安全性

image-20220825133728746

静态分配和动态分配

image-20220825135439577

设备管理中的数据结构

image-20220825135617147

5.2.4 假脱机技术

什么是脱机技术

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

引入了脱机技术,缓解了CPU与慢速IO设备的速度矛盾,即使CPU在忙碌,也可以提前将数据输入到磁带,即使慢速的输出设备正在忙碌,也可以提前将数据输出到磁带。

image-20220825104122572

假脱机技术--输入井和输出井

假脱机技术是用软件的方式模拟脱机技术

输入井模拟脱机输入时的磁带,用于收容IO设备输入的数据

输出井模拟脱机输出时的磁带,用于收容用户进程输出的数据

image-20220825104900338

假脱机技术--输入进程和输出进程

这边能输入,那边能输出,两个进程可以同时进行。

image-20220825105107721

image-20220825105148954

假脱机技术--输入/输出缓冲区

image-20220825105236878

共享打印机原理分析

image-20220825110132588

  1. 在磁盘的输出井中为进程申请一个空闲缓冲区,并将要打印的数据送入其中
  2. 为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中,在将该表挂到假脱机文件队列上。
  3. 当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出井传送到缓冲区,在输出到打印机进行打印。

image-20220825110204800

image-20220825110729849

5.3.1 磁盘的结构

磁盘、磁道、扇区

磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据。

磁盘被分为一个个磁道,每个磁道存储的数据量相同。

一个磁盘又会被分为各个扇区,每个扇区存储的数据量相同。

image-20220913094412968

如何在磁盘中读写数据

image-20220913110205202

磁盘的物理地址

image-20220913111629837

5.3.2 磁盘调度算法

image-20220913213924718

一次磁盘读/写操作需要的时间

寻道时间:在读写数据前,将磁头移动到指定磁道所花的时间。

延迟时间:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。

传输时间:从磁盘读出或向磁盘写入数据所经历的时间。

image-20220913214728585

image-20220913214859464

先来先服务算法

规则:根据进程请求访问磁盘的先后顺序进行服务。

优点:公平

缺点:如果有大量进程竞争使用磁盘,请求访问的磁道很坟山,则FCFS在性能上很差,寻道时间长。

image-20220913214940257

image-20220913215146372

扫描算法

image-20220913215328335

LOOK调度算法

image-20220913215402564

循环扫描算法

image-20220913215527789

C-LOOK算法

image-20220913215708479

5.3.3 减少磁盘延迟时间的方法

image-20220913220047102

交替编号

image-20220913220205119

磁盘地址结构的设计

image-20220913220710661

image-20220913220736993

image-20220913220751002

错位命名

image-20220913221132459

image-20220913221206613

5.3.4 磁盘的管理

磁盘的初始化

image-20220913221456387

引导块

image-20220913221559606

image-20220913221651845

坏块的管理

image-20220913221816888

相关文章
|
6月前
|
存储 程序员
操作系统(15)-----I/O设备管理(万字总结~)(4)
操作系统(15)-----I/O设备管理(万字总结~)
71 2
|
6月前
|
存储 Unix 人机交互
操作系统(15)-----I/O设备管理(万字总结~)(1)
操作系统(15)-----I/O设备管理(万字总结~)
76 2
|
6月前
|
存储 网络协议 程序员
操作系统(15)-----I/O设备管理(万字总结~)(2)
操作系统(15)-----I/O设备管理(万字总结~)(2)
76 1
|
6月前
|
存储 缓存 算法
操作系统(15)-----I/O设备管理(万字总结~)(3)
操作系统(15)-----I/O设备管理(万字总结~)(3)
97 0
|
程序员 虚拟化
操作系统如何进行设备管理
操作系统如何进行设备管理
282 1
操作系统如何进行设备管理
|
调度
【操作系统知识】I/O 设备管理软件
【操作系统知识】I/O 设备管理软件
339 0
|
安全 调度
【操作系统】设备管理
【操作系统】设备管理
363 0
【操作系统】设备管理
|
Linux 开发工具 Android开发
[STF 手机设备管理平台] 连接其它操作系统上的安卓设备实操介绍
[STF 手机设备管理平台] 连接其它操作系统上的安卓设备实操介绍
309 0
[STF 手机设备管理平台] 连接其它操作系统上的安卓设备实操介绍
|
存储 算法 数据处理
【操作系统】设备管理(五)
学习了存储器管理后,继续学习设备管理,设备管理的主要功能有缓冲区管理、设备分配、设备处理、虚拟设备及实现设备独立性等,由于I/O设备不仅种类繁多,而且他们的特性和操作方式往往相差甚大,使得设备管理称为操作系统中最繁杂且与硬件最紧密的部分,下面开始正式的学习。
339 0
【操作系统】设备管理(五)