操作系统--进程管理 |
2.进程管理
进程的描述
程序的执行
顺序执行
顺序性
封闭性
可再现性
并发执行
间断
失去封闭
不可再现
是什么?
进程定义
并发,程序,数据集,运行过程
正文段+用户数据段+进程控制块 =(执行环境)
特征
并发
动态
独立
异步
结构特征
进程与程序
区别
静态/动态
永久/暂时
存在实体不同
程序:指令集和
进程:正文段+用户数据段+进程控制块
联系
进程是程序的一次执行
一个程序可以对应多个进程
进程控制块
what
进程实体存在的标志
用于描述进程情况,控制进程运行的all info
内容
进程标识符
唯一标识一个进程
处理机状态
通用寄存器
用户可以访问的寄存器,暂存信息
指令计数器,pc
下一条指令地址
程序状态字 psw
用户栈指针
用户进程--系统栈(存放过程,系统调用参数,调用地址)
栈指针指向栈顶
进行调度信息
进程状态信息
~ 优先级
~ 调度用的其他信息
进程控制信息
程序和数据的地址
~同步和通信机制
资源清单
链接指针
进程的三态
进程的组织
链接
相同状态的pcb链接成队列
索引
表项指向PCB控制块
队列
按状态组织进程,eg:就绪队列
进程的控制
进程的创建
情况
用户登录
作业调度
应用请求
提供服务
步骤
1.申请空白PCB
2.为新进程分配资源
3.初始化pcb
4.将新进程插入就绪队列
进程的阻塞/唤醒
(阻塞/唤醒)情况
1.请求系统服务
2.启动某种操作
3.新数据尚未到达
4.无新工作可做(线程唤醒没有的)
阻塞过程
1、状态改为阻塞态
2、插入阻塞队列
3、转进程调度程序,从就绪队列选进程为其分配cpu
唤醒过程
1.进程从阻塞队列中移出
2.状态由阻塞态到就绪态
3.进程插入就绪队列
进程的终止
情况
正常执行完毕(系统调用)
一个进程终止另一个进程(父子)
子进程使用超过了他分配的一些资源
分配给子进程的任务已不再需要
父进程退出
过程
1.从pcb中读取进程状态
2.若正在执行则终止进程执行
3.若有子孙进程,则终止子孙进程
4.释放资源
5.将终止进程的pcb移出
进程通信
共享存储系统
基于共享数据结构
基于共享存储区
消息传递系统
直接通信
间接通信
管道通信
连接读写进程的特殊文件
管道文件在外存
消息没有固定长度
字符流的形式,传递大量数据
消息缓冲队列
数据结构
进程标识符
消息长度
消息正文
指向下个消息缓冲区的指针
本地进程之间的通信
操作系统内核
功能
支撑功能
中断
what?
改变处理器执行指令顺序
why?
cpu与其他设备并行工作
提高cpu利用率
改善系统性能
支持系统的异步性
类型
同步中断
一条指令终止执行
eg:除法出错,调试,溢出
异步中断
外部可屏蔽
I/O设备
如何屏蔽?
把寄存器的if标志设置为0
对可编程中断控制器编程来禁止中断请求
外部不可屏蔽
紧急事件
引发原因
人为设置
程序性故障
硬件故障
I/O设备
外部事件
中断响应
条件:寄存器if标志设为1
时机: cpu每执行完一条指令都会检测是中断信号
单重中断处理过程
1.系统关闭中断,保护断点,下指令存内存(为中断返回时恢复到pc)
2.转中断处理程序
3.保护完现场,执行特定的中断服务子程序
4.恢复现场,开中断,中断返回
时钟管理
重要性
时钟--脉搏
定时测量驱动
两个时钟
实时时钟RTC
Cmos时钟,时钟芯片,电池供电,计时标准
OS时钟
开机有效,OS控制
时钟机制
两种定时测量
1.保存当前的日期和时间,系统调用返回给用户
2.维持定时器,告诉内核某一时间间隔过去了
硬件
可编程间隔定时器PIT
功能:产生时钟中断,触发与实践有关的操作
构成: 晶振,计数器,保持寄存器
软件
时钟驱动程序
1.维护日期实践
2.递减 时间片 剩余时间, 检查是否为0
3.cpu使用记账
4.递减 报警计数器
原语操作
资源管理功能
进程管理
存储器管理
设备管理
系统调用
what
一群预先定义好的模块
提供一条管道让app或user由此得到核心程序的服务
系统程序与用户程序之间的接口
与一般函数区别
运行不同:
系统态,用户态
执行过程不同:
系统调用需要中断处理,开销更大
类型
进程控制类
文件操纵类
设备管理类
通信类
信息维护类
进程同步
同步机制任务:
多任务共享系统资源时 程序能得到正确的结果
进程同步任务
1.资源共享关系的进程: 保证互斥方式访问临界资源
2.合作关系的进程:保证卸掉执行
准则
空闲等待
忙则等待
有限等待
让权等待
信号量机制
互斥
初始为1
前驱关系
初始为0
生产者与消费者问题
管程
定义
描述共享资源的数据结构,在数据结构上的共享资源管理程序的集合
包括:
变量定义,变量初始化代码,管理共享资源的过程
说明
供程序员调用的软件包
任意时刻只能有一个活跃的进程
一种编程语言的构件
条件
为了并发处理,必须包含同步工具
线程
线程的描述
实质
进程任务划分为更小,独立功能的单位
以线程的形式来并发执行,以提高程序并发执行的程度
分类
用户级
调度规则简单,开销小,切换快
阻塞时,需要阻塞线程和所属进程
同一进程的多个线程共享一个时间片
内核级
调度复杂,开销大,切换慢
阻塞时,只阻塞线程
一个线程独享一个时间片
线程控制块
TCB
基本状态,标识,记账信息
信息(与进程相同)
线程标识符
处理机状态信息
线程调度信息
线程控制信息
组织方式
相同状态的用指针链接成队列
线程与进程关系
资源调度
执行的基本单位
拥有资源的基本单位
地址空间资源
不同进程独立
进程内的各线程共享同一地址空间
通信关系
进程间通信需要操作系统参与
线程间通信可以直接读,或用全局变量,无需OS
并发性
都可以并发执行
系统开销
切换进程开销大
涉及到当前进程和新进程的cpu上下文
切换线程开销小
线程的控制
创建
用户线程
前提:调用线程库的实用程序完成
1.为新线程申请空白TCB
2.初始化TCB
3.将新线程插入其所属进程的就绪线程队列
内核线程
前提:由内核完成
过程与用户线程相同
终止
原因:
正常结束
异常结束
外界干预
过程
** 用户线程--线程库实用程序;内核线程--内核调用线程终止原语
1.根据线程标识符从TCB集和检索到该线程的TCB,从中读取线程状态
2.若线程处于运行状态,应立即终止该线程的执行,
3.将被终止的TCB从所在队列中移出
调度切换
用户线程
以进程为单位
不需要切换,但一个进程只能用一个cpu
内核线程
以线程为单位
用户模式和内核模式之间切换,开销大,但可以用多个cpu
阻塞唤醒
引发事件
请求系统服务
启动某种操作
新数据尚未到达
阻塞
用户线程(先线程后进程)
1.停止线程执行,将线程的状态改为阻塞态
2.将TCB插入相应的线程阻塞队列
3.线程所属进程状态该为阻塞态
4.线程所在进程的PCB插入响应的进程阻塞队列
5.将控制传递给进程调度程序。重新执行进程调度
内核线程
同用户线程的1,2,5
备注: 以线程为单位,与进程无关
唤醒
用户线程(先进程后线程)
1.将线程的所属进程的状态由阻塞改为就绪
2.将线程所属的进程的PCB从进程阻塞队列移出
3.同上PCB,插入到就绪队列
4.将线程状态改为就绪态
5.将线程的线程控制块从阻塞队列中移出
6.同上TCB,插入到就绪队列
内核线程
同上 4.5.6
与进程无关