所用教材为:操作系统教程(第5版) 费翔林 骆斌编著
处理器状态
内核态和用户态
管理状态(核心状态、特态或管态)
用户状态(目标状态、常态或目态)
处理器状态机器转换
会导致处理器从用户态向内核态转换的情况:
(1)程序请求操作系统服务,执行系统调用
(2)程序运行时产生中断事件(如I/O操作完成),运行程序被中断,转向中断处理程序处理
(3)程序运行时产生异常事件(如发生程序性中断,或目态执行特权指令),运行程序被打断,转向异常处理程序工作。
可以说中断和异常是用户态向内核态转换的仅有途径
实现内核态向用户态的转换
计算机通常提供一条称作加载程序状态字的特权指令,以实现从内核态返回用户态,操作系统将控制权转交给应用进程。
中断
需要中断的场景
(1)请求系统服务
(2)实现并行工作
(3)处理突发事件
(4)满足实时要求
中断的定义
中断是指在程序执行过程中遇到急需处理的事件时,暂时中止现行程序在CPU上的运行,转而执行相应的事件处理程序,待处理完成后再返回断点或调度其他程序执行的过程。
中断的重要性
中断是现代操作系统实现并行性的基础之一。。
引入中断机制,操作系统让应用程序在放弃控制权或从应用程序获得控制权时将具有更大的灵活性
中断源分类
外中断
又称中断或异步中断,指来自处理器之外的中断信号
内中断
又称异常或同步中断,是指来自处理器内部的中断信号
可被细分为:
(1)访管中断,由执行系统调用引起
(2)硬件故障中断,如电源失效,奇偶校验错误,总线超时等
(3)程序性异常,如非法操作,地址越界,页面障碍,调试指令,除数为0,浮点溢出等
中断和异常的区别
(1)中断是由与当前运行程序无关的中断信号触发的,系统不能确定中断事件的发生时间,故中断与CPU是异步的,CPU对中断的响应完全是被动的。
在两条机器指令之间才可响应中断。一般来说,中断处理程序提供的服务不是为当前进程所需的。
异常是由CPU控制单元产生的,源于现行程序执行指令过程中检测到例外。
异常处理程序提供的服务是为当前程序所用的
(2)中断处理程序是不能阻塞的(因为需要尽快处理以响应其他中断信号),而异常处理程序是可以阻塞的(所提供的服务是当前进程所需要的)
(3)中断允许发生嵌套,异常大多为一重
异常处理过程中可能会产生中断,但中断处理过程中决不会被异常打断。
中断/异常的响应(4件事)
发现中断源——保护现场——转向中断/异常事件处理程序执行——恢复现场
I/O中断处理过程:
中断请求——中断判优——中断响应——中断服务——中断返回
中断事件类型及处理原则
(1)硬件故障中断
(2)程序性中断
(3)I/O中断
(4)访管中断
(5)时钟中断
中断屏蔽
定义
可编程中断控制器,可通过指令设置屏蔽码。中断屏蔽是指禁止CPU相应中断或禁止中断产生
作用
(1)延迟或禁止某些中断的响应
(2)协调中断响应与中断处理的关系
(3)防止同级中断互相干扰
多重中断事件的处理
(1)串行处理(2)嵌套处理(3)即时处理
进程及其实现
一、进程定义和属性
(一)程序的并发执行特征
(1)间断性(2)失去封闭性(3)不可再现性
(二)程序的顺序执行特征
(1)顺序性(2)封闭性(3)可再现性
(三)进程的定义
进程是可并发执行的程序在某个数据集合上的一次计算活动
,也是操作系统进行资源分配和保护的基本单位。
进程是进程实体的运行过程,是系统进行资源分配的调度的一个独立单位
进程是一个既能用来共享资源,又能描述程序并发执行过程的系统基本单位
(三.1)进程实体
进程实体由程序段、数据段、进程控制块(PCB)构成
(四)引入进程的原因
(1)刻画程序的并发性
(2)解决资源的共享性
(五)进程的属性
动态性、共享性、独立性、制约性、并发性
(六)进程和程序的主要区别
(1)程序是静态概念,进程是动态概念
(2)程序的存在是永久的,而进程是有生命期的
(3)程序仅是指令的有序集合,而进程是程序段、数据段、进程控制块组成
(4)进程与程序之间不是一一对应的。
同一程序可同时运行于若干个不同的数据集合上,属于不同的进程
一个进程也可以执行多个程序
二、进程状态和转换
(一)三态模型及其状态转换
(1)运行态:进程占有处理器正在运行的状态
(2)就绪态:进程具备运行条件,等待系统分配处理器以便运行的状态
和运行态只差CPU
(3)等待态:又称阻塞态或睡眠态,指进程不具备运行条件,正在等待某个事件完成的状态。
和运行态不只差CPU
每个进程在执行过程中,任一时刻必处于上述三种状态之一,进程执行过程中其状态将会发生改变。
(二)五态模型及其转换
增加了新建态和终止态。
(1)新建态对应于进程被创建时的状态,尚未进入就绪队列。
(2)终止态指进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态
处于终止态的进程不再被调度执行,下一步将被系统撤销,最终从系统中消失
(三)挂起状态
为什么需要挂起状态
为了让某些进程暂时不参与低级调度,释放被它占有的资源,以平滑系统负荷的目的
引起进程挂起的原因(5个)
(1)终端用户的请求
(2)父进程请求
(3)负荷调节的需要
(4)操作系统的需要
(5)对换的需要
挂起状态的实质
实际上是将相应状态再降低一级
挂起进程的特征
(1)该进程不能立即被执行
(2)挂起进程可能会等待事件,但所等待事件时独立于挂起条件的,事件结束并不能导致进程具备执行条件
(3)进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行
(4)结束进程挂起状态的命令只能通过操作系统或父进程发出
(5)挂起进程等于不在内存中的进程,因此挂起进程将不参与低级调度直到它们被对换进内存。
(四)七态模型
状态转换
挂起就绪态和挂起等待态
挂起就绪态:表明程序具备运行条件,但目前在外存中,只有当它被对换到内存时才能被调度执行
挂起等待态:表明进程正在等待某一个事件发生且在外存中。
三、进程描述和组成
进程映像
(1)定义:某时刻进程的内容及其状态集合
(2)包括4个部分:进程控制块、进程程序块、进程核心栈、进程数据块
进程上下文
(1)定义:进程物理实体和支持进程运行的环境合成进程上下文
(2)三部分组成:用户级上下文、寄存器上下文、系统级上下文
进程控制块
(1)定义
进程控制块PCB,是操作系统用于记录和刻画进程状态及环境信息的数据结构。
也是操作系统掌握进程的唯一资料结构,它包括进程执行时的情况,以及进程让出处理器后的状态、断点等信息
(2)每个进程有且仅有一个进程控制块,它是进程存在的唯一标识。
(3)进程控制块包含三类信息:
标识信息
现场信息
控制信息
进程队列
(1)定义:处于同一状态的所有PCB连接在一起的数据结构
(2)通用队列组织方式:
线性方式
链接方式
索引方式
四、进程控制和管理
进程创建
引起创建进程的条件:
(1)系统内核创建新进程: 用户登录、作业调度 、提供服务
(2)应用程序创建新进程:应用请求
进程撤销
引起进程终止的条件:
(1)正常结束
(2)外界干预
操作员或系统干预、父进程请求、父进程终止
(3)异常结束
越界错误、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O故障
进程阻塞
引起进程阻塞和唤醒的事件
(1)请求系统服务
(2)启动某种操作
(3)新数据尚未到达
(4)无新工作可做
进程唤醒
进程挂起
当出现了引起进程挂起的事件时,系统利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起
挂起原语执行过程:
活动就绪——静止就绪
活动阻塞——静止阻塞
执行状态——重新调度(静止就绪)
进程激活
系统将利用激活原语active将指定进程激活
激活原语现将进程从外存调入内存检查该进程的现行状态:
静止就绪——活动就绪
静止阻塞——活动阻塞