操作系统
2021-07-04 10:23:15 1 举报
AI智能生成
操作系统第五版前四章
作者其他创作
大纲/内容
第一章 绪论
第一节 操作系统的地位及其作用
计算机系统的资源分类
硬件资源
中央处理器(CPU)
内存储器(主存)
外存储器(磁盘、磁带)
各种类型的输入输出设备(键盘、鼠标、显示器、打印机等)
软件资源
由各种程序和数据组成
进程与线程
引入进程
目的:多个程序并发执行<br>定义:在系统中能够独立运行并作为资源分配的基本单位,由机器指令、数据和堆栈组成<br>
引入线程
一个进程可以包含多个线程。<br>线程是系统调度的基本单位,在线程间切换的开销比进程间切换要小,线程可以提高并行度,减少系统开销
操作系统功能
进程管理(处理器管理)<br>
存储管理
文件管理
作业管理
设备管理
第二节 操作系统的特征
基本特征
共享
互斥共享
当进程A访问临界资源时,先提出请求。若此时资源空闲,则系统将资源分配给进程A。此后若有其他进程要访问该资源,只要A未用完就必须等待。直到A访问完并释放资源后,才允许其他进程访问该资源。
同时访问共享
有一些资源允许在一段时间内由多个进程“同时”对它们进行访问。在单处理机环境下,这里同时是宏观意义上的,微观还是交替访问的。
临界资源(独占资源)
在一段时间内只允许一个进程访问的资源。包括大部分物理设备,栈、表格、共享变量等。
并发
并行与并发
虚拟
时分复用技术
空分复用技术
异步
又称“随机性”。在多道程序环境下,由操作系统所管理的计算机会有各种随机出现的事件。
第三节 操作系统的体系结构
Windows
分层模块系统
硬件抽象层 HAL
内核
执行体
大量的子系统集合
UNIX
结构
硬件
内核
系统调用接口
应用程序
第四节 操作系统的发展历史和分类
操作系统的发展过程
人工操作方式(无操作系统的计算机系统)
特点:<br>用户独占全机<br>CPU等待人工操作
缺点:<br>计算机的有效机时严重浪费<br>效率低
脱机输入/输出方式
优点(1)减少了CPU的空闲时间。 (2) 提高I/O速度。
专用操作系统
单道批处理系统
特征
自动性
顺序性
单道性
多道批处理系统
特征
多道性
无序性
调度性
自动性
优点
(1)资源利用率高 <br>(2) 系统吞吐量大 <br>(3) 平均周转时间长<br>(4) 无交互能力。<br>适合大型科学计算、数据处理
需要解决的问题
(1)处理机管理问题。 <br>(2) 内存管理问题。 <br>(3) I/O设备管理问题。 <br>(4) 文件管理问题。 <br>(5) 作业管理问题。
分时系统
用户的需求表现几个方面
人—机交互
共享主机
便于用户上机
现实中的关键问题
最关键的问题是如何使用户能与自己的作业进行交互,即当用户在自己的终端上键入命令时, 系统应能及时接收并及时处理该命令,再将结果返回给用户。 此后, 用户可继续键入下一条命令,此即人—机交互。即使有多个用户同时通过自己的键盘键入命令,系统也应能全部地及时接收并处理:<br> (1) 及时接收。(多路卡,缓冲区)<br> (2) 及时处理。 (作业直接进入内存,<br> 轮流使用处理机)
分时系统的思想
采用时间片轮的方法,同时为许多终端用户服务,对每个用户能保证足够快的响应时间,并提供交互会话的功能。
时间片:将CPU的时间划分成若干个片段,称为时间片,操作系统以时间片为单位,轮流为每个终端用户服务<br>设计目标:对用户的请求及时响应,并在可能条件下尽量提高系统资源的利用率。
特点
并发性
系统能控制多道程序同时运行
共享性
同时有多个用户使用一台计算机<br>宏观上:是多个人同时使用一个CPU<br>微观上:多个人在不同时刻轮流使用CPU
交互性
用户根据系统响应结果进一步<br>提出新请求(用户直接干预每一步)
“独占”性
用户感觉不到计算机为其他人服务<br>(OS提供虚机器,各个用户的虚<br>机器互不干扰)
影响响应时间的因素
终端数目多少<br>调度算法(时间片的选取)<br>信息交换量和信息交换速度<br>机器处理能力<br>请求服务的时间长短及服务请求的分布<br>
实时系统
特点
及时性要求高,系统可靠性高。
应用
实时控制系统
钢铁冶炼和钢板轧制的自动控制、炼油、化工生产过程的自动控制,军事控制等。
实时信息处理系统
银行,机票订购系统、股市行情实时信息处理系统等。
与分时的比较
(1)时钟分辨度高 <br>(2)支持可剥夺任务调度 <br>(3)多级中断机制
第五节 多种方式操作系统
PC操作系统、并行与分布式操作系统
多处理机操作系统
网络操作系统
嵌入式操作系统
第二章 操作系统运行机制与用户界面
第一节 中断和异常
中断
中断源
中断处理过程
保存被中断程序的现场<br>
分析 中断原因, 转入相应处理程序进行处理
恢复被中断 程序的现场(即中断返回)<br>
异常(陷入)
由来自CPU的内部事件或程序执行了陷入指令引起的中断。<br>如由于CPU本身故障、电源故障、程序出错和请求系统服务的指令(陷入指令也称自陷指令或访管指令)引起的中断等。<br>
计算机的两种运行模式
用户态
用户程序运行在用户态,在用户态下,软件只能使用少数指令,它们并不具备直接访问硬件的权限。<br>
内核态<br>
操作系统运行在内核态,在内核态中,操作系统具有对所有硬件的完全访问权限,可以使机器运行任何指令<br>
中断优先级
中断寄存器
中断序号
中断优先级
响应不同优先级中断的原则
CPU首先响应高优先级的中断请求<br>
如果优先级相同,CPU按查询次序响应排在前面的中断
正在进行的中断过程不能被新的同级或低优先级的中断请求所中断
正在进行的低优先级中断过程,能被高优先级中断请求所中断
实现中断优先权的方法
软件
软件查询方式的特点
询问的次序,即为优先权的次序
硬件简单
由查询转至相应的服务程序的时间长,尤其在中断源较多的情况
软件优先级排队
指各个中断源的优先权由软件安排。询问的次序,即为优先权的次序。<br>
硬件
硬件方式有何特点
中断响应速度快
服务效率高
但需要专门的硬件电路
中断屏蔽(禁止响应中断)
通过执行特权指令来设置中断屏蔽码(软屏蔽)的两种结果
禁止某些中断的发生,对应的中断被忽略不管<br>
允许中断发生,但暂时不响应。硬件保存此次中断,当屏蔽解除时再处理
处理机优先级
处理机当前正在运行的程序的中断响应级别。当处理机处于某一优先级时,只允许响应比该优先级高的中断。设置处理机优先级,相当于设置屏蔽码<br>
第二节 中断/异常响应和处理
中断/异常响应<br>
中断响应
陷入响应
几个基本概念
PC寄存器
断点
现场信息
中断的恢复点
异常的恢复点分三种情况
指令出错引起的异常,结束程序<br>
自陷指令引起的系统调用,会返回到自陷指令的下一条指令<br>
缺页异常,会返回到异常发生的指令重新执行<br>
中断/异常向量
中断/异常处理
三个阶段
保存被中断程序的现场
分析 中断原因, 转入相应中断/异常处理程序进行处理
重新选择程序(进程)运行
恢复被中断 程序的现场(即中断返回)<br>
中断和异常的区别
中断源不同
引入的目的不同<br>
恢复点不同<br>
中断可以与当前指令有关(如I/O中断),也可以与当前指令无关(如时钟中断),异常与当前指令有关。<br>
中断可以屏蔽,异常不能屏蔽。
第三节 操作系统运行模型
操作系统的主要功能模块<br>
进程管理
进程管理的主要功能
进程通信
进程调度
进程控制
进程同步
外设管理
设备管理
设备管理的主要任务:<br>
为用户程序分配I/O设备
完成用户程序请求的I/O操作
提高CPU和I/O设备的利用率
改善人机界面
设备管理程序应具有的功能
缓冲管理
设备分配
设备处理
虚拟设备功能
文件管理
文件存储空间的管理<br>
目录管理<br>
文件读、写管理<br>
文件保护<br>
向用户提供接口<br>
存储管理
存储器管理
存储器管理的主要任务
为多道程序的并发运行提供良好环境<br>
便于用户使用存储器
提高存储器的利用率
为尽量多的用户提供足够大的存储空间
存储器管理的功能
内存分配
内存保护
地址映射
内存扩充
接口服务(命令解释程序)命令解释程序运行在用户态
用户接口<br>
程序接口<br>
Unix
初始化硬件和系统数据区,创建1号进程。<br>
由1号进程创建tty终端进程。<br>
创建内核程序的进程
操作系统运行模式
独立内核模式(早期方式)<br>
嵌入用户进程中运行模式
微内核模式<br>
操作系统的大部分功能模块由用户进程实现,将系统调用转接代码,进程调度代码、中断处理程序放在进程的核心栈中。<br>核心态下的进程很少,使得用户程序和系统程序的通信、合作开销大,效率低。<br>
第四节 系统调用
陷入指令(自陷指令)<br>
Unix中使用trap指令:trap 系统调用类型号<br>执行trap指令后,CPU转入核心态,控制权转入陷入处理程序。<br>根据系统调用类型号,查系统调用入口表,找到相应系统调用程序的入口地址,转去执行<br>
系统调用的实现<br>
参数传递
系统调用处理过程<br>
第三章 进程与处理机管理
第一节 进程描述
引入进程目的
通常的程序不能参与并发,因为程序执行的结果是不可再现的。 为使程序能并发执行,且为了对并发执行的程序加以描述和控制,引入了“进程”
进程实质
进程的定义
四部分组成
可执行程序
进程用户空间
栈
系统资源
不同进程的共享程序
是纯代码,即在执行过程中不会改变的代码,由指令和常量组成。
数组、变量等可变部分被保存在各个进程自己的用户空间。不会发生数据的相互覆盖
进程映像
用户程序
用户数据
栈
进程空间的初始化
进程控制块(PCB)
进程标识符
本进程标识、父进程标识、所属用户标识等
处理机状态
通用寄存器、指令计数器PC、PSW、用户栈指针等
进程控制信息
进程调度和状态信息
进程间通信信息
存储管理信息
资源清单
链接指针
进程控制块的组织方式
按链接方式组织PCB (队列)
按索引方式组织PCB (表)
第二节 进程状态
进程的概念
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位
进程是可与其他程序并发执行的程序,是在一个数据集合上的运行过程。它是系统进行资源分配和调度的一个独立单位。
进程是进程实体的一次运行过程,是系统进行资源分配和调度的独立单位
进程与程序的区别
程序是静态的,进程是动态的
进程更能真实地描述并发,而程序不能
进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的
程序可作为软件资源长期保存,进程只是一次执行过程,是暂时的
进程是系统分配调度的独立单位,能与其他进程并发执行
进程可创建其他进程,而程序并不能形成新的程序。
进程状态
进程的三种状态
就绪状态
阻塞状态
执行状态
进程状态转换条件
就绪 --> 运行
运行 --> 就绪
运行 --> 阻塞
等待 --> 就绪
其他状态
创建状态
进程创建过程
终止状态
进程的终止过程
挂起状态
引入挂起状态的原因
包含
就绪状态(ready)
阻塞状态(blocked)
阻塞挂起状态(blocked suspend)
就绪挂起状态(ready suspend)
挂起可能有的情况
阻塞到阻塞挂起
就绪到就绪挂起
运行到就绪挂起
阻塞挂起到就绪挂起
好处
提高处理器效率:就绪进程表为空时,有空闲内存空间用于提交新进程,可提高处理器效率;
可为运行进程提供足够内存:资源紧张时,可把某些进程对换至外存;
有利于调试:在调试时,挂起被调试进程,可方便对其地址空间进行读写。与五状态进程模型相比,挂起进程模型把原来的就绪状态和阻塞状态进行了细分。在单挂起进程模型中增加了一个阻塞挂起状态;而在双挂起进程模型中增加了就绪挂起和阻塞挂起两个状态。这时,原来的就绪状态和阻塞状态的意义也发生了一些变化。
五种基本状态进程模型
七状态进程模型
新状态转换
NULL-->创建
创建-->就绪挂起
创建-->就绪
就绪挂起-->就绪
第三节进程控制与调度
进程运行
执行模式
cpu工作方式分为管态与目态,在管态方式cpu可以执行特权指令,而在目态方式只能执行非特权指令。
系统调用是特权指令。当用户想要执行系统调用时,需要先执行一条访管指令,将CPU转入管态,访管指令可以在目态下执行。
为方便高级语言使用访管指令,通常提供系统调用库,其中包括许多系统调用接口函数,在这些函数中会安排一条访管指令
然后由操作系统分析访管指令的参数,让相应的系统调用服务程序为用户服务。
模式转换
进程切换
进程切换过程
保存当前进程的处理机现场,包括PC、PSW、核心栈指针等寄存器
修改当前进程的PCB,从运行态改为其他状态,链到相应状态队列中
由进程调度程序选择一个进程
修改被选中进程的PCB,状态改为运行态
将当前进程存储管理数据修改为选中进程的存储管理数据,包括存储地址寄存器,页表指针等
恢复被选中进程的处理机现场,运行该进程
进程调度
进程调度要解决的问题
what
when
how
处理机调度的层次
高级调度(作业调度)<br>
功能
保存当前进程的处理机现场信息<br>
按某种算法选取进程<br>
把处理机分派给进程,恢复选中进程的处理机现场(通过分派程序)<br>
中级调度<br>
功能
低级调度(进程调度)<br>
进程调度方式
非抢占方式
优点
缺点
抢占方式
优点
缺点
引发进程调度的原因
主动放弃处理机的情况
支持可剥夺的进程调度方式
支持可剥夺的进程调度方式,但没有新的就绪进程,下述情况也会发生进程调度
进程调度和切换时机
理论上讲,以下三个事情会连续发生
不能马上进行调度与切换的情况
处理中断的过程中<br>
进程在操作系统内核程序的临界区中<br>
其他需要完全屏蔽中断的原子操作<br>
进行调度与切换的时机
发生引起调度的条件,且当前进程无法继续运行下去。实现了非剥夺方式。<br>
当中断处理结束或自陷处理结束后,返回被中断进程的用户态程序现场前,若置上请求调度标志,马上进行调度与切换。实现了剥夺方式。<br>
调度算法
先来先服务(FCFS)算法<br>
优点
缺点
短作业优先调度算法<br>
最高优先权优先调度算法 <br>
确定进程的优先权
静态优先数法
动态优先数法
算法
非抢占式优先权算法
抢占式优先权算法
轮转法 <br>
简单轮转法
系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。
多级反馈队列 <br>
将就绪队列分为N级,每个就绪队列分配给不同的时间片,第一个队列的优先级最高,队列级别越高,时间越短,级别越小,时间片越长。<br>
第一次进入的新进程放入第一队列队尾,按FCFS原则调度。若时间片内完不成则转入第二队列尾,按FCFS调度,直至转入第n队列尾,按时间片轮转调度。<br>
系统从第一级调度,仅当第1至(i-1)队列为空才调度第i队列。<br>
等待进程被唤醒时,进入原来的就绪队列。<br>
当有较高级别进程出现则抢占当前进程,并将当前进程移到该队列尾。<br>
高响应比优先调度算法
如果作业等待时间相同,要求服务的时间越短优先权越高,有利于短作业。<br>如果要求服务的时间相同,等待时间越长优先权越高,实现了先来先服务。<br>对于长作业,优先级随等待时间增加而提高,从而避免长期无法获得处理机。<br>不足:每次调度前重新计算响应比。<br>
第四节 作业与进程的关系
批处理系统中作业与进程的关系
作业调度进程为选中的作业创建一个根进程。<br>
根进程可以创建一个或多个子进程,执行命令解释程序<br>
根进程遇到作业说明书中的“撤除作业”语句时,会将作业状态改为完成状态,将结果送入磁盘<br>
作业终止进程负责将结果输出到外设,回收作业占用资源及相关数据结构,删除磁盘中的信息。向作业调度进程请求新的作业调度<br>
分时系统中作业与进程的关系
用户逐条输入命令语言,系统给出命令运行结果。<br>
系统为每个终端建立一个进程(终端进程),该进程执行命令解释程序。可创建一个子进程执行一条命令。子进程还可以创建子进程。<br>
用户通过登出命令结束上机过程。<br>
交互提交批作业
系统同时支持交互和批处理方式。<br>
用户交互式的准备好作业的程序、数据和作业说明书。<br>
用提交命令将作业交给作业队列。<br>
作业调度程序为选取的作业创建根进程。<br>
第五节线程的引入
线程和进程的关系<br>
线程的属性
是进程的一个轻型实体,可作为系统独立调度和分派的基本单位。 <br>
不拥有系统资源(只拥有从属进程的全部资源,资源是分配给进程),可共享进程资源 <br>
一个进程中的多个线程可并发执行。(进程可创建线程执行同一程序的不同部分) <br>
系统开销小、切换快。(进程的多个线程都在进程的地址空间活动)<br>
线程与进程的比较
调度<br>
并发性<br>
拥有资源<br>
系统开销<br>
第四章 进程同步与通信进程死锁
第一节 并发执行的实现<br>
前驱图<br>
前趋图中的每个结点可以表示一条语句、一个程序段或进程,结点间的有向边表示两个结点之间存在的偏序或前趋关系,可写成Pi→Pj,Pi是Pj的直接前趋,Pj是Pi的直接后继。前趋图中必须不存在循环。 <br>
并行编程方法
利用“并行识别器”识别程序中的并发成分,创建相应进程(线程)<br>
程序员利用并发程序设计语言编写并发程序,由编译器创建相应进程(线程)<br>
程序员利用系统调用或并行库函数,创建进程(线程)。比如C语言<br>
并发执行的实现
fork( )函数<br>
exit( )函数<br>
wait( )函数<br>
调用wait() 的父进程会发生以下情况
如果其所有子进程都还在运行,则阻塞;<br>
如果一个子进程已经终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立即返回;<br>
如果它没有任何子进程,则立即出错返回;
僵尸进程
僵尸进程的危害
第二节 进程同步与互斥
同步与临界段问题
同步问题主要是由于进程间协调工作中等待、传递信息而产生的。
同步(synchronize)实际上就是让一个进程停下脚步处于等待状态直到另一个进程向它发出继续执行的信号后,两个进程再继续并发执行的一种通信机制。
临界资源
临界段(临界区)
解决临界段问题的硬件实现方法
蔽中断方法(关中断)<br>
缺点<br>
Test_and_Set指令<br>
Swap指令<br>
缺点
信号量机制
信号量
信号量的特性
信号量的使用
信号量的物理含义
原语(原子操作)
目的
Wait(等待)
Release(释放)
P、V原语
P原语
V原语
p,v原语讨论
优点
缺点
用P、V原语解决进程间互斥问题
互斥例子
前趋关系的例子
生产者-消费者问题
简化的生产者─消费者问题
哲学家就餐问题
实现原语
为防止死锁发生可采取的措施<br>
最多允许4个哲学家同时坐在桌子周围<br>
仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子
给所有哲学家编号,奇数号的哲学家必须首先拿左边的筷子,偶数号的哲学家则反之<br> 为了避免死锁,把哲学家分为三种状态,思考,饥饿,进食,并且一次拿到两只筷子,否则不拿<br>
读者写者问题
读者优先
读者:<br> while (true) {<br> P(rmutex);<br> if (readcount==0)<br> P (w);<br> readcount ++;<br> V(rmutex);<br> 读<br> P(rmutex);<br> readcount --;<br> if (readcount==0)<br> V(w);<br> V(rmutex);<br> };<br>
写者:<br> while (true) {<br><br> P(w);<br> 写<br> V(w);<br><br> };<br>
第三节 消息传递原理<br>
两种基本进程通讯方法
共享存储(Shared-memory)
消息传递(message-passing)
消息传递方法<br>
直接通讯法<br>
缺点
发送原语:send(receiver,&message);<br>
接收原语:receive(sender,&message)。<br>
间接通讯法(信箱命名法)<br>
特点
有一个通讯双方都知道的一个逻辑消息队列(Linux有名管道属于这种形式)<br>
使用时消息发送者约定写方式打开信箱,消息接受者约定读方式打开信箱。或同时读写打开。<br>
很容易建立双向通讯链(只要对信箱说明为读写打开)。<br>
发送原语:send(MB,&Message)<br>接收原语:receive(MB,&Message)<br>
管道通信
为了协调双方通信,管道通信必须提供三方面的协调能力
互斥<br>
同步<br>
确定对方是否存在<br>
隐蔽通道
进程间使用隐蔽通道进行通信的方式<br>
隐蔽通道的分类
存储隐蔽通道<br>
时间隐蔽通道<br>
隐蔽通道的判定<br>
发送方和接收方进程必须有权存取共享资源的同一属性。<br>
发送方进程必须有办法改变(如写)该共享资源。<br>
接收方进程必须有办法侦查(如读)该共享资源的改变。<br>
必须存在某种机制,使发送方和接收方进程能启动隐蔽通信并正确给事件排序。该机制可能是另一条较小带宽的隐蔽通道。<br>
显式通道
第四节 死锁
操作系统中死锁的例子<br>
竞争外部设备<br>
竞争磁盘空间<br>
P、V操作使用顺序不当<br>
使用资源出现循环等待<br>
死锁产生同时满足四个必要条件
互斥条件(资源独占)<br>
占有等待条件(部分分配,占有申请)<br>
不剥夺条件(不可强占)<br>
环路等待条件。<br>
解决死锁的基本办法<br>
预防死锁<br>
属于事先处理。设置限制条件<br>
避免死锁<br>
属于事先处理。资源动态分配时,防止系统进入不安全状态<br>
检测死锁<br>
允许死锁产生,可以检测死锁的发生,并准确定位<br>
解除死锁<br>
允许死锁产生,撤销或挂起一些进程以回收资源和再分配<br>
死锁避免
避免死锁方法
动态检查
安全状态
不安全状态
银行家问题
死锁的检测
死锁定理
解除死锁
剥夺资源
撤消进程
0 条评论
下一页