PPT第二章第二部分第14页
操作系统概论
操作系统定义
计算机系统分为四个层次
应用程序
实用程序
操作系统
硬件
单向调用关系:接口
操作系统:紧挨着硬件的第一层软件,为其他软件提供基础运行环境
实用程序:支持其他软件编制和维护的软件
应用程序:特定应用领域专用的软件
操作系统定义
由一系列程序模块组成的一个大程序
只包含操作系统内核
时分-分时使用系统资源
空分-对存储空间以分割的方式占用
核心态/用户态
两类性质不同程序
操作系统内核程序
用户自编程序和系统外层应用程序
核心态管态--管理者和控制者,用户态目态
操作系统内核程序在核心态运行,CPU可以执行指令集中所有指令
用户进程在用户态运行,仅能执行整个指令集的一个子集
操作系统设计目标
方便性:方便用户使用计算机
有效性:使计算机系统能高效运转,提高系统资源的利用率
便于操作系统的设计、实现和维护
操作系统形成与发展
顺序处理
手工操作,独占方式
简单的批处理系统
有一个监控程序软件常驻内存
一次装入内存一道作业,并启动作业运行
多道成批处理系统
原先以CPU为中心的体系结构,转变为以主存为中心
通道:独立于CPU,专门用来控制输入输出设备的I/O处理机
中断:当I/O设备完成传输后,通过中断机构向CPU报告完成情况
缓冲技术:在内存设置缓冲区,来缓存用户的输入和输出
多道程序设计技术:指在内存中同时存放若干道程序,使它们在系统中交叉运行
多道、宏观上并行(不同作业在CPU和外设上运行)、微观上串行(在单CPU上交叉运行)
引入的原因根本目的是提高CPU的利用率,充分发挥系统设备的并行性
衡量批处理系统的性能指标
资源利用率:指定在给定时间内,系统中某一资源实际使用时间所占比率
吞吐量:指单位时间内系统所处理的信息量,每小时或每天所处理的作业个数来度量
周转时间:从作业进入系统到作业退出系统所用的时间
特点
优点:系统吞吐量大,资源利用率高
缺点:作业的周转时间长,用户无法实现对作业的控制
分时系统
工作方式:一台主机连接有若干个终端
分时:多用户分时使用CPU的时间,将CPU的单位时间划分为若干个时间片
特点
同时性
独立性
交互性
及时性
与批处理系统区别
目标对用户请求快速响应
适用于短小作业
终端键入命令
实时系统
实时控制系统
实时信息处理系统
以数据或信息作为处理对象,既不接收用户作业,也没有作业概念
硬实时
软实时
特点
实时性
可靠性
可确定性
嵌入式系统
要求固化存储
操作系统功能、服务和特性
三种基本类型
批处理系统
分时系统
实时系统
通用操作系统
功能
处理机管理:进程管理
存储器管理:主存管理
设备管理:涉及对系统中各种输入、输出设备的管理和控制
文件管理:将程序、数据、操作系统软件等组织成文件存放在磁盘或磁带上
掌握状态信息
进程--进程表
存储器--存储表
I/O设备--I/O设备表
文件--文件表
提供服务
用户接口-通过OS来使用计算机
程序执行-装入内存执行,能结束执行
I/O操作-可能涉及到文件或I/O设备
文件系统操作-向用户提供按名存取文件
通信-进程之间
错误检测-能检测和处理错误
资源分配-多进行并发,资源共享
统计-统计用户对系统资源的使用情况
保护-确保控制对系统资源的访问
特性
并发性:系统中存在若干个逻辑上相互独立的程序或程序段
共享性:系统中的资源可供内存中多个并发执行的进行共同使用
支持系统并发性的物质基础是资源共享
虚拟性:把共享资源的一个物理实体变为若干个逻辑上的对应物
异步性:有限的共享资源使并发进程之间产生相互制约关系
操作系统进一步发展
个人计算机操作系统
单用户单任务OS
单用户多任务OS
多用户多任务OS
多处理机操作系统
非对称多处理ASMP
对称多处理SMP
多核系统
网络操作系统
网络软件目标:从一台机器上的应用程序取出一个请求,将它传递到另一台机器上
网络软件包括:服务,API,TCP/IP协议,网络适配器驱动程序
模式
客户/服务器
对等模式
分布式操作系统
没有标准协议
完全分布式系统仍在研究中
集群是一种分布式系统
智能卡操作系统
集成电路
中央处理器
存储部件
对外联络的通信接口
实际上为一台单片机系统
嵌入式操作系统
用户与操作系统接口
操作接口:命令语言或窗口界面是用户使用计算机系统的主要接口
操作系统提供一个命令解释程序来支持命令语言的解释执行,用户态
系统初始化时windows为终端用户生成一个运行explorer.exe程序的进程
编程接口:系统调用是用户与操作系统之间的编程接口
系统调用:系统中各种共享资源都由操作系统统一掌管,凡是与资源有关的操作必须通过系统调用完成
现在用户编程时可使用库函数,不必直接系统调用
操作系统的运行环境
操作系统内核的功能模块
系统初始化模块
进程管理模块
存储管理模块
I/O设备管理模块
文件管理模块
通过中断和异常,CPU能从用户程序的运行转入操作系统内核程序的运行
中断:外中断,来自CPU正在执行指令以外的事件
处理机优先级表示当前处理机所运行的中断处理程序对应的中断级别
异常:内中断、例外或陷入,只来自CPU正在执行指令的内部事件
异常不能被屏蔽,一旦出现应立即处理
每个中断/异常信号相应的处理程序入口地址存放在称为中断/异常向量的主存单元
中断处理程序和系统调用服务程序在中断和陷入时利用用户进程的核心栈空间,嵌入用户进程中运行
操作系统设计规范
系统效率
系统可靠性
可移植性
可伸缩性
兼容性
安全性
进程管理
进程的概念
程序的顺序执行
特点
顺序性
封闭性
可再现性
优点
缺点
程序的并发执行
多个程序在一个处理机上交替执行
以资源共享为条件
增强计算机系统的处理能力,提高资源利用率
特点
失去程序的封闭性和可再现性
并发执行的程序间产生了相互制约关系
程序与CPU执行活动之间不再一一对应
程序是完成特定功能的指令序列,静态
CPU执行活动是动态概念,是程序执行过程
编译程序为可再入程序
进程是支持程序执行的系统机制
进行是程序的一次执行
至少一个可执行程序
一个独立的地址空间
一个执行栈区
系统资源
进程具有特性
动态性:一次执行过程,临时的,有生命周期的
独立性:系统进行资源分配和调度的一个独立单位
并发型:多个进行可在处理机上交替执行
结构性:系统为每个进程建立一个进程控制块
异步性:每个进程的相对执行速度不可预知各进程彼此相互影响
进程与程序的区别和联系
进程动态,程序静态
程序是有序代码集合,进程是程序的执行
进程不可以在计算机之间迁移,程序可以复制
进程是暂时的,程序是永久的
进程包括程序,数据,进程控制块
通过多次执行,一个程序可对应多个进程
通过调用关系,一个进程可包括多个程序
进程可创建其他进程,程序不能形成新的程序
进程上下文
用户级上下文:指进程的地址空间
用户正文段
用户数据段
用户栈
寄存器上下文
程序计数器
PSW
栈指针
保存变量和临时结果的通用寄存器
系统级上下文:进程的PCB,核心栈等
栈记录进程的执行历程,栈帧中存放有关的输入参数、局部变量、过程调用等
每个进程会调用不同的过程,从而有一个各自不同的执行历程
进程的描述
进程控制块
PCB是进程存在的唯一标识
含有进程的描述信息和管理控制信息
在UNIX中可通过进程文件系统直接访问进程映像
基本信息
进程标识符
外部标识符:字母数字组成用户使用
内部标识符:一个唯一的整数
进程的状态和调度信息
进程使用的资源信息
CPU现场保护区
记账信息:包括COU使用时间量账号等
进程之间的家族关系
进程的链接指针
进程描述表
进程的状态
运行态:进程正在CPU上运行
单CPU系统一次只有一个运行进程,多CPU系统可能有多个运行进程
阻塞态:等待态。一个进程因等待某个条件发生而不能运行时所处的状态
就绪态:已获得除CPU之外的所有必要资源,只要再获得CPU就可执行
运行态--阻塞态:由运行进程自己主动改变的
阻塞态-就绪态:由外界事件引起的
运行态-就绪态:处于运行态的进程被剥夺CPU
就绪态-运行态:被进程调度程序选中
创建态:刚刚建议,未进就绪队列
终止态:已正常结束或异常结束,但尚未撤销
创建态--就绪态:操作系统准备好再接纳一个进程时把一个进程从创建变成就绪
进程组织
把用户要计算机完成的一串相关的任务称为作业
批处理系统中一个作业可创建多个进程
windows作业对象将一个或多个进程作为一个组来控制和管理
线性表组织方式
链表组织方式
处于就绪态的进程可按照某种策略排成多个就绪队列
处于阻塞态的进程又可以根据阻塞的原因不同组织成多个阻塞队列
索引表方式
进程的控制
进程创建
创建时机
系统初始化会创建若干进程
在交互式系统中,键入一个命令或点击一个图标都会开始一个新进程
UNIX和windows系统中用户可以同时打开多个窗口,每个窗口运行一个进程
unix的fork()会创建一个与调用进程相同的副本
windows中win32函数调用createprocess()处理进程创建也负责把程序装入进程
进程创建新进程时有两种执行可能
父进程与子进程并发执行
父进程等待,直到某个或全部子进程执行完毕
新进程的地址空间有两种可能
子进程是父进程的复制品
子进程装入另一个程序
进程创建的功能
扫描进程表,找到一个空闲的PCB
为新进程的程序、数据、用户栈分配内存
初始化PCB
将新进程插入就绪队列
进程撤销
进程执行完或因故障不能继续运行
功能:在PCB集合中寻找要撤销的进程,若有子孙进程也需要终止,以防不可控
进程阻塞
在运行过程中进程期待某一事件发生时自己执行阻塞原语,由运行态变为阻塞态
功能:中断CPU将其运行现场保存在其PCB中,置状态为阻塞态,插入相应事件的阻塞队列中,转进程调度
进程唤醒
被阻塞进程所期待的事件出现了,则由相关进程调用唤醒原语将其唤醒
把被阻塞进程从阻塞队列中移出
将其PCB的现行状态改为就绪状态
插入就绪队列中
进程挂起
实时系统会根据实时现场的需要将正在执行的或没有执行的进程挂起一段时间
被挂起的进程由活动状态变为静止状态
分时系统,把进程从内存换到外存,进程处于静止状态,不被调度
进程解挂
当挂起进程的原因被解除时,系统调用激活原语将指定的进程激活,静止变为活动
就绪进程被激活时,通常立即转进程调度
进程调度
进程数>处理机数,多进程竞争处理机
进程调度就是为了进程分配处理机
系统运行性能在很大程度上取决于调度,吞吐量大小、周转时间长短,响应及时性
处理机的调度级别
作业调度;高级调度
进程调度:低级调度
交换调度:中级调度
进程调度要考虑CPU的利用率
首先用户态必须切换到核心态
保护当前进程的状态以便以后重新装载
通过运行调度算法选定一个新进程
如果每秒钟切换进程的次数太多,会耗费大量CPU时间
进程调度的功能
记录系统中各进程的执行状况
选择进程真正占用CPU
进行进程上下文切换
将正在执行进程的上下文保存在该进程的PCB中,以便以后恢复执行
将刚选中进程的运行现场恢复起来并将CPU的控制权交给被选中进程使其执行
进程调度方式
非抢先方式(非剥夺方式)
某一进程占用CPU直到运行完或不能运行为止,其间不被剥夺
抢先方式(剥夺方式)
允许调度程序给基于某种策略剥夺现行进程的CPU给其它进程,用在分时系统实时系统
进程调度时机
现行进程完成或错误终止
提出I/O请求,等待I/O完成时
在分时系统,按照时间片轮转,分给进程的时间片用完时
优先级调度,有更高优先级进程就绪
进程执行了某种操作原语,如阻塞原语和唤醒原语
进程调度的基本准则
CPU使用率
吞吐量
周转时间
等待时间
相应时间
进程调度算法
进程调度所采用的算法是与整个系统的设计目标相一致的
批处理系统的设计目标是增加系统吞吐量和提高系统资源利用率
分时系统设计目标是保证每个分时用户能容忍的响应时间
优先级调度法
将CPU分配给就绪队列中优先级高的进程
静态优先级:在进程创建是确定的,运行时保持不变
动态优先级:原优先级可随进程的推进而改变
轮转法
用在分时系统,轮流调度所有就绪进程
利用一个定时时钟,使之定时地发出中断
时间片长短的确定原则
前后台法
将分时用户作业放在前台,把批处理作业放在后台
系统对前台作业按照时间片轮转法进行调度,仅当前台无作业时才把处理机分配给后台作业进程
后台进程通常按先来先服务方式运行
多级反馈队列轮转法
刚创建的进程和因请求I/O而未用完时间片地进程排在最高优先级队列
运行2-3个时间片还未完成的进程降级
时钟驱动法
加权轮转法
先来先服务
最短作业优先
若系统不断进入短作业,长作业就没有机会运行
响应比高者优先
(作业等待时间+作业估计运行时间)/作业估计运行时间
1+作业等待时间/作业估计运行时间
特点结合了先来先服务、短作业优先的方法,优先运行短作业和等待时间足够长作业
缺点:算法复杂
线程
传统操作系统,每个进程有一个地址空间和一个控制线程
需要多线程的主要原因在许多应用中同时发生着多种活动,其中某些活动随着时间的推进会被阻塞
单线程字处理进程
多线程字处理
进程内的多线程共享同一个地址空间和所有可用数据
线程:进程内的一个可执行实体,是处理机调度的基本单位
线程的组成
一个唯一的标识符
一个独立的程序计数器
一组表示处理机状态的寄存器
两个堆栈:用户态执行,核心态执行
有的把线程叫做轻型进程,把传统进程叫做重型进程
创建进程时,系统同时为进程创建第一个线程,进程中的其它线程是通过调用线程创建原语显式创建的
进程与线程比较
拥有的资源
进程拥有一个独立的地址空间,若干代码段和数据段,若干打开文件主存及至少一个线程
一个进程内的多线程共享该进程的所有资源,线程自己拥有很少资源
调度
进程调度需进程上下文的切换,开销大
同一进程内的线程切换,仅把线程拥有的一小部分资源变换了即可,效率高
并发性
引入线程后,系统的并发执行程序更高
进程之间,进程内的多线程之间可并发执行
安全性
同一进程的多线程共享进程的所有资源,一个线程可以改变另一个线程的数据
多线程实现不会产生此问题
系统对线程的支持
用户级线程
有关线程的所有管理工作都由用户进程通过调用线程库完成
内核以进程为单位进程调度,一个线程阻塞,其依附的进程也阻塞
多线程对于核心级一个进程
核心级线程
有关线程的管理工作都由内核完成,应用程序通过系统调用来创建或撤销线程
一个线程的阻塞,不影响其他线程的执行
两级组合
即支持用户级线程,也支持核心级线程
用户级线程对于核心级多个线程
当内核了解到一个线程阻塞后,通知运行时系统,重新调度其他线程
进程的低级通信
进程之间需要通信,一个进程的输出作为另一个进程的输入
进程间通信问题--IPC问题
各并发进程对资源的共享
互斥关系:通过共享资源而使进程之间产生的关系叫间接制约关系
系统中存在若干协作进程
同步关系:一个用户作业涉及一组并发进程,这些进程须相互协作
在运行过程中,这些进程可能要在某些同步点上等待协作者发来信息才能继续运行
这种制约关系叫做直接制约关系
进程的同步与互斥关系,叫做进程通信,也叫做低级通信
进程之间的互斥
共享资源
慢速的硬设备,打印机等资源
软件资源:共享变量,共享文件等
临界资源
一次仅允许一个进程使用的资源
临界区
并发执行的进程访问临界资源的那段必须互斥执行的程序
并发进程遵循的四个准则
任何两个进程不能同时处于其临界区
不应对CPU的速度和数量做任何假设
临界区外运行的进程不得阻塞其他进程
不得使进程无限期等待进入临界区
解决进程之间互斥的方法
软件实现方法
硬件实现方法
关中断
在进程刚进入临界区后立即禁止所有中断,在进程要离开之前再打开中断
CPU只有在发生中断或其它中断时才会进行进程切换
优点:简单
缺点
把禁止中断的权力交给用户进程是不明智的
若是多处理机系统,则禁止中断仅仅对执行本指令的那个CPU有效
使用测试和设置指令
锁位变量W
进程之间的同步
计算进程与打印进程访问缓冲区的速度不匹配,需要进行同步处理
为了使进程同步,需要引入信号量机制
信号量和P,V操作
基本原理
信号量表示资源的物理实体
int value表示该类资源的可用数量
process *point等待使用该类资源的进程排成队列的队列头指针
对信号量S的操作只允许执行P,V操作
P,V操作由原语组成,执行过程中不可分割
分类
公用信号量(互斥信号量)
私用信号量(同步信号量)
利用信号量实现进程之间的互斥
设置一个互斥信号量mutex,初值为1,表示该临界资源空闲
调用P申请临界资源
调用V释放临界资源
把临界区代码置于P和V之间,就可实现临界资源互斥使用
信号量的取值范围是+1~-(n-1)
信号量值为负时,说明有一个进程正在临界区执行,其它的正排在信号量等待队列中等待
信号量实现进程之间同步
利用信号量和P,V操作实现进程同步,使用共享资源时必须互通消息
信号量解决生产者和消费者问题
生产者:当进程释放一个资源时,可把它看成是该资源的生产者
消费者:当进程申请使用一个资源时,可把它看成该资源的消费者
读者和写者问题
一个多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间,一些只读进程,一些只写进程
任意多的读进程可以同时读这个数据区
一次只有一个写进程可以往数据区中写
若一个写进程正在写,禁止任何进程读
理发师问题
理发师,顾客,椅子
哲学家进餐问题
管程
管程比信号量好控制
管程的定义
基本思想
管程是关于共享资源的数据结构及一组针对该资源的操作过程所构成的软件模块
管程保证:一次只有一个进程能在管程内活动,从而提供互斥机制,保证管程数据的一致性
管程组成
用管程解决临界资源的互斥使用
用管程解决生产者和消费者问题
局限性
进程的高级通信
低级通信优点:速度快
低级通信缺点
传送信息量小且效率低,每次通信智能传递一个单位的信息量
通信对用户不透明,得由用户自己去实现通信
P,V操作使用不当时易导致死锁
高级通信
高级通信机制:消息缓冲,信箱,管道,共享主存区等
进程执行发送原语
非阻塞发送:发送完消息,不等消息被接收就继续前进
阻塞发送:发送完消息,阻塞等待,直到收到接收者的回答消息才继续前进
进程执行接收原语
阻塞接收:接收者阻塞,直到有消息可用
非阻塞接收:收到一个有效消息或无效消息
进程同步方式
非阻塞发送,阻塞接收
非阻塞发送,非阻塞接收
阻塞发送,阻塞接收
消息缓冲通信机制
系统设置一个由若干缓冲区组成的消息缓冲池,每个缓冲区可用存放一个消息
每当进程欲发送消息时,向系统申请一个缓冲区,将消息存入缓冲区,然后把该缓冲区连接到接收进程的消息队列上
消息队列通常放在进程控制块中
属于直接通信方式
消息缓冲区的类型
PCB中有关通信的数据项描述
发送原语、接收原语
发送原语:申请一个消息缓冲区,将消息从发送区传入其中,然后挂到接收进程的消息队列上
接收原语:将消息接收到自己的接收区
死锁