计算机操作系统(8):进程的控制
2.2 进程控制
- 进程控制是进程管理中最基本的功能。
- 进程控制包括:
◆ 创建进程
◆ 终止进程
◆ 进程状态转换
- 进程控制是由OS的内核完成的。
2.2.1 进程的创建
2.进程的创建
调用进程创建原语Create(),按下述步骤创建一个进程
(1)申请空白PCB;
(2)为新进程分配资源。主要是内存空间。
(3)初始化PCB。包括:
(4)将新进程插入就绪队列
2.2.2 进程的终止
2.进程的终止过程
OS调用终止原语,按下述过程终止进程:
- 根据被终止进程的标识,从PCB集合中找除该进程的PCB,读出该进程状态。
- 若被终止进程正处于执行状态,应立即终止其执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。若该进程还有子孙进程,应将其所有子孙进程终止,以防止它们成为不可控进程。
- 将被终止进程的所有资源,或者归还给其父进程,或者归还给系统。
- 将被终止进程(它的PCB)从所在队列中移出,等待其他进程来搜索信息。
2.2.3 进程的阻塞和唤醒
2.进程阻塞过程
调用阻塞原语block把自己阻塞。(主动行为)
阻塞(block)过程:
- 立即停止执行;
- 把PCB中进程状态由“执行”改为“阻塞”;
- 将PCB插入具有相同事件的阻塞队列;
- 转进程调度程序,将处理机分配给某个就绪进程,并进行进程切换——保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中处理机状态设置CPU的环境。
- 3.进程唤醒过程
- 调用唤醒原语wakeup( ),将等待事件的进程唤醒。
- 唤醒原语执行过程:
- ▲将被唤醒进程的PCB从阻塞队列移出;
- ▲将其PCB中进程状态由“阻塞”改为“就绪”;
- ▲将改PCB插入到就绪队列中。
2.2.4 进程的挂起和激活
1.进程的挂起
当出现了引起进程挂起的事件时(用户进程请求将自己挂起,或父进程请求将子进程挂起),系统将用挂起原语suspend( )将指定进程或处于阻塞状态的进程挂起。
挂起原语的执行过程
2.进程的激活
计算机操作系统(8):进程的控制相关推荐
- 计算机操作系统之进程
目录 进程的定义 基本概念 进程实体与进程 PCB的组成 进程的组织 链接方式 索引方式 进程的特征 进程的状态 进程的三种基本状态 进程的另外两种状态 进程状态的转换 进程控制 何谓进程控制 如何实 ...
- 计算机操作系统——经典进程的同步问题
计算机操作系统--信号量机制与经典进程的同步问题 信号量机制 随着发展,信号量从整型信号量经记录型信号量,进而发展为"信号量集"机制. 一般来说,信号量的值与相应的资源的使用情况有 ...
- 【计算机操作系统】-进程切换什么时候会发生呢?
进程切换一定发生在中断/异常/系统调用处理过程中,常见的有以下情况: 时间片中断.IO中断后 更改优先级进程:(导致被中断进程进入就绪态): 阻塞式系统调用.虚拟地址异常:(导致被中断进程进入等待态) ...
- 计算机操作系统之进程与线程
⭐️前面的话⭐️ 本篇文章将介绍计算机操作系统的相关内容,主要内容有进程,进程调度,并行与并发的概念,进程间通信,进程与线程的区别.
- 【Linux操作系统】进程的控制
文章目录 一.✔进程创建 1.再谈fork函数 2.写时拷贝 二.✔进程终止 1.进程终止的场景 查看进程退出码所代表的含义 2.进程终止的常见方法 3.进程终止,内核做了什么工作 三.✔进程等待 1 ...
- 计算机操作系统和进程
✨个人主页:bit me
- 计算机操作系统 - 目录
计算机操作系统 概述 进程管理 死锁 内存管理 设备管理 链接 参考资料 Tanenbaum A S, Bos H. Modern operating systems[M]. Prentice Hal ...
- 计算机操作系统-进程的描述与控制
目录 进程的描述 进程的定义和特征 什么是进程 所以进程到底什么呢? 进程控制块(PCB) PCB的作用 进程的特点 进程的缺点 进程的基本状态 就绪状态 执行状态 阻塞状态 创建状态 终止状态 挂起 ...
- 考研OR工作----计算机操作系统简答题及疑难知识点总结(第二章 进程的描述与控制)
计算机操作系统从第二章开始内容会变得异常多,还是希望能够帮助到大家,在这一章阿婆主还会把书上的典型的PV操作题给打上来,给大家用作参考,如果有问题的地方,还请大家在文章下方留言,我好更正,或者你们有更 ...
- 『操作系统』 进程的描述与控制 Part 1 前驱图与程序执行
文章目录 2.1 前趋图和程序执行 2.1.1 程序的顺序执行及其特征 1. 程序的顺序执行 2.程序顺序执行时的特征 2.1.2 前趋图 2.1.3 程序的并发执行及其特征 1. 程序的并发执行 2 ...
最新文章
- 多进程PHP脚本实现海量数据转移总结
- Cordic的学习初步
- Sed教程(一):简介、环境设置、工作流程
- openpyxl方法记录
- linux下使用make指令生成程序时提示“XXX is up to date”问题的解决办法
- 记Booking.com iOS开发岗位线上笔试
- qt显示rgba8888 如何改 frame_Qt开源作品17-IP地址输入控件
- 这半年来的飞秋官网磕磕碰碰
- 移动端取消iphone ipad默认按钮
- javaScript 解析 xml
- php课程设计学生信息管理系统,学生成绩管理系统/学生信息管理系统
- 二叉树基础题(五):二叉树的下一个节点最低公共祖先节点
- Springboot定时任务【多线程处理】
- 中国经济八问-中国视角下的宏观经济
- 阿波罗apollo使用方法+领英使用
- 二分查找的左右逼近法
- 电力爱陆通公专一体模块,国网加密模块,国网硬件加密模块的工作原理
- 什么是buffer?
- matplotlib之pyplot模块之坐标轴配置(axis():设置坐标轴外观、设置坐标轴范围)
- 2C领域最后一个资本宠儿,快看成“超新Z世代”娱乐平台
热门文章
- 概括ADO.NET数据库连接的所有形式(基础)
- [导入]相片: 53787515.jpg
- 使用PhpSpreadsheet将Excel导入到MySQL数据库
- flask jinja2 如何遍历新闻列表
- 主动型页面性能利器:Page Status
- linux 中查找文件,并且将目标文件按时间顺序排序
- 学习《css世界》笔记之使用vertical-align数值实现文字和小图标对齐
- [html] 编写html时,你有没有用过Emmet插件呢?说说它的优点及规则有哪些?
- [html] 你知道什么是反向链接吗?它有什么应用场景呢?
- 工作392-选择Hbuilder x导入项目