导图社区 进程
由于共享系统资源,并发执行的程序之间形成相互制约的关系、进程为完成同一项任务而相互合作、进程在进入临界区之前,对欲访问的临界资源进行检查的代码。
这是一篇关于第五章虚拟存储器的思维导图,包括:虚拟内存的基本概念、请求分页管理方式、请求分段存储管理方式。
十分详细的虚拟存储器思维导图,包括:虚拟内存的基本概念、请求分页管理方式、请求分段存储管理方式。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
进程
进程的描述
定义
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
进程实体的组成
PCB
系统感知进程存在的唯一标志
进程描述信息
进程控制和管理信息
资源分配清单
处理机相关信息
组织方式
线性方式
链接方式
索引方式
程序段
程序的代码(指令序列)
数据段
运行过程中产生的各种数据
特征
动态性
进程的最基本特征
独立性
进程是能独立运行、独立获得资源、独立接受调度的基本单位
异步性
各进程以不可预知的速度向前推进,可能导致运行结果的不确定性
并发性
进程控制
基本概念
进程控制就是要实现进程状态的转换
进程控制用原语实现
原语用关/开中断来实现
原语是一种特殊的程序
原语的执行必须一气呵成,不可中断
相关原语
进程的创建
创建原语
申请空白PCB
为新进程分配所需资源
初始化PCB
将PCB插入就绪队列(创建态->就绪态)
引起进程创建的事件
用户登录
分时系统中,用户登录成功,系统会为其建立一个新进程
作业调度
多道批处理系统中,有新的作业放入内存时,会为其建立一个新的进程
提供服务
用户向操作系统提出某些请求时,会新建一个精彩处理该请求
应用请求
由用户进程主动请求创建一个子进程
进程的终止
终止原语
从PCB集合中找到终止进程的PCB
若进程正在运行,立即剥夺CPU,将CPU分配给其他进程
终止其所有子进程
将该进程拥有的所有资源归还给父进程或操作系统
删除PCB
引起进程终止的事件
正常结束
异常结束
外界干预
进程的阻塞(主动行为)
阻塞原语(运行态->阻塞态)
找到要阻塞的进程对应的PCB
保护进程运行现场,将PCB状态信息设置为”阻塞态“,暂时停止进程运行
将PCB插入相应事件的等待队列
引起进程阻塞的事件
需要等待系统分配某种资源
需要等待相互合作的其他进程完成工作
进程的唤醒(被动行为)
唤醒原语(阻塞态->就绪态)
在事件等待队列中找到PCB
将PCB从等待队列移除,设置进程为就绪态
将PCB插入就绪队列,等待被调度
引起进程唤醒的事件
等待的事件发生,则由有关进程调用wakeup将该进程唤醒
进程的切换
操作系统内核
支撑功能
中断处理
时钟处理
原语处理
资源管理功能
进程管理
存储器管理
设备管理
进程同步
两种形式的制约关系
间接相互制约关系(互斥)
由于共享系统资源,并发执行的程序之间形成相互制约的关系
直接相互制约关系(同步)
进程为完成同一项任务而相互合作
临界区
进入区
进程在进入临界区之前,对欲访问的临界资源进行检查的代码
每个进程中访问临界资源的代码
退出区
用于将临界区正被访问的标志恢复为未被访问的标志
剩余区
除以上之外的代码
同步机制遵循规则
空闲让进
忙则等待
有限等待
让权等待
当进程不能进入自己的临界区时,应立即释放处理机,以免陷入“忙等”状态
硬件同步机制
中断屏蔽方法
使用“开\关中断”指令实现
优点:简单高效
缺点:只适用于单处理机;只适用于操作系统内核进程
Test-and-Set
优点:实现简单,适用于多处理机环境
缺点:不满足“让权等待”
Swap指令(同上)
信号量机制
实现进程互斥
分析问题,确定临界区
设置互斥信号量,初值为1
临界区之前对信号量执行P操作
临界区之后对信号量执行V操作
实现进程同步
分析问题,找出哪里需要实现“一前一后”的同步关系
设置同步信号量,初始值一般为0(根据情况而定)
在前操作之后执行V操作
在后操作之前执行P操作
实现进程的前驱关系
分析问题,画出前驱图,把每一对前驱关系都看成一个同步问题
为每一对前驱关系设置同步信号量,初始值为0
在每个前操作之后执行V操作
在每个后操作之前执行P存在
管程机制
为什么引入管程
解决信号量机制编程麻烦、易出错的问题
组成
管程的名称
局部于管程的共享数据结构的说明
对该数据结构进行操作的一组过程
对局部于管程的共享数据设置初始值的语句
基本特征
各外部进程/线程只能通过管程提供的特定入口才能访问共享数据
每次仅允许一个进程在管程内执行某个内部过程
进程的通信
共享存储
设置一个共享空间
要互斥访问共享空间
两种方式
基于数据结构(低级)
基于存储区的共享(高级)
管道通信
设置一个特殊的共享文件(管道),其实就是一个缓冲区
一个管道只能实现半双工通信
实现双向同时通信要建立两个管道
各进程要互斥访问管道
没写满,不能读。没读空,不能写
消息传递
传递结构化的消息
系统提供“发送/接受原语”
直接通信方式
消息直接挂到接收方的消息队列里
间接通信方式(信箱)
消息先发到中间体(信箱)
线程
引入线程带来的变化
资源分配、调度
传统进程机制中,进程是资源分配、调度的基本单位
引入线程,进程是资源分配的基本单位,线程是调度的基本单位
传统进程机制中,只能进程间并发
引入线程后,各线程间也能并发,提高了并发度
系统开销
传统的进程间并发,需要切换进程的运行环境,系统开销很大
线程间并发,如果是同一进程内的线程切换,则不需要切换进程环境,系统开销小
线程的属性
线程是处理机调度的单位
多CPU计算机中,各个线程可占用不同CPU
每个线程都有一个线程ID、线程控制块TCB
线程也有就绪、阻塞、运行三种基本状态
线程几乎不拥有系统资源
同一进程的不同线程共享进程资源
由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
同一进程中的线程切换,不会引起进程切换
不同一进程中的线程切换,会引起进程切换