操作系统(西电版)1-6章总结归纳

第一章 操作系统引论

1.1 操作系统的目标和作用

计算机系统的组成

硬件系统(裸机):CPU、存储器(主存、辅存)、输入/输出设备等。

软件系统:系统软件、应用软件。

系统软件:管理计算机本身的操作。如操作系统、编译…

应用软件:提供给用户进行解题。如科学计算、事物管理…

方便性------配置OS后使计算机更容易使用。

1.1.1  操作系统的目标

有效性------改善系统的资源利用率及提高系统的吞吐量。

可扩充性----操作系统采用层次化结构,便于增加新的功能模块和修改老的功能模块。

开放性------要求OS具有统一的开放的环境。

1.1.2 操作系统的作用

OS作为用户与计算机硬件系统之间的接口

OS作为计算机系统资源的管理者

处理机管理   用于分配和控制处理机

存储器管理   主要负责内存的分配与回收

I/O设备管理  负责I/O设备的分配与操纵

文件管理     负责文件的存取、共享和保护

OS用作扩充机器

1.2 操作系统的发展过程

1.2.2 单道批处理系统

缺点是系统中的资源得不到充分的利用。这是因为在内存中仅有一道程序,每逢该程序在运行中发出I/O请求后,CUP便处于等待状态,必须在其 I/O完成后才继续运行。

1.2.3 多道批处理系统

优点:(1) 资源利用率高        (2) 系统吞吐量大

缺点:(1) 平均周转时间长      (2) 无交互能力

1.2.4 分时系统 (人—机交互  共享主机  便于用户上机)

1.2.5 实时系统

实 时 系 统

分 时 系 统

多路性

体现在对多路的现场信息进行采集、对多个对象或多个执行机构进行控制。

按分时原则为多个终端用户服务。

独立性

每个终端用户向系统提出服务请求时,彼此独立操作,互不干扰;对信息的采集和对象的控制也彼此互不干扰。

每个用户各占一个终端,彼此互不干扰,独立操作,。

及时性

以控制对象所要求的开始截止时间或完成截止时间来确定,一般为秒级。

用户的请求能在短时间(用户能接受的)内获得响应。

交互性

人与系统的交互,仅限于访问系统中某些特定的专用服务程序。

用户与系统进行广泛的人机对话,系统能向终端用户提供数据处理服务,资源共享等服务。

可靠性 

高度可靠 

可靠程度较低 

1.3  操作系统的基本特性

1.3.1 并发性(Concurrence)

   并行性是指两个或多个事件在同一时刻发生

   并发性是指两个或多个事件在同一时间间隔内发生

   进程是指在系统中能独立运行并作为资源分配的基本单位

1.3.2 共享性(Sharing)

   互斥共享方式    同时访问方式

1.3.3 虚拟性(Virtual)

1.3.4 异步性(Asynchronism)

1.4   操作系统的主要功能

1.4.1 处理机管理功能 (进程控制 进程同步 进程通信 调度)

1.4.2 存储器管理功能(内存分配 内存保护 地址映射 内存扩充)

1.4.3 设备IO管理功能缓冲管理 设备分配 设备处理)

1.4.4 文件管理功能(文件存储空间管理 目录管理 文件的读/写管理和保护)

1.4.5 操作系统与用户之间的接口用户接口 程序接口

1.5 微内核OS结构

微内核的基本功能

       (1) 进程(线程)管理。

       (2) 低级存储器管理。

       (3) 中断和陷入处理

微内核操作系统的优点

       (1) 提高了系统的可扩展性。

       (2) 增强了系统的可靠性。

       (3) 可移植性。

       (4) 提供了对分布式系统的支持

       (5) 融入了面向对象技术

第二章  进程描述与控制

2.1   前趋图和程序执行

2.1.1 前趋

前趋图中的每个结点可以表示一条语句、一个程序段或一个进程,结点间的有向边表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)“→”,

△注意:前趋图中必须不存在循环

2.1.2程序顺序执行时的特征(顺序性 封闭性 可再现性

2.1.3程序并发执行时的特征(间断性 失去封闭性 不可再现性

2.2 进程的描述

进程是程序的一次执行,该程序可以与其它程序并发执行

动态性

进程的实质是程序的一次执行过程,因此,动态特征是进程最重要的特征。

并发性

没有为之建立进程的程序是不能并发执行的,仅当为之建立一个进程后才能参加并发执行。

独立性

进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。

异步性

由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。

结构特征

为了控制和管理进程,系统为每个进程设立一个进程控制块--PCB

进程与程序的区别    

  1. 程序是进程的静态文本,进程是执行程序的动态过程
  2. 一个进程可以执行一个或多个程序,几个进程可以同时执行一个程序
  3. 程序可作为软件资源长期保存,进程只是一次执行过程,是暂时的,不能长期保存
  4. 进程是系统分配调度的独立单位,能与其他进程并发执行

2.2.2 进程的基本状态及转换

2.2.4   进程管理中的数据结构(内存表、设备表、文件表和用于进程管理的进程表PCB

PCB作用:

(1) 作为独立运行基本单位的标志。
(2) 能实现间断性运行方式。
(3) 提供进程管理所需要的信息。
(4) 提供进程调度所需要的信息。
(5) 实现与其它进程的同步与通信

PCB中的信息( 进程标识符 处理机状态 进程调度信息 进程控制信息)

进程控制块PCB的组织方式(线性 链接 索引)

2.3   进程控制

2.3.1  操作系统内核

支撑功能中断处理 时钟管理 原语操作

资源管理功能进程管理 存储器管理 设备管理

2.3.2  进程创建

进程图

进程图就是用于描述进程间关系的一棵有向树。

前趋图描述的是任务(或进程)之间的前趋关系;只有在前趋进程完成后,其后继进程才能运行;

进程图中,创建者和被创建者可以并发执行,也可以是父进程等待其所有的子进程结束后再执行,这完全取决于创建原语和创建者的需要。

1.进程创建(用户登录 作业调度 提供服务 应用请求 )

(1)  申请空白PCB        

(2) 为新进程分配资源         

(3) 初始化进程控制块

(4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列

2.进程终止(正常结束 异常结束 外界干预)

       (1) 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。

       (2) 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。

      (3) 若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程。

      (4) 将被终止进程所拥有的全部资源,或者归还给其父进程, 或者归还给系统。

      (5) 将被终止进程(它的PCB)从所在队列(或链表)中移出, 等待其他程序来搜集信息。

3.进程阻塞(向系统请求共享资源失败 等待某种操作完成 新数据尚未到达 等待新任务的到达)

4.进程的唤醒(被阻塞进程期待的事件发生)

5.进程挂起

6.进程激活

2.4   进程同步

1、两种制约关系

间接相互制约关系(进程—资源—进程)       进程的互斥

直接相互制约关系(进程—进程)             进程的同步

互斥(左)同步(右)

  1. 临界资源(临界资源却是一次只能供一个进程使用,使用完后归还系统)
  2. 临界区(为实现对临界资源的互斥访问,应保证诸进程互斥地进入自己的临界区。把每个进程中访问临界资源的那段代码称为临界区)
  3. 同步机制应遵循的准则1空闲让进 2忙则等待 3有限等待 4让权等待

空闲让进:当无进程处于临界区内时,必须让一个要求进入临界区的进程立即进入,以有效地利用临界资源

忙则等待:当已有进程处于临界区内时,其它试图进入临界区的进程必须等待,以保证它们互斥地进入临界区。

有限等待:对要求进入临界区的进程,应在有限时间内使之进入,以免陷入“死等”。

让权等待:对于等待进入临界区的进程而言,它必须立即释放处理机,以免进程“忙等

  1. 硬件同步机制(关中断 利用Test-and-Set指令 利用Swap指令)

缺点:① 滥用关中断权力可能导致严重后果;② 关中断时间过长,会影响系统效率③ 关中断方法也不适用于多CPU 系统,因为在一个处理器上关中断并不能防止进程在其它处理器上执行相同的临界段代码。

  1. **信号量机制

整形信号量 S ( wait(S)和signal (S)被称为P、V操作)

*P操作:意味着请求分配一个单位资源

*V操作:意味着释放一个单位资源

    P(S): ① S∶=S-1;

          ② 若S≥0,则调用P(S)的进程继续运行;

          ③ 若S<0,则调用P(S)的进程被阻塞,并把它插入到等待信号量S的阻塞队列中。 

    V(S):① S∶=S+1;

         ② 若S>0,则调用V(S)的进程继续运行;

         ③ 若S≤0,从等待信号量S的阻塞队列中唤醒头一个进程, 然后调用V(S)的进程继续运行。

记录型信号量

AND型信号量

信号量集

  1. 信号量的应用

***利用信号量实现进程互斥与同步

互斥例子(S表示共享资源,S初始值为2)       同步例子 (设信号量S1:缓冲区中有否可供加的信息,初始值为0; 信号量S2:缓冲区是否为空,初始值为1; )

**利用信号量实现前趋关系

 var a,b,c,d,e,f,g:=semaphore:=0,0,0,0,0,0,0;

begin

   parbegin

      begin   S1;V(a);V(b);end;

      begin   P(a);S2;V(c);V(d);end;

      begin   P(b);S3;V(e);end;

      begin   P(c);S4;V(f);end;

      begin   P(d);S5;V(g);end;

      begin   P(e);P(f);P(g);S6;end;

    parend

end

  1. 管程机制 (大量的同步操作分散在各个进程中。这不仅给系统的管理带来了麻烦,而且还会因同步操作的使用不当而导致系统死锁。

2.5   经典进程的同步问题

生产者-消费者(互斥信号量mutex初始1 使诸进程对缓冲池实现互斥访问;利用empty初始n和full初始0 计数信号量分别表示空缓冲及满缓冲的数量)

2.6   进程通信 (指相关进程之间所进行的信息交换)

1.共享存储器方式

相互通信的进程通过共享某些数据结构或存储区来进行通信,可分为共享数据结构方式、共享存储区方式;

2.消息传递通信方式

进程间的信息交换以消息或报文为单位,程序员利用一组通信命令(原语)来实现通信,可分为直接、间接通信方式;

*直接通信方式(以内存缓冲区为基础,有较高的通信速度,流行于单处理机多道程序系统)

*间接通信方式(进程之间的通信,需要通过作为某种共享数据结构的实体(信箱)既可实现实时通信,也可实现非实时通信)

3.共享文件方式

利用共享文件来实现进程间的通信 共享文件称为管道(Pipe),因而该方式又称为管道通信。

△为了协调双方通信,管道通信必须提供三方面的协调能力:互斥、同步、对方是否存在。

2.7   线程

程序并发执行所需付出的时空开销(创建进程 撤销进程 进程切换)

1.线程——作为调度和分派的基本单位

2.线程优点:

(1)易于调度。

(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一个程序的不同部分。

(3)开销少。创建线程比创建进程要快,所需开销少,占用的资源也少;

(4)充分发挥多处理器的功能。通过创建多线程进程,每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分的运行。

**3.进程与线程的区别

(1)调度线程作为处理器调度和分配的基本单位,而进程是作为拥有资源的基本单位

(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行

(3)拥有资源:进程是拥有资源的一个独立单位,有自己独立的地址空间;线程不拥有系统资源,但可以访问隶属于进程的资源,共享进程的地址空间.

(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

(5)支持多处理机系统

4.进程和线程的关系

(1)二者均可并发执行.

(2)线程是指进程内的一个执行单元,也是进程内的可调度实体。一个程序至少有一个进程,一个进程至少有一个线程,一个线程只属于一个进程.

(3)资源分配给进程,同一进程的所有线程共享该进程的所有资源。

(4)处理机分给线程,即真正在处理机上运行的是线程。

(5)线程在执行过程中,需要协作同步。

5.多线程OS中的进程属性

(1) 进程是一个可拥有资源的基本单位。
(2) 多个线程可并发执行。
(3) 进程已不是可执行的实体。

6.内核支持线程KST

优点:

  1. 在多处理器系统中,内核能够同时调度同一进程中的多个线程并行执行
    (2) 如果进程中的一个线程被阻塞了内核可以调度该进程或其它进程中的其它线程占有处理器运行
    (3) 内核支持线程具有很小的数据结构和堆栈,线程的切换比较快,切换开销小
    (4) 内核本身也可以采用多线程技术,可以提高系统的执行速度和效率。
  1. 用户级线程ULT(用户级线程是与内核无关的)

优点:

(1) 线程切换不需要转换到内核空间。
(2) 调度算法可以是进程专用的。
(3) 用户级线程的实现与OS平台无关,因为对于线程管理的代码是属于用户程序的一部分,所有的     应用程序都可以对之进行共享。

8.有些OS把用户级线程和内核支持线程两种方式进行组合,提供了组合方式ULT/KST 线程。

第三章处理机调度与死锁

3.1  处理机调度的层次调度算法的目标

  1. 在多道程序系统中,调度的实质是一种资源分配,处理机调度是对处理机资源进行分配。
  2. 处理机调度算法是指根据处理机分配策略所规定的处理机分配算法

3.1.1  处理机调度的层次

1. 高级调度

     又称长程调度或作业调度,它的调度对象是作业,主要应用于批处理系统
2. 低级调度

     又称为进程调度或短程调度,调度对象是进程(或内核级线程),主要用于批处理系统、分时系统和实时系统中
3. 中级调度

     又称为内存调度。主要目的是提高内存利用率和系统吞吐量。把那些暂时不能运行的进程,调至外存等待

3.1.2   处理机调度算法的目标

1.共同目标

 (1) 资源利用率(所有资源都尽可能地保持忙碌状态)

  1. 公平性(诸进程都获得合理的CPU 时间,不会发生进程饥饿现象)
  2.  平衡性(为使系统中的CPU和各种外部IO设备都能经常处于忙碌状态,调度算法应尽可能保持系统资源使用的平衡性。)
  3. 策略强制执行
  1. 批处理系统的目标
  1. 平均周转时间短(带权周转时间,即作业的周转时间T与系统为它提供服务的时间Ts之比)
  2. 系统吞吐量高
  3. 处理机利用率高
  1. 分时系统的目标

(1) 响应时间快(2) 均衡性

  1. 实时系统的目标

(1) 截止时间的保证(2) 可预测性

3.2  作业与作业调度

3.2.1  批处理系统中的作业

作业和作业步( 作业不仅包含程序和数据,而且还应有作业说明书 对作业的加工步骤称为一个作业步

作业控制块JCB(保存了系统对作业进行管理和调度所需的全部信息)

作业运行的三个阶段和三种状态

  1. 作业从进入系统到运行结束,通常需要经历收容、运行和完成三个阶段。相应的作业也就有“后备状态”、“运行状态”和“完成状态”。

3.2.2  作业调度的主要任务(接纳多少个作业 接纳哪些作业)

3.2.3  先来先服务(FCFS)

算法:按时间排队,早来先调度。 

  1. 优点:公平 实现简单
  2. 缺点:对短作业不利

3.2.4  短作业优先(SJF)  周转时间=完成时间-到达时间 带权周转时间=周转时间/运行时间

算法:指对短作业或短进程优先调度

  1. 优点:最短的平均等待时间(周转时间)
  2. 缺点:

(1) 该算法不利于长作业 产生饥饿现象

(2) 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理

(3) 由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度

3.2.5优先级调度算法

各个作业的紧迫程度不同,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的。

3.2.6高响应比优先调度算法HRRN

优点:

高响应比优先调度算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长

(响应比)

   (1) 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而该算法有利于短作业

   (2) 当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务

   (3) 对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高, 从而也可获得处理机。

3.3  进程调度

3.3.1  进程调度的任务、机制和方式

任务: (1) 保存处理机的现场信息。(2) 按某种算法选取进程。(3) 把处理器分配给进程。

机制:  (1) 排队器  (2) 分派器  (3) 上下文切换器

进程调度方式:(抢占 非抢占)

1.抢占方式

可以防止一个长进程长时间地占用处理机 在分时系统中,只有采用抢占方式才有可能实现人—机交互。在实时系统中,抢占方式能满足实时任务的需求。但抢占方式比较复杂,所需付出的系统开销也较大

  1. 非抢占方式

不会因为时钟中断或任何其它原因去抢占当前正在运行进程的处理机,直至该进程完成或阻塞

3.3.2  轮转调度算法RR(将所有的就绪进程按FCFS策略排成一个就绪队列。系统可设置每隔一定时间(如30ms)便产生一次中断)

  1. 优点:公平:响应快,适用于分时操作系统:不会产生饥饿
    缺点:由于高频率的进程切换,因此有一定开销; 不区分任务的紧急程度。

实现:① 若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将它从就绪队列中删除,再调度就绪队列中队首的进程运行,并启动一个新的时间片。

② 在一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将它送往就绪队列的末尾。

RR时间片大小的确定(过小频繁调度增加系统开销 过大退化为FCFS)

3.3.3  优先级调度算法(静态优先级 动态优先级)

  1. 优点:用优先级区分紧急程度、重要程度,适用于实时操作系统。可灵活地调整对各种作业/进程的偏好程度
    缺点:若源源不断地有高优先级进程到来,则可能导致饥饿

3.3.4  多队列调度算法

3.3.5  多级反馈队列调度算法

  1. 优点:对各类型进程相对公平(FCFS的优点) ;每个新到达的进程都可以很快就得到响应(RR的优点) ;短进程只用较少的时间就可完成(SPF的优点) :不必实现估计进程的运行时间(避免用户作假) ;可灵活地调整对各类进程的偏好程度,比如CPU密集型进程、I/O密集型进程

(1) 应设置多个就绪队列

(2) 当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾

(3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行。

3.3.6  基于公平原则的调度算法(1.保证调度算法 (性能保证:该算法可以做到调度的公平性 证每个进程都获得相同的处理机时间1/n) 2.公平分享调度法)

3.4  实时调度

3.4.1 实现实时调度的基本条件

1. 提供必要的信息 (就绪时间 开始截止时间和完成截止事件 事件处理时间 资源要求 优先级)

2. 系统处理能力强

3. 采用抢占式调度机制

4. 具有快速切换机制

3.4.2 实时调度算法的分类

1. 非抢占式调度算法

(1)非抢占式轮转调度算法            (2) 非抢占式优先调度算法

2. 抢占式调度算法

(1)基于时钟中断的抢占式优先权调度算法   (2) 立即抢占的优先权调度算法

3.4.3 常用的几种实时调度算法

最早截止时间优先即EDF(Earliest Deadline First)算法

最低松弛度优先即LLF(Least Laxity First)算法

3.5  死锁概述

3.5.1  资源问题

1) 可重用性资源 (可供用户重复使用多次的资源 进程在运行期间既不能创建也不能删除它)

2) 可消耗性资源(在进程运行期间,由进程动态地创建和消耗的)

  1. 可抢占性资源(是指某进程在获得这类资源后,该资源可以再被其它进程或系统抢占)
  2. 不可抢占性资源(一旦系统把某资源分配给该进程后就不能将它强行收回只能在进程用完后自行释放)
    3.5.2  计算机系统中的死锁
  1. 竞争不可抢占性资源引起死锁(左)
  2. 竞争可消耗资源引起死锁(右)
  3. 进程推进顺序不当引起死锁(进程在运行过程中,对资源进行申请和释放的顺序是否合法

3.5.3 产生死锁的必要条件

互斥条件

进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。

请求和保持

当进程因请求资源而阻塞时,对已获得的资源保持不放。

不剥夺条件不可抢占条件

进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。

环路等待条件循环等待

在发生死锁时,必然存在一个进程--资源的环形链。

3.5.4处理死锁的办法

(1) 预防死锁(2) 避免死锁(3) 检测死锁(4) 解除死锁

3.6  预防死锁

  1. 破坏“请求和保持”条件 (当一个进程在请求资源时,它不能持有不可抢占资源)

第一种协议:所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源。

第二种协议:是对第一种协议的改进,它允许一个进程只获得运行初期所需的资源后,便开始运行。

  1. 破坏“不可抢占”条件

协议规定:当一个已经保持了某些不可被抢占资源的进程,提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请

  1. 破坏“循环等待”条件

对系统所有资源类型进行线性排序,并赋予不同的序号

3.7  避免死锁

3.7.0定义:在资源动态分配过程中,防止系统进入不安全状态,施加的限制条件较弱,可能获得较好的系统性能,目前常用此方法来避免发生死锁

3.7.1系统的安全状态系统进行资源分配之前,应先计算此次资源分配的安全性。安全状态是指系统能按某种进程顺序(P1, P2, …,Pn)(称〈P1, P2, …, Pn〉序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。

3.7.2 利用银行家算法避免死锁(第三章PPT)

可利用资源向量Available初始值是系统中所配置的该类全部可用资源的数目

最大需求矩阵Max:定义了系统中n个进程中的每一个进程对m类资源的最大需求

分配矩阵Allocation:它定义了系统中每一类资源当前已分配给每一进程的资源数

需求矩阵Need:表示每一个进程尚需的各类资源数Need[i,j]=Max[i,j]-Allocation[i,j]

例题:

注:题中共四种资源,P0的Allocation为(0,0,3,2)表示已分配给P0的第一种资源和第二种资源为0个,第三种资源3个,第四种资源2个。

利用安全性算法对上面的状态进行分析(见下表),找到了一个安全序列{P0,P3,P4,P1,P2},故系统是安全的。

3.8  死锁的检测与解除

3.8.1 死锁检测

  1. 允许死锁发生,操作系统不断监视系统进展情况,判断死锁是否发生
  2. 一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行

检测时机

  1. 定时检测
  2. 当进程阻塞时检测死锁(其缺点是系统的开销大)
  3. 系统资源利用率下降时检测死锁

检测方法(资源分配图法)

圆圈代表一个进程,方框代表一类资源,方框内的圆圈代表该类资源的一个单位的资源。

这张图,进程P1已经分得了两个R1资源,请求了一个R2资源;进程P2已经分得了两个R1资源,并又请求了一个R2资源;进程P2分得了一个R1资源和一个R2资源,并又请求了一个R1资源。

  1. 边集中各边的含义:

分配边 资源–>进程 的一条有向边 <rj,pi>

申请边 进程–>资源 的一条有向边 <pi,rj>

  1. 死锁定理:

如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁

1)在资源分配图中,找出既不阻塞又不孤点的进程Pi(既找出一条有向边与它相连,且该有向边对应的资源的申请量小于等于系统中已有的空闲资源数量),消去它所有的请求边和分配边,使之成为孤立的节点。

2)进程Pi所释放的资源,可以唤醒某些因等待这些资源而阻塞的进程,原来的阻塞进程可能变为非阻塞进程。

按照死锁定理中,第一步找出的进程为P1,因为它申请的资源还有,故等P1进程完了后,将P1持有的进程资源释放之后,将P1的申请边和持有边给删除,就如(b)图,此时,P2申请的资源可以得到满足,所以,P2可以正常的执行,所以P2的相关边也可以删除,最后,整个图中没有有向边的存在,那么就说明没有死锁,相反,如果说资源分配图不可以进行简化,那么就说明系统出现了死锁。

死锁的解除

重要的是以最小的代价解除死锁,恢复系统运

1)资源剥夺法。将一些死锁进程暂时挂起来,并且抢占它的资源,并将这些资源分配给其他的死锁进程 ,要注意的是应该防止被挂起的进程长时间得不到资源而处于资源匮乏的状态

2)撤销进程法。强制撤销部分甚至全部死锁并剥夺这些进程的资源。撤销的原则可以按照进程优先级和撤销进程的代价高低进行。

第四章存储器管理

用户源程序变为一个可在内存中执行的程序,通常需要经过以下几步:

(1)编译(2)链接(3)装入(内存)

程序的装入方式

  1. 绝对装入方式
  2. 可重定位装入
  3. 动态运行时装入

连续分配方式(与之相反的是离散分配方式分页存储管理、分段存储管理、段页式存储管理)

1.单一连续分配

方法简单,易于实现

不支持多道程序设计

主存利用率不高

程序的运行受主存容量限制

2.固定分区分配

内存分配、回收算法简单,容易实现

主存空间利用率不高,容易造成内零头

3.动态分区分配

1)最佳适应法 :

为作业选择分区时总是寻找其大小最接近于作业所要求的存储区域。

2)最坏适应法:

与最佳适应法相反,它在作业选择存储块时,总是寻找最大的空白区。

3)最先适应法(首次适应):

为作业选择分区时总是按地址从低到高搜索,只要找到可以容纳该作业的空白块,就把该空白块分配给该作业。

4可重定位分区分配

1用“紧凑”技术解决“外零头”

    解决了可变分区分配所引入的“外零头”问题。(优点)

    消除内存碎片,提高内存利用率。(优点)

提高硬件成本,紧凑时花费CPU时间。(缺点)    

2动态重定位

动态运行时装入方式将程序中的相对地址转换为物理地址的工作,被推迟到程序指令真正要执行时进行。

对换

对换” ,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。

换出

每当一进程由于创建子进程而需要更多的内存空间,但又无足够的内存空间等情况发生时,系统应将某进程换出

换入

对换进程将定时执行换入操作,它首先查看PCB集合中所有进程的状态,从中找出“就绪”状态但已换出的进程。当有许多这样的进程时,它将选择其中已换出到磁盘上时间最久的进程作为换入进程,为它申请内存。如果申请成功,可直接将进程从外存调入内存;如果失败,则需先将内存中的某些进程换出,腾出足够的内存空间后,再将进程调入。

基本分页存储管理方式

页面和物理块

分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame)

页面大小512B-8KB。

页面太小,一方面虽然可使内存碎片减小,从而减少了内存碎片的总空间, 有利于提高内存利用率,但另一方面也会使每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存

页面较大,虽然可以减少页表的长度,提高页面换进换出的速度,但却又会使页内碎片增大。

页内地址结构

若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得:

P=INT[A/L]   d=[A]mod L

**页表

  在分页系统中,允许将进程的每一页离散地存储在内存的任一物理块中,系统为每个进程建立一张页面映射表,简称页表页表的作用是实现从页号到物理块号的地址映射。

  1. 优点:没有外碎片,每个内碎片不超过页的大小

 

页表的每一个表目除了包含指向物理块的指针外,还包括一个存取控制字段。这个表目也称为页描述子

地址变换机构

页表大多驻留在内存中在系统中设置一个页表寄存器PTR,其中存放页表在内存的始址和页表的长度进程未执行时,页表的始址和长度是存放在本进程的PCB中,当调度程序调度到某进程时,才将它们装入到页面寄存器PTR中。

快表:

为了提高地址变换速度,可在地址变换机构中,增设一个具有并行查寻能力的特殊高速缓冲存储器,又称为“联想存储器”或“快表”(右图)

在页式内存管理中有两个重要的问题

  1. 虚拟物理地址到物理地址转换要快(快表解决)
  2. 当虚拟空间很大的时候页表也会变的很大(多级页表解决)

两级页表

分段存储管理

  1. 优点:
  1. 方便编程 2) 分段共享 3) 信息保护  5) 动态链接 4) 动态增长
  1. 缺点:会产生碎片

作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。每个段都有自己的名字,通常用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间。

段页式存储

段页式管理是段式管理和页式管理相结合而成,具有两者的优点

复杂性和开销增加,需要的硬件以及占用的内存也有所增加,使得执行速度下降。

在段页式系统中,为了获得一条指令或数据,须三次访问内存

分段存储和分页存储的区别

  (1) 页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。或者说,分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。

  (2) 页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。

  (3) 分页的作业地址空间是一维的,即单一的线性地址空间,程序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。

几个碎片的区分分页存储会产生内存碎片、不会产生外存碎片 分段存储:会产生外存碎片、不会产生内存碎片 段页式存储:产生内存碎片、外存碎片。

1.内部碎片:

当一个进程装入到固定大小的分区块(比如页)时,假如进程所需空间小于分区块,则分区块的剩余的空间将无法被系统使用,称为内部碎片。

2.外部碎片:

指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。

3.存储管理中都可能产生的碎片:

除了内部碎片和外部碎片,在“分页存储”中,可能产生“页内碎片”,页内碎片是由于进程的最后一页经常装不满一块而形成了不可利用的碎片。

虚拟存储器

为什么要引入虚拟存储器(是指具有请求调入功能置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统 运行速度接近于内存速度,而每位的成本却又接近于外存)

(1) 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行;
(2) 有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其它大量的作业留在外存上等待。

虚拟存储器产生的基本原理局部性原理( 时间局限性(大量循环操作) 空间局限性(程序顺序执行))

(1) 程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的。

(2) 程序将会在一段时间内,都局限在这些过程的范围内运行。

(3) 程序中存在许多循环结构,这些虽然只由少数指令构成,但是它们将多次执行。

(4) 程序中还包括许多对数据结构的处理,如对数组进行操作,它们往往都局限于很小的范围内。

如何实现虚拟存储器

  1. 请求分页系统

硬件:请求分页的页表机制,它是在纯分页的页表机制上增加若干项而形成的,作为请求分页的数据结构;

     ② 缺页中断机构,即每当用户程序要访问的页面尚未调入内存时便产生一缺页中断,以请求OS将所缺的页调入内存;

     ③ 地址变换机构,它同样是在纯分页地址变换机构的基础上发展形成的。

软件:实现请求分页的软件

  1. 请求分段系统

硬件:请求分段的段表机制,这是在纯分段的段表机制基础上,增加若干项而形成的;

    ② 缺段中断机构,每当用户程序要访问的段尚未调入内存时,产生一缺段中断,以请求OS将所缺的段调入内存;

    ③ 地址变换机构, 它同样是在纯分段地址变换机构的基础上发展形成的。

虚拟存储器的特征

1.   离散性 离散性是指在内存分配时采用离散分配的方式,这是其它几个特征的基础。没有离散性,也就不可能实现虚拟存储器。

2.   多次性 多次性是指一个作业被分成多次地调入内存运行,亦即在作业运行时没有必要将其全部装入,只须将当前要运行的那部分程序和数据装入内存即可;以后运行到那一部分时,再将它调入。多次性是虚拟存储器最重要的特征。

3.   对换性 对换性是指允许在作业的运行过程中换进、换出。

4.   虚拟性 是指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。 

请求分页存储管理方式

请求分页中的硬件支持(PPT内容)

  1. 页表机制(比普通多)

  1. 状态位P   用于指示该页是否已调入内存,供程序访问时参考。
  2. 访问字段A  用于记录本页在一段时间内被访问的次数,或最近已有多长时间未被访问,提供给置换算法选择换出页面时参考。
  3. 修改位M  表示该页在调入内存后是否被修改过。作为该页换出时是否写回外存的依据。
  4. 外存地址  用于指出该页在外存上的地址,通常是物理块号,供调入该页时使用。    
  1. 缺页中断机构

 ①在指令执行期间产生和处理中断信号。一般中断是在指令执行完才检查是否有中断请求,而缺页中断是在指令执行期间,发现所要访问的指令或数据不在内存时产生和处理的。

 ②一条指令在执行期间,可能产生多次缺页中断

  1. 地址变换机构

最小物理块数的确定

是指能保证进程正常运行所需的最小物理块数。当系统为进程分配的物理块数少于此值时,进程将无法运行。进程应获得的最少物理块数与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。

物理块的分配策略

1) 固定分配局部置换(固定分配不能全局置换)

2) 可变分配全局置换

3) 可变分配局部置换

固定分配指的是分配给一个进程的物理块数不变

可变分配是分配给一个进程的物理块数可以发生改变

局部置换指的是发生缺页的时候,只能自己进程中的物理块进行置换

全局置换指的是可以将操作系统的空闲物理块甚至其他进程的物理块进行分配

物理块分配算法

1) 平均分配算法(貌似公平,但实际上是不公平的,因为它未考虑到各进程本身的大小)

2) 按比例分配算法(根据进程的大小按比例分配物理块)

3) 考虑优先权的分配算法从(一部分按比例地分配给各进程;另一部分则根据各进程的优先权,适当地增加其相应份额后,分配给各进程)

调页策略

  1. 何时调入页面
  • 预调页策略 就是将那些预计在不久之后便会被访问的页面预先调入内存。
  • 请求调页策略 当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便立即提出请求,由OS将其所需页面调入内存。
  1. 从何处调入页面

(1) 系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。为此,在进程运行前, 便须将与该进程有关的文件,从文件区拷贝到对换区。

(2)系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出,以后再调入时,仍从文件区直接调入。但对于那些可能被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。

注:

对换区是采用连续分配方式,而文件区采用离散分配方式,故对换区的磁盘I/O速度比文件区的高

3. 页面调入过程

        每当程序所要访问的页面未在内存时,便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后, 转入缺页中断处理程序。该程序通过查找页表,得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表如果内存已满,则须先按照某种置换算法从内存中选出一页准备换出如果该页未被修改过,可不必将该页写回磁盘;但如果此页已被修改,则必须将它写回磁盘然后再把所缺的页调入内存,并修改页表中的相应表项,置其存在位为“1”,并将此页表项写入快表中。

页面置换算法

  1. 最佳(Optimal)置换算法(被淘汰页面,将是以后永不使用的,或是在最长时间内不再被访问的页面)

优缺点

(1)优点:最佳置换算法可以保证获得最低的缺页率

(2)缺点:最佳置换算法是一种理想化算法,具有较好的性能,但是实际上无法实现(无法预知一个进程中的若干页面哪一个最长时间不被访问)

2. 先进先出(FIFO)页面置换算法

(1)优点:先进先出算法实现简单,是最直观的一个算法

(2)缺点:先进先出的性能最差,因为与通常页面的使用规则不符合,所以实际应用少

  1. 最近最久未使用(LRU)置换算法(是根据页面调入内存后的使用情况进行决策的)

(1)优点:由于考虑程序访问的时间局部性,一般能有较好的性能,实际应用多

(2)缺点:实现需要较多的硬件支持,会增加硬件成本

 请求分段存储管理方式

硬件支持

  1. 段表机制

除了段名 段长 段在内存中的起始地址外还增加了以下诸项:

(1) 存取方式 (2) 访问字A (3)修改位M (4) 存在位P (5) 增补位 (6) 外存始址

2. 缺段中断机构

3.地址变换机构

分段的共享与保护

分段共享

  1. 共享段表

 

2. 共享段的分配

 在为共享段分配内存时,对第一个请求使用该共享段的进程,由系统为该共享段分配一物理区,再把共享段调入该区,同时将该区的始址填入请求进程的段表的相应项中,还须在共享段表中增加一表项,填写有关数据,把count置为1;之后,当又有其它进程需要调用该共享段时,由于该共享段已被调入内存,故此时无须再为该段分配内存,而只需在调用进程的段表中,增加一表项,填写该共享段的物理地址;在共享段的段表中,填上调用进程的进程名、存取控制等,再执行count∶=count+1操作,以表明有两个进程共享该段。

  1. 共享段的回收

当共享此段的某进程不再需要该段时,应将该段释放, 包括撤消在该进程段表中共享段所对应的表项,以及执行count∶=count-1操作。若结果为0,则须由系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时已没有进程使用该段;否则(减1结果不为0),则只是取消调用者进程在共享段表中的有关记录。

第五章 输入输出系统

6.1   I/O系统的功能、模型和接口

  1.  I/O系统管理的主要对象是I/O设备和相应的设备控制器。其最主要的任务是,完成用户提出的I/O请求,提高I/O速率,以及提高设备的利用率,并能为更高层的进程方便地使用这些设备提供手段。

 I/O的基本功能:

  1.  隐藏物理设备的细节
  2.  与设备的无关性(在1的基础上实现的)
  3.  提高处理机和I/O设备的利用率(一方面要求处理机能快速响应用户的I/O请求,使I/O设备尽快地运行起来;另一方面也应尽量减少在每个I/O设备运行时处理机的干预时间)
  4.  对I/O设备进行控制(驱动程序的功能 ① 采用轮询的可编程I/O方式;② 采用中断的可编程I/O方式;③ 直接存储器访问方式;④ I/O通道方式。)
  5.  确保对设备的正确共享

6.  错误处理

I/O的层次:

①中断处理程序:它处于I/O系统的底层,直接与硬件进行交互。当有I/O设备发来中断信号时,在中断硬件做了初步处理后,便转向中断处理程序。

②设备驱动程序:它处于I/O系统的中间层。是进程与设备控制器之间的通信程序其作用是将上层发来的抽象I/O请求转换为对I/O设备的具体命令和参数,并把它装入设备控制器中的命令和参数寄存器中。

③设备独立性软件:现代OS中的I/O系统基本上都实现了与设备无关性,也称为与设备无关软件。也就是I/O软件独立于具体使用的物理设备。

I/O系统的上、下接口

  ①I/O系统接口:它是I/O系统与上层系统之间的接口,向上层提供对设备进行操作的抽象I/O命令,以方便高层对设备的使用。(1.  块设备接口(控制字符设备输入输出) 2.  流设备接口 3.  网络通信接口)

  ②软件/硬件(RW/HW)接口:在它的上面是中断处理程序和用于不同设备的设备驱动程序。在它的下面是各种设备的控制器

6.2   I/O设备和设备控制器

1. IO设备:

1) 按传输速率分类

        低速设备:是指其传输速率仅为每秒钟几个字节至数百个字节的一类设备。属于低速设备的典型设备有键盘、鼠标器、语音的输入和输出等设备。

        中速设备:是指其传输速率在每秒钟数千个字节至数万个字节的一类设备。典型的中速设备有行式打印机、激光打印机等。

        高速设备:是指其传输速率在数百千个字节至数十兆字节的一类设备。 典型的高速设备有磁带机、 磁盘机、 光盘机等。

2) 按信息交换的单位分类

    块设备(Block Device),这类设备用于存储信息。由于信息的存取总是以数据块为单位,故而得名。它属于有结构设备。典型的块设备是磁盘,每个盘块的大小为512B~4KB。磁盘设备的基本特征是其传输速率较高,通常每秒钟为几兆位;另一特征是可寻址,即对它可随机地读/写任一块;此外,磁盘设备的I/O常采用DMA方式。

    字符设备(Character Device),用于数据的输入和输出。其基本单位是字符,故称为字符设备。

3) 按设备的共享属性分类

       (1) 独占设备 (2) 共享设备(3) 虚拟设备

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

设备并不是直接与CPU进行通信,而是与设备控制器通信。因此,在设备与设备控制器之间应有一接口。该接口中有三种类型的信号:数据信号 控制信号 状态信号

  1. 设备控制器

组成:

  • 设备控制器与处理机的接口
  • 设备控制器与设备的接口   
  • I/O逻辑

 

  1. 设备控制器基本功能
  • 接收和识别命令--控制寄存器;命令译码
  • 数据交换—CPU(总线)->控制器(数寄)->设备
  • 标识和报告设备的状态—状态寄存器
  • 地址识别—设备和寄存器地址;地址译码器
  • 数据缓冲—用缓冲器暂存由CPU传来的数据
  • 差错控制—差错检测、重发
  1. 内存映射IO 

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

2.  内存映射I/O 在编址上不再区分内存单元地址和设备控制器中的寄存器地址

  1. IO通道(在CPU和设备控制器之间的一种特殊的处理机)

I/O通道与一般的处理机不同一是其指令类型单一,这是由于通道硬件比较简单,其所能执行的命令,主要局限于与I/O操作有关的指令;再就是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换言之,是通道与CPU共享内存。

1) 字节多路通道 数据传输速率低不适于连接高速设备

2) 数组选择通道 适于连接高速设备但设备多时通道的利用率很低。

3) 数组多路通道 既具有很高的数据传输速率,又能获得令人满意的通道利用率。

通道价格昂贵 解决“瓶颈”问题的最有效的方法,便是增加设备到主机间的通路,而不增加通道

6.3   中断机构和中断处理程序

⑴   中断

       中断是指CPU对I/O设备发来的中断信号的一种响应。CPU暂停正在执行的程序,保留CPU环境后,自动地转去执行I/O设备的中断处理程序。执行完后,再返回断点,继续执行原来的程序。由于中断使由外部设备引起的,故又称为中断。   

⑵   陷入(内中断)

       另外还有一种由CPU内部事件所引起的中断 例如进程在运算中发生了上溢或下溢,又如程序出错,如非法指令、地址越界

中断处理程序

当一个进程请求I/O操作时,该进程将被挂起,直到I/O设备完成了I/O操作后,设备控制器便向CPU发出一中断请求,CPU响应后便转向中断处理程序。无论是哪种I/O设备,其中断处理程序的处理过程都包含了以下几个步骤:

  • 测定是否有未响应的中断信号,唤醒被阻塞的驱动程序进程        
  • 保护被中断进程的CPU环境
  • 分析中断原因、转入相应的设备中断处理程序        
  • 进行中断处理        
  • 恢复被中断进程的现场

6.4   设备驱动程序

1. 设备驱动程序的功能

(1) 接收由I/O进程发来的命令和参数,并将命令中的抽象要求转换为具体要求,例如,将磁盘块号转换为磁盘的盘面、磁道号及扇区号。

(2) 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。

(3) 发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。

(4) 及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。

(5) 对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。       

2. 设备驱动程序的特点 

(1) 驱动程序主要是指在请求I/O的进程与设备控制器之间的一个通信和转换程序

(2) 驱动程序与设备控制器和I/O设备的硬件特性紧密相关, 因而对不同类型的设备应配置不同的驱动程序。

(3) 驱动程序与I/O设备所采用的I/O控制方式紧密相关

(4) 由于驱动程序与硬件紧密相关, 因而其中的一部分必须用汇编语言书写。

(5) 驱动程序应允许可重入。一个正在运行的驱动程序常会在一次调用完成前被再次调用。

(6) 驱动程序不允许系统调用。 

对I/O设备的控制方式

1. 使用轮询的可编程I/O方式 (无中断,CPU 的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。)

2. 使用中断的可编程I/O方式(CPU与I/O设备并行工作 提高了整个系统的资源利用率及吞吐量)

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

特点:

  1. 数据传输的基本单位是数据块;
  2. 所传输的数据是从设备直接送入内存的,或者相反;
  3. 整块数据的传送是在控制器的控制下完成的;
  4. 成百倍地减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。

DMA控制器组成

  • 主机与DMA控制器的接口
  • DMA控制器与块设备的接口
  • I/O控制逻辑

4. I/O通道控制方式

I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。

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

引入逻辑设备名命名设备的好处 设备分配时的灵活性 易于实现I/O重定向

设备无关的软件

与设备无关的软件是I/O系统的最高层软件,在它下面的是设备驱动程序,在与设备无关的软件中,包括了执行所有设备公有操作的软件,具体有如下几项。

(1) 设备驱动程序的统一接口

(2) 缓冲管理

⑶ 差错控制

⑷ 对独立设备的分配与回收

⑸ 独立于设备的逻辑数据块

设备分配 (数据结构:设备控制表DCT)

设备分配时应考虑这样几个因素

  • 设备的固有属性  独占设备 共享设备 虚拟设备
  • 设备分配算法 先来先服务 优先级高者优先
  • 设备分配的安全性 安全分配方式 不安全分配方式
  • 设备独立性

6.6   用户层的I/O软件

假脱机(SPOOLing)系统

SPOOLing系统是对脱机输入、输出工作的模拟,它必须有高速随机外存的支持,这通常是采用磁盘存储技术

优点:(1)提高了I/O的速度(2) 将独占设备改造为共享设备(3) 实现了虚拟设备功能

6.7   缓冲区管理

的I/O设备在与处理机(内存)交换数据时,都使用了缓冲区。因为提高I/O速度和设备的利用率

引入缓冲的主要原因:

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

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

(3) 提高CPU和I/O设备之间的并行性。

单缓冲 双缓冲 循环缓冲 缓冲池

工作方式

⑴收容输入工作方式

⑵提取输入工作方式

⑶收容输出工作方式

⑷提取输出工作方式

6.8  磁盘存储器的性能与调度

数据的组织和格式

  1. 磁道:磁盘旋转时, 磁头的轨迹形成一道道同心圆, 信息就存贮在这些同心圆上。我们把这些同心圆叫做磁道。
  2. 扇区:磁道划分成的扇段。每个扇区可以存贮 128×2n个字节, 其中 n = 0,1,2,3。
  3. 容量:= 面数×磁道数×每道扇区数×每扇区字节数
  4. 交错数:相邻编号的扇区会交错地排在磁道上的间隔扇区数

注意:访问磁盘上一个完整磁道,磁盘所转的圈数恰好等于交错数。因此也可以将交错数理解为访问一个完整磁道时磁盘所转的圈数。

磁盘访问时间

1.寻道时间(磁臂移动到指定磁道上所经历的时间)Ts=m×n+s

2.旋转延迟时间Tτ(指定扇区移动到磁头下面所经历的时间)5400r的硬盘每转11.1ms

3.传输时间Tt(与每次所读/写的字节数b和旋转速度有关)

4.访问时间Ta(r为磁盘每秒钟的转数;N为一条磁道上的字节数, 当一次读/写的字节数相当于半条磁道上的字节数时,Tt与Tτ相同)

磁盘调度算法(降低平均磁盘服务时间,达到公平、高效)

磁盘调度考虑的问题:(1) 减少寻道时间(2) 减少延迟时间

  1. 先来先服务FCFS

优点:公平、简单

缺点:平均寻道时间较长

2.最短寻道时间优先SSTF不能保证平均寻道时间最短

优点:能获得较好的寻道性能

缺点:却可能导致某个进程发生“饥饿”现象

  1. 扫描(SCAN)算法 (颇似电梯的运动)

会提示你寻道方向,然后按照起始方向移动磁头,直到最小,然后再往大处走,直到最大再往回走,直到完成。往返移动

4.循环扫描(CSCAN)算法规定磁头单向移动)

类似于SCAN,但是它不来回移动,而是磁头移动方向是单向的,比如从大往小移动,那么达到最小值后,瞬间移动到后面的最大磁道处,再往小处移动

优点:比起SCAN算法,对于各位置磁道的响应频率很平均。

缺点:只有到边上才能改变磁头移动方向,比起SCAN算法来,平均寻道时间更长。

  1. NStepSCAN(N步SCAN算法)

有一个或几个进程对某一磁道有较高的访问频率, 即这个进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备。我们把这一现象称为“磁臂粘着”

优点:这样就可避免出现粘着现象
把磁盘请求队列分为若干个长度为N的子队列,按照FCFS顺序访问这些子队列,但是每个子队列里面都是按照SCAN算法处理。当N值取得很大时,会使N步扫描法的性能接近于SCAN算法的性能当N=1时,N步SCAN算法便蜕化为FCFS算法

6.FSCAN

将磁盘请求队列分为两个子队列,一个是当前所有请求队列,按照SCAN算法处理,另一个是扫描期间新出现的请求汇合成另一个子队列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值