计算机操作系统(五)

两种设备管理 一种是IO设备、一种是磁盘设备

IO设备管理

设备管理是操作系统的主要功能之一,其基本任务是完成用户提出的I/O请求,提高I/O速率以及提高I/O设备的利用率。 I/O设备不仅种类繁多,而且特性和操作方式往往相差甚大,这就使得设备管理成为操作系统中最庞杂和琐碎的部分。操作系统中普遍使用IO中断通道缓冲器管理等多种技术,较好地克服了由于外部设备和主机速度不匹配所引起的问题,使主机和外设并行工作,提高了使用效率。

一、I/O硬件

IO设备的类型

1.按设备的使用特性分类

按设备的使用特性,可将设备分为两类:一类是存储设备 ,也称外存、辅存,是计算机系统用以存储信息的主要设备;另一类是输人/输出设备,又具体可分为输入设备、输出设备和交互式设备。

2.按传输速率分类

按传输速度的高低,可将I/O设备分为三类: 一是低速设备 ,如键盘、鼠标等,单位是字符;二

中速设备 ,如打印机等,单位是字符串; 三是高速设备,如磁带、磁盘、光盘等,单位是数据块。

3.按信息交换的单位分类

按信息交换的单位,可将I/O设备分成两类:第一类是块设备, 这类设备用于存储信息,由于信息的存取是以数据块为单位的,故称其为块设备,属于有结构设备,如磁盘等; 第二类是字符设备 ,用于数据的输人和输出,其基本单位是字符,故称字符设备,属于无结构类型,如交互式终端、打印机等。

4.按设备的共享属性分类

这种分类方式可将I/O设备分为如下三类:
(1)独占设备

独占设备是指在一段时间内只允许一个进程访问的设备,即临界资源。对多个并发进程而言,应互斥地访问这类设备。
(2)共享设备

共享设备是指在一-段时间内允许多个进程同时访问的设备,如磁盘等。该类设备每一时刻仍然只允许一个进程访问。共享设备不仅可获得良好的设备利用率,而且是实现文件系统和数据库系统的物质基础。
(3 )虚拟设备

虚拟设备是指通过虚拟技术将--台独占设备变换为若干台逻辑设备,供若干个进程同时使用。

设备控制器

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

设备控制器是一个可编址的设备,当它仅控制一个设备时,它只有一个唯一的设备地址;若控制器可连接多个设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备。

设备控制器的基本功能包括:接收和识别命令数据交换标识和报告设备的状态地址识别数据缓冲差错控制

二、IO软件

I/O软件的总体设计目标是高效率和通用性,为使I/O软件能具有清晰的结构、更好的可移植性和易适应性,目前在I/O软件中已普遍采用了层次式结构 ,低层软件用于实现与硬件相关的操作,并可屏蔽硬件的具体细节,高层软件则主要向用户提供一简洁、友好和规范的接口。

I/O软件从高到低各层次及其功能如下:

用户层软件

用户层软件实现与用户交互的接口 ,用户层软件必须通过一组系统调用来取得操作

系统服务。在现代的高级语言中,用户程序通过调用对应的库函数使用系统调用

设备独立性软件

设备独立性软件负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。这里的设备独立性是指应用程序独立于具体使用的物理设备。为了实现设备独立性,引人了逻辑设备物理设备 两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为物理设备名称的功能。这可以通过设置一张逻辑设备表(LUT,LogicalUnitTable)实现。

设备驱动程序

设备驱动程序是I/O进程与设备控制器之间的通信程序,与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序设备启动程序具有若干功能:接收来自其上方与设备无关的软件所发出的抽象的读写请求,并且目睹这些请求被执行;在需要时对设备进行初始化;或者可能需要对电源需求和日志事件进行管理。

中断处理程序

中断处理程序用于保存被中断进程的CPU环境,转人相应的中断处理程序进行处理,处理完后恢复被中断进程的现场,再返回到被中断进程。中断处理层的主要工作有:进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态等。

三、I/O控制方式

I/O控制方式随着计算机技术的进步也在不断地发展。早期的计算机系统中采用程序IO方式 ;当引入中断机制后**,I/O方式发展为中断驱动方式;此后,随着 DMA控制器的出现,I/O 方式从以字节为单位的传输扩大到以数据块为单位进行传输**,从而大大地改善了块设备的I/O性能;而通道的引人,又使对I/O操作的组织和数据的传送都能独立地进行而无需CPU干预。

程序I/O方式

早期的计算机系统中,处理机对I/O设备的控制采取程序I/O方式,或称为忙-等待方式 ,在该方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费 。CPU之所以要不断地测试I/O设备的状态,是因为在CPU中无中断机构,使I/O设备无法向CPU报告它已完成了一个字符的输人操作。

中断驱动I/O控制方式

现代计算机系统都广泛采用中断驱动方式,即当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条IO命令,然后立即返回继续执行原来的任务 。设备控制器于是按照该命令的要求去控制指定I/O设备。此时,CPU与I/O设备并行操作。

在I/O设备输人每个数据的过程中,无需CPU干预,可使CPU与I/O设备并行 工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和1/0设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。

直接存储器访问(DMA)I/O控制方式

中断驱动I/O方式以字或字节为单位进行IO,当完成后,控制器便向CPU请求一次中断。为了进一步减少CPU对I/O的干预,引人了直接存储器访问(DMA,Direct Memory Access)方式:数据块在IO设备和内存间直接进行传送,每次传送至少一个数据块 ,在控制器的控制下完成,仅在传送一个或多个数据块的开始和结束时,才需CPU干预。可见,DMA方式进一步提高了CPU与I/O设备的并行操作程度。 可以类似的理解为多了一块缓存区域

I/O通道控制方式

I/O通道方式是DMA方式的发展 ,增设通道的主要目的是为了使一些原来由CPU处理的I/O任务转由通道来承担 ,从而把CPU从繁杂的I/O任务中解脱出来,有更多的时间去进行数据处理。它可进一步减少CPU的干预,即把对一个数据块的读/写为单位的干预减少为对一组数据块的读/写及有关的控制和管理为单位的干预 。同时,又可实现CPU、通道和I/O设备三者的并行 操作,从而更有效地提高整个系统的资源利用率I/O通道是一种特殊的处理机 ,它具有执行I/O指令的能力 ,并通过执行通道程序来控制I/0操作。但它又与一般的处理机不同: 一是其指令类型单一 ,其所能执行的命令主要局限于与I/O操作有关的指令 ;二是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,即通道与CPU共享内存

通道用于实现内存与外设的信息交换。

通道可分成以下三种类型:字节多路通道数组选择通道数组多路通道

字节多路通道

这是一种按字节交叉方式工作的通道。它通常都含有许多非分配型子通道,每一个子通道连接一台I/O设备,并控制该设备的I/O操作。这些子通道按时间片轮转方式共享主通道。当所有子通道轮转一周后,又返回来由第一个子通道去使用字节多路主通道。这样,只要字节多路通道扫描每个子通道的速率足够快,而连接到子通道上的设备的速率不是太高时,便不致丢失信息,但不适用于连接高速设备。

数组选择通道

这种通道可以连接多台高速设备 ,但只含有一个分配型子通道,在一段时间内只能执行一道通道程序 ,控制一台设备进行数据传送。当某台设备占用了该通道后,便一直由它独占,即使是它无数据传送,通道被闲置,也不允许其它设备使用该通道,直至该设备传送完毕释放该通道。可见这种通道虽有很高的传输速率,但利用率很低,每次只允许一个设备传输数据。

数组多路通道

数组多路通道是将数组选择通道传输速率高和字节多路通道能使各子通道分时并行操作的优点相结合而形成的一种新通道。它含有多个非分配型子通道,因而既具有很高的数据传输速率,又能获得令人满意的通道利用率。该通道能被广泛地用于连接多台高、中速的外围设备,其数据传送是按数组方式进行的。

四、缓冲技术

在设备管理中,引入缓冲区的主要原因可归结为以下几点:
(1) 缓和CPU与I/O设备间速度不匹配的矛盾
(2) 减少中断CPU的次数 ,放宽对中断响应时间的限制。
(3) 提高 CPU和I/O设备之间的并行性。

单缓冲

单缓冲是操作系统提供的一种简单的缓冲技术。每当一个用户进程发出一个IO请求时,操作系统在内存的系统区中开设一个缓冲区。对于块设备输人,单缓冲机制首先从磁盘把一块数据传送到缓冲区,接着操作系统把缓冲区数据送到用户区。由于这时缓冲区已空,操作系统可预读紧接的下一块数据。对于块设备输出,单缓冲机制的工作方式类似,先把数据从用户区拷贝到系统缓冲区,用户进程可以继续请求输出,直到缓冲区填满后,才启动I/O将数据写到磁盘上。假定从磁盘把一块数据输入到缓冲区的时间为T1,操作系统将该缓冲区中的数据传送到用户区的时间为T2,而CPU对这一块数据处理的时间为T3。由于T1和T3是可以并行的,当Tl>T3时,系统对每-块数据的处理时间为T1+T2,反之则为T3+T2,故可把系统对每- -块数据的处理时间表示为Max(T1,T3)+T2。

双缓冲

为了加快IO速度,实现I/O的并行工作和提高设备利用率,需要引人双缓冲机制。在输人数据时,先将数据送入第一缓冲区,填满后操作系统从第一缓 冲区把数据送到用户进程区,用户进程便可对数据进行加工计算;与此同时填充第二缓冲区。当第一缓冲区空出后,输人设备再次向第一缓冲区输人数据。此时,操作系统又可以把第二缓冲区的数据传送到用户进程区,用户进程开始加工第二缓冲区的数据。两个缓冲区交替使用,使CPU和IO设备、I/O设备和用户进程的并行性进一步提高,仅当两个缓冲区都为空,进程还要提取数据时,它才被迫等待。双缓冲机制可以同时实现双向的数据传输,一个缓冲区用作发送缓冲区,另一个缓冲区作为接收缓冲区。

缓冲池

为了提高缓冲区的利用率,目前广泛使用缓冲池,在池中设置了多个可供若干个进

程共享的缓冲区,且既能用于输人,也能用于输出。

缓冲池至少应含有以下三种类型的缓冲区:
空缓冲区。
装满输人数据的缓冲区。
装满输出数据的缓冲区。

为了管理上的方便,可将相同类型的缓冲区链成-一个队列,于是可形成以下三个队列:
空缓冲队列。这是由空缓冲区所链成的队列。
输人队列。这是由装满输人数据的缓冲区所链成的队列。
输出队列。这是由装满输出数据的缓冲区所链成的队列。

如下图所示,缓冲区可以工作在收容输人、提取输人、收容输出和提取输出四种工

作方式下,按使用情况设置有四种工作缓冲区:收容输入工作缓冲区、提取输人工作缓

冲区、收容输出工作缓冲区和提取输出工作缓冲区。

五、设备分配

在多进程环境下,为了避免进程毫无节制的申请计算机资源,操作系统会对计算机资源进行统一分配。

设备分配数据结构

操作系统进行设备分配需要借助一下数据结构,通常是一些表格,在这些表格中记录了设备的控制信息和设备的状态。

设备控制表(DCT)

**设备控制表(DeviceControlTable,DCT)**反映设备的特性、设备和I/O控制器的连接情况。系统为每一个设备都配置了一张用于记录本设备情况的设备控制表(系统中必须有一张DCT)在系统中生成时或者是在该设备和系统连接时进行创建,表中的内容可以根据系统执行情况进行动态的修改。设备控制表中包括设备标识、使用状态和等待使用该设备的进程队列等等。

控制器控制表(COCT)

控制器控制表( Controler Control Table, COCT)系统为每一个控制器都设置了一张用于记录本控制器情况的控制器控制表,用来反映I/O控制器的使用状态以及和通道的连接情况等。

通道控制表(CHCT)

通道控制表( CHannel Control Table, CHCT )只在通道控制方式的系统中存在,每个通道都配有一张通道控制表。通道控制表包括通道标识符、通道忙/闲标识、等待获得该通道的进程等待队列的队首指针和队尾指针等。

系统设备表(SDT)

系统设备表( System Device Table )这是系统范围的数据结构,其中记录了系统中全部设备的情况,主要意义是在于反映系统中设备资源的状态,即系统中的设备数量是多少,空闲的设备数量是多少,有多少设备已经分配给了哪些进程。区别于其它三种表,SDT只有一张。

设备分配算法

很简单,只有两种:①先来先服务①优先级高先服务

Spooling技术

可以将一台物理IO设备虚拟成多台逻辑IO设备

磁盘设备管理

磁盘简述

磁盘的组织和格式

磁盘设备可包括一或多个物理盘片,每个磁盘片分一个或两个存储面,每个磁盘面被组织成若干个同心环,称为磁道 ,各磁道之间留有必要的间隙,磁道从外向内进行编号。每条磁道又被逻辑上划分成若干个扇区 ,一个扇区称为一个盘块 (或数据块),常常叫做磁盘扇区。各扇区之间保留一定的间隙, 一个物理记录存储在一个扇区上。在微机中,主机对磁盘数据的读写是以扇区为单位的。磁盘上存储的物理记录块数目由扇区数磁道数 以及磁盘面数 所决定。

磁盘的类型

对磁盘,可以从不同的角度进行分类。最常见的有:将磁盘分成硬盘软盘单片盘多片盘固定头磁盘移动头磁盘 等。固定头磁盘主要用于大容量磁盘上,而微型机上配置的温盘和软盘都采用移动磁头结构。

磁盘的访问时间

磁盘的访问时间分成以下三部分:首先,把磁头移动到指定磁道上所经历的时间称为寻道时间 ;磁头到达指定磁道后,必须等待指定扇区移动到磁头下面的时间称为旋转延迟时间 ;最后,把数据从磁盘读出或向磁盘写人数据所经历的时间称为传输时间一次磁盘服务的总时间为这三者之和。

磁盘调度算法

目前常见的磁盘调度算法有三种:先来先服务、最短寻道时间、扫描算法

先来先服务(FCFS)

先来先服务是一种最简单、也最容易实现的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度 。此算法的优点是公平、简单 ,不会出现某一进程的请求长期得不到满足的情况。但此算法平均寻道时间可能较长

例如,现在有一个请求磁盘服务的队列,要访问的磁道顺序为: 98、183、37、122、14、124、 65、67,假设磁头最初在53道上。

那么,磁头从53道移动到98道,然后依次移到183、37、122、 14、124、65,最后到达67道,总共移动了640个磁道的距离。

最短寻道时间(SSTF)

该算法要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。这种算法不能保证平均寻道时间最短,并且可能导致某个进程发生**"饥饿"现象**。例如,用SSTF算法处理上面的请求队列(98、183、37、122、14、124、 65、67)。磁头当前在53道上,最接近的磁道是65。然后下一个移到最接近的67道。此时,到37道的距离是30,而到98道的距离是31,故37道离67道最近,被选为下一个服务对象。接下去的顺序是14、98、122、124,最后是183 道。采用这种方法,磁头共移动了236个磁道,是FCFS算法的1/3多一点。很明显,它改善了磁盘服务。

扫描算法(SCAN)

该算法不仅考虑到将要访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向 。磁头从磁盘的一端出发,向另一端移动,遇到所需的磁道时就进行服务,一旦在当前方向上没有请求了,磁头的移动方向就反过来,继续下面的服务。这种算法避免了出现"饥饿"现象。由于其磁头移动的规律类似电梯的运行,因而常称为电梯调度算法。

继续采用前面的例子,用SCAN算法处理上面的请求队列,但要知道磁头的移动方向。如果磁头正向0道方向移动,那么,它先为37道服务,接着是14道;到达14道后,由于在该方向上没有请求了,故磁头移动方向反过来,移向盘的另一端,服务顺序分别是65、67、 98、122、 124 和183道。

循环扫描(CSCAN)

CSCAN算法规定磁头单向移动,如只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道,即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。

用CSCAN算法处理上面的请求队列,假设磁头向0道方向移动,则顺序为37、14、183、124、 122、98、67、65。

提升磁盘IO速度的其他方法

除了磁盘高速缓存外,还有几种能有效提高磁盘IO速度的方法:

提前读

延迟写

优化物理盘分布

虚拟盘

磁盘阵列

磁盘阵列( RAID, Redundant Array of Independent Disks )是利用一台磁盘阵列控制器,来统一管理和控制一组磁盘驱动器,组成一个高度可靠的、快速的大容量磁盘系统。

并行交叉存取

在磁盘存储系统中,有多台磁盘驱动器,系统将每一盘块中的数据分为若干个子盘块数据,再把每一个子盘块的数据分别存储到各个不同磁盘中的相同位置上。当要将一个盘块的数据传送到内存时,采取并行传输方式,将各个盘块中的子盘块数据同时向内存中传输,从而使传输时间大大减少。下图出了磁盘并行交叉存取方式。(同时转)

RAID的分级

有很多种,多种类型的RAID的主要差别在于冗余信息数量(增加磁盘的数量)容错性级别(可纠正错位的数目) ,以及冗余信息是在一个磁盘上还是分散在多个磁盘上。

相关推荐
竹影卿心2 分钟前
Java连接HANA数据库
java·数据库·windows
anddddoooo5 分钟前
Kerberoasting 离线爆破攻击
网络·数据库·安全·microsoft·网络安全
T.O.P1125 分钟前
TCP 传输可靠性保障
网络·tcp/ip·php
time never ceases29 分钟前
Elasticsearch安装和数据迁移
大数据·数据库·elasticsearch·es
缘友一世31 分钟前
java实现网络IO高并发编程java AIO
java·网络·python
存储服务专家StorageExpert35 分钟前
墙裂推荐:console, CLI命令行和日志使用字体-Cascadia
运维·服务器·netapp存储·存储维护·emc存储
程序员shen1616111 小时前
注意⚠️:矩阵系统源码开发/SaaS矩阵系统开源/抖音矩阵开发优势和方向
java·大数据·数据库·python·php
IvorySQL1 小时前
2024 开放原子开发者大会活动回顾|瀚高 IvorySQL 开源数据库在国产软件的开源实践
数据库·postgresql·开源数据库·国产数据库·ivorysql
dog2501 小时前
TCP off-path exploits(又一个弄巧成拙的例子)
网络·网络协议·tcp/ip
菜鸟康1 小时前
Linux系统编程——理解系统内核中的信号捕获
linux·运维·服务器