当前位置: 首页 > news >正文

操作系统-05.进程控制

进程控制

1.什么是进程控制?
答:进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
简化理解:反正进程控制就是要实现进程状态转换
2.如何实现进程控制?
答:
3.原语实现进程控制?
答:原语特点:运行与核心态,执行期间不允许中断,即原子操作,实现方式:关中断,开中断,执行过程屏蔽外来中断。

4.进程控制相关原语?
答:进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事情:
①.更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)

a.所有的进程控制原语一定都会修改进程状态标志
b.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
c.某进程开始运行前必然要恢复期运行环境

②.将PCB插入合适的队列
③分配/回收资源

进程控制
基本概念
什么是进程控制
如何实现进程控制
用原语实现
进程控制相关原语
进程的创建
进程的终止
进程的阻塞
进程的唤醒
进程的切换

1.进程创建

进程创建
创建原语
申请空白PCB
为新进程分配所需资源
初始化PCB
将PCB插入就绪队列
引起进程创建的事件
用户登陆
分时系统中-用户登录成功-系统会建立为其建立一个新的进程
作业调度
多道批处理系统中-有新的作业放入内存时-会为其建立一个新的进程
提供服务
用户向操作系统提出其些请求时-会新建一个进程处理该请求
应用请求
由用户进程主动请求创建一个子进程

2.进程终止

进程终止
撤销原语
从PCB集合中找到终止进程的PCB
若进程正在进行-立即剥夺CPU将CPU分配给其他进程
终止其所有子进程
将该进程拥有的所有资源归还给父进程或操作系统
删除PCB
引起进程终止的事件
正常结束
异常结束
外界干预

3.进程的阻塞和唤醒

进程运行态->阻塞态
进程阻塞态->就绪态
阻塞原语与唤醒原语成对使用

进程的阻塞和唤醒
进程的阻塞
阻塞原语
引起进程阻塞的事件
找到要阻塞的进程对应的PCB
保护进程运行现场-将PCB状态信息设置为阻塞态-暂时停止进程运行
将PCB插入相应事件的等待队列
需要等待系统分配某种资源
需要等待相互合作的其他进程完成工作
进程的唤醒
唤醒原语
引起进程唤醒的事件
在事件等待队列中找到PCB
将PCB从等待队列移除-设置进程为就绪态
将PCB插入就绪队列-等待被调度
等待的事件发生

4.进程的切换

运行态->阻塞态/就绪态
就绪态->运行态

进程的切换
切换原语
将运行环境信息存入PCB
PCB移入相应队列
选择另一个进程执行-并更新其PCB
根据PCB恢复新进程所需的运行环境
引起进程切换的事件
当前进程时间片到
有更高优先级的进程到达
当前进程主动阻塞
当前进程终止

相关文章:

  • 操作系统-06.进程通信
  • 操作系统-06.线程概念、多线程模型
  • 操作系统-07.处理机调度概念、层次
  • 设计模式-01.面向对象七大设计原则
  • C++面向对象高级开发-01.C++ 类相关解析
  • C++面向对象高级开发-02.堆、栈与内存管理
  • C++面向对象高级开发-03.指针与引用
  • JAVA-IDEA-Tomcat 完美解决乱码
  • Servlet-jsp 依赖库pox.xml配置
  • C语言——指针之间的传递
  • MySQL学习笔记(一)
  • Django学习笔记(一)——Web应用程序
  • MySql学习笔记(二)——pymysql
  • MySql学习笔记(三)——mysqlworkbench远程连接Linux上的mysql服务
  • Django学习笔记(二)——使用表单
  • 【笔记】你不知道的JS读书笔记——Promise
  • Angular 2 DI - IoC DI - 1
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • input实现文字超出省略号功能
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java读取Properties文件的六种方法
  • Java多线程(4):使用线程池执行定时任务
  • Just for fun——迅速写完快速排序
  • Leetcode 27 Remove Element
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • vue学习系列(二)vue-cli
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 普通函数和构造函数的区别
  • 悄悄地说一个bug
  • 深度学习在携程攻略社区的应用
  • 小程序开发中的那些坑
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • #### go map 底层结构 ####
  • #AngularJS#$sce.trustAsResourceUrl
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (八)c52学习之旅-中断实验
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十六)Flask之蓝图
  • (四)模仿学习-完成后台管理页面查询
  • (算法)Game
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • .bat批处理出现中文乱码的情况
  • .md即markdown文件的基本常用编写语法
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net8 Blazor 尝鲜
  • .NetCore项目nginx发布
  • .Net中wcf服务生成及调用
  • /var/lib/dpkg/lock 锁定问题
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [<MySQL优化总结>]
  • [2016.7 test.5] T1
  • [Angularjs]ng-select和ng-options