前言
本人学习采用的是学校老师出版的课本,参考了多个复习视频的内容,教学顺序与部分内容可能有所不同,具体以自己老师的教学为准,适合同学期中和期末考试的复习。重点内容用#标记,#数量越多,越重要,电子科技大学学生可以先看附言,了解考试的重点内容和成绩分布,祝大家都能取得一个好成绩。
一.操作系统概论
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.引起进程创建的主要事件:
- 用户登录;系统为用户创建一个进程,并插入就绪队列
- 作业调度
- 提供服务 系统为用户请求创建一个进程
- 应用请求 用户程序自己创建进程
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时,表示有一个进程正在临界区运行,而另一个进程因等待而阻塞在信号量队列中,需要被当前已在临界区运行的进程在退出时唤醒。