操作系统基本类型与特点
分时系统是指在一台主机上连接多个带有显示器和键盘的终端,同时允许多个用户通过自己的键盘,以交互的方式使用计算机,共享主机中的资源。
- 实时操作系统
- 微机操作系统
操作系统特性的理解
并发
- 共享
- 虚拟
- 异步
程序是不能并发执行的,只有为程序创建进程,才能并发执行。
进程是指在操作系统中能独立运行并作为资源分配的基本单位
进程不仅包括程序,还包括数据、堆栈等;是一个独立运行的活动实体
现代操作系统引入了能独立运行的更小的单位-线程
** 共享:两种资源共享方式**互斥共享,一段时间仅允许一个进程访问的资源,称为临界资源、独占资源:打印机、磁带、程序中的变量
同时访问方式:一段时间允许多个进程访问,但微观交替使用,比如磁盘
并发和共享互为条件,是多用户OS最基本的特征
虚拟:通过某种技术将一个物理实体映射为若干个逻辑上对应物,可以提高资源利用率1)时分复用:利用处理及的空闲时间运行其他程序,提高处理机的效率2)空分复用:利用存储器的空闲空间分区域存放和与运行其他的多道程序,提高内存的利用率。
异步性:进程以不可预知的运行速度向前推进
操作系统内核
- 操作系统内核:常驻内存,通常与硬件紧密相关
- 支撑功能:中断处理、时钟管理、原语操作(由若干条指令组成,用于完成一定功能。原子操作:要么不做,要么全做,不可分割)
- 资源管理功能:进程管理、存储器管理、设备管理
处理及的双重工作模式
内核态(管态、系统态)执行包括特权指令在内的一切指令
用户态:不能执行特权指令
由硬件提供模式位
特权指令:在内核态下运行的指令:不仅能访问用户空间,还能访问系统空间。比如启动外部设备,设置系统时钟、管中断、切换执行状态、I/O指令
非特权指令:在用户态下运行的指令:应用程序所使用的都是非特权指令,仅能访问用户空间
用户态到内核态的切换
当中断或错误出现,硬件切换至内核态,中断由硬件引起的。异常由软件引起的。
操作系统主要功能的理解
- 用户接口
- 处理机管理
- 存储器管理
- 设备管理
- 文件系统管理
1)处理机
处理机是计算机中最重要的资源,分为进程控制、进程同步、进程通信、进程调度
2)存储器管理
第二重要资源,具备以下功能:内存分配、地址映射、存储保护、存储扩充
- 内存分配:为每道作业分配内存空间,提高内存利用率,减少不可用的内存空间,运行正在运行的进程动态申请附加内存,应具有的功能和结构内存分配数据结构,分配算法,内存回收。
- 地址映射:
程序->目标程序->可装入程序,可装入程序的地址从0开始
可装入程序地址范围->地址空间
地址->逻辑地址
内存中的地址范围->内存空间
地址->物理地址
把地址空间的逻辑地址转为内存空间的物理地址称为地址映射。 - 存储保护:确保多道程序仅在自己的内存空间运行,互不干扰
- 存储扩充:用辅存扩充主存,实现“虚拟存储器”:
请求调入功能:允许装入一部分程序和数据就可以运行,运行时,若发现继续运行所需的程序和数据不在内存时,向os发出请求,将其调入
置换功能:
####3)设备管理
最庞大、琐碎的部分,因为:物理设备品种繁多、用法各异,各种外设能和主机并行工作,主机与各类外设速度及不匹配,极差很大
设备管理应具有的功能:
- 设备分配
- 设备驱动
- 缓冲管理
- 设备独立性和虚拟设备
4)文件系统管理
文件存储空间管理
- 目录管理
- 文件的读写管理和存取控制
文件存储空间股那里:为每个文件分配必要的外村空间,提高外存利用率,有助于提高文件系统的运行速度。需具备的结构和功能
目录管理:建立目录项,组成目录文件,按名存取,方便用户找到他所需的文件,多级目录管理还允许重名,可以实现文件共享
文件的读写管理和存取控制:存取控制就是防止文件被非法使用
5)用户接口
- 命令接口:为了便于用户直接或简介地控制自己的作业
- 图形接口
- 程序接口:为用户程序在执行中访问系统资源而设置的。由一组系统调用组成
微内核的基本概念
- 足够小的内核:实现os最基本核心功能的小型内核,并非一个完整的os,是os中最基本的部分
- 基于客户服务器模式:os最基本的放入内核,而把os中绝大部分功能放在微内核外的一组进程(服务器)
- 机制与策略分离:将实现os功能的具体执行机构放入微内核
- 面向对象技术
为内核的基本功能:
- 进程线程的管理:采用机制与策略分离的原则,属于调度功能的机制部分、进程的通信、切换
- 低级存储器管理:依赖于硬件的最基本的低级存储器管理(页表机制、地址变换机构)
- 中断和陷入的处理:捕获终端与陷入时间并进行相应的处理
微内核的优点
微技术内核是建立在模块化、层次化结构的基础之上,采用客户服务器模式和面线对象的程序设计技术
系统调用
系统调用的目的:使应用程序剋通过它间接调用os内核中的相关过程,取得相应的服务
概念:应用程序请求os内核完成某功能时的一种过程调用
用户与内核的接口
#进程与程序的区别
程序的顺序执行
:在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响。一道程序执行完成另外一道程序才能开始
- 顺序性:一个程序开始执行必须要等到前一个程序已经执行完成
- 封闭性:程序一旦开始执行,起计算结果不受外界因素影响
- 可再现性质:程序的结果和他的执行速度无关,和事件无关,只要给定相同的输入,一定会得到相同的结果
######程序的并发执行
若干程序同时在系统中执行,这些程序的执行在时间上是冲抵的,一个程序的执行尚未结束,另外一个程序的执行已经开始
程序并发执行的特点
- 间断性
- 失去程序的封闭性:程序在并发执行时,是多个程序共享系统的资源,因此这些资源的状态将由多个程序来改变
- 不可再现性
进程的定义
进程是指进程实体的运行过程,是系统进行资源分配和调度的一个独立单位!
2.2.1进程的特征(非常重要!!!)
- 结构特性:由数据段、程序段、进程控制块三部分组成
- 动态性:进程的实质是程序执行过程;动态性是进程最基本的特征。进程实体具有一定的生命周期。
- 并发性:多个进程可同存在于内存中,能在一段时间内同时运行;引发进程的目的正是为了使进程实体能够并发执行。程序不能参与并发执行!!!!
- 独立性:进程是独立运行的基本单位,获得资源和调度的基本单位
- 异步性:各进程按各自独立的不可预知的速度向前推进
进程同程序的比较(非常重要!!!)
- 程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的过程。而进程是程序在处理机上的一次执行过程。他是一个动态的过程(静动)
- 程序可以作为一种软件资料长期存在,而进程是有一定生命期的。(程序是永久的,进程是暂时的)
- 进程更能真实地描述并发,而程序不能(更好的描述并发性)
- 进程是由程序段、数据段和进程控制块三部分组成地(结构特性)
- 进程具有创建其他进程地功能,而程序没有(生娃子)
- 同一程序可以对应多个进程
2.2.2进程地状态及转换
进程有三种状态:read,running,block。进程在生命消亡前处于且仅处于三种基本状态之一
- 就绪状态:当进程已经获得了除CPU以外地所有资源,一旦得到CPU,就立即可以运行,则这些进程所处的状态为就绪状态。
- 运行状态:正在运行的进程所处的状态为运行状态
- 阻塞/等待状态(Blocked/Wait):若一进程正在等待某一事件发生,这时即使给他CPU,他也无法运行,称该进程处于等待状态。或阻塞、睡眠、封锁状态
2.2.3挂起操作和进程状态
挂起操作为进程增加新状态:挂起操作使某个进程处于静止状态
- 如果进程正在执行,挂起操作使暂停执行
- 如果处于就绪状态,挂起操作使他暂不接受调度
与挂起操作对应的就是激活操作
- 活动就绪->静止就绪:对就绪地进程进行挂起操作,则该进程不能再被调度进入静止就绪状态
- 静止就绪->活动就绪:用相应的激活原语激活以,重新计入活动就绪状态
- 活动阻塞->静止阻塞:用挂起原语对阻塞进程实施挂起操作则进入静止阻塞状态,只有在该进程所期待的事件发生以后就会转入静止就绪
- 静止阻塞->活动阻塞:利用激活原语以后进入活动阻塞状态
2.2.4 进程控制块
为了描述和控制进程运行,系统为每个进程定义了一个数据结构,称为进程控制块(pcb)
进程控制块的作用:是将一个不能独立运行的程序变成一个可以独立运行的基本单位,一个能与其他进程并发执行的进程
进程控制块的作用:
- 作为独立运行的基本单位的标志(标志)
- 能实现间断性运行方式(间断性)
- 提高进程管理所需要的信息(提供信息)
- 提供进程所需要的信息
- 实现与其他进程的同步与通信
PCB内容 | 作用 |
---|---|
进程标识符 | 进程描述信息,唯一 |
处理机状态(处理机上下文) | cpu现场保护信息 |
所拥有的资源和使用情况 | 虚拟地址空间的现状,打开文件列表 |
进程调度与控制信息 | 当前状态、优先级、大妈执行入口地址、程序的外存地址 |
进程控制
进程控制一般由os的内核中的原语来实现
常用的进程控制原语
- 创建原语Create
- 终止原语Destroy
- 阻塞原语Bolck
进程创建过程
- 申请空白PCB
- 为新进程分配资源(物理资源和逻辑资源):如内存、设备、cpu等
- 初始化PCB(标识信息、处理及状态、处理机控制信息)
- 将新进程插入就绪队列
进程终止
- 根据被终止的进程的标识符,从OCB集合中检索出该进程的PCB
- 若被终止进程处于执行状态,应立即终止执行,并置调度标志为真,调度其他进程
- 结束该进程所有子孙进程的执行,以防止成为不可控进程
- 将进程的所拥有的资源交给父进程或系统进程
- 释放pcb
进程的阻塞与唤醒
阻塞:当一个进程所期待的某一事件尚未出现时,该进程调用阻塞原语将自己阻塞
进程阻塞是进程自身的一种主动行为
唤醒:处于阻塞状态的进程是绝不可能叫醒她自己的,必须有他的合作进程用唤醒原语唤醒他(由于资源的释放唤醒)
进程的挂起与激活
挂起:当出现了引起进程挂起的事件时,系统利用挂起原语将指定进程或处于阻塞状态的进程挂起
激活:当发生激活进程额事件时,系统利用激活原语将指定进程激活
进程通信
- 进程通信是指进程之间的信息交换
- P,V为低级通信原语,他只能传递简答的信号
- 大量信息:高级通信原语
共享存储器系统
- 基于共享数据结构的通信方式
- 基于共享存储区的通信方式
管道通信
管道是指用于链接一个读进程和一个写进程的文件,称PIpe文件,向管道提供输入的进程(称写进程),以字符流的形式向将大量数据送入管道,而接受管道输出的进程(读进程)可以从管道中接受数据
消息传递系统可分为
直接通信:发送进程直接把消息发送给接收者,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列上中取得消息
间接通信:发送进程将消息发送给某种中间实体中,接受进程从中取得消息。
线程
引入线程的目的是为了使多个程序更好的并发执行,改善资源利用率,提高系统效率
引入线程则是为了减少并发执行时所付出的时空开销,使并发粒度更细并发性更好
线程的产生
在引入线程的OS中,线程是进程中的一个实体,是进程的一部分,是被系统独立调度和分配的基本单位
关于调度:
系统调度的基本单位是线程而不是进程
每当创建一个进程时,至少要同时为该进程创建一个线程,否则该进程无法被调度执行
一个线程可以创建和撤销另外一个线程;同一进程中的多个线程之间可以并发执行。
线程–关于资源
线程基本不用有系统资源,只用有少量必不可少的资源:程序计数器,一组寄存器
线程与进程的比较
- 独立调度和运行的基本单位:线程切换的代价远远小于进程切换,同一进程中线程的切换不会引起进程的切换
- 更好的并发性:不同进程的多个线程之间可以并发执行,一个进程内的多个线程也可以并发执行
- 轻型实体:线程基本不拥有资源,仅拥有一点必不可少的资源,多个线程还可能共享进程所拥有的资源
- 独立性:
- 系统开销
- 支持多处理机
线程控制块TCB
多线程操作系统中进程属性
- 进程是一个拥有资源的基本单位
- 多个线程可以并发执行一个进程至少要包含一个线程。进程为这些线程提供资源以及运行环境,使他们能够并发执行。每一个线程都属于某一个特定进程
- 进程已经不是可执行的实体:把线程作为独立运行和调度的基本单位
os对线程的实现机制
从实现的角度看,线程可分为三种:
- 内核支持线程
- 用户级线程
- 混合式线程
内核级线程
os中所有进程都依赖于内核,即无论是用户进程中的线程,还是系统进程中的线程,他们的创建、撤销、切换都由内核实现
- 以线程为基础进行调度
- 所有线程管理由核心完成
- 内核维护进程和线程的上下文
- 线程之间的切换需要内核支持
- 时间片分配给线程,所以多线程的进程获得更多CPU时间
- 一个线程发起系统调用而阻塞,不会影响其他线程的运行
优点:对多处理器,核心可同时调度同一进程的多个线程,并发度更高
阻塞是在线程一级完成。即进程中的一个线程被阻塞了,内核能调度同一进程的其他线程占有处理器运行
切换开销更小
提高系统的执行效率和速度
缺点:应用程序线程在用户态运行,线程管理与调度是在核心态。同一进程内的线程频繁切换时,调用内核,线程线程切换时要做模式切换,导致速度下降
用户级线程
这种线程的创建、撤销和切换,都不用系统调用来实现
用户级线程与内核无关,线程的控制都在用户空间与内核无关。应用进程利用线程库提供创建,同步、调度和管理线程的函数来控制用户线程的函数来控制用户线程
对于设置了了用户级线程的系统,其调度仍以进程为单位进行;若设置的是内核支持线程,则调度以线程为单位进行
优点
- 线程切换实在线程库在用户态进行,不调用核心,节省了模式切换的开销
- 调度是应用程序特定的:可以选择最好的算法对自己的线程进行管理和调度
- 用户及线程可以运行在任何操作系统上,可以一个不支持线程的OS上实现,与平台无关
缺点 - 线程执行系统调用时,不仅该线程被阻塞,且进程内的所有线程会被阻塞
- 纯ULT中,多线程应用不能利用多处理机的优点,内核给一个进程仅分配一个cpu,进程中仅有一个线程能执行。即同一个进程中的两个线程不能同时运行在两个处理器上
混合式线程
处理机调度
低级调度
任何操作系统都有
中级调度
作业调度及算法
接纳多少个作业?取决于系统多道度
接纳那些作业?取决于系统的调度算法
高相应比优先调度算法=
相应比=1+(作业等待时间/作业要求服务时间)
3
进程调度方式
非抢占式:不允许某进程抢占已经分配出去的处理机
抢占式:允许调度程序根据某种原则,暂停正在执行进程,将处理机重新分配给另一进程
RR:时间片可选取略大于一次典型交互的所需时间,使大多数交互式进程能在一个时间片内完成,从而获得很小的响应时间
多级反馈队列调度算法
将就绪队列分为N级,每个就绪队列分配给不同的时间片,队列级别越高时间片越短,级别越低,时间片越长
最早截止时间优秀算法EDF
最低松弛度优先算法LIF
松弛度=必须完成的时间-还需运行的时间-当前时间
死锁的概念
一组进程中的每一个进程都在等待仅由改组进程中其他的进程才能引发的事件,那么该组进程是死锁的
- 互斥条件
- 不剥夺条件
- 请求保持条件
- 环路条件
预防死锁
通过设置某些限制条件,去破坏死锁四个必要条件中的一个或多个
避免死锁
检测死锁:允许死锁发生
可通过检测机构及时检测出死锁的发生,并精确确定与死锁有关的进程和资源,然后采取适当措施,将系统中已发生的死锁清除掉
解除死锁
与检测死锁相配套,用于将进程从死锁状态解脱出来
9
不安全状态不等于死锁
银行家算法描述
- 对资金最大需求不超过现有资金
- 分期贷款,但贷款总数没超过最大需求
- 货款可推迟支付,但能在有限时间里支付
- 贷款后一定能在有限时间归还所有资金