首页 > 其他分享 >【第7章 | 输入/输出系统】(操作系统 慕课版)

【第7章 | 输入/输出系统】(操作系统 慕课版)

时间:2024-06-02 16:57:22浏览次数:14  
标签:慕课 操作系统 缓冲 进程 缓冲区 磁盘 CPU 输入 设备

目录

一、I/O系统的功能、模型与接口

1.1I/O系统的基本功能

1.2I/O系统的层次结构与模型

1.3I/O系统的接口

二、I/O设备和设备控制器

2.1I/O设备

2.2设备控制器

2.3内存映像I/O

2.4I/O通道

2.5I/O设备的控制方式

知识回顾

三、I/O软件

3.1中断处理程序

3.2设备驱动程序

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

3.3.1与设备无关软件的共有操作

3.3.2设备分配

3.3.3逻辑设备名映射到物理设备名

3.3.4I/O调度

3.4用户层的I/O软件

3.4.1系统调用和库函数

3.4.2假脱机系统

知识回顾

四、缓冲区管理

4.1缓冲的引入

4.2单缓冲与双缓冲

4.3环形缓冲区

4.4缓冲池

4.5缓存(Cache)

五、磁盘性能概述和磁盘调度

5.1磁盘性能概述

5.2早期的磁盘调度算法

5.2.1先来先服务调度算法FCFS

5.2.2最短寻道时间优先调度算法SSTF(Shortest Seek Time First)

5.2.3基于扫描的磁盘调度算法SCAN

5.2.4循环扫描调度算法CSCAN

5.2.5CLOOK

5.2.6NStepSCAN和FSCAN调度算法


一、I/O系统的功能、模型与接口

I/O系统管理的主要对象:I/O设备(机械部分)和对应的设备控制器(电子部分)

I/O系统的主要任务:完成用户提出的I/O请求、提高I/O速率、改善I/O设备的 

1.1I/O系统的基本功能

(1)能够隐藏物理设备的细节

        抽象为少量的读写命令,read、write (避免直接面对种类繁多、差异性巨大的硬件)

(2)能够保证OS与设备无关

        使用抽象的逻辑设备名来使用设备

(3)能够提高处理机和I/O设备的利用率

        尽可能让处理机和I/O设备并行操作    

      (处理机能快速响应用户的I/O请求)    

      (尽量减少每个I/O设备运行时处理机的干预时间)

(4)能够对I/O设备进行控制

        ①轮询 ②中断 ③直接存储器访问DMA ④I/O通道

(5)能够确保对设备的正确共享

        ①独占设备 ② 共享设备

(6)能够处理错误

        ①临时性 ②持久性

1.2I/O系统的层次结构与模型

层次结构:

各种I/O模块之间的层次视图:

I/O系统的上、下接口:

         I/O系统接口(上接口:面向用户)

        软件/硬件接口(下接口:面向硬件)

        在上、下接口之间是I/O系统

I/O系统的分层 :

        ①中断处理程序 ② 设备驱动程序 ③ 与设备无关的I/O软件 (3+1:即,用户层软件)

1.3I/O系统的接口

1. 块设备接口:

(1)块设备:数据的存取和传输都是以数据块为单位的设备,如磁盘、光盘,通常采用DMA I/O方式。可寻址,速率高。

(2)隐藏了磁盘的二维结构 (磁道号和扇区号)

(3) 将抽象命令映射为低层操作:如收到读磁盘命令时,先将抽象命令中的逻辑块号转换为磁盘的盘面、磁道和扇区等

2. 流设备(字符设备)接口:

(1)字符设备:数据的存取和传输都是以字符为单位的设备,如键盘、打印机。 不可寻址,速率低。 通常采用中断驱动I/O方式。

(2)get和put操作:字符设备采用顺序存取方式。

         get操作用于从字符缓冲区取得一个字符(到内存),并将它返回给调用者。

         put操作用于将一个新字符(从内存)输出到字符缓冲区网络。

(3)in-control指令:包含许多参数,每个参数均表示一个与具体设备相关的特定功能。

3. 网络通信接口:

OS提供相应的网络软件和网络通信接口,以使计算机能通过网络同网络上的其他计算机进行通信,或上网浏览信息。

二、I/O设备和设备控制器

2.1I/O设备

1.I/O设备的类型

(1)按使用特性分类:存储设备、I/O设备

(2)按传输速率分类:

        低速设备:键盘、鼠标器、语音的输入和输出等

        中速设备:行式打印机、激光打印机等

        高速设备:磁带机、磁盘机、光盘机等

(3)按信息交换单位分类:块设备、字符设备

(4)按设备的共享属性分类:独占设备、共享设备

2. 设备与控制器之间的接口

通常,设备并不是直接与CPU进行通信,而是与设备控制器通信,因此,在设备与设备控制器之间应有一接口,在该接口中有三类信号各对应一条信号线。

2.2设备控制器

主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。

设备控制器是CPU与I/O设备之间的接口,接收从CPU发来的命令,并去控制I/O设备工作。

设备控制器是一个可编址的设备:

        当仅控制一个设备时,它只有一个唯一的设备地址

        若控制器可连接多个设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备

1.设备控制器的基本功能

功能:(1)接收和识别命令  (2)数据交换  (3)标识和报告设备的状态

           (4)地址识别  (5)数据缓冲区  (6)差错控制

2.设备控制器的组成

(1) 设备控制器与处理机的接口:实现CPU与设备控制器之间的通信,包括数据线、地址线和控制线

(2) 设备控制器与设备的接口:一个设备控制器可以连接一个或多个设备

(3) I/O逻辑:实现对设备的控制

2.3内存映像I/O

驱动程序将抽象I/O命令转换成具体的命令和参数等装入设备控制器的相应寄存器,由控制器执行这些命令,具体实施对I/O设备的控制。具体方法:

        1. 采用特定I/O指令:访问内存和设备需要两种不同的指令。

        2. 采用内存映像I/O形式:

                在编址上不再区分内存单元地址和设备控制器中的寄存器地址,统一编址 k 。 k在0~n-1范围时,为内存地址;若k>=n时,为某控制器的寄存器地址。

                统一了访问方法,简化了I/O编程。

2.4I/O通道

1. I/O通道的引入

目的:使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的I/O任务中解脱出来

通道与普通处理机:

        通道是特殊处理机

        不同点: 指令类型单一(通道硬件比较简单);没有自己的内存(与CPU共享内存)

2. I/O通道类型

(1)字节多路通道:按字节交叉方式工作的通道

(2)数组选择通道:可以连接多台高速设备,但在一段时间内只允许一台设备传输数据,传输率高

(3)数组多路通道:结合前两者优点,含有多个非分配型子通道

3.“瓶颈”问题

        通道不足,造成“瓶颈”现象:通道价格昂贵(特殊处理机)

解决办法:

        增加设备到CPU间的通路而不增加通道。

        多通路方式不仅解决了“瓶颈”问题,而且提高了系统的可靠性。(不真实存在)

单通路I/O系统:

多通路I/O系统:

增加设备到CPU间的通路而不增加通道

多通路方式不仅解决了“瓶颈”问题,而且提高了系统的可靠性

2.5I/O设备的控制方式

1.使用轮询的可编程I/O方式(基本不用

        (1)由CPU定时发出询问,询问设备是否忙,进程进入忙等

        (2)不忙即进行I/O,否则转(1)

                 实现容易,但效率偏低,CPU会长期处于忙等待

2.使用中断的可编程I/O方式(广泛采用)

当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器于是按照该命令的要求去控制指定的I/O设备。此时,CPU与I/O设备并行操作。

3.直接存储器访问(DMA)方式

DMA的引入:进一步减少CPU对I/O设备的干预

        数据传输的基本单位是数据块

        所传送的数据是从I/O设备直接送入内存的,或者相反

        仅在传送一个或多个数据块的开始和结束时,才须CPU干预

4.I/O通道控制方式

引入:是DMA方式的发展,可进一步减少CPU的干预。

        是对一组数据块以读/写及有关的控制和管理为单位干预;

        可实现CPU、通道和I/O设备三者的并行操作。

通道程序:由一系列通道指令所构成的。

        通道指令不同于CPU指令。

        指令包含:操作码、内存地址、计数、通道程序结束位P、记录结束位R。

知识回顾

三、I/O软件

中断简介:

1.中断和陷入:

        中断(Interrupt)是指CPU对I/O设备发来的中断信号的一种响应

        陷入(Trap)是指CPU内部事件所引起的中断

2.中断向量表:

        中断向量表存放每个设备的中断处理程序的入口地址,并为每个设备的中断请求作为一个中断号,对应于中断向量表中的一个表项

3.中断优先级:系统为每个中断源规定不同的优先级

对多中断源的处理方式:

中断源:引起中断的事件

当处理机正在处理一个中断时,又来了一个新的中断请求,有两种处理方式: 屏蔽(禁止)中断、嵌套中断

3.1中断处理程序

(1)测定是否有未响应的中断信号  (2)保护被中断进程的CPU现场

(3)转入相应的设备处理程序  (4)处理中断  (5)恢复CPU现场并退出中断

Linux系统中断处理:

采用了上半部和下半部机制:

        上半部:中断处理程序。         

                简单快速,执行时禁止一些或全部中断。

        下半部:一些虽然与中断有关但是可以延后执行的任务。         

                稍后执行,执行时可以响应所有的中断。

中断处理程序的设计: 注册中断 处理中断 注销中断

3.2设备驱动程序

1. 设备驱动程序的功能

        接收上层软件发来的抽象I/O请求,再把它们转换为具体要求后,发送给设备控制器,启动设备去执行

2. 设备驱动程序的特点

① 实现与设备无关的软件和设备控制器直接通信和转换的程序

② 与设备控制器以及I/O设备特性紧密相关

③ 基本部分固化在ROM中

④ 与I/O设备所采用的I/O控制方式紧密相关

⑤ 允许可重入

3.设备处理方式

① 为每类设备设置一个进程,专门用于执行这类设备的I/O操作

② 在整个系统中设置一个I/O进程,专门用于执行系统中各类设备的I/O操作

③ 不设置专门的设备处理进程,而只为各类设备设置相应的设备驱动程序

4.设备驱动程序的处理过程

①将抽象要求转换为具体要求  ② 对服务请求进行校验

③ 检查设备的状态  ④ 传送必要的参数  ⑤ 启动I/O设备

5.设备驱动程序的框架

(1)设备驱动程序与外界的接口

        ①设备驱动程序与操作系统内核的接口

        ②设备驱动程序与系统引导的接口

        ③设备驱动程序与设备的接口

(2)设备驱动程序的组成

        ①设备驱动程序的注册与注销

        ②设备的打开与释放

        ③设备的读/写操作

        ④设备的控制操作

        ⑤ 设备的中断与轮询

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

以物理设备名使用设备:非常不灵活,使用不方便。

引入了逻辑设备名:

        逻辑设备是抽象的设备名,如/dev/printer。

        可实现I/O重定向(指用于I/O操作的设备可以更换,而不必改变应用程序)。

逻辑设备名到物理设备名的转换:

        必须具备将逻辑设备名转换为物理设备名的功能

        系统配备逻辑设备表

3.3.1与设备无关软件的共有操作

1. 提供设备驱动程序的统一接口   2. 缓冲管理   3. 差错控制

4. 独占设备的分配与回收   5. 提供独立于设备的逻辑数据块

3.3.2设备分配

数据结构:

        设备控制表DCT– 记录设备的情况

        控制器控制表COCT、通道控制表CHCT和系统设备表SDT

设备分配时应考虑的因素:

        独占设备、共享设备、虚拟设备的分配策略

        分配算法:先来先服务、优先级高者优先

        安全性考虑:安全分配、不安全分配

独占设备的分配程序:

        基本分配程序:分配设备、分配控制器、分配通道

        分配程序改进

(1)设备控制表DCT

(2)控制器控制表、通道控制表

(3)系统设备表SDT

3.3.3逻辑设备名映射到物理设备名

在应用程序中请求使用I/O设备时,应使用逻辑设备名;而系统只识别物理设备名

逻辑设备表LUT:用于将逻辑设备名映射为物理设备名

        包含:逻辑设备名、物理设备名和设备驱动程序入口地址

        设置方式:整个系统一张LUT;每个用户一张LUT

3.3.4I/O调度

调度一组I/O请求:

        就是按照确定好的顺序来执行I/O操作;

         提高计算机效率。

通过I/O调度可以:

        改善系统整体性能;

        在进程间公平共享设备访问;

        减少完成I/O调度所需的平均等待时间。

实现:为每个设备维护一个请求等待队列。

3.4用户层的I/O软件

大部分I/O软件都放在OS内部,仍有一小部分在用户层

3.4.1系统调用和库函数

1. 系统调用:应用程序通过系统调用间接调用OS中的I/O过程,对I/O设备进行操作。

2. 库函数:Win32 API 、C 语言或UNIX系统中,系统调用与库函数,几乎一一对应。

3.4.2假脱机系统

1. 假脱机技术

为了缓和CPU的高速性与I/O设备的低速性间的矛盾而引入了脱机输入、脱机输出技术。

         利用一个程序模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上。

        用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备。

外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时外围操作称为SPOOLing (Simultaneous Peripheral Operations On-Line),或假脱机技术。

2. SPOOLing系统的组成

输入井和输出井:

        在磁盘上开辟的两个大存储空间

        输入井:模拟脱机输入时的磁盘设备,用于暂存输入设备输入的数据。

        输出井:模拟脱机输出时的磁盘,用于暂存用户程序的输出数据。

输入缓冲区和输出缓冲区:

        缓和CPU和磁盘之间速度不匹配的矛盾

        输入缓冲区:用于暂存由输入设备送来的数据,以后再传送到输入井。

        输出缓冲区:用于暂存从输出井送来的数据,以后再传送给输出设备。

3.SPOOLing系统的Demo

4.SPOOLing系统的工作原理

5.SPOOLing系统的特点

以打印机为例:(1)提高了I/O的速度  (2)将独占设备改造为共享设备

                         (3)实现了虚拟设备功能

6.假脱机打印机系统

打印机属于独占设备。利用SPOOLing技术,可将之改造为一台可供多个用户共享的设备,从而提高设备的利用率,也方便了用户。

共享打印机技术已被广泛用于多用户系统和局域网络(添加方法)中:

         ① 磁盘缓冲区:磁盘空间,暂存用户程序的输出数据

         ② 打印缓冲区:设在内存,暂存从磁盘缓冲区送来的数据

         ③ 假脱机管理进程和假脱机打印进程

                假脱机管理进程为每个要求打印的用户数据建立一个假脱机文件,并放入文件队列中

                假脱机打印进程依次对队列中的文件进行打印

假脱机打印系统的组成:

共享打印机:

假脱机管理进程:

在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存。

为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入表中,再将该表挂到假脱机文件队列上。

假脱机打印进程:

当打印机空闲时,进程从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据,从输出井传送到内存缓冲区,再由打印机进行打印。

打印完,进程再次察看请求打印队列,若非空,重复上述工作,直到队列为空。此后进程才将自己阻塞起来。仅当下次再有打印请求时,进程才被唤醒。

7.守护进程(daemon)

方案修改:取消假脱机管理进程,为打印机建立一个守护进程,由它执行一部分原来的假脱机管理进程的功能。

守护进程是允许使用打印机的唯一进程。

知识回顾

四、缓冲区管理

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

缓冲区是一个存储区域,可以由专门的硬件组成;更多的是利用内存。

缓冲管理的主要功能是组织好这些缓冲区,并提供获得和释放缓冲区的手段。

4.1缓冲的引入

引入缓冲的主要原因:

        1. 缓和CPU与I/O设备间速度不匹配的矛盾

        2. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制

        3. 解决数据粒度不匹配的问题

        4. 提高CPU与I/O设备之间的并行性

4.2单缓冲与双缓冲

单缓冲

每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区。

在块设备输入时,

        T:从磁盘把一块数据输入到缓冲区的时间

        M:操作系统将该缓冲区中的数据传送到工作区的时间 C:CPU对这块数据处理的时间。

        当T>C时,系统对每一块数据的处理时间为M+T(C忽略)

        反之,则为M+C

        系统对每一块数据的处理时间为:Max(C,T)+M

单缓冲工作示意图:

缓冲区不能又读又写(T、M/C、M不并行)

双缓冲:

双缓冲机制(缓冲对换)。

在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区。

此时操作系统可以从第一缓冲区移出数据,并送入用户进程。接着由CPU对数据进行计算。

在双缓冲时,系统处理一块数据的时间可以粗略地认为是Max(C,T),如果C>T,则可使CPU不必等待设备输入。

双缓冲工作示意图:

4.3环形缓冲区

当输入与输出若两者的速度相差悬殊,双缓冲的效果则不够理想,不过可以随着缓冲区数量的增加,使情况有所改善。

引入多缓冲机制,可将多个缓冲组织为循环缓冲。

 1. 环形缓冲区的组成:

(1)多个缓冲区:

在循环缓冲中包含多个缓冲区,其每个缓冲区的大小相同。

作为输入的多缓冲区可分为三种类型:

        用于装输入数据的空缓冲区R

        已装满数据的缓冲区G

        计算进程正在使用的现行工作缓冲区C

(2)多个指针:

作为输入的缓冲区可设置3个指针:

        用于指示计算进程下一个可用缓冲区G的指针Nextg

        指示输入进程下次可用的空缓冲区R的指针Nexti

        用于指示计算进程正在使用的缓冲区C的指针Current

 2. 环形缓冲区的使用:

Getbuf过程:

        计算进程要使用缓冲区的数据时调用该过程,将指针Nextg所指示的缓冲区提供给进程使用,修改Nextg和Current指针。

        输入进程要使用空缓冲装数据时调用该过程,将指针Nexti所指示的缓冲区提供给进程使用,修改Nexti。

Releasebuf过程:

        当计算进程把C缓冲区中的数据提取完毕时,调用过程,将缓冲区C释放。

        当输入进程把缓冲区装满时,调用过程,将该缓冲区释放,并将其改为可用缓冲区G。

进程间的同步问题:Nexti指针追赶上Nextg指针; Nextg指针追赶上Nexti指针

4.4缓冲池

当系统较大时,将会有许多循环缓冲,这不仅要消耗大量的内存空间,而且利用率不高。

为了提高缓冲区的利用率,引入公用缓冲池,在池中设置了多个可供若干个进程共享的缓冲区。

1.缓冲池的组成:

对于既可用于输入又可用于输出的公用缓冲池:

        空闲缓冲队列emq:空缓冲区所链成的队列。

        输入队列inq:装满输入数据的缓冲区所链成的队列。

        输出队列out:装满输入数据的缓冲区所链成的队列。

        4种工作缓冲区:收容输入缓冲区、提取输入缓冲区、收容输出缓冲区、提取输出缓冲区。

2.缓冲池的工作方式:

Getbuf和putbuf过程:

        对缓冲池中的队列进行操作

        既可实现互斥又可保证同步

工作方式:收容输入、提取输入、收容输出、提取输出

4.5缓存(Cache)

缓存是保存数据副本的高速内存区域:CPU缓存、磁盘缓存、光驱缓存等。

CPU缓存(高速缓存)

        为了缓和CPU运行速率与内存读/写速率不匹配的矛盾;

        当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;若没有找到,则从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据库调入缓存中。

缓存和缓冲:

        缓冲可以保存数据项的唯一的现有版本。

        缓存只是提供一个位于其他地方的数据项的更快存储副本。

        有时,同一个内存区,既可以是缓冲,也可以是缓存。

五、磁盘性能概述和磁盘调度

5.1磁盘性能概述

磁盘的结构:

盘面(磁头):磁盘设备可包含一或多个盘片,每个盘片分为一个或两个盘面,每个面上有一个读写磁头。

磁道(柱面):每个盘面可分成若干条磁道。

扇区:每条磁道逻辑上分成若干个大小相同的扇区。每个扇区的大小相当于一个盘块(数据块)。

每条磁道上可存储相同数目的二进制位。

磁盘密度即每英寸中所存储的位数,显然是内层磁道的密度较外层磁道的密度高。

磁盘容量计算:

1. 数据的组织和格式:

为了在磁盘上存储数据,必须先将磁盘格式化。

如每条磁道含有30个固定大小的扇区,每个扇区容量为600个字节,其中512个字节存放数据,其余的用于存放控制信息。

每个扇区包括2个字段:

        标识符字段:其中一个字节的SYNCH具有特定的位图像,作为该字段的定界符,利用磁道号、磁头号及扇区号三者来标识一个扇区;CRC字段用于段校验。

        数据字段:存放512个字节的数据。

磁盘的格式化:

2.磁盘的类型:

分类1:硬盘、软盘

分类2:单片盘、多片盘

分类3:

固定头磁盘:每个磁道上都有一个读写磁头

        并行方式读/写,有效提高磁盘的I/O速度

        主要用于大容量磁盘

移动头磁盘:每个盘面仅配有一个磁头,能移动寻道

        串行方式读/写,I/O速度较慢

        广泛应用于中、小型磁盘设备中

磁盘访问时间:

磁盘在工作时是以恒定速率旋转。

为了读写:

        磁头必须移动到所要求的磁道上

        并等待所指定的扇区的开始位置旋转到磁头下

        开始读写数据

磁盘的访问时间:(1)寻道时间  (2)旋转延迟时间  (3)传输时间

(1)寻道时间Ts:

把磁臂(磁头)移动到指定磁道上所经历的时间。

        启动磁臂的时间k

        磁头移动n条磁道所花费的时间

(2)磁盘访问时间(平均旋转延迟时间Tτ ):

(3)传输时间Tt:把数据从磁盘读出或向磁盘写入数据所经历的时间

访问时间Ta:

5.2早期的磁盘调度算法

5.2.1先来先服务调度算法FCFS

最简单的磁盘调度算法。

根据进程请求访问磁盘的先后次序进行调度。

优点:公平、简单,每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。

缺点:由于未对寻道进行优化,致使平均寻道时间可能较长。 FCFS仅适用于请求磁盘I/O的进程数目较少的场合。

FCFS示例:

5.2.2最短寻道时间优先调度算法SSTF(Shortest Seek Time First)

选择这样的进程,其要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但不保证平均寻道时间最短

SSTF的平均每次磁头移动的距离,明显低于FCFS的距离,因而SSTF比FCFS寻道性能更好

SSTF示例:

5.2.3基于扫描的磁盘调度算法SCAN

进程“饥饿”现象:SSTF寻道性能好,但可能导致某个进程发生“饥饿”现象。改进SSTF后,可防止进程出现“饥饿”现象。

SCAN算法:也称:电梯调度算法。

        不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头当前的移动方向。

        磁臂从磁盘的一端向另一段移动,沿途响应服务请求。当到达另一端时,磁头改变移动方向,继续处理。磁头在磁盘上来回扫描。

SCAN示例:

5.2.4循环扫描调度算法CSCAN

CSCAN算法提供比SCAN算法更为均匀的等待时间。

磁头从磁盘一段移到另一端,随着移动不断的处理请求。不过,当磁头移到另一端时,马上返回到磁盘开始,返回时并不处理请求。

将柱面当作一个环链,将最后柱面和第一柱面相连。

CSCAN示例:

5.2.5CLOOK

C-SCAN的一种形式。

磁头只移动到一个方向上最远的请求为止。接着,它马上回头,而不是继续到磁盘的尽头。

5.2.6NStepSCAN和FSCAN调度算法

NStepSCAN算法:

“磁臂粘着”现象:进程反复请求对某一磁道的I/O操作;

将磁盘请求队列分为若干个长度为N的子队列;

按FCFS算法依次处理子队列;

每个子队列使用SCAN算法。

FSCAN算法:

是N步SCAN算法的简化;

请求队列分为两个子队列: 一是当前所有请求队列,按SCAN算法调度; 二是扫描期间,新出现的请求队列,推迟到下一次扫描时处理。

标签:慕课,操作系统,缓冲,进程,缓冲区,磁盘,CPU,输入,设备
From: https://blog.csdn.net/w18781614420/article/details/139372385

相关文章

  • kali Linux 操作系统更新命令脚本
    kaliLinux操作系统更新命令脚本执行方法sudoaptinstalldos2unixdos2unixupdate_script.shsudo./update_script.shkaliLinux操作系统更新命令脚本#!/bin/bashclearRED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[0;33m'BLUE="\033[0;3......
  • VMware 安装 deepin 操作系统详细教程
    一、环境准备1、安装VMwareWorkstationplayer,可以前往VMware官网VMware-DeliveringaDigitalFoundationForBusinesses进行下载安装,版本选择17或者更高版本的17Pro,如果需要使用虚拟网络管理等功能,请选择合适版本安装。2、准备好VMware环境后,提前下载deepin的 iso镜......
  • 基于n-gram语言模型实现输入单词推荐功能(附源码及语料库)
    一、开发环境1.语言:python2.开源工具:nltk3.语料库:维基百科英文语料库二、环境配置关于pyhton项目对nltk的部署,我看了以下文章。NLTK库安装教程在安装nltk库的过程中,我又遇到了pip更新的问题,看了以下文章。PIP更新​​​​三、实验要求利用n-gram语言模型完成,输入文字......
  • 操作系统之CPU调度算法——FCFS、SJF和SRTF
    目录前言 FCFS先来先服务调度算法定义与步骤 举例SJF短作业优先调度算法定义与步骤举例SRTF最短剩余时间优先调度算法定义与步骤举例结束语​​​​​​​前言 今天是坚持写博客的第12天,为不断坚持的自己和大家点赞。最近经历了一场时长半小时的答辩,还是需......
  • Linux操作系统简介
    Linux操作系统1.什么是LinuxLinux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工......
  • C++学习: 输入与输出
    一、输出使用cout函数,用<<分隔。注:需要头文件#include<iostream>,所有符号都为英文。例:#include<iostream>intmain(){cout<<"hello!"<<endl;//endl或'\n'换行return0;}输出结果:hello!endl就是endline(换行)的意思。二、输入一、普通输入......
  • draw.io 输入数学公式
    首先我们要把数学排版功能打开:然后输入数学公式:AsciiMath公式由`包裹,如:`a2+b2=c^2`LaTeX公式由$$包裹,如:$$\sqrt{3×-1}+(1+x)^2$$行内LaTeX公式由\(和\)包裹,如:\(\sqrt{3×-1}+(1+x)^2\)获得渲染结果:参考:Usemathematicaltypesettingind......
  • 01Linux以及操作系统概述
    课程目标1.了解现代操作系统的整体构成及发展历史2.了解Linux操作系统及其分支版本3.直观上理解服务器端与桌面端版本的区别课程实验1.通过对CentOS和Ubuntu的演示,直观理解Linux与Windows的异同课堂引入本章内容主要为大家详细讲解Linux操作系统(以下简称Linux)的基本情......
  • 需要检查 EDA 工具在自身和操作系统(Linux)中的依赖性的最佳做法
    将EDA工具套件发布到生产计算环境(RHEL)中可能会出现问题,尤其是在其发布或操作系统级别中缺少某些共享对象的情况下。迁移操作系统也会带来同样的问题,因为glibc版本可能会更改,其他系统级别的.so文件也可能会丢失。EDA工具套件(例如SynopsysVCS)可能会有数十个甚至数百个用......
  • C++ IO流:控制台输入输出
    C++输入输出头文件#include<iostream>,常用于控制台打印/OJ数据读取分别对应:控制台IO流/文件流/字符串流,本文主要介绍控制台输出输出流cin>>空格分隔cout<<控制台输出已知待读取元素的数量:cin>>n未知待读取元素的数量:while(cin>>val)另外,可以整行读取数据,然......