操作系统考点总结

第一章 操作系统引论

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. 优点:没有外碎片,每个内碎片不超过页的大小

页号

块号

存储控制

0

2

1

3

2

8

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

地址变换机构

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

快表:

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

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

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

两级页表

分段存储管理

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

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

段页式存储

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

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

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

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

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

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

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

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

1.内部碎片:

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

2.外部碎片:

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

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

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

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值