电子科技大学课程《操作系统原理与实践》(持续更新)

前言

本人学习采用的是学校老师出版的课本,参考了多个复习视频的内容,教学顺序与部分内容可能有所不同,具体以自己老师的教学为准,适合同学期中和期末考试的复习。重点内容用#标记,#数量越多,越重要,电子科技大学学生可以先看附言,了解考试的重点内容和成绩分布,祝大家都能取得一个好成绩。

一.操作系统概论

1.操作系统定义:

定义有很多,没有明确定义,这里把课堂上讲的两种典型定义拿出来了

操作系统定义1 :操作系统是一组控制和管 理计算机软硬件资源、合理地对各类作业进行调度以及方便用户使用的程序集合

操作系统定义2 (Operating System, O5) :操作系统是位于硬件层(HAL)之上,所有其它系统软件层之下的一个系统软件,使得管理系统中的各种软件和硬件资源得以充分利用

###2.操作系统的目标

方便性——计算机便于使用

有效性——计算机资源更加有效的利用

可扩展性——便于开发引进更多的功能

开放性——与其他系统进行移植和连接

###3.操作系统的作用

作为用户和计算机的接口 (王道考研:向上层提供方便易用的服务)

作为系统资源的管理者 (控制硬件和某些软件,处理机,存储器,I/0设备,共享文件)

实现对硬件机器的拓展   (增加机器硬件的一些功能)

(1)隐藏复杂的硬件细节   (隐藏复杂,困难,丑陋,特殊的硬件)

(2)资源管理采用在时间上复用(不同程序轮流执行,例:CPU,打印机)和在空间上复用(每个用户都得到资源的一部分,例:内存,磁盘)实现多路复用(共享)资源

(3)裸机(完全无软件的计算机系统)        设备的扩充,添加软件

4.操作系统的发展过程

——单道批处理(处理成批进行,内存仅存一道执行,特征:自动性,顺序性,单道性,优缺点:减少人工操作,但平均周转时间长,没有交互能力)——多道批处理(内存多道作业运行,自动调度内存中的另一道作业,特征:多道性,无序性,调度性[进程调度,作业调度],好处:提高资源利用率和吞吐能力,缺点:平均周转时间长,没有交互能力)——分时操作(特点:多路性,独立性,及时性,交互性(支持人机对话区别于批处理系统))——实时操作(特点:响应及时,可靠性高,多路性,独立性,交互性)

单道批处理和多道批处理运行情况举例:

#####5.操作系统的基本特征(往年一道问答题)

并发性(最重要的特征)       

并发性含义:一个时间段内,做多件事情,宏观上同时发生,微观上实际是交替发生的

共享性

虚拟性

异步性

并行:同一时刻,多个时间发生        (与并发不同)

共享:系统中的资源可供内存中多个并发执行的进行共同使用

        互斥共享访问        一段时间内只允许一个进程访问,临界资源

        同时访问方式        一段时间内允许多个进程进行访问

并发和共享操作时操作系统的两个最基本的特征,他们是互为存在的条件

考研题目:现代操作系统的两个基本特征是程序的并发执行和资源共享

虚拟是一种映射,实体变为多个逻辑上的对应物

        时分复用技术

        空分复用技术

异步性:执行结果不确定,每个程序在何时执行,执行顺序不确定

考研重点:

6.操作系统的功能

目前了解一下就行,后面会详细讲

7.操作系统的结构

操作系统是一个大型系统软件,已经经历了四代的变革

无结构(单片机)—— 模块化编程 —— 层次式结构(模块化分层) —— 微内核结构

模块化OS结构

        模块化结构(模块-接口法)

        块与块之间的相互关系:所有各块的实现均可以任意引用其他各块所提供的概念或属性

        优点:OS设计的正确性,可理解性,可维护性,可适应性,加速了开发过程

        缺点:模块划分以及接口规定难以精确描述,从功能观点进行模块划分,未能将共享资源和独占资源加以区别

分层式OS结构

        层与层之间的相互关系:实现不是与其以上各层,均对其上各层隐瞒其下各层的存在

内核

        时钟管理:时钟中断实现计时功能,管理:进程管理,存储器管理,设备管理

        原语:进行中不能被打断的程序,受到保护的代码

        微内核OS结构采用机制与策略分离原理

其他

1.指令就是CPU能识别,执行的最基本命令

2.内核程序vs应用程序

应用程序只能执行非特权指令,内核程序可以执行特权指令

3.CPU两种状态

PSW(程序状态寄存器)用二进制位的方法表示用户态(目态)和内核态(管态)

4.状态转换

5.中断和异常

##中断的作用:中断是让操作系统内核夺回CPU使用权的唯一途径

中断的类型:内中断--异常(例子:试图在用户态下执行特权指令,指令的参数非法),外中断--中断(应用程序需要服务,执行陷入指令(系统调用),例子:时钟中断)

判断两者系需要判断与当前执行的指令是否有关即可

找到相应的中断处理程序——中断向量表实现

6.系统调用:应用程序请求操作系统内核服务的途径(凡是与共享资源有关的操作,都使用系统调用)

二.进程管理

1.前趋图(有向无循环图)和程序执行

1.前趋图

这个出现了循环,因此这个不是前趋图

->表示前驱关系

表示方法: pi -> pj

直接前驱

直接后继

初始结点:没有直接前驱的结点叫初始结点

终止结点:没有直接后驱的结点叫终止结点

结点:表示一个语句,程序段或进程

如下图就是一个前趋图,p1初始结点,p9终止结点

2.程序的顺序执行极其特征

只有S1执行完了,才能执行S2,S2执行完了才有S3

顺序性:操作严格按照程序规定的顺序执行

封闭性:程序运行独占全机资源,程序执行不会受到外界影响

可再现性:执行环境和输入条件相同,结果相同

3.程序的并发执行极其特征

前趋图说明:两节点若没有->,可以顺序执行也可以并发执行

                       两结点有->,严格的顺序执行

间断性:共享系统资源,具有执行--暂停--执行这种活动规律

失去封闭性:共享各种资源

不可再现性:失去了封闭性,导致不可再现

######2.进程的描述

1.进程的定义

程序的一次执行

程序和数据在处理机上顺序执行的活动

程序在数据集合上运行的过程,它是系统进行资源分配和调度的独立单位

###2.进程的特征

结构特征:程序段,数据段,PCB(进程控制块)构成了进程实体

        创建进程,就是创建PCB,撤销进程,就是撤销PCB(PCB是进程存在的唯一标志)

动态性(最基本的特征):它由创建而产生,由调度而执行,由撤销而消亡——进程实体有一定的生命期                程序是静态的概念

并发性:多个进程共存与内存中

独立性:进程实体独立运行,独立分配资源,独立接受调度

异步性:不可预知的速度推进,进程按异步方式运行

3.进程与程序区别

动态——静态        周期——永久        程序段,数据段,PCB——指令        两者不是一一对应的

例题:

###4.进程的基本状态以及转换

进程的三个基本状态

1.就绪:一切就绪,只差处理机

进程调度:为就绪进程分配了处理机(CPU)

2.执行:已经获得处理机,正常执行

时间片完:时间片用完了,放到就绪队列

就绪和执行两者可以自由转换

3.阻塞:执行中发生事件而无法执行的暂停状态(等待状态)——进程主动放弃CPU

进程的五种状态

就绪,执行,阻塞

新建:进程新建,创建了PCD,未被OS接纳为可执行程序,程序在辅村,PCB在内存

终止:因停止或取消,被OS从执行状态释放

状态转换:

多个进程竞争内存资源

问题原因

1.内存资源紧张

2.无就绪进程,处理机空闲:I/O的速度比处理机慢,全部进程堵塞等待I/O

解决方法

1.采用交换技术:换出一部分进程到外存,腾出内存空间       

                                进程被交换到外存,状态为挂起状态

2.采用虚拟存储技术:每个进程只能装入一部分程序和数据

进程的挂起

进程的挂起状态原因

终端用户需求

父进程请求

负荷调节的需要

操作系统的需要

被挂起进程的特征

不能立即执行

等待某个事件

使其挂起的进程:自身,父进程,OS

谁挂起它,谁才能让它状态转换

挂起与阻塞

进程是否等待事件,是否阻塞

进程是否换出内存,是否挂起

###状态转换plus

分配CPU叫低级调度,作业转换成进程叫高级调度,挂起是中级调度

5.进程管理中的数据结构

进程控制块PCB(进程存在的唯一标志)

进程控制块作用

独立运行基本单位的标志

实现间断性运行方式

提供进程管理的信息

提供进程调度的信息

实现其他进程的同步与通信

进程控制块的信息

进程标识符        主要是pid        内部标识符        外部标识符

处理机状态        

进程调度信息

进程控制信息

进程控制块的组织方式

线性方式        PCB放数组里,首尾相连,简单,不需要额外开销,需要扫描整个表

链接方式        也是数组,放了索引,每种类型分配了指针,减少搜索数量,加快速度

索引方式        建立索引表,相同类型放一起,直接从索引里找,更快,系统更复杂

3.进程控制(进程管理中最基本的功能)

1.基础知识

(1)进程控制功能:进程的创建,进程的撤销,进程的阻塞与唤醒

(2)CPU执行状态分为两种:管态(核心态),目态(用户态)

(3)内核通常在系统态,而进程控制是由内核实现的

(4)操作系统内核的两大功能:

原语:由若干指令组成,用于完成一定功能的一个过程(原语是原子操作:一个操作中所有动作要么都做,要么都不做,且操作不可中断,原子操作在系统态下执行,常驻内存)

原语的作用:实现进程的通信和控制

2.进程的层次结构

父进程

子进程 -- 可以继承父进程所拥有的所有资源

进程图:

3.进程的创建,终止,阻塞,唤醒

如何导致创建:用户登录,作业调度,提供服务,应用请求

如何导致终止:

如何导致阻塞:

#####4.进程同步

主要任务:

###临界资源:任何时刻,只能让一个进程访问的资源

#####生产者-消费者问题(每年必考)

一组生产者向一组消费者提供产品,共享一个缓冲池(作用:交换数据,速度匹配),生产者从中投放产品,消费者从中取得产品,生产者往里放时必须要有空位置,消费者拿的时候里面必须要有数据

伪代码:

另一种实现,我们发现counter的值与我们所想的不同,如下:

###临界区

定义:每个进程访问临界资源的代码

访问临界资源的过程:访问临界资源之前,先判断能不能用,如果能用,进入之前,设立一个标志,进入临界区,退出时,将访问标志复位

##进程同步的四个原则:

空闲让进:没进程用,就进入临界区

忙则等待:有进程使用,等待

有限等待:临界区代码尽可能短,使得等待时间短

让权等待:无法进去,就把自己阻塞,把处理机的使用权释放出来

#####解决临界区(互斥)问题

解决临界区(互斥)问题的几类方法

(1)硬件同步机制:利用计算机的指令解决临界区问题

        •对临界区管理将标识看做一个锁,“锁开”进入,“锁关”等待

        •初始打开,每个进入临界区的进程必须对锁进行测试

        •测试和关锁操作必须连续(原子操作)

步骤:

1.关中断        2.利用Test-and-Set指令实现互斥         3.利用Swap指令实现进程互斥

为每一个临界资源设置一个共享变量lock,初始值为false

共享变量lock,初始为false,每个进程设置一个私有变量key=true

(2)信号量机制

1)整形信号量    

    

2)记录型信号量(结构体)

记录型信号量可能出现阻塞,例子如下:

3)AND型信号量

4)信号量集

利用信号量实现进程互斥实例

利用信号量实现前趋关系

(为每一个前趋关系,定义一个信号量,初始值为0,前趋上面执行V操作)

在语句执行之前,判断是否有效,然后再执行

(3)管程机制(不考察)

########5.经典的进程同步问题(伪代码,实在不行用中文)

同步关系

➢互斥:涉及到对共享资源的访问

➢同步:涉及到进程之间的执行次序

要把P,V操作放在合适的位置,P操作:要控制谁放在谁前面

◼生产者—消费者问题

共享一个大小固定的缓冲区,生产者将生产的数据放入缓冲区,消费者从缓冲区取数据

◼生产者-消费者之间满足的条件:

◆消费者想接收数据时,有界缓冲区中至少有一个单元是满的(同步问题)

◆生产者想发送数据时,有界缓冲区中至少有一个单元是空的(同步问题)

◆有界缓冲区是临界资源(互斥问题)

表示缓冲区可以使用的数据:

full=0; 表示当前队列中已有的数据个数

empty=n; 表示当前队列中还可以放的数据个数

1.记录型信号解决生产者-消费者问题

当有多种资源执行P操作的时候,一个同步P操作与一个互斥P操作在一起时,同 步P操作在互斥P操作之前

 

-

◼哲学家进餐问题

解决方法:

◼读者—写者问题(不考察)

问题描述:对于系统中的共享对象,把只要求读该文件的 进程称为“reader进程” ,其它进程称为“writer进程” 。 所谓读者-写者问题,是指保证一个write进程必须与其它 进程互斥地访问共享对象的同步问题。

特点: • 读进程可共享同一对象。 • 写进程不可共享同一对象

申请信号量,计数器

读者:

6.进程通信

高级进程通信机制可分为四大类:

① 共享存储器系统 (Shared-Memory System)

        1)基于共享数据结构的通信方式。 2)基于共享存储区的通信方式。

② 消息传递系统 (Message passing system)

③ 管道 (Pipe) 通信:又名共享文件通信

④ 客户机-服务器系统 (Client-Server system)

直接通信:系统提供下述两条通信命令(原语):

Send (Receiver, message);

Receive(Sender, message);

间接通信方式

优点:在读/写时间上的随机性

写进程 → 信箱(中间实体) →读进程原语

消息的发送和接收 Send (mailbox, message) Receive (mailbox, message)

7.线程

线程目的:使多个程序更好的并发执行,同时又能减少系统开销

将资源和指令执行分开

一个资源 + 多个指令执行序列

保留了并发的优点,避免了进程的高代价

线程的属性:

(1)轻型实体 

(2)独立调度和分派的基本单位

(3)可并发执行

(4)共享进程资源

###线程与进程的比较

调度:线程作为调度和分派 的基本单位,而进程作为资源拥有的基本单位。

并发性:不仅进程之间可以并发执行,而且在一 个进程中的多个线程之间亦可并发执行

拥有资源:线程自己不拥有系统资源, 但它可以访问其隶属进程的资源

独立性:同一进程中的不同线程共享进程的内存空间和资源。同一进程中的不同线程的独立   性低于不同进程。

系统开销:线程的切换只需要保存和设置少量的寄存器内容,不涉及存储 器管理方面的操作。一个进程中的多个线程具有相同的地址空间,在同步和通 信的实现方面线程也比进程容易。在一些操作系统中,线程的切 换、同步和通信都无须操作系统内核的干预。

支持多处理机系统:一个进程分为多个线程分配到多个处理机上并行执行,可加速 进程的完成。

第三章(主要考察简答题)

调度的目的:处理机调度的工作是对CPU资 源进行合理的分配使用,以提高处理机利 用率,并使各用户公平地得到处理机资源。        考虑因素:公平 高效 响应时间 周转时间 吞吐量

处理机调度的层次与目标

引起进程调度的因素可归结为这样几个: ①正在执行的进程执行完毕,或因发生某事件而 不能再继续执行; ②执行中的进程因提出I/O请求而暂停执行; ③在进程通信或同步过程中执行了某种原语操作, 如P操作(wait操作)、Block原语、Wakeup原语 等。

处理机调度算法的目标: ▪资源利用率   ▪公平性   ▪平衡性   ▪策略强制执行

三种调度层次:

1)高级调度(作业调度,长程调度,接纳调度)

调度对象:作业            实现:作业管理程序

将外存作业调入内存,创建PCB等,插入就绪队列。

用于批处理系统,分/实时系统一般直接入内存,无此环 节。    频度:最低,分钟级

2)低级调度(进程调度,短程调度) 

对象:就绪进程(或内核线程)

功能:决定就绪队列中的哪个进程应获得处理机,并将 处理机分配给选中的进程。

实现者 :分派程序(dispatcher)    应用范围:都有     频度:最频繁,毫秒级 

方式: ① 非抢占方式 ② 抢占方式

3)中级调度(交换调度, 中程调度)

对象:挂起的进程

功能:把外存上那些已经具备运行条件的就绪进程重新 载入内存。从静止就绪到活动就绪。 实现:内存管理中的对换进程    应用范围:具有对换功能的操作系统     频度:中等

比较完整的调度模型

资源利用率 = CPU利用率 = CPU有效的工作时间 / (CPU有效工作时间 + CPU空闲等待时间)

批处理系统的目标

平均周转时间短 ▪周转时间:接纳等待、执行等待、执行时间、 I/O时间

平均周转时间:

带权周转时间:作业的周转时间T与系统为 它提供服务的时间Ts之比。 W = T/Ts

带权周转时间标明了作业额外等待和作业执 行时间之间的比例。

平均带权周转时间:反应调度算法的好坏。

吞吐量:指在单位时间内系统所完成的作业 数

系统吞吐量高:尽量多地选择短作业运行

处理机利用率高:尽量选择计算量大的作业

分时系统的目标

响应时间:从用户通过键盘提交一个请求开 始,直到屏幕上显示出处理结果为止的一段 时间间隔。 包括三个部分:输入时间、处理时间、显示 时间

响应时间快:分时系统的重要准则。

均衡性:指系统响应时间的长短应与用户所 请求服务的复杂性相适应。

截止时间的保证: ▪开始截止时间 ▪完成截止时间 ▪硬实时、软实时

可预测性: ▪对调度结果的可预见性

作业与作业调度

作业 Job:用户提交给系统的一项相对独立的 工作

作业控制块 JCB:作业管理系统用于管理和控制作业运行的数据结构。

▪作业标识、用户名称、用户帐户 ▪作业类型(CPU 繁忙型、I/O 繁忙型、批量型、终端型) ▪作业状态 ▪调度信息(优先级、作业已运行时间) ▪资源需求(预计运行时间、要求内存大小、要求 I/O 设 备的类型和数量等) ▪进入系统时间、开始处理时间、作业完成时间、作业退 出时间、资源使用情况等。

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

▪收容阶段:后备状态     ▪运行阶段:运行状态     ▪完成阶段:完成状态

作业调度的主要任务:根据JCB信息,检查系 统中的资源能否满足作业对资源的需求,按照 一定的调度算法,从外存的后备队列中选取某 些作业调入内存,并为他们创建进程、分配必 要资源,安排在就绪队列。

作业调度需要作出以下决定:

1、接纳多少个作业 (多道程序度:允许多少个作业同时在内存中运行)   

2、接纳哪些作业(调度算法:先来先服务、短作业优先、基于作业优先权、响应 比高者优先等)

#####调度算法(每年必考)

先到先服务(FCFS)既可用于作业调度,也可用于进程调度。有利于长作业,不利于短作业,有利于CPU繁忙型的作业,而不利于I/O繁忙 型的作业。

短作业优先(SJF )调度算法:指对短作 业或短进程优先调度的算法。它们可以分别用于 作业调度和进程调度。 是从后备队列中 选择一个或若干个估计运行时间最短的作业,将 它们调入内存运行

短进程优先(SPF)调度算法,则是从就绪队列中 选出一估计运行时间最短的进程,将处理机分配 给它,使它立即执行并一直执行到完成,或发生 某事件而被阻塞放弃处理机时,再重新调度。

在这里,实际的调度顺序是ADBEC

短进程/作业优先调度算法 

 ◼ 优点: 1)能有效降低作业的平均等待时间; 2)提高吞吐量; 3)能有效缩短进程的周转时间;

◼ 缺点: 1)对长作业不利; 2)不考虑作业的紧迫程度; 3)作业执行时间、剩余时间仅为估计时间; 故SJ(P)F算法虽然是优化的,但在CPU调度中很难实现。

优先级调度算法  ▪外部赋予作业(进程)相应的优先级,例如以作 业的紧迫程度作为优先级。 ▪选择优先级高的进程投入运行。 ▪既可用于作业调度算法,也可用于进程调度。

FCFS与SJF是片面的调度算法。

➢FCFS只考虑作业等候时间而忽视了作业的计算时间;

➢SJF只考虑用户估计的作业计算时间而忽视了作业等 待时间。

高响应比优先调度算法(HRRN)是介于这两者之间的折衷 算法,既考虑作业等待时间,又考虑作业的运行时间,既 照顾短作业又不使长作业的等待时间过长,改进了调度性 能。

等待时间+要求服务时间=响应时间,   优先级相当于响应比Rp。

进程调度

进程调度的任务 ◼ 1)保存处理机现场 ◼ 2)按照某种算法选取进程 ◼ 3)把处理机分配给进程

进程调度器的机制:

进程调度的方式:

▪非抢占方式 ▪一旦进程投入运行,除了进程完成或者需要阻塞外,不 能剥夺其处理机。 ▪采用这种方式时,引起调度的原因可归结为: ▪ 进程运行完毕或因发生某事件而无法继续运行 ▪ 因I/O请求而阻塞 ▪ 因通信或者同步而阻塞

▪抢占方式 ▪允许根据某种原则,暂停正在执行的进程,重新分配处 理机。

使用抢占式的原因: ▪批处理:防止长进程长期占用CPU,公平 ▪分时:人机交互 ▪实时:紧迫任务的执行

主要原则 ▪优先权 ▪短进程优先 ▪时间片原则

进程调度的因素:

① 正在执行的进程执行完毕,或因发生某事件而 不能再继续执行(包括:当前执行进程被中断、 时间片用完了、挂起自己、退出等); ② 执行中的进程因提出I/O请求而暂停执行; ③ 在进程通信或同步过程中执行了某种原语操作, 如P、V操作原语,Block原语, Wakeup原语 等。 ④ 就绪队列中新进入了进程。(如创建了新的进 程,或者某个进程被唤醒、某个进程被激活)

轮转调度算法

▪每个进程仅运行一个时间片即被抢占CPU ▪原理: ▪FCFS策略+时钟中断+时间片原则 ▪进程切换时机 ▪时间片内进程结束,进程结束事件激活进程调度, 新进程可运行一个时间片; ▪时间片用完,时钟中断激活调度,旧进程到就绪 队列尾,队头进程投入运行一个时间片。

时间片大小的确定 ▪太小:利于短作业,但增大调度和上下文切换 频率,增大系统开销; ▪太长:退化为FCFS算法。 ▪合适:略大于一次典型的交互所需的时间,使 大多数交互式进程能在一个时间片内完成。

轮换调度算法常用于分时系统及事务处理系统,合理的时间片大小将 带来满意的响应时间。 ◼ 通常,合理的时间片指,能让80%左右的进程在一个时 间片内完成。 ◼ 对于短的、计算型的进程较有利。 ◼ 不适合于批处理系统的进程调度。 ◼ 不利于I/O型的进程。 ◼ 改进的方法之一,可以将I/O阻塞事件完成的进程单独 组织一个就绪队列,该队列进程的时间片可以设置的小 一些,且优先调度。

多级反馈队列调度算法

(1)设置多个就绪队列,并为各个队列赋予不同的 优先级。 第一个最高,以后依次降低。 (2)每个队列中进程执行时间片的大小也各不相同, 进程所在队列的优先级越高,其相应的时间片就越 短。(3)当一个新进程进入内存后,首先将它放入第一队列 的末尾,按FCFS原则排队等待调度。当轮到该进程执行 时,如它能在该时间片内完成,便可准备撤离系统;如 果它在一个时间片结束时尚未完成,调度程序便将该进 程转入第二队列的末尾,再同样地按FCFS原则等待调度 执行;如果它在第二队列中运行一个时间片后仍未完成, 再依次将它放入第三队列,……。(4)仅当第一队列空闲时,调度程序才调度第二 队列中的进程运行。

实时调度

实时系统:计算机及时响应外部事件的请求,在 规定的时间内完成对该事件的处理,并控制所有 实时设备和实时任务协调一致的运行。

所谓实时任务是指具有及时性要求的、经常被重 复执行的特定进程。

按实时任务的调度方式分类 (1)非抢占式调度算法 (2)抢占调度算法

实现实时调度的基本条件

提供必要的信息

系统处理能力强

采用抢占式调度机制

在含有硬实时任务的实时系统中,广泛采用抢占 机制。当一个优先权更高的任务到达时,允许将 当前任务暂时挂起,而令高优先权任务立即投入 运行,这样便可满足该硬实时任务对截止时间的 要求。

具有快速切换机制

(1)对外部中断的快速响应能力。 (2)快速的任务分派能力。

实时调度算法的分类

常用的几种实时调度算法

(1).最早截止时间优先算法(EDF) 该算法要求在系统中保持一个实时任务就绪 队列,该队列按各任务截止时间的早晚排序; 具有最早截止时间的任务排在队列的最前面。 调度程序总是选择就绪队列中的第一个任务, 为之分配处理机,使之投入运行。

(2).   最低松弛度优先算法(LLF)

松弛度=完成截至时间–剩余运行时间–当前时间 ▪该算法按松弛度排序实时任务的就绪队列,松 弛度值最小的任务排在队列最前面,调度程序 总是选择就绪队列中的队首任务执行。

当等待任务的松弛度值为0时才进行抢占(如 20ms时虽然A2的松弛度比B1的松弛度小,但A2并 没有抢占B1)。 ▪1>当有任务执行时,只有等待任务的松弛度值为0才会 发生任务的调度,其他情况不发生调度。 ▪2>任务执行结束后或无任务执行时,再比较等待任务的 松弛度值,较小的先执行。

优先级倒置

优先级倒置的形成 “优先级倒置”的现象,即高优先级进程(或 线程)被低优先级进程(或线程)延迟或阻塞。 ▪例如:优先级:P1 〉P2 〉P3 ▪P1:…; P(mutex); CS-1; V(mutex);… ▪P2: ……program2…… ▪P3:…..;P(mutex); CS-3; V(mutex);…...

动态优先级继承法解决优先级倒置

死锁概述

死锁,是指多个进程在运行 过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无 外力作用,它们都将无法再向前推进。

死锁的进程都不能 ◼ 运行 ◼ 释放资源 ◼ 被唤醒

关于死锁的一些结论: 1) 参与死锁的进程最少是两个,两个以上进程 (线程)才会出现死锁 2) 参与死锁的进程至少有两个已经占有资源 3) 参与死锁的所有进程都在等待资源 4) 参与死锁的进程是当前系统中所有进程的子集

若系统出现死锁,必须有相应的措施进行解除。 当然,如果能提前预防和避免死锁的出现,将 能提高系统的运行效率。

死锁出现的根本原因是系统资源的有限性,并发 进程竞争资源,调度不当

主要关注的是临界资源, 也就是需要采用互斥访 问,不可被抢占的资源

▪可重用性资源和消耗性资源(永久性资源和临时 性资源)

▪可抢占性资源和不可抢占性资源

产生死锁的原因可归结为如下两点:

(1)竞争资源 可重用资源的竞争 可消耗资源的竞争 (2)进程间推进顺序非法。

1)进程推进顺序合法 进程推进顺序合法不会引起进程死锁的。 2)进程推进顺序非法 若并发进程P1和P2推进顺序不合法,进 入不安全状态,于是发生了进程死锁。

问题:资源不够一定死锁吗?

•当进程推进到死锁区,进程必死 •可通过增加资源来解决死锁,比如有两个r1和 两个r2资源就不会发生死锁,但现实中是不可取的。

###死锁的四个必要条件:(要背过)

解决死锁的方法:

(1)预防死锁:是通过设置某些限 制条件,去 破坏产生死锁的四个必要条件中的一个或几 个条件,来预防发生死锁。 (2)避免死锁:是在资源的动态分配过程中, 用某种方法去防止系统进入不安全状态,从 而避免发生死锁。(3)检测死锁:通过系统所设置的检测机构, 及时地检测出死锁的发生,并精确地确定与死 锁有关的进程和资源; (4)解除死锁:当检测到系统中已发生死锁时, 须将进程从死锁状态中解脱出来。常用的实施 方法是撤消或挂起一些进程。

预防和避免死锁

破坏“请求和保持”条件:

▪系统规定所有进程在开始运行之前,都必须一 次性地申请其在整个运行过程所需的全部资源。 ▪从而进程在整个运行期间,便不会再提出资源 要求,从而摒弃了请求和保持条件,由此可以 避免发生死锁。 ▪优点:简单、易于实现且很安全。 ▪缺点:资源被严重浪费,使进程延迟运行。

摒弃“不剥夺”条件

当一个已经保持了某些资源的进程,再提出新的资 源请求而不能立即得到满足时,必须释放它已经保 持了的所有资源。待以后需要时再重新申请。从而 摒弃了“不剥夺”条件。 ▪缺点:实现起来比较复杂且要付出很大代价。 ▪一个资源在使用一段时间后,它的被迫释放可能会造成前段工 作的失效。 ▪会使进程前后两次运行的信息不连续。 ▪因反复地申请和释放资源,致使进程执行被无限推迟,延长进 程周转时间、增加系统开销、降低吞吐量

摒弃“环路等待”条件

系统将所有资源按类型进行线性排队,并赋予不 同的序号。 所有进程对资源的请求必须严格按照 资源序号递增的次序提出。

优点: 资源利用率和系统吞吐量都有明显的改善。 ◼ 存在的问题: 首先是为系统中各类资源所分配(确定)的序 号,必须相对稳定,这就限制了新类型设备的 增加; 作业(进程)使用各类资源的顺序,与系统规 定的顺序不同,造成对资源的浪费 ; 限制用户简单、自主地编程 。

###系统安全状态

安全状态 ▪所谓安全状态,是指系统能按某种进程顺序, 如…,Pn>,依次为n个进程分配其所 需资源,直至其最大需求,使每个进程都可顺 利地完成,称系统处于安全状态。 ▪称〈P1,P2,…,Pn〉序列为安全序列。否则, 如果系统无法找到这样一个安全序列,则称系 统处于不安全状态。

安全、不安全、死锁状态

例题:

#####银行家算法(每年必考)

避免死锁的关键是预测是否产生死锁,最具代表性的是银行家算法

银行家算法中的数据结构

需求和分配流程

安全性算法实际就是找安全序列

例题:

T0时刻处于安全状态

避免死锁的限制

a) 预先必须申明每个进程需要的资源总量;

b) 进程之间相互独立,其执行顺序取决于系统 安全,而非进程间的同步要求; 

c) 系统必须提供固定数量的资源供进程使用;

死锁的检测与解除

检测死锁的基本思想:利用某种算法对资源请求和分配信息加以检查,以判断是否存在死锁

资源分配图

有环路不一定死锁,但是死锁一定有环路

资源分配图加以简化的方法

若能消去资源分配图中所有结点的连接边,使全部结点 都成为孤立结点,则称该图是可完全简化图;若不能使 该图完全简化,则称该图是不可完全化简图。

当且仅当系统某状态S所对应的资源分配图 是不可完全化简的,则S是死锁状态。该充分条件称为 死锁定理。

死锁的解除

(1)剥夺资源。从其它进程剥夺足够数量 的资源给死锁进程,以解除死锁状态。

(2)撤消进程。最简单的撤消进程的方法, 是使全部死锁进程都夭折掉;或者按照某种 顺序逐个地撤消进程,直至有足够的资源可 用,使死锁状态消除为止。

按照解除死锁复杂度递增的顺序列出解除死锁的方法:

• 撤消死锁进程。该方法是目前操作系统中解除死 锁的常用方法。 • 把死锁进程恢复到前一个检查点,重新执行每个 进程。 • 按照某种原则逐个选择死锁进程进行撤消,直到 解除系统死锁。 • 按照某种原则逐个剥夺进程资源,直到解除死锁。

第三种和第四种方法需要选择系统付出代价 最小的进程,最小代价原则: ▪到目前为止,花费处理机的时间最少的进程; ▪到目前为止,产生输出最少的进程; ▪估计未执行部分最多的进程; ▪到目前为止,已获得资源量最少的进程; ▪优先级最低的进程。

第四章

存储器的层次结构

目前许多计算机把存储器分为三级:CPU寄存器,主存,辅存

依次速度减慢,容量增加,价格降低,由操作系统协调这些存储器的使用

存储器管理的目的和功能

主存储器的分配和管理:(1)记住每个存储区域的状态 (2)实施分配 (3)接收系统或用户释放的存储区域

提高主存储器的利用率

“扩充”主存容量

存储保护

存储的分配方式(三种)

解决存储分配问题的三种方式

1. 直接指定方式        编程时使用实际地址

2. 静态分配方式(Static Allocation)存储分配是在装入时实 现的,程序员不管绝对位置

        特点:(1)在一个作业装入时必须分配其要求的全部存 储量; (2)如果没有足够的存储空间,就不能装入该作 业; (3)一旦一个作业进入内存后,在其退出系统之 前,它一直占用着分配给它的全部存储空间; (4) 作业在整个运行过程中不能在内存中“搬 家” 、也不能再申请存储量。

3. 动态分配方式(Dynamic Allocation)

        特点:(1)作业在存储空间中的位置,也是在其装入时确定的; (2)在其执行过程中可根据需要申请附加的存储空间; (3)一个作业已占用的部分存储区域不再需要时,可以要求 归还给系统。 即:这种存储分配机制能接受不可预测的分配和释放存储区域 的请求,实现个别存储区域的分配和回收; (4)存储区域的大小是可变的; (5)允许作业在内存中“搬家” 。

基本概念

逻辑地址(相对地址,虚地址):汇编或编译后形成目标代码,首地址为0,其余地址相对于首地址编址

物理地址(绝对地址,实地址):实际放的位置

        名空间:由程序员建立的符号名字空间        例如: 变量名

地址空间:逻辑地址的集合,由编译程序生成

存储空间:主存中物理单元的集合,存储空间的大小由主存的实际容量决定

程序的装入和链接

程序的装入的三种方式

一、绝对装入方式(Absolute Loading Mode)     

编译程序产生实际的存储地址的目标代码        逻辑地址和实际地址完全相同

二、可重定位装入方式(Relocation Loading Mode)

经编译得到的目标模块中为相对地址

装入模块中的逻辑地址与实际装入内存的物理地址不同

装入内存时,相对地址要做出相应的修改得到正确的物理地址,这个修改过程叫重定位 (地址映射/地址变换)

静态重定位:地质变换在装入内存时一次完成        物理地址 = 相对地址 + 内存中的起始地址

三、动态运行时装入方式(Denamle Run-time Loading)

装入内存时直接加载逻辑地址,在执行时进行转换为物理地址空间

重定位寄存器(RR)。该寄存器 的值是由进程调度程序根据作业分配到的存储空间起始地 址来设定的。

主存的使用更加灵活有效,几个作业共享一程序段的单个副本比较容易,有可能向用户提供一个比主存的存储空间大得多的地 址空间。但是,需要附加硬件支持;实现存储器管理的软件比较复杂。

程序的链接

一、静态链接 (Static Linking)

先将各目标模块及他们所需的库函数,链接成一个完整的装入模块,后续不再拆开

二、装入时动态链接(Load-Time Dynamic Linking)

装入时全部连接,然后装入内存

        便于版本的修改和更新,便于实现目标模块共享

三、运行时动态链接(Run-Time Dynamic Linking)

将某些目标模块的链接推迟到 执行时才进行,在执行过程中,若发现一个被调用模块 尚未装入内存时,由OS去找到该模块,将它装入内存, 并链接到调用模块上。

###连续分配方式

连续分配指为用户程序分配一个连续的内存空间。

连续分配方式分为单一连续分配方式,分区式分配方式,可重定位分区分配

单一连续分配方式:仅驻留一道用户程序,整个用户区为一个用户独占。

内存分为两个区域:系统区,用户区。应用程序装入到用户 区,可使用用户区全部空间。

        易于管理,但可能造成内存浪费,很少使用的程序部分也占用内存

固定分区分配:将内存用户空间划分为若干个固定大 小的区域,每个区域称为一个分区(region),在每个分区 中只装入一道作业

内存中已分配 给用户但未被 利用的区域称 为 “内零头” (内碎片)

易于实现,开销小。 但内碎片造成浪费 ,分区总数固定,限制了并发执行的程序数目,存储空间的利用率太低。现在的操作系统几乎不用它了。

动态分区分配:动态地为 之分配连续的内存空间

常用的数据结构:空闲分区表,空闲分区链

分区分配算法

        最佳适应算法:就是为一作业选择分区时总是寻找其大小最接近作业所要求 的存储区域。即:把作业放入这样的分区后剩下的零头最小。        优点:遇到大作业到来时,作业要求的存储区域就比较容易得到 满足          缺点:产生大量的小空白区,在回收一个分区时, 为了把它插入到空白区链中合适的位置上也颇为费时      为了加快查找速度,应将存储空间中所有的空白区按其大小 递增的顺序链接起来,组成一空白区链

        最坏适应算法:把空闲分区里最大的分配给用户,在划分后剩下的空白区也是 最大的,因而对以后的分配很可能仍然是有用的,但是,当有大的作业时,其存储空 间的申请往往得不到满足

        

        首次适应算法:在存储空间中地址递增的顺序链接在一起进行分配

        优点:算法简单,查找速度快,大作业 到来时也比较容易得到满足        存储利用率不高

内零头和外零头

        内零头:分配给用户但是没有使用       

 ➢单一连续分配有较大的内零头

➢(固定、动态)分区分配有小于一个分区的内零头

        外零头:没有分配但无法分配的空间

下次适应算法        存储空间的利用 更加均衡

快速适应算法        系统中存在多个空闲分区链表,记录了该 类型空闲分区链表表头的索引表,根据进程的长度,寻找到能容纳它的最小 空闲分区链表,并取下第一块进行分配即可

        查找效率高,保留大分区,不产生内存碎片        归还算法复杂,系统开销大

分区分配操作

涉及动态分区的主要操作有分配内存和回收内 存。

分配内存:

回收内存:

伙伴系统

可重定位分区分配

紧凑:内存中的所有作业进行移动,使它们 全都相邻接,这样,可把原来分散的多个小分区合成一 个大分区。这种技术称为存储器的“紧凑”

动态重定位

###基本分页储存管理方式(经常考)

离散分配方式---允许将作业/进程离散放到多个不 相邻接的分区中,就可以避免拼接。基于这一思想产生了以下的 离散分配方式:

❖分页式存储管理:离散分配的基本单位是页

❖分段式存储管理:离散分配的基本单位是段

❖段页式存储管理:离散分配的基本单位是页

优点:没有外零头,仅有小于一个页面的内零头        由于进程的最后一页经常装不满一块 而形成了不可利用的碎片,称之为 “页内碎片”或称为“内零头” 。

在分页存储管理方式中,把每个作业全部装入内存 后方能运行,则称为基本的分页存储管理方式,或 称为纯分页存储管理方式。

特征:一次性:要求将作业全部装入内存后方能运行。 ◼ 驻留性:作业装入内存后,便一直驻留在内存中, 直至作业运行结束。

页面大小的选择:页面大小由机器的地址结构决定的

➢1)页表:每个进程对应 1 个页表,描述该进程的各页 面在内存中对应的物理块号。

⚫页表中包括页号、物理块号(还可有存取控制字段, 对存储块中的内容进行保护)。

⚫注意:全部页表集中存放在主存的系统专用区中,只 有系统有权访问页表,保证安全。 ➢2)作业表:整个系统1张,记录作业的页表情况,包含 进程号、页表长度、页表始址等信息。

➢3)空闲块表:整个系统1张,记录主存当前空闲块。

题目:

#####地址结构(每年必考)

逻辑地址A,页面大小为L,转换为页号P和页内位移量W

页号 P=INT[A/L]                 页内位移量 W=A MOD L

基本的地址变换机构:

使用寄存器存放列表,速度快,成本高

一般来说,将页表放在内存中,设置一个页表寄存器(PTR),记录当前运行的进程 的页表在内存中的始址和页表长度。(平时存于PCB中, 要运行时才装入PTR中)

快表:为了提高地址变换速度,为进程页表设置一个专 用的高速缓冲存储器,称为快表 TLB,或联想 存储器,快表的工作原理类似于系统中的数据高速缓存 ,其中专门保存当前进程最近访问过的 一组页表项

访问内存的有效时间EAT:从进程发出指定逻辑地址的访问请求,经过地址 变换,再到内存中找到对应的物理单元并取出数据,所花 费的总时间。

如检索快表时间为20 ns,访问内存为100 ns。 ⚫若能在快表中检索到CPU给出的页号,则CPU存取一 个数据共需120 ns。 ⚫否则,需要220 ns的时间。

当访问联想存储器时的命中率分别为0%,50%,80%, 90%,98%时,其有效访问时间如下表所示:

例题:

两级页表

对于4GB(232B)的进程,页面大小为4KB(212B) , 若采用二级页表,则对应的二级页表结构如下:

把页表本身按固定大小分成为一个个页面(页面大 小为 212=4KB),每页有210=1K个页表项(每个页表 项4Byte),最多允许有210=1K个页表分页。

反置页表

作用:避免一个进程一个页表

主要思想:(1)IPT是为主存中的每一个物理块建立一个页表项并按照 块号排序; (2)该表每个表项包含正在访问该物理块的进程标识、页 号及特征位,用来完成主存物理块到访问进程的页号的转换。

对换

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

对换是系统行为,是提高内存的利用率的有效措 施。

▪ 常用于多道程序系统或小型分时系统中,与分区 存储管理配合使用。

▪ 实现:可在系统中设一对换进程,以执行换进内 存、换出至外存操作。

分类:整体对换,页面对换/分段对换

外存被分为两部分:文件区和对换区

文件区用于存放文件,采取离散分配方式,对换区存放从内存换出的方式,连续分配方式

基本分段存储管理方式

模块化程序设计的分段结构

作用:方便编程,分段共享,分段保护,动态链接,动态增长

分段:

分段管理,就是管理由若干分段组成的作业, 且按分段来进行存储分配。

实现分段管理的关键在于,如何保证分段(二 维)地址空间中的一个作业在线性(一维)的存储 空间中正确运行。也就是说,如何把分段地址 结构变换成线性的地址结构,和分页管理一样, 可采用动态重定位技术,即通过地址变换机构 来实现。

应像分页系统那样,在系统中为每个进程建立一张 段映射表,简称“段表” 。每个段在表中占有一个 表项,其中记录了该段在内存中的起始地址(又称为 “基址”)和段的长度。

作用:实现从逻辑段到物理内存区的映射。

附言:电子科技大学考生必看

1.成绩分布

期末考试70,考勤作业10,中期10,实验10

考试的时候不考编程,只需要了解机制以及部分重点内容的伪代码就可以

2.课时,考点分布

重点是第二章,第三章,第四章的内容

课堂作业(自己做的,仅供参考)

第一章

1.计算机系统上配置OS的目标是:使得计算机便于使用(方便性),使计算机资源更加有效的利用(有效性),便于引进开发更多的功能(可扩展性),可以与其它系统进行移植和连接(开放性),操作系统的作用主要表现在可以作为用户和计算机的接口,可以作为资源管理者的操作系统,可以作为扩展机器的操作系统   

6.实施分时系统的关键问题是:如何使用户能与自己的作业进行交互,解决方法:系统必须能提供多个终端供用户使用,用户输入命令时系统及时接受,并返回处理结果,用户可根据系统响应,再输入命令(也可以写成简化版本:允许多个用户同时通过自己的键盘输入命令,系统也能将命令及时接受和处理)

7.引入分时系统的目的:满足用户对人机交互的需求,具体表现在:人机交互,共享主机

10.操作系统按照运行方式划分,可以分为:单用户单任务(举例:OSCP/M (8位)和MS-DOS(16位)),单用户多任务OS(举例:Windows系列,如Windows 3.1、Windows 95/98等),多任务多用户OS (举例:UNIX系统、各种类UNIX系统(如Solaris、Linux等)以及Windows NT/Server系列的系统)       

11.操作系统的特征:并发性,共享性,虚拟性,异步性,并发和共享操作是操作系统的两个最基本的特征,他们是互为存在的条件,并发性是最重要的特征

13.OS的内核是将一些与硬件紧密相关的模块(如中断处理程序等)、各种常用设备的驱动程序、运行频率较高的模块(如 时钟管理模块、进程调度模块等)以及许多模块所公用的一些基本操作,都安排在紧靠硬件的 软件层次中,并将它们常驻内存 。OS内核的主要功能是支撑功能(包含:中断处理,时钟管理,原语操作),资源管理功能(包含:进程管理,存储器管理,设备管理)

15.处理机的双重工作模式:计算机硬件可以通过一个模式位来表示当前模式:内核态(0)和用户态(1)。有了模式位,就可以区分为OS所执 行的任务和为用户所执行的任务。当计算机系统执行用户程序时,系统处于用户态。然而,当 用户程序通过系统调用请求OS服务时,系统必须从用户态切换到内核态,以满足 请求.当存在系统引导时,硬件会从内核态开始工作,OS接着加载,然后在用户态下执行用户程序。 一旦有中断或陷阱,硬件就会从用户态切换到内核态(即将模式位置0)。因此,每当OS能够控制计 算机时,它就处于内核态。在将控制权交给用户程序前,系统会切换到用户态

16.中断处理过程:中断处理是内核最基本的功能,是整个OS赖以活动的基础,为减少处理机中断的时间,提高程序执行的并发性,内核在对中断进行“有限处 理”后便会转入相关的进程,由这些进程继续完成后续的处理工作。

17.处理机管理的功能:创建和撤销进程,对各进程的运行进行 协调,实现进程之间的信息交换,以及按照一定的算法把处理机分配给进程。

处理机管理的主要任务:进程控制(为作业创建进程,撤销(终止)已 结束的进程,以及控制进程在运行过程中的状态转换),进程同步(对多个进程的运行进行协调),进程通信(实现相互合作进程之间的信息交换),调度(作业调度:从后被队列选择作业分配资源,建立进程,插入就绪队列;进程调度:从就绪队列中选择进程,分配CPU,执行)

18.存储器管理的功能 :内存分配和回收、内存保护、 地址映射和内存扩充       主要任务为多道程序的运行提供良好的环境、提高存储器的利用率、方便用户使用,并能从逻辑上扩大内存。

存储器管理的主要任务 :内存分配和回收(①为每道程序分配内存空间,使它们“各得其所”②提高存储 器的利用率,尽量减少不可用的内存空间(内部碎片)③允许正在运行的程序申请附加的内 存空间,以适应程序和数据动态增长的需要)内存保护(①确保每道用户程序都仅在自己的内存空间中运行,彼此互不干 扰②绝不允许用户程序访问OS的程序和数据,也不允许其转移到非共享的其他用户程序中去 执行)地址映射(能够将地址空间中的逻辑地址变换为内存空间中与之对应的物理地 址)内存扩充(借助虚拟存储技术,从逻辑上去扩大 内存容量)

26.

计算使用CPU,I/O操作单独,多道批处理程序有两种实现方式,

第一种是多道立即抢占式,就是当I/O操作完成后立即抢占CPU,如下图,当P1的I/O完成时,P2的计算未完成,此时直接执行P1的计算

第二种是多道非立即抢占式,当P1的I/O操作执行完,但P2的计算还未执行时,会先等P2的计算执行完毕,然后再执行P1的第二次计算

两者时间对比,最后选择第二种方法,时间260ms

28.

1.在输入机输入后,进行处理机处理,然后通过打印机进行输出

2.处理机利用率:20/160 =1/8=12.5%

3.单道批处理执行的工作,只有执行完一个后才会执行下一个

4.

第二章

1.什么是前趋图:前趋是指一个用于描述进程之间执行的先后顺序的有向无环图

绘制前趋图的方法:看对应的式子,式子左侧是产生量,右侧是需求量,S3需求S1和S2的产生量,所以S1和S2指向S3,S3指向S4

2.进程的含义:进程是程序的执行过程,是 系统进行资源分配和调度的一个独立单位

为什么OS引进进程:为了使程序可以并发执行,并且可以对并发执行的程序加以描述和控制

影响:使得参与并发执行的程序都能独立的运行,获得封闭性,可再现,可以机械能描述和控制

5.为什么引进挂起状态:(1)终端用户的需要。终端用户自己的程序在运行期间发现有可疑问题,希望暂停程序运 行,以便用户研究其执行情况或对其进行修改。 (2)父进程的需要。有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程, 或者协调各子进程间的活动。 (3)负荷调节的需要。当实时系统中的工作负荷较重,可能会影响到对实时任务的控制 时,系统可把一些不重要的进程挂起,以保证自身能正常运行。 (4)OS的需要。OS有时希望挂起某些进程,以便检查在进程运行过程中资源的使用情况 或进行记账。所记录的信息包括CPU时间、实际使用时间、作业或进程数量等。

6.进程的基本要素:程序段、相关的数据段和PCB:作用是让参与并发执行的每个程序独立运行,或者说,是让程序变成可以并发执行的进程,创建PCB就是创建进程

7.引起进程创建的主要事件:

  1. 用户登录;系统为用户创建一个进程,并插入就绪队列
  2. 作业调度
  3. 提供服务 系统为用户请求创建一个进程
  4. 应用请求 用户程序自己创建进程

8.进程创建的过程:由进程申请一个空白PCB,并向PCB中填写用于控制和 管理进程的信息;然后,为该进程分配运行时所必需的资源;最后,把该进程的状态转换为就 绪状态并将其插入就绪队列之中

11.引起进程阻塞或唤醒的主要事件:

  1.请求系统服务:提出I/O服务时,并不立即满足该进程的要求时,转变为阻塞状态来等待

  2.启动某种操作:当进程启动某种操作后,在该操作完成之后才能继续执行

  3.新数据尚未到达:对于相互合作的进程而言。

  4.无新工作可做。如发送进程

12.比较进程间的低级和高级通信工具:低级通信:信号量机制缺点: ① 效率低 ② 通信对用户不透明高级通信:直接利用操作系统所提供的一组通信命令, 高效地传送大量数据的一种通信方式。 特点:效率高,通信实现细节对用户透明

13.高级通信机制:共享存储器系统 , 消息传递系统, 管道 通信:又名共享文件通信 客户机-服务器系统 

14.管道文件通信的优缺点:可以进行大量的数据通信,缺点:只能创建在它的进程以及其有亲缘关系的进程之间;缓冲区有限,部分只能单向通信

15.比较直接通信和间接通信:直接通信是发送进程利用OS所提供的发送命令,直接把消息 发送给目标进程。间接通信方式 指进程之间利用信箱的通信方式。间接通信方式是发送进程和接收进程都通过共享中间实体(称 为信箱)的方式进行消息的发送和接收,进而完成进程间的通信。优点是在读/写时间上的随机性

16.OS中引入线程的原因:OS中再引入线程,则是为了减少程序在并发执行时所付出的时空(时间和空间) 开销,以使OS具有更好的并发性。

17.线程的属性:针对线程属性,传入的参数都是NULL。实际上,可以通过构建pthread_attr_t结构体,设置若干线程属性,要使用该结构体,必须首先对其进行初始化;使用完毕后,需要销毁它

18.用户级线程,内核支持线程:用户级线程仅存在于用户空间中。对于这种线程的创建、撤消、线程之间的同步与通 信等功能,都无须内核来实现。内核支持线程,是在内核的支持下运行的,即无论是用户进程中的线程, 还是系统进程中的线程,他们的创建、撤消和切换等,是依靠内核实现的。

19.用户级线程,内核支持线程两者的区别:

线程创建地点:用户级:无需内核实现,内核支持线程:由内核完成线程的创建、调度等

在哪里:内核栈每个执行序列需有两个栈: 用户栈+内核栈

栈的工作内容:用户栈:普通的函数调用,内核栈:系统调用、中断处理

(1)系统必须建立关于进程的数据结构,包括进程控制块(PCB)、进程表、进程间通信机制等。其中,进程控制块是最重要的数据结构之一,包含进程的所有信息,如进程状态、PC((程序计数器)、寄存器、内存分配情况等。进程表是系统管理所有进程的数据结构,用于记录每个进程的信息,包括进程状态、进程控制块地址、进程优先级等。进程间通信机制是多个进程之间进行数据交换和信息共享的手段,包括共享内存、消息传递、信号量等。
(2)为支持进程状态的转换,系统应提供进程控制原语,包括创建进程、撤销进程、阻塞进程、
唤醒进程、进程同步、进程通信等。其
中,创建进程用于创建新的进程并为其分配资源;撤销进程用于结束进程的执行并释放资源;阻塞进程用于将进程置于等待某一事件的状态;唤醒进程用于将被阻塞的进程唤醒;进程同步用于协调多个进程的执行顺序;进程通信用于实现进程之间的信息交换。
(3)执行进程控制原语会导致进程状态的转换和相应数据结构的变化。例如,创建进程会导致新的进程被添加到进程表中,分配相应的资源和初始化进程控制块;撤销进程会将进程从进程表中删除,释放相应的资源和删除进程控制块;阻塞进程会将进程状态置为等待状态,并将进程加入等待队列;唤醒进程会将进程从等待队列中移除,并将其状态置为就绪状态;进程同步和进程通信会导致进程状态的转换,并且需要使用相应的数据结构来实现。
 

1.临界资源:一次仅允许一个进程访问的资源为临界资源 。临界区: 把在每个进程中访问临界资源的那段代码称为临界区。

2.同步机制应遵循的规则 1)空闲让进 2)忙则等待 3)有限等待 4)让权等待

3.访问互斥的原因:临界区内的资源是临界资源,以此仅允许一个进程访问,所以必须要互斥

4.解决进程互斥的方法:(1)硬件同步机制 (2)信号量机制 (3)管程机制

8.会产生什么后果:会导致信号量混乱或陷入死锁。如使用记录型信号量进行P操作被中断,s-value已经小于零,但是没有阻塞队列。

9.AND信号量机制的基本思想:在PV操作时,把所有进程请求的资源都分配给进程,要么分配够,要么一个也不分配。
解决了一个进程需要多个互斥资源才能执行的问题。

10.成对出现的原因:若只有P,没有V就会造z成进程死锁,若只有V,没有P会造成信号量失效。

13.几个等待进程:1个等待进程.;当前值为-1时,表示有一个进程正在临界区运行,而另一个进程因等待而阻塞在信号量队列中,需要被当前已在临界区运行的进程在退出时唤醒。

  • 20
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值