2-进程管理(思维导图)
2022-03-13 15:05:09 0 举报
AI智能生成
进程管理
作者其他创作
大纲/内容
为了保证安全,进程不可直接访问其他进程的地址空间
OS提供方法以供进程进行通信
背景
OS分配一块共享空间供进程通信该空间的访问是互斥的,通过OS提供的同步-互斥工具实现
速度慢、限制多
基于数据结构的共享如“仅存放长10的数组”
OS划出共享存储区
对数据形式存放位置不做要求交由进程控制
基于存储区的共享
共享存储
管道是一个连接读写进程的共享文件在内存中是一块固定大小缓冲区一般与页面等大
访问仍要互斥
写进程以字符流形式写入管道写满时wirte()系统调用被阻塞
读进程将数据全部取走,管道变空此时read()系统调用被阻塞
读写
管道通信
发送进程利用OS所提供的发送命令,直接把消息发送给目标进程
发送进程和接收进程都以显式方式提供对方的标识符
系统提供两条通信命令(原语)
直接通信
通信需要通过作为共享数据结构的实体进行
这个中间实体称为信箱:暂存发送给目标进程的消息。
消息在信箱中保存,只允许核准的目标用户读取,可实现实时通信和非实时通信。
系统提供若干条原语,用于信箱的创建、撤消和消息的发送、接收等
私有信箱
公用信箱
共享信箱
3种类型信箱
间接通信(信箱通信)
消息传递
类型
进程通信
背景:由于进程是资源的拥有者,在创建、撤消和切换过程中,系统必须付出较大的时空开销。所以,系统中所设置的进程,其数目不宜过多,进程切换的频率也不宜过高,这也就限制了并发程度的进一步提高
线程开销很小
进程中包含了多个线程,取代进程成为程序执行流之最小单位
进程间可以并发,线程间亦可以并发
线程被调用不会因此生成多个线程实体
进程仍然是除CPU外的系统资源的最小分配单元
每个线程都可以用线程标识符和一组状态参数进行描述
① 寄存器状态 ② 堆栈 ③ 运行状态 ④ 优先级 ⑤ 专有存储器 ⑥ 信号屏蔽
执行状态
就绪状态
阻塞状态
线程运行状态
应用程序启动时,通常仅有一个线程在执行,该线程被称为“初始化线程”。它可根据需要再去创建若干个线程。
线程的创建和终止
线程控制块TCB
基本概念
进程不再是调度的基本单位,被线程取代。
线程间如进程一样具有并发性
同一进程内线程间的并发无需切换环境,系统开销小
与进程对比
是处理机调度的单位
多CPU计算机中,各个线程可以占用不同的CPU
线程具备线程ID和线程控制块TCB
线程也具有就绪、阻塞、运行三种基本状态
调度
线程几乎不拥有系统资源
统一进程的不同线程共享进程的资源
共享内存地址空间,同一进程的线程间通信无需OS干预
系统资源
同一进程间线程切换不会引起进程切换
同一进程间线程切换开销很小
不同进程间线程切换会引起进程切换
不同进程间切换开销很大
系统开销
线程的属性
线程由线程库实现,OS不能感知线程存在线程是逻辑上的线程,管理由线程库完成线程切换无需OS介入
优势:管理不涉及CPU模式切换,开销很小
劣势:无法处理阻塞问题,一阻塞全阻塞并发度不高,无法多核并行
用户级线程User-Level Thread(ULT)
管理由OS完成,线程切换需要CPU状态切换
并发能力强,可以多核并行,不受阻塞影响
用户进程占用多个内核级线程,管理开销大
内核级线程才是处理机调度的单位
内核级线程Kernel-Level Thread(KLT)
线程实现方式
外框
线程
缺点:效率低,浪费资源
早期程序执行方式为顺序执行
进程:让每个用户独占CPU
进程 = 程序 + 执行
是OS分配资源、进行调度的最小单位
程序和数据的地址
进程同步和通信机制,如消息队列指针、信号量等
资源清单
链接指针
进程控制和管理信息
进程存在的唯一标志
进程标识符
处理机的各种寄存器的内容组成(通用寄存器、指令计数器、程序状态字PSW、用户栈指针)
处理机状态
①进程状态;
②进程优先级;
③进程调度所需的其它信息;
④事件
调度信息
PCB进程控制块
程序代码(指令序列)
程序段
运行过程产生的数据(如变量)
数据段
进程内容
OS管理进程需要的全部数据都在PCB
程序自身需要的数据存放在数据段中
动态性
内存中有多个进程实体,可以并发执行
并发性是进程重要特征
封闭性指的是程序执行结果取决于进程本身,不受外界影响
并发进程共享变量,速度快慢影响读写顺序,影响结果。
进程并发失去封闭性
并发性
可以独立运行,独立获得资源、独立接受调度的基本单位
进程被调用不会因此生成多个进程实体
独立性
各个进程独立运行,进度不可预知
异步性
特征
进程
基本概念
占有CPU
执行(Running)状态
具备运行条件
不占有CPU
就绪(Ready)状态
因等待某一事件而暂时不能运行
阻塞(Waiting)状态
OS为进程分配资源、初始化PCB
创建状态
OS回收分配的资源,撤销PCB(进程结束)
终止状态
进程因某种原因暂停执行
挂起状态
创建新进程的PCB
将进程PCB清零
状态
三种基本状态
对于单处理机系统,除了死锁状态,其余任何时候都有且仅有一个执行态的进程
就绪→运行
时间片到期时通常可以降低优先级
运行→就绪
运行→阻塞
阻塞→就绪
三种基本状态转换
活动就绪→ 静止就绪
活动阻塞→ 静止阻塞
静止就绪→ 活动就绪
静止阻塞→ 活动阻塞
具有挂起而添加的转换
创建→活动就绪
创建→静止就绪
执行→终止
添加创建和终止状态的转换
指向当前处于执行态的进程(PCB)
单处理机计算机中同一时刻只有一个执行态进程
执行指针
指向当前处于就绪态的进程
通常优先级高的在队头
→PCB6→PCB4→PCB7...
就绪队列指针
阻塞队列
空闲队列
链式方式
指向就绪索引表
索引表表项指向就绪态PCB
就绪表指针
指向阻塞索引表
索引表表项指向阻塞态PCB
阻塞表指针
索引方式
进程的组织方式
进程的状态和转换
是一种特殊的应用程序
执行必须一次性完成
原子性
执行后CPU不再例行检查中断信号直到执行了开中断指令
关中断指令特权指令
开中断指令特权指令
实现
原语Primitive
分时系统中,用户登录成功,OS会为其建立一个新进程
用户登录
多道批处理系统中,新的作业放入内存,为其建立新进程
作业就是外存中尚未运行的程序
作业调度
用户/用户程序向OS提出请求
系统提供服务
用户程序主动请求创建子线程
用户程序应用请求
引起创建的事件
若申请失败则创建失败
申请空白PCB
若资源不足,进入阻塞态
分配资源(内存等)
标志信息、处理机状态、处理机控制信息、设置优先级
初始化PCB
插入就绪队列
创建步骤
创建进程允许一个进程创建另一个进程创建者称父进程被创建者称子进程子进程可继承父进程资源
正常结束:进程任务完成准备退出运行
存储区越界错误
非法指令
特权指令错
运行超时
等待超时
算数运算错
IO故障
保护错
异常结束:运行时发生异常,使程序不能继续运行。
操作员或OS干预
父进程请求
父进程终止
外界干预:进程因外部请求而终止
引起终止的情况
从PCB集合检索出该进程PCB
终止所有子孙进程
进程资源归还系统/父进程
进程移出所在PCB队列
撤销过程
终止进程子进程撤销时资源归还父进程撤销父进程时同时撤销子进程
调用原语:调用block()进入阻塞状态
更改状态:先立即停止执行,将现行状态由“执行”改为“阻塞”,并将其插入相应的阻塞队列
剔旧换新:转调度程序进行重新调度
阻塞过程
用唤醒原语wakeup()
移出等待序列,并设为就绪态
将PCB插入就绪队列等待调度程序调度
唤醒过程
阻塞&唤醒
控制方法
如果甲进程需要AB资源,而仅被分配了A同时乙进程需要AB资源,而仅被分配了B此时两个进程都陷入阻塞且永不可能就绪,谓之死锁
死锁状态下没有运行态的进程
死锁
进程控制和同步
间接相互制约关系(互斥)
直接相互制约关系(同步)
两种形式的制约关系
一次只能提供一个进程使用
临界区:进程中访问临界资源的代码段
进入区:临界区前用于检查临界资源的代码段
退出区:临界区后用于恢复未被访问标志的代码段
实现原理
空闲让进
忙则等待
有限等待
让权等待
同步遵循规则
临界资源
整型信号量(Binary semaphore)
记录型信号量(Counting semaphore)
AND型信号量
信号量集
信号量机制
生产者消费者问题
哲学家进餐问题
\"读者-写者\"问题
三个经典问题
经典进程的同步问题
进程管理
0 条评论
回复 删除
下一页