OS-2-1-进程管理(概略)
2021-08-12 09:28:30 16 举报
AI智能生成
操作系统第二章 第一节 进程管理 基本概念 知识点梳理
作者其他创作
大纲/内容
为了保证安全,进程不可直接访问其他进程的地址空间
OS提供方法以供进程进行通信
背景
OS分配一块共享空间供进程通信该空间的访问是互斥的,通过OS提供的同步-互斥工具实现
速度慢、限制多
基于数据结构的共享如“仅存放长10的数组”
OS划出共享存储区
对数据形式存放位置不做要求交由进程控制
基于存储区的共享
共享存储
管道是一个连接读写进程的共享文件在内存中是一块固定大小缓冲区一般与页面等大
仅支持半双工通信双向通信需要两根管道
访问仍要互斥
写进程以字符流形式写入管道写满时wirte()系统调用被阻塞
读进程将数据全部取走,管道变空此时read()系统调用被阻塞
只能一对一,读了就会被丢弃,一次性
读写
即:不满不读,空不读不空不写,满不写
管道通信
消息的结构
通过发送消息/接收消息原语以格式化的消息为单位进行
消息挂载带接收进程的消息缓冲队列的队尾
直接通信
消息发送到信箱中
间接通信(信箱通信)
消息传递
方法
进程通信
背景:进程自身只能串行,但是一些任务需要更高的并发度
线程更小
进程中包含了多个线程,取代进程成为程序执行流之最小单位
进程间可以并发,线程间亦可以并发
线程被调用不会因此生成多个线程实体
进程仍然是除CPU外的系统资源的最小分配单元
基本概念
进程不再是调度的基本单位,被线程取代。
线程间如进程一样具有并发性
同一进程内线程间的并发无需切换环境,系统开销小
Compare:进程
是处理机调度的单位
多CPU计算机中,各个线程可以占用不同的CPU
线程具备线程ID和线程控制块TCB
线程也具有就绪、阻塞、运行三种基本状态
调度
线程几乎不拥有系统资源
统一进程的不同线程共享进程的资源
共享内存地址空间,同一进程的线程间通信无需OS干预
系统资源
同一进程间线程切换不会引起进程切换
同一进程间线程切换开销很小
不同进程间线程切换会引起进程切换
不同进程间切换开销很大
系统开销
线程的属性
多出现在早期OS不支持线程时
线程由线程库实现,OS不能感知线程存在线程是逻辑上的线程,管理由线程库完成线程切换无需OS介入
优势:管理不涉及CPU模式切换,开销很小
劣势:无法处理阻塞问题,一阻塞全阻塞并发度不高,无法多核并行
用户级线程User-Level Thread(ULT)
管理由OS完成,线程切换需要CPU状态切换
并发能力强,可以多核并行,不受阻塞影响
用户进程占用多个内核级线程,管理开销大
内核级线程才是处理机调度的单位
内核级线程Kernel-Level Thread(KLT)
线程实现方式
一个用户级线程映射到一个内核级线程
并发能力强,可多核并行
管理开销大
一对一
多个用户级线程映射到一个内核级线程
用户级线程的切换在用户空间完成,无需CPU模式切换
有阻塞问题,并发度不高
一般默认一个进程只分配了一个内核级线程
多对一
n个用户线程映射到m个内核级线程(n≥m)
每个用户进程均可对应m个内核级线程
并发度高,开销也可以不大
多对多
多线程模型
外框
线程
可以理解为:用户级线程是“代码逻辑”的载体内核级线程是“运行机会”的载体
Compare:程序:静态的“指令集合”
同一个程序执行多次对应多个进程
一种动态的,“程序的一次执行过程”
是OS分配资源、进行调度的最小单位
(又称进程映像)进程运行时某个瞬间进程的存在,即是静态的
进程实体
PID:Process id,唯一区分进程的编码
UID:进程所属用户ID
进程描述信息
CPU使用时间、磁盘、网络使用状况等
进程当前状态:就绪态/阻塞态/运行态……
进程控制和管理信息
正在使用的文件
正在使用的内存区域
正在使用的设备
资源分配清单
PSW、PC等寄存器的值
处理机相关信息
PCB进程控制块进程存在的唯一标志程序运行前创建进程结束时回收
程序代码(指令序列)
程序段
运行过程产生的数据(如变量)
数据段
组成
OS管理进程需要的全部数据都在PCB
程序自身需要的数据存放在数据段中
进程是程序执行一次的过程,是动态产生、变化、结束的
动态性
内存中有多个进程实体,可以并发执行
封闭性指的是程序执行结果取决于进程本身,不受外界影响
并发进程共享变量,速度快慢影响读写顺序,影响结果。
进程并发失去封闭性
并发性
可以独立运行,独立获得资源、独立接受调度的基本单位
进程被调用不会因此生成多个进程实体
独立性
各个进程独立运行,进度不可预知OS必须提供进程同步机制来解决异步问题
异步性
每个进程会配置一个PCB,结构上看,进程是程序段、数据段、PCB的结构
结构性
特征
进程
占有CPU
在CPU上运行
运行状态
具备运行条件
不占有CPU
就绪状态
因等待某一事件而暂时不能运行
阻塞状态
OS为进程分配资源、初始化PCB
创建状态
OS回收分配的资源,撤销PCB(进程结束)
终止状态
状态
三种基本状态
对于单处理机系统,除了死锁状态,其余任何时候都有且仅有一个执行态的进程
就绪→运行
时间片到期时通常可以降低优先级
运行→就绪
运行→阻塞
阻塞→就绪
转换
指向当前处于执行态的进程(PCB)
单处理机计算机中同一时刻只有一个执行态进程
执行指针
指向当前处于就绪态的进程
通常优先级高的在队头
→PCB6→PCB4→PCB7...
就绪队列指针
等待打印机的阻塞队列
等待磁盘的阻塞队列
*其他原因阻塞队列
链式方式
指向就绪索引表
索引表表项指向就绪态PCB
就绪表指针
索引方式
进程的组织方式
进程的状态和转换
是一种特殊的应用程序
执行必须一次性完成
原子性
执行后CPU不再例行检查中断信号直到执行了开中断指令
关中断指令特权指令
开中断指令特权指令
实现
原语Primitive
分时系统中,用户登录成功,OS会为其建立一个新进程
用户登录
多道批处理系统中,新的作业放入内存,为其建立新进程
作业就是外存中尚未运行的程序
作业调度
用户/用户程序向OS提出请求
系统提供服务
用户程序主动请求创建子线程
用户程序应用请求
应用场景
若申请失败则创建失败
分配PID,申请空白PCB
若资源不足,进入阻塞态
分配资源(内存等)
初始化PCB:标志信息、处理机状态、处理机控制信息、设置优先级
若就绪队列能接受新进程,则插入就绪队列
创建原语
创建进程允许一个进程创建另一个进程创建者称父进程被创建者称子进程子进程可继承父进程资源
正常结束:进程任务完成准备退出运行
异常结束:运行时发生异常,使程序不能继续运行,如存储区越界、非法指令、特权指令、运行超时、算数运算错、IO故障等
外界干预:进程因外部请求而终止,如操作员或OS干预、父进程请求/终止
使用场景
根据对象进程的PID检索PCB,确认其状态
若其处于执行态,立即终止其执行,将处理机分配给其他进程
若其还有子孙进程,终止之
将所有资源归还给父进程或OS
自PCB所在链表删除之
撤销原语
终止进程子进程撤销时资源归还父进程撤销父进程时同时撤销子进程
根据PID找到PCB
若该进程为运行态,保护其现场,转至阻塞态并停止运行
将PCB插入对应事件的等待队列并将处理机资源调度给其他就绪线程
阻塞原语Block
在该时间的等待队列中找到对象PCB
移出等待序列,并设为就绪态
将PCB插入就绪队列等待调度程序调度
唤醒原语Wakeup
阻塞&唤醒
时间片到期
有优先级更高的进程到达
当前进程主动阻塞
当前进程终止
Compare:CPU模式切换
保存处理机上下文(Context)(包括PC和其他寄存器)到PCB
移动PCB到相应队列
选择另一进程执行,更新其PCB
更新内存管理的数据结构
恢复处理机上下文
根据PCB恢复所需运行环境
切换原语
进程切换
控制方法
死锁状态下没有运行态的进程
如果甲进程需要AB资源,而仅被分配了A同时乙进程需要AB资源,而仅被分配了B此时两个进程都陷入阻塞且永不可能就绪,谓之死锁
死锁
进程控制实现进程状态转换
进程管理
0 条评论
回复 删除
下一页