26计算机操作系统408考研--操作系统设备管理篇章(五)


一、设备是什么?

设备是计算机操作系统与外界联系的纽带,专门负责计算机与外部的输入、输出和数据存储工作。在计算机操作系统中,将负责管理输入/输出的机构称为I/O系统

I/O系统管理I/O设备、相关的设备控制器及高速总线,目的是为了提高I/O速率和设备利用率、满足用户需求等。

设备管理目标和任务

1.设备管理的目标
设备管理的目标主要是提高I/O设备的利用率,提供一个便利、统一的模式,用于满足用户提出的各种I/O需求。设备利用率的影响因素:

  • I/O设备本身的运行速率;处理器和I/O设备之间的并行化程度。
  • 常用的提高I/O设备的技术有中断技术、直接存储器访问(Direct Memory Access, DMA)技术、缓冲技术和通道技术

2.设备管理任务
设备管理的任务是保证在多道程序设计环境下,操作系统能够有效控制设备,合理解决多个进程对设备的竞争使用,有效的提高CPU和I/O设备的并行操作程度,从而满足系统和用户的需求。

  • (1) 状态跟踪
  • (2)设备分配
  • (3)设备的控制
  • (4)提高处理器和I/O设备的利用率
  • (5)共享
  • (6) 差错处理

(1)状态跟踪
I/O设备类型多种多样,且彼此存在着差异。为了能够对不同设备进行控制,需要配置设备控制器。I/O系统应该动态掌握并记录设备的状态、 参数等细节信息,从而控制I/O设备的执行。
(2)设备分配
I/O系统的功能之一是设备分配。具体过程为: I/O系统将设备分配给进程或应用程序,使用完后及时收回,以备重新分配。
设备分配有两种不同的方式:

  • 静态分配,在应用程序进入系统时进行分配,退出系统时收回全部资源;
  • 动态分配,在进程对某设备提出使用申请时进行分配,使用完后立即收回。

(3)设备的控制
操作系统中,设备驱动程序控制I/O设备,负责将用户的I/O请求转换为设备能够识别的I/O指令。常用的I/O控制方式有:

直接控制I/O方式、中断I/O方式、直接存储访问I/O方式、通道控制方式

(4)提高处理器和I/O设备的利用率
I/O设备之间是相互独立的,能够并行操作,而处理器和设备之间同样也能并行操作。处理器和I/O设备利用率的提高:

  • 对处理器而言,利用率的提高关键在于对提高用户I/O请求的响应速度;
  • 尽量减少处理器对于I/O设备执行时的干预时间;
  • 为了解决处理器和I/O设备速度不匹配的矛盾,引入了缓冲区技术

(5)共享
操作系统应具备设备共享功能。按照设备共享属性,可将设备分为独占设备共享设备两类:

  1. 独占设备是指每次只允许一个进程对该设备独占使用,直至运行完成释放设备,常用的独占设备有打印机、磁带机等。
  2. 共享设备是在某一时间内允许多个进程同时访问设备,如磁盘设备。

6.差错处理

通常情况,大多数的设备都包括了较多的机械和电气部分,运行时容易出现错误和故障。此时,操作系统的设备管理应具有应对错误、采取合适措施的能力。

  1. 从处理的角度,可将错误分为临时性错误和持久性错误。对于临时性错误,可通过重试操作来纠正,只有在发生了持久性错误时,才需要向上层报告。

一般而言,I/O系统结构可以分成微型机I/O系统结构和主机I/O系统结构两类。
1.微型机I/O系统
微型机I/O系统结构采用单总线模型,如图6.1所示,处理器和内存直接连接到总线上,I/O设备通过设备控制器连接到总线上。在该种类型的I/O系统结构中,设备控制器是处理器和I/O设备之间的接口,处理器通过设备控制器控制相应设备进行输入输出。

1.微型机I/O系统
在这里插入图片描述

2.主机I/O系统

  • 计算机系统中往往可能配置大量的设备,处理器和总线负担太重。
  • 为了提高处理器和设备的利用率,提髙设备与处理器的并行执行程度,在主机I/O系统中增加一级I/O通道

四级I/O系统结构:
主机、I/O通道、I/O控制器和I/O设备

通常一个主机可以连接多个通道,一个通道可以连接多个设备控制器,一个控制器可以连接多个设备

  • 处理器执行输入/输出指令对通道实施控制
  • 通道代替处理器使用通道命令控制设备控制器
  • 设备控制器发出动作序列驱动设备工作,最终设备执行相应的输入/输出操作

在这里插入图片描述

多通道I/O系统
由于通道的价格较贵,这样往往因通道数量不足产生“瓶颈”现象,影响整个系统的处理能力
为了使设备能得到充分的利用,在通道、控制器和设备的连接上,如果采用多通道的配置方案,如图6.3所示
多通道I/O系统中,从计算机到设备往往有多条通路,大大降低了某一设备因某一通道或某一控制器被占用而阻塞的几率。

在这里插入图片描述

I/O设备分类

  1. 按使用特性分类
    分为存储设备I/O设备
    存储设备,也称外存或辅存,是计算机系统用以存储信息的主要设备,如磁盘、磁带等。
    I/O设备,又可进一步分为输入设备、输出设备和交互式设备。

  2. 按数据组织分类
    分为块设备和字符设备。
    块设备是以数据块的形式组织和传送数据的设备,主要用于存储数据和信息,例如磁盘、磁带等。
    字符设备则是以单个字符的形式组织和传递数据的设备,一般用于数据的输入和输出,例如打印机、交互式终端等。

  3. 按资源分配分类
    分为独占设备共享设备虚拟设备
    独占设备是在一段时间内只允许一个进程使用的设备,系统一旦把这类设备分配给某个进程后,便由该进程独占,直至用完释放。

    共享设备是指在一段时间内允许多个进程同时访问的设备,如磁盘。

    虚拟设备是通过虚拟技术将独占设备变成多台逻辑设备,以供多个用户同时使用的设备,虚拟设备实际上是不存在的,而实现虚拟设备的关键技术是分时技术,即多用户通过分时方式使用同一台物理设备。

  4. 按数据传输率分类
    分为低速设备中速设备高速设备
    低速设备一般指其数据传输速率在每秒几个字节至数百个字节之间的设备,常见的低速设备有鼠标、键盘等。
    中速设备的数据传输速率每秒在数千个字节到数十万个字节之间,常见的中速设备有行式打印机、激光打印机等。
    高速设备的数据传输速率则可以达到每秒数十万个字节至数千兆个字节,常见的高速设备有磁带机、磁盘机和光盘机等。

  5. 按从属关系分类
    分为系统设备和用户设备。
    系统设备是指在操作系统生成时已经登记在系统中的标准设备,如键盘、显示器等。
    用户设备则是指操作系统生成时未登记在系统中的非标准设备,如鼠标、绘图仪、扫描仪等。

二、I/O系统控制方式

尽量减少CPU对I/O控制的干预,把CPU从繁杂的I/O控制事务中解脱出来,以便更多地去完成其它数据处理任务

  • 程序直接控制方式
  • 中断控制方式
  • DMA控制方式
  • 通道控制方式

程序直接控制方式

  • 由CPU通过程序来直接控制处理器和外围设备之间的信息传送
  • 用户程序需要启动I/O设备工作时,CPU向I/O设备发送一条指令,不断地循环测试I/O设备是否准备就绪
  • 准备就绪时,CPU将从I/O接口中把数据取出,送入内存指定单元,一个字一个字地传送,直至整个数据块的数据全部传送结束,CPU又重新返回到当前程序
  • CPU和I/O设备处于串行工作状态,导致CPU工作效率不高
    在这里插入图片描述

中断控制方式

  • 当用户程序需要启动某个I/O设备工作时,CPU向I/O设备发送一条指令,然后立即返回继续执行原来的任务
  • CPU与I/O设备并行操作,只有当输入完一个数据时,才需要CPU花费时间去处理中断请求

缺点:

  1. 容易发生多次中断,这将消耗大量CPU处理时间
  2. 可能导致CPU无法响应中断和出现数据丢失的现象

在这里插入图片描述

DMA控制方式

  1. DMA控制方式的特点
    (1)数据传输的基本单位是数据块,而不是字。
    (2)所传输的数据是从I/O设备直接读入主存,或者从主存直接传输到I/O设备。
    (3)只有在一次传输操作的开始或者结束时,才需要CPU干预,在传输的过程中,无需CPU的干预,都是在DMA控制器的控制下完成的。

  2. DMA控制器的组成
    (1)处理器与DMA控制器的接口
    (2)DMA控制器与块设备的接口
    (3)I/O控制逻辑

在这里插入图片描述

CR:命令/状态寄存器:用于接受从CPU发来的I/O命令或有关控制信息,或设备的状态。

DMA控制器的三个组成部分:
(1)主机与DMA控制器的接口.
(2)DMA控制器与块设备的接口.
(3)I/O控制逻辑.

MAR:内存地址寄存器:用于存放数据从设备传送到内存的目标地址,或由内存到设备的内存源地址。

DC:数据计数器:用于存放本次CPU要读或写的字(节)数。

  1. DMA控制方式的工作过程
    CPU向外围I/O设备发送读命令
    CPU向MAR中发送本次要将数据读入内存的起始目标地址
    将本次要读入的数据字(节)数送入数据计数器中
    将外围I/O设备的地址送至控制器的I/O控制逻辑上
    控制器启动本次操作
    整个数据的传送过程由DMA控制器控制,当所有数据都传送完了之后,控制器向CPU发出中断请求

    在这里插入图片描述

通道控制方式

DMA控制方式,CPU每发出一条I/O指令,也只能去读(写)一个连续的数据块,当系统需要一次读多个数据块且将它们分别传送到不同内存区域,或者相反时,则需由CPU分别发出多条I/O指令及进行多次中断处理才能完成

  • 通道控制方式是一种以内存为中心,实现设备和内存直接交换数据的控制方式
  • 与DMA方式不同,通道直接控制数据传送的方向、存放数据的内存起始地址以及传送的数据长度
  • 通道控制方式能够控制多台I/O设备与内存进行数据交换,能够进一步减轻CPU的工作负担,增加了计算机系统的并行工作程度
  • 实现CPU、通道和I/O设备三者的并行操作

I/O软件的组成

  • I/O设备管理的效率与管理设备的I/O软件密切相关
  • 确保I/O设备与处理器的并行程度,以提高资源的利用率
  • 为用户提供一个简单抽象、清晰而统一的接口,采用统一标准的方法,来管理所有的设备以及所需的I/O操作
  • 将软件组织成层次结构

I/O软件设计目标和原则

  • 一方面,采用多种技术和措施,解决由于外部设备与CPU速度不匹配所引起的问题,从而提高系统工作效率;
  • 另一方面,设法消除或屏蔽设备硬件内部的低级处理过程,为用户提供一个简便、易用、抽象的逻辑设备接口,保证用户安全、方便的使用各类设备。

(1)设备无关性

  • 设计I/O软件的一个最重要、最关键的目标是设备无关性。
  • 开发人员编写的I/O软件在访问不同的外围设备时应该尽可能地与设备的具体类型无关。
  • 为了提高操作系统的可移植性和易适应性,I/O软件应负责屏蔽设备的具体细节,向高层软件提供抽象的逻辑设备,并完成逻辑设备与具体物理设备的映射。
  • 设备无关性可以有效提高设备管理软件的效率,从而提高资源利用率。

(2)统一命名
要实现上述的设备无关性,其中一项重要工作就是如何给I/O设备命名。
不同的操作系统采用不同的命名原则。
通常,统一命名与具体设备无关,它是指在系统中对各类设备采取预先设计的、统一的逻辑名称进行命名,所有I/O软件都以逻辑名称访问I/O设备。

(3)出错处理
一条原则:错误应该在尽可能靠近硬件的地方处理,既在低层软件能够解决的错误绝不让高层软件感知,只有低层软件解决不了的错误才通知高层软件解决。

(4)独占性设备和共享性设备

  • 独占设备,进程应互斥地访问这类设备,在一段时间内只允许被一个用户使用,如键盘。
  • 共享设备,在计算机操作系统中,一段时间内可以同时被几个用户访问,如磁盘;
  • 操作系统在对待上述两类设备时必须区别对待,避免在设备管理的过程中出现问题

(5)缓冲技术
缓冲技术的引入,是为了解决CPU与设备之间的速度不匹配的矛盾
对于不同类型的设备,其缓冲区的大小是不一样的,同类型的设备,其缓冲区的大小也存在差异,I/O软件应能屏蔽这种差异,向高层软件提供统一大小的数据块或字符单元,使得高层软件能够只与逻辑块大小一致的抽象设备进行交互。

(6)I/O控制方式

  • 针对具有不同传输速率的设备,综合系统效率和系统代价等因素,需要合理的选择不同的I/O控制方式。
  • 为了方便用户,I/O软件应能屏蔽不同类型I/O控制方式的差异,向高层软件提供统一的操作接口。

I/O软件结构

  • 将系统中的管理设备及其相关操作的软件划分成多个层次,每一层都具有一个将要执行的且定义明确的功能和一个与邻近层次定义明确的接口,各层的功能与接口随系统的不同而异。
  • 每一层都利用其下层提供的服务,完成输入/输出功能中的某些子功能,并屏蔽这些功能的实现细节,向高层提供服务。
  • 通常,把I/O软件组织成四个层次。
    在这里插入图片描述
  • 用户层I/O软件:与用户交互的接口,用户可直接调用该层提供的、与I/O操作相关的库函数对设备进行操作
  • 与设备无关的系统软件:负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。
  • 设备驱动程序:与硬件直接关联,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。
  • 中断处理程序:用于保存被中断进程的处理器环境,转入相应的中断处理程序进行处理,处理完毕恢复被中断进程的现场后,返回到被中断进程。

设备驱动程序

  • 设备驱动程序的主要任务是在上层软件与设备控制器之间进行通信
  • 接收与设备无关的上层软件发来的抽象I/O要求,在把它转换为具体要求后,发送给设备控制器,启动设备执行相应操作
  • 将设备控制器发来的信号传送给上层软件
  • 设备驱动程序是一种使计算机和设备通信的特殊程序,相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作

1.设备驱动程序的功能
(1)接收来自与设备无关的上层软件发来的命令,并将命令中的抽象要求转换为具体要求。
(2)检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。
(3)发出I/O命令,对各种可能的有关设备的排队、挂起、唤醒等操作进行处理。
(4)及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。
(5)对于设置有通道的系统,驱动程序还应能根据用户的I/O请求,自动的构成通道程序。

2.设备驱动程序的特性
(1)设备驱动程序与I/O设备的硬件结构紧密相关。
(2)设备驱动程序中全部是依赖于设备的代码。
(3)设备驱动程序是操作系统底层中唯一知道各种I/O设备的控制细节及其用途的部分。
(4)设备驱动程序与I/O设备所采用的I/O控制方式密切相连。
(5)设备驱动程序不允许系统调用。

3.设备驱动程序的结构
不同类型的设备,具有不同的设备驱动程序,不同设备驱动程序的结构自然也不相同
对于某类设备,设备驱动程序的结构取决于用户在设备上追求的目标
考虑设备安装的便利性,则选用通用的设备驱动程序
考虑设备运行的效率性,则选用专门的设备驱动程序

4.设备驱动程序的处理过程
(1)将由与设备无关的上层软件发出的抽象要求转换为具体要求
(2)检查用户I/O请求的合法性。设备驱动程序在启动I/O设备之前,必须对用户的I/O请求进行检验,确定该请求在设备上是否能够执行。
(3)检查设备的状态。设备驱动程序在启动某个设备进行I/O操作之前,应当从设备控制器的状态寄存器中读出设备状态,确定该设备是否准备就绪。
(4)传送必要的参数。在确定设备处于就绪状态之后,即可向设备控制器的相应寄存器传送数据以及相关的参数。
(5)工作方式的设置。有些设备可具有多种工作方式,在启动该接口之前,应先按照系统要求或通信规则设置正确的工作方式。
(5)启动I/O设备。在完成上述各项准备工作之后,设备驱动程序便可向设备控制器中的命令寄存器发送相应的命令启动I/O设备完成具体的操作。

设备无关软件

  • 提高操作系统的可适应性和可扩展性
  • 设备无关性 (Device independence),也称为设备独立性,应用程序独立于具体使用的物理设备

在这里插入图片描述

1.设备驱动程序的统一接口
(1)每个设备驱动程序与操作系统之间都有着相同或相近的接口。
(2)设备命名。将抽象的设备名称映射到适当的设备驱动程序上,换言之,将设备的抽象名称转换成物理设备名称。
(3)设备保护。对设备进行必要的保护,防止无授权的应用或用户的非法访问。

2.缓冲
I/O设备运行速度都远远低于处理器的速度
为了平衡处理器和I/O设备之间的速度矛盾,提高处理器利用率,引入了缓冲技术
常见的缓冲区技术有单缓冲区、双缓冲区和循环缓冲区

3.提供与设备无关的逻辑块
各种I/O设备的数据传输单位、空间大小、存取速度和传输速率各不相同
向上层软件隐藏各种I/O设备的数据交换单位、传输速率等差异
只需向上层软件提供大小统一的逻辑数据块

4.独占设备的分配与释放
对于独占设备,为了避免多个进程因竞争访问独占设备产生矛盾,不允许进程自行访问,必须由系统统一调度分配
当有进程需要访问独占设备时,首先向系统提出请求
系统接到请求后,先检查请求访问的独占设备的当前状态:
(1)如果空闲,则把设备分配给该进程;
(2)否则,进程将被阻塞,等待直到设备可用。

5.错误处理

  • 设备出现故障和错误以后,多由设备驱动程序处理
  • 设备无关软件只处理那些设备驱动程序无法处理的错误

用户层软件

1.库函数

  • 用户层I/O软件必须通过系统调用来取得操作系统服务
  • 用户程序通过调用对应的库函数使用系统调用

在这里插入图片描述
2.假脱机系统

  1. 操作系统在用户层中还提供了一些其它非常有用的程序,例如假脱机系统。
  2. 处理器的速度要比I/O设备的速度快很多,为了缓和两者速度不匹配的矛盾,引入了脱机输入和脱机输出技术

假脱机系统基本思想:

  • 输入数据时,利用专门的外围控制器先将低速I/O设备上的数据传送到高速磁盘上,然后处理器直接从磁盘中读取数据;
  • 输出数据时,处理器把数据快速地输出到磁盘上,然后数据从磁盘传送到低速输出设备上。 在主机的直接控制下,实现脱机输入、输出功能。
  • 在这个过程中,处理器没有传送数据时,可以执行其它操作,这样显然提高了处理器的利用率。
  • 此时的外围操作与对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为假脱机操作(SimultaneousPeripheral Operation On-Line, SPOOLing)。

用户层的I/O软件

SPOOLing系统组成
(1)输入井和输出井;
(2)输入缓冲区和输出缓冲区;
(3)输入进程和输出进程;
(4)井管理程序。
SPOOLing技术的特点
(1)将独占设备改造成共享设备;
(2)在很大程度上提高了I/O速度;
(3)实现了虚拟设备功能。

具有通道的设备管理

  • 当主机所连接的设备较多时,处理器的负担仍然比较沉重,处理器和设备的利用率仍然不高
  • 主要目的是为了建立独立的I/O操作
  • 在I/O系统中引入通道,是为了将处理器从众多杂乱的I/O操作中解放出来,把一些原本由处理器负责的I/O操作改由通道完成
  • 通道命令和通道程序

通 道

  • I/O通道又称作I/O处理器,它是一种特殊的处理器,具有自己的指令系统。
  • 通常把I/O处理器的指令称作通道命令(Channel command word,
    CCW)。它是通道从主存取出并控制I/O设备执行I/O操作的命令字。一条通道命令往往只能实现一种功能,用通道命令编写的程序称为通道程序,通道程序由多条通道命令组成。
  • I/O通道与一般的处理器不同:一方面,由于通道硬件简单,所执行的命令主要集中在与I/O有关的操作,故I/O通道指令类型单一;另一方面,通道没有内存空间,所执行的通道程序存放在主机内存,即通道与处理器共享内存。

通道类型

(1)字节多路通道(Byte multiplexor channel)
这是一种按字节交叉方式工作的通道,它通常都含有许多非分配型子通道。每个子通道都连接一台I/O设备,并控制该设备的I/O操作。另外还存在一个主通道,它采用时间片轮转方法,轮流为各子通道服务,即当某个子通道控制其I/O设备完成一个字节的交换后,便立即让出主通道,以供下一个子通道使用。多个子通道之间轮流共享主通道。这些子通道通常连接的都是低速I/O设备,如行式打印机等。

在这里插入图片描述
(2)数组选择通道(Block selector channel)
这种通道传输速率高,可以连接多台高速设备。但有一个明显的缺陷:通道的利用率较低,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送。这是因为该类型通道只含有一个可分配型子通道,导致当某台设备占用了该通道后便一直独占,即便无数据传送,通道也只能被闲置,直至该设备传送完毕自动释放该通道。

(3)数组多路通道(Block multiplexor channel)
数组多路通道是将数组选择通道传输速率高和字节多路通道能使各子通道分时并行操作的优点相结合而形成的一种新通道。数组多路通道数据传输按数组方式进行,含有多个非分配型子通道,因而这种通道不但具有很高的数据传输速率,而且能获得令人满意的通道利用率。数组多路通道适用于连接高、中速的I/O设备。

设备管理相关技术

DMA配置方法:
(1)单总线,分离的DMA

  • CPU、DMA控制器和所有的外围I/O设备共享同一个系统总线
  • DMA代替CPU来处理内存与I/O设备之间的数据交换
  • 额外开销较小,但是效率较低
  • 内存和I/O设备之间每传送一个字需要两个总线周期,分别是数据传送请求和之后的数据传送

DMA

在这里插入图片描述
(2)单总线,集成的DMA-I/O
DMA和I/O功能进行集中,减少数据传送所需要的总线周期数
除了系统总线之外,在DMA模块和I/O模块之间还存在一条不包含系统总线的路径
逻辑上,DMA可以看成是I/O模块的一部分,或者可能是控制一个或多个I/O模块的一个单独的模块

在这里插入图片描述
(3) I/O总线的DMA配置

  1. 使用一个I/O总线连接I/O模块和DMA模块
  2. DMA模块中I/O接口的数目减少到1个

在这里插入图片描述

缓冲技术

1.单缓冲区

  • 操作系统便会在内存为用户程序分配一个缓冲区
  • 块设备输入数据时,先把被交换的数据写入缓冲区,然后CPU从缓冲区中把数据取走
  • 假设从磁盘把一个数据块输入到缓冲区的时间是T,CPU从缓冲区中把数据取走的时间为M,对数据处理的时间是C

一个数据块的处理时间为Max(C,T)+M

在这里插入图片描述

2.双缓冲区
例:如果消费者尚未取走缓冲区中的数据,即使生产者又生产出新的数据,也无法将它送入缓冲区,生产者等待。
在I/O设备和CPU之间设置了两个缓冲区
先将数据传送到第一缓冲区,直至第一缓冲区满了之后,才将数据送入第二缓冲区
一个数据块的时间可以粗略的认为是Max(C,T)
若C<T,设备块可以连续输入数据;若C>T,则可使CPU不需要等待数据的输入
在这里插入图片描述

2.双缓冲区
 如果在实现两台机器之间的通信时仅为它们配置了单缓冲,那么,它们之间在任一时刻都只能实现单方向的数据传输。例如,只允许把数据从A传送到B,或者从B传送到A,而绝不允许双方同时向对方发送数据。为了实现双向数据传输,必须在两台机器中都设置两个缓冲区,一个用作发送缓冲区,另一个用作接收缓冲区。

在这里插入图片描述

环形缓冲区

1) 环形缓冲区的组成
(1) 多个缓冲区:在循环缓冲中含有多个缓冲区,每个缓冲区的大小相同。缓冲区可分成三种类型:
a) 空缓冲区R。用于存放输入数据。
b) 已满缓冲区G。其中的数据提供给计算进程使用。
c) 现行工作缓冲区C。计算进程正在使用的缓冲区。
(2) 多个指针:对用于输入的多缓冲,设置三个指针:
a)Nextg。指示计算进程下一个可用的缓冲区G;
b)Nexti。指示输入进程下次可用的空缓冲区R;
c)Current。指示计算进程正在使用的缓冲区单元。

在这里插入图片描述

在这里插入图片描述

环形缓冲区的使用

计算进程和输入进程可利用下述两个过程来使用环形缓冲区。
   (1) Getbuf过程。每当计算进程要使用缓冲区的数据时,可调用该过程。类似地,每当输入进程要使用空缓冲来装入数据时,也可调用该过程。
   (2) Releasebuf过程。当计算进程把G缓冲区中的数据提完时,便可调用该过程将缓冲区释放。此时把缓冲区由C改为R。类似地,当输入进程将缓冲区装满时,也调用该过程,将该缓冲区释放,并改为G缓冲区。

进程之间的同步问题

使用输入循环缓冲,可使输入进程和计算进程并行执行。相应地,指针Nexti和指针Nextg将不断地沿着顺时针方向移动,这样就可能出现下述两种情况:  (1) Nexti指针追赶上Nextg指针。这意味着全部缓冲区已满,此时输入进程应被阻塞,直至计算进程把某个缓冲区中数据全部提完,使之成为空缓冲R,并调用Releasebuf过程将其释放,才将输入进程唤醒。这种情况称为系统受计算限制。   (2) Nextg指针追赶上Nexti指针。意味着全部缓冲区已空。此时计算进程只能阻塞,直至输入进程又装满某缓冲区,并调用Releasebuf过程将它释放,才去唤醒计算进程。这种情况称为系统受I/O限制。

缓冲池

  • 缓冲池由多个缓冲区组成,其中的缓冲区可供多个进程共享,既能用于输入又能用于输出
  • 缓冲区三个队列:空缓冲队列、装满输入数据的缓冲队列(输入队列)和装满输出数据的缓冲队列(输出队列)。
  • 缓冲区四种工作缓冲区:收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区、用于收容输出数据的工作缓冲区和用于提取输出数据的工作缓冲区。

缓冲池工作流程:

  • 输入进程输入数据时,便从空缓冲队列的队首摘下一个空缓冲区,把它作为收容输入工作缓冲区,然后把数据输入其中,装满后再将它挂到输入队列的队尾。
  • 计算进程输入数据时, 便从输入队列取得一个缓冲区作为提取输入工作缓冲区,计算进程从中提取数据,数据用完后再将它挂到空缓冲队列的队尾。
  • 计算进程输出数据时,从空缓冲队列的队首取一个空缓冲区,作为收容输出工作缓冲区,当其中装满输出数据后,再将它挂到输出队列的队尾。
  • 输出进程输出数据时,从输出队列中取得一个装满输出数据的缓冲区,作为提取输出工作缓冲区,当数据提取完毕后,再将它挂到空缓冲队列的队尾。

总线技术

计算机系统中的各部件,如CPU、内存和I/O设备之间都是通过总线实现它们之间的通信的。

  1. ISA和EISA总线
    (1) ISA(Industry Standard Architecture)总线。又称AT总线,这是在 1984 年推出的 80286 型微机而设计的总线结构。它使用独立于CPU的总线时钟,因此CPU可以采用比总线频率更高的时钟,有利于CPU性能的提高。由于ISA总线没有总线仲裁的硬件逻辑,因此它不能支持多台主设备系统,而且ISA上的所有数据的传送都必须通过CPU或DMA接口来管理,因此使CPU花费了大量时间来控制与外部设备交换数据。ISA总线时钟频率为8MHz,最大传输速率为16MB/s,数据线为16位,地址线为24位。

    (2) EISA(Extended ISA)总线。到20世纪80年代末期,ISA总线已难于满足带宽和传输速率的要求,于是人们又开发出扩展ISA(EISA)总线,它是一种在ISA基础上扩充开放的总线标准,与ISA可以完全兼容,从CPU中分离出了总线控制权,是一种具有智能化的总线,能支持多个总线主控制器和突发方式的传输。EISA总线的时钟频率为8MHz,最大传输率可达33MB/s,数据总线为32位,地址总线为32位,扩充DMA访问范围达232。

2.局部总线
随着多媒体技术的兴起,特别是全运动视频处理、高保真音响、高速LAN以及高质量图形处理等技术的发展,它们都要求总线具有更高的传输速率,这时的EISA总线已难于满足要求,于是局部总线便应运而生。
所谓局部总线,是指将多媒体卡、高速LAN网卡、高性能图形板等,从ISA总线上卸下来,再通过局部总线控制器直接接到CPU总线上,使之与高速CPU总线相匹配,而打印机、FAX/Modem、CDROM等仍挂在ISA总线上,即在系统外为两个以上的模块提供高速传输信息的通道。

(1) VESA(Video electronic standard association)总线。该总线是由VESA(视频电子标准协会)提出的局部总线,又称为VL-BUS总线,其设计思想是以低价位迅速占领市场。VESA总线由CPU总线演化而来,采用CPU的时钟频率达33MHz,数据线为32位,可以通过扩展槽扩展到64位,配有局部控制器,最大传输速率为133MB/s。它在20世纪90年代初被推出时,广泛应用于486微机中。但VESA总线仍存在较严重的缺点,比如,**它所能连接的设备数仅为2~4台,在控制器中无缓冲,**因此难以适应处理器速度的不断提高,也不能支持后来出现的Pentium微机。

(2) PCI(Peripheral component interface)总线。随着Pentium系列芯片的推出,Intel公司分别在1992年和1995年颁布了PCI总线的V1.0和V2.1规范,后者支持64位系统。PCI 在CPU和外设间插入一个复杂的管理层,用于协调数据传输和提供一致的接口。在管理层中配有数据缓冲,通过该缓冲可将线路的驱动能力放大,使PCI 最多能支持10种外设,并使高时钟频率的CPU能很好地运行,自身采用33MHz和66MHz的总线时钟,数据线为32位,可扩展到64位,数据传输速率可以从133 MB/s涉及到528MB/s。PCI既可连接ISA、EISA等传统型总线,又可支持Pentium的64位系统,是基于奔腾等新一代微处理器而发展的总线。

磁盘存储管理

  • 磁盘存储器不仅容量大、存取速度快、数据可以长期保存,且能实现随机存取,是当前存放大量程序、数据和文件的理想设备。
  • 磁盘I/O速度的高低和磁盘系统的可靠性,都将直接影响到OS系统性能。
  • 设计高效地磁盘管理技术以提高磁盘系统的性能,已成为现代操作系统的重要任务之一。

磁盘简述

  • 磁盘是一种直接存取存储设备,又叫随机存取存储设备
  • 在一个盘片上的读写磁头的轨迹称磁道,在磁头位置下的所有磁道组成地圆柱体称柱面,一个磁道又可被划分成一个或多个物理块,物理块又称为扇区。如图6.17所示。
    在这里插入图片描述

存储容量计算公式如下:
存储容量 = 磁头数×磁道(柱面)数×每道扇区数×每扇区字节数

图6.18所示为磁盘I/O传送的一般时序图。文件的信息通常不是记录在同一盘片的各个磁道上,而是记录在同一柱面的不同磁道上,这样可使移动臂的移动次数减少,缩短存取信息的时间。为了访问磁盘上的一个物理记录,必须给出三个参数:柱面号、磁道号、扇区号。

在这里插入图片描述
磁头定位到磁道所需的时间称作寻道时间(Seek time)。

  • 磁头到达扇区开始位置的时间称作旋转延迟(Rotational delay)时间。
  • 寻道时间和旋转延迟时间的总和为存取时间(Access time),这是达到读或写位置所需的时间。
  • 一旦磁头定位完成,磁头就通过下面旋转的扇区,开始执行读操作或写操作,这正是操作的数据传送部分。传输所需的时间称为传送时间(Transfertime)。

访问时间:
(1)寻道时间Ts :启动磁头的时间s与磁头移动n条磁道所花费的时间之和。 m是一常数,与磁盘驱动器的速度有关。

(2)旋转延迟时间Tr :不同的磁盘类型中,旋转速度至少相差一个数量级。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

方法2:如果调度算法决定的读入次序为读记录1、2、3、4。
总的处理时间等于1/2+1/4+3×1/4=1.5周。
方法3:如果知道当前读位置是记录3,则调度算法采用的次序为读记录4、1、2、3会更好。
总的处理时间等于1周。
为实现方法3,驱动调度算法必须知道旋转型设备的当前位置,这种硬件设备叫做旋转位置测定。如果没有这种硬件装置,则会因无法测定当前记录而可能会平均多花费半圈左右的定位时间。

在这里插入图片描述

磁盘调度

如果扇区访问请求包括随机选择磁道,磁盘I/O系统的性能会非常低。为了提高性能,需要减少花费在寻道上的时间。磁盘是可被多个进程共享的设备。应采取适当的调度算法,使各进程对磁道的平均访问时间最小。由于在访问磁盘的时间中,主要是寻道时间,因此磁盘调度的目标应是使磁盘的平均寻道时间最少。

1.先来先服务(First come first served, FCFS)

  • 简单的磁盘调度算法
  • 根据进程请求访问磁盘的先后次序进行调度
  • 每个进程的请求都能依次地得到处理,不会出现某一进程请求长期得不到满足的情况
  • 算法未对寻道进行优化,平均寻道时间较长
  • 该算法适用于请求磁盘I/O的进程数目较少的情况

2.最短寻道时间优先(Shortest seek time first, SSTF)

  • 要求访问的磁道与当前磁头所在的磁道距离最近,以便每次的寻道时间最短
  • 但这种算法不能保证平均寻道时间最短
  • 某个进程发生饥饿现象
  • 只要不断有新进程的请求到达,并且其所要访问的磁道与磁头当前所在磁道的距离更近,则新的I/O请求会先于队列中已存在的请求得到满足。
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

SCAN算法既能获得较好的寻道性能,又能防止饥饿现象,但存在如下问题:

  • 当磁头从里向外移动刚刚越过了某一磁道时,恰好又有一进程请求访问该磁道,此时进程只能等待。磁头继续从里向到达最后一个访问的磁道,转向后从外向里扫描完所有要访问的磁道后,才能处理该进程的请求。

C-SCAN算法规定磁头单向移动

  • 当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道
  • 将最小磁道号紧接着最大磁道号构成循环,进行循环扫描

在这里插入图片描述

5.N-step-SCAN和F-SCAN算法

  • 磁盘请求队列被分成多个段,每次只有一个段被完全处理
    N-step-SCAN策略把磁盘请求队列分成长度为N的子队列,每一次用SCAN处理一个子队列
    较大的N值,N-step-SCAN的性能与SCAN接近 N = 1时,就是FCFS

F-SCAN算法实质上是N步SCAN算法的简化

  • F-SCAN只将磁盘请求队列分成两个子队列,一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理
  • 新到达的的所有请求磁盘I/O的进程,放入另一个等待处理的请求队列
  • 所有的新请求都将被推迟到下一次扫描时处理

磁盘管理

1.磁盘初始化
一个新的磁盘是一个空白板

  • 在磁盘能存储数据之前,它必须分成扇区以便于磁盘控制器能读和写
  • 低级格式化为磁盘的每个扇区采用特别的数据结构
  • 为了提高效率,大多数操作系统将块集中到一大块,通常称作簇(Cluster)
  • 磁盘I/O通过块完成,但是文件系统I/O通过簇完成

2.磁盘引导
需要运行一个初始化程序——自举(Bootstrap )程序
对绝大多数计算机,自举程序保存在只读存储器中
拥有启动分区的磁盘称为启动磁盘(Boot disk)或系统磁盘(System disk)。
Windows 2000中的启动程序
硬盘分成一个或多个分区,其中一个分区设置为引导分区(Boot partition),包含操作系统和设备驱动程序

3.坏块恢复
含有移动部件并且同错能力小,磁盘容易出现问题
替换磁盘时,磁盘上的内容需要从备份介质上恢复到新磁盘上
对于简单磁盘,可手工处理坏扇区
复杂磁盘,扇区备用(Sector sparing)或转寄(Forwarding),低级格式化将一些块放在一边作为备用,控制器使用备用块替代坏块

容错技术

1.容错技术的概念

  • 容错:通过在系统中设置冗余部件以提高系统可靠性的一种技术
  • 磁盘容错技术:通过增加冗余的磁盘驱动器、磁盘控制器等方法,提高磁盘系统可靠性的一种技术
  • 目的:出现缺陷或故障时,磁盘仍能正常工作,不会丢失数据和信息

2.磁盘容错技术的分级
(1)低级磁盘容错技术(SFT-Ⅰ)
主要用于防止磁盘表面发生缺陷所引起的数据丢失
多采取一些补救措施后继续使用
一种是是热修复重定向,系统将一定的磁盘容量作为热修复重定向区,用于存放当发现盘块有缺陷时的代写数据,并对写入该区的所有数据进行登记,以便于以后对数据进行访问。
另一种是写后读校验方式,为了保证所有写入磁盘的数据都能写入到完好的盘块中,应该在每次从内存缓冲区向磁盘中写入一个数据块后,又立即从磁盘上读出该数据块,送到另一缓冲区中,再将该缓冲区中内容与内存缓冲区中在写后仍保留的数据进行比较,如两者一致,便认为此次写入成功,可继续写下一个盘块;否则,重新写入。

(2)中级磁盘容错技术(SFT-Ⅱ)

  • 主要用于防止磁盘驱动器和磁盘控制器故障所引起的系统故障
  • SFT-Ⅰ只能用于防止由磁盘表面部分故障造成的数据丢失。但如果磁盘驱动器发生故障,SFT-Ⅰ级容错便无能为力
  • 为了避免在这种情况下的数据丢失,便增设了磁盘镜像功能
  • 如果采用磁盘镜像工作方式,则在每次向文件服务器的主磁盘写入数据后,都要采用写后读校验方式,将数据再次同样地写到备份磁盘上,使两个磁盘上有着完全相同的位像图。

(3)系统容错技术(SFT-Ⅲ)
基于集群技术实现容错
在进入上世纪90年代后,为了进一步增强服务器的并行处理能力和可用性,采用了多台对称多处理(Symmetrical multiprocessing,SMP)服务器来实现集群系统服务器功能。
集群指由一组互连的自主计算机所组成的统一的计算机系统,给人们的感觉是,它们是连接在一起的一台机器。
集群的使用可以提高系统的并行处理能力和系统可用性

集群的工作模式
①双机热备份模式
一台作为主服务器,另一台作为备份服务器

  • 备份服务器则时刻监视着主服务器的运行,一旦主服务器出现故障,备份服务器便立即接替主服务器的工作而成为系统中的主服务器,修复后的主服务器将会被作为备份服务器

在这里插入图片描述

  • 优点是:提高了系统的可用性,易于实现;而且主、备份服务器之间完全独立,可支持远程热备份,从而能够消除由于火灾、爆炸等非计算机因素造成的隐患。
  • 缺点是:从服务器处于被动等待状态,整个系统的使用效率只有50%。

两台服务器平时均为在线服务器
每台服务器内最好都配置两台硬盘,一个用于装载系统程序和应用程序,另一个用于接收由另一台服务器发送的备份数据
两台服务器都可用于处理任务,系统效率较高
优点是:两台服务器都可用于处理任务,因而系统效率较高,当其中一台发生故障时,系统可指定另一台机器接替它的工作。现在该模式已从两台机器扩展到4台、8台、16台甚至更多。

在这里插入图片描述

③公用磁盘模式

  • 将多台计算机连接到一台公共的磁盘系统上
  • 某台计算机发生故障,系统将重新进行配置,根据某种调度策略来选择另一台替代机器
  • 优点是:消除了信息的复制时间,减少了网络和服务器开销

3.廉价磁盘冗余阵列
廉价磁盘冗余阵列(Redundant array of inexpensive disk, RAID)是在1987年由美国加利福尼亚大学伯克莱分校提出的,现在已开始广泛地应用于大、中型计算机系统和计算机网络中。
它利用一台磁盘阵列控制器,统一管理和控制一组(几台到几十台)磁盘驱动器,从而组成一个高度可靠的、快速的大容量磁盘系统。

(1)并行交叉存取
系统将每一盘块中的数据分为若干个盘块数据
把每一个子盘块的数据分别存储到各个不同磁盘中的相同位置
采取并行传输方式,将各个盘块中的子盘块数据同时向内存中传输,传输时间大大减少

(2)RAID的分级
RAID 0 级:仅提供并行交叉存取,虽能有效地提高磁盘I/O速度,但并无冗余校验功能。
在这里插入图片描述
RAID 1 级:具有磁盘镜像功能,可利用并行读、写特性,它的磁盘容量的利用率仅有50%。

在这里插入图片描述

RAID 2 级和RAID 3 级都是具有并行传输功能的磁盘阵列。RAID 3仅利用了一台奇偶校验盘来完成容错功能,与磁盘镜像相比,它减少了所需要的冗余磁盘数。
在这里插入图片描述

在这里插入图片描述

RAID 4级是带奇偶校验码的独立磁盘结构,它和RAID 3很相似,不同的是RAID 4对数据的访问是按数据块进行;处理时间较RAID 3级更长。

在这里插入图片描述

RAID 5级是一种具有独立传送功能的磁盘阵列,每个驱动器都有各自己独立的数据通路,能够独立地进行读、写,且无专门的校验盘。纠错的校验信息以螺旋方式散布在所有数据盘上。

在这里插入图片描述

RAID 6级和RAID 7级是强化了的RAID。在RAID 6级的阵列中设置了一个专用的、可快速访问的异步校验盘。该盘具有独立的数据访问通路,具有比RAID 3级和RAID 5级更好的性能。但其性能改进相对有限,且价格相对较高。
RAID 7级是对RAID 6级的改进,是目前最高档次的磁盘阵列,但其价格十分昂贵。

在这里插入图片描述

(3)RAID的优点。
可靠性高:除了RAID 0 级外,其余各级均采用了容错技术。磁盘损坏时,并不会造成数据的丢失。
磁盘I/O速度高:由于磁盘阵列可采取并行交叉存取方式,故可将磁盘I/O速度提高N-1倍,N为磁盘数目。
性价比高:以牺牲1/N的容量为代价,换取了相对程度更大的高可靠性。

4.后备系统
一个完整的应用系统,必须配置后备系统。
采用硬盘作为后备系统时,主要采用以下两种方式:
(1)利用活动硬盘作为后备系统,这种力法的最大优点是速度快。
(2)利用大容量磁盘机兼作后备系统,每个硬盘都被划分成两个区,一个是数据区,另一个是备份区。此种后备系统不仅拷贝速度快,而且具有容错功能。

总结

有哪几种I/O控制方式?他们各适用于哪种场合?

1.程序I/O控制方式-----适用于结构简单,只需少量硬件的电路
2.中断驱动I/O控制方式-------------适用于高效场合
3.直接存储器访问DMA控制方式-------------------------不需要CPU干预介入的控制器来控制内存与外设之间的数据交流的场合
4.I/O通道控制方式--------适用于以字节为单位的干预,同时实现CPU、通道和I/O设备三者并行操作的场合

为什么要引入缓冲?

操作系统引入缓冲是为了提高IO操作的效率和性能。缓冲区是一个暂存数据的区域,它可以在处理IO操作时缓存一部分数据,然后在一定的条件下再将数据传递给应用程序或者设备。这样可以减少IO操作的次数和等待时间,提高数据读写的效率。

磁盘访问时间由哪几部分组成?

寻道时间(Seek Time):硬盘读写头移动到所需磁道上的时间,通常是磁盘访问时间中最耗时的部分。
旋转延迟时间(Rotational Latency):硬盘等待磁盘旋转到所需扇区的时间。
数据传输时间(Data Transfer Time):硬盘将数据从磁盘传输到计算机内存或将数据从计算机内存传输到磁盘上的时间。

目前常用的磁盘调度算法有哪几种?每种算法的特点是什么?

先来先服务 (FCFS):按照磁盘请求的顺序进行调度,没有任何优化策略。适用于磁盘访问量小、请求简单的情况。

最短寻道时间优先 (SSTF):选择离当前磁头位置最近的磁道作为下一个被服务的磁道。优化了FCFS算法,但可能会出现饥饿现象。

扫描算法 (SCAN):按照磁头移动方向的一个方向进行扫描,直到到达磁盘的一端,然后返回另一个方向进行扫描。适用于磁盘I/O请求比较平均分布的情况。

循环扫描算法 (C-SCAN):类似于SCAN算法,但是在到达磁盘一端后,直接返回到另一端,不再扫描之前的磁道。适用于要求I/O响应时间均匀或者等待时间有限制的系统。

最高响应比优先 (HRRN):根据磁盘请求等待时间和所请求的磁道与当前磁头位置之间的距离的比值来进行调度。适用于需要考虑进程等待时间的场景。

电梯算法 (LOOK/C-LOOK):类似于SCAN算法,但是在到达磁盘一端后,不返回另一个方向进行扫描,而是直接改变方向继续扫描。这种算法比SCAN算法更加平滑,但是可能会造成某些区域的饥饿。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,操作系统是计算机系统中的核心软件,负责管理和控制计算机硬件资源以及提供各种服务和功能。在2024年的考研笔记中,以System Five系统为例,该系统允许多个写进程同时访问一个管道,但只允许一个读进程。这样可以确保数据的一致性和避免冲突。System Five系统最初由AT&T Bell Labs在20世纪80年代开发,是UNIX操作系统的一个分支,主要用于商业领域的大型计算机和服务器。 传统的计算机在一个物理机器上只能运行一个操作系统,而在商业环境中,同时运行两个应用程序可能会导致相互影响和资源竞争的问题。这也是为什么在操作系统设计中需要考虑如何解决这些隐患的原因。 在实际应用中,操作系统可以分为不同类型,例如大内核/宏内核/单内核操作系统(如Linux、UNIX)和微内核操作系统(如Windows NT)。每种类型都有各自的特点和适用场景。 总结来说,操作系统是计算机系统中的核心软件,负责管理和控制计算机硬件资源,为应用程序提供服务和功能。在2024考研笔记中,可以涉及不同类型的操作系统,以及解决多进程访问资源的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [2024考研408-操作系统 第二章-进程与线程 学习笔记](https://blog.csdn.net/cl939974883/article/details/131679526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [2024考研408-操作系统 第一章-计算机系统概述学习笔记](https://blog.csdn.net/cl939974883/article/details/131543432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值