操作系统【OS】进程的控制【进程的创建、终止、阻塞、唤醒】

 

定义和过程

对应事件

创建

  • 允许一个进程创建另一个进程
  • 允许子进程继承父进程所拥有的资源
  • 创建进程的过程如下:
    • 申请一个空白的 PCB,并向 PCB 中填写一些控制和管理进程的信息,比如进程的唯一标识等;
    • 为该进程分配运行时所必需的资源,比如内存资源;
    • 将 PCB 插入到就绪队列,等待被调度运行;

Ps:设备分配不需要创建进程【通过在系统中设置相应的数据结构实现】

  • 登陆系统【系统为此创建一个用户管理的进程,包括用户桌面、环境等,所有用户进程都会在该进程下创建和管理】
  • 作业调度
  • 系统提供服务
  • 用户程序的应用请求

终止

  • 当子进程被终止时,其在父进程处继承的资源应当还给父进程
  • 终止进程的过程如下:
    • 查找需要终止的进程的 PCB,读取该进程的状态;
    • 如果处于执行状态,则立即终止该进程的执行,然后将 CPU 资源分配给其他进程;
    • 如果其还有子进程,则应将该进程的子进程终止;
    • 将该进程所拥有的全部资源都归还给操作系统;
    • 将其从 PCB 所在队列中删除;
  • 正常结束
  • 异常结束
    • 存储越界
    • 保护错
    • 非法指令
    • 特权指令错
    • 运行超时
    • 算术运算错
    • I/O故障
  • 外界干预

阻塞

  • 当进程需要等待某一事件完成时,它可以调用阻塞语句把自己阻塞等待(主动
  • 一旦被阻塞等待,只能由另一个进程唤醒(被动
  • 阻塞进程的过程如下:
    • 找到将要被阻塞进程标识号对应的 PCB;
    • 如果该进程为运行状态,则保护其现场,将其状态转为阻塞状态,停止运行;
    • 将该 PCB 插入到阻塞队列中去;
  • 请求系统资源失败
  • 等待某种操作的完成
  • 新数据尚未到达或无新任务可做

唤醒

  • 唤醒进程的过程如下:
    • 在该事件的阻塞队列中找到相应进程的 PCB;
    • 将其从阻塞队列中移出,并置其状态为就绪状态;
    • 把该 PCB 插入到就绪队列中,等待调度程序调度;
  • 释放该I/O设备的进程
  • 提供数据的进程

进程转换

  • 先有资源的调度,再有进程的切换
  • 决定资源分配给哪个进程是决策行为
  • 实际分配的行为是执行行为

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/114275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源码安装Openlava 4.0

安装需求 基本硬件配置建议:CPU 4核或以上(LSF 没有最低 CPU 需求,此处只是建议)内存 8G或以上( 当没有作业在运行时, Linux x86-64 上集群中的 LSF 守护程序将使用大约 488 MB 内存。)交换空…

DDOS攻击的有效防护方式有哪些?

DDoS攻击简介: DDoS攻击,即分布式拒绝服务攻击(Distributed Denial of Service),是一种网络攻击,旨在通过向目标服务器发送大量恶意请求,使服务器资源耗尽,无法满足合法用户的需求&a…

网络协议--ARP:地址解析协议

4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址。数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的。一个网络如以太网可以同时被不同的网络层使用。例如&#…

git创建与合并分支

文章目录 创建与合并分支分支管理的概念实际操作 解决冲突分支管理策略Bug分支Feature分支多人协作 创建与合并分支 分支管理的概念 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码&#xf…

shell的case选择

shell笔记 case语法结构 case语法结构 Caseesac语句与其他语言中的switch.case 语句类似,是一种多分支选择结构。case语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。 case语法结构: case expr in #expr为表达式&am…

《动手学深度学习 Pytorch版》 9.6 编码器-解码器架构

为了处理这种长度可变的输入和输出, 可以设计一个包含两个主要组件的编码器-解码器(encoder-decoder)架构: 编码器(encoder):它接受一个长度可变的序列作为输入,并将其转换为具有固定…

React +AntD + From组件重复提交数据(已解决)

开发场景: react Hooks andt 提交form表单内容给数据库(使用antd的form组件) 问题描述 提交是异步的,请提交方式是POST 方式 提交表单内容给后端,却产生了两次提交记录(当然,数据新增了两条数据)。可以…

基于WebRTC的程序因虚拟内存不足导致闪退问题的排查以及解决办法的研究

目录 1、WebRTC简介 2、问题现象描述 3、将Windbg附加到目标进程上分析 3.1、Windbg没有附加到主程序进程上,没有感知到异常或中断 3.2、Windbg感知到了中断,中断在DebugBreak函数调用上 3.3、32位进程用户态虚拟地址和内核态虚拟地址的划分 …

引用折叠、万能引用、右值引用、move、完美转发

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家来访。 在写STL源码的时候遇到的问题,在这里写一篇笔记记录一下。 一、引用折叠 引用折叠…

分享5个解决msvcp140.dll丢失的方法,全面解析msvcp140.dll丢失的原因

一、MSVCP140.dll是什么? 首先,我们需要了解什么是MSVCP140.dll。MSVCP140.dll是一个动态链接库文件,它是Microsoft Visual C 2015 Redistributable的一部分。这个文件包含了运行使用C编写的应用程序所需的一些函数和类。因此,当…

【单元测试】--测试驱动开发(TDD)

一、什么是测试驱动开发 测试驱动开发(Test-Driven Development,TDD)是一种软件开发方法,其核心思想是在编写实际代码之前,首先编写测试用例。TDD 的主要步骤如下: 编写测试用例:首先&#xf…

MongoDB URL链接 如何设置账号密码

个人博客,求关注。。 MongoDB URL链接 如何设置账号密码 假设你的账号是root,你的密码也是root,则 mongodb://username:passwordlocalhost:27017完美,再见。

探索LLM在图上学习的潜力10.14 暂停

探索LLM在图上学习的潜力 摘要介绍初步知识 摘要 Learning on Graph已经引起了极大的关注,因为它在现实世界中有广泛的应用。在具有文本节点属性的图形上进行学习的最流行的流程主要依赖于图神经网络(GNN),并利用浅层文本嵌入作为…

Maven系列第8篇:大型Maven项目,快速按需任意构建

本篇涉及到的内容属于神技能,多数使用maven的人都经常想要的一种功能,但是大多数人都不知道如何使用,废话不多说,上干货。 需求背景 我们需要做一个电商项目,一般都会做成微服务的形式,按业务进行划分&am…

【LeetCode 算法专题突破】滑动窗口(⭐)

文章目录 前言1. 长度最小的子数组题目描述代码 2. 无重复字符的最长子串题目描述代码 3. 最大连续1的个数 III题目描述代码 4. 将 x 减到 0 的最小操作数题目描述代码 5. 水果成篮题目描述代码 6. 找到字符串中所有字母异位词题目描述代码 7. 串联所有单词的子串题目描述代码 …

关于我对 jeecg-boot 的项目理解、使用心得和改进建议

一句话总结: JeecgBoot帮助我提升了后端技术水平,入门了前端,让我在公司内部慢慢能够成长为全栈开发。 一、项目理解 JeecgBoot 项目的核心理念是快速开发、低代码、易扩展。它采用了前后端分离的架构,后端使用Spring Boot Myba…

用节点亲和性把 Pod 分配到节点

用节点亲和性把 Pod 分配到节点 当前集群信息: rootk8s-master:~# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s…

cuda PyTorch

1. GPU对应的CUDA版本 nvidia-smi CUDA Version: 12.2 GPU diver 大于cuda toolkit, pytorch 版本根据cuda toolkit 2. 查看nvcc的版本(即cuda toolkit 版本) nvcc --version Cuda compilation tools, release 12.2, V12.2.91 Build cud…

微信小程序OA会议系统数据交互

前言 经过我们所写的上一文章:微信小程序会议OA系统其他页面-CSDN博客 在我们的是基础面板上面,可以看到出来我们的数据是死数据,今天我们就完善我们的是数据 后台 在我们去完成项目之前我们要把我们的项目后台准备好资源我放在我资源中&…