操作系统-进程控制(如何实现进程控制 如何实现原子性 相关进程控制原语)

news2024/11/25 20:48:18

文章目录

  • 什么是进程控制
  • 总览
  • 如何实现进程控制?
  • 如何实现原语的“原子性”?
  • 进程控制相关的原语
    • 创建原语
    • 撤销原语
    • 子进程与父进程
    • 阻塞与唤醒原语
    • 切换原语
  • 小结

什么是进程控制

控制进程的状态变换

在这里插入图片描述

总览

在这里插入图片描述

如何实现进程控制?

原语实现

假设不是原语实现,若此时进程PCB2等待的事件发生,当负责进程控制的内核程序将state设为1后,由于不是原语实现,所以此时如果接收到中断信号,那么会被中断信号打断.,此时会出现PCB2state=1,但它仍在阻塞队列指令中,state值矛盾。所以用原语不会发生

在这里插入图片描述

如何实现原语的“原子性”?

正常情况
在这里插入图片描述
关中断指令后才会检查中断,此时如果之前有中断信号,那么会处理该中断
在这里插入图片描述
如果关开中断不是特权指令的话,那么可能会出现进程关闭中断,从而一直霸占CPU的现象。

进程控制相关的原语

分配资源:内存空间

创建原语

用户登录:创建一个用户管理进程
作业调度:外存中的一个程序放入内存(将要执行的)

在这里插入图片描述

撤销原语

要终止一个进程时使用的,会将进程转换为终止态,最终消失

在这里插入图片描述

子进程与父进程

父进程是创建子进程的原始进程,而子进程则是由父进程通过fork系统调用创建出的一个新进程。具体如下:

  1. 父子进程的关系:
  • 在Linux系统中,除了初始进程(进程0)之外,所有进程都是由其他进程通过fork()函数创建的。
  • 调用fork()的进程称为父进程,而新创建的进程称为子进程。
  • 一个进程只能有一个父进程,但可以有多个子进程。
  1. fork系统调用:
  • fork()函数被调用一次,但在父进程和子进程中都会返回一次。
  • 在子进程中,fork()的返回值是0;而在父进程中,返回的是新创建的子进程的进程ID。
  1. 父子进程的执行顺序:
  • fork之后,父进程和子进程的执行顺序是不确定的。操作系统内核负责调度这- 两个进程,它们可能会交替运行。
  1. 子进程的特点:
  • 子进程是父进程的一个复制品,它继承了父进程的大部分属性,包括文件描述符、环境变量等。
  • 子进程可以通过exec系列函数替换自己的映像,从而执行新的程序。
  1. 父子进程的通信:
  • 父子进程可以通过管道、信号、共享内存等多种方式进行通信。
  • 父进程通常用于创建子进程并等待其完成,或者与子进程进行数据交换。
  • 了解父子进程的概念和关系对于理解Unix/Linux系统的进程模型至关重要,也是进行多进程编程的基础。

阻塞与唤醒原语

阻塞原语:使进程运行态转换到阻塞态
唤醒原语:使进程由阻塞态转换到就绪态

有阻塞一般就有唤醒,所以二者是成对出现的

在这里插入图片描述

切换原语

会让一个进程从运行态转换到就绪态和另一个进程从就绪态转换到运行态
运行环境信息(进程上下文):相关寄存器信息
在这里插入图片描述

小结

创建和终止进程控制原语会用到分配/回收资源

更新PCB一般包括修改进程状态或保护/恢复运行环境
在这里插入图片描述

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

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

相关文章

使用DockerFile构建镜像与镜像上传

目录 前言:为什么要使用Dockerfile ? DockerFile构建镜像 1、构建基础对象 2、Dockerfile文件结构 3、构建Dockerfile文件镜像 二、镜像上传(阿里云) 前言:为什么要使用Dockerfile ? 首先Dockerfile …

Linux系统Shell脚本 ----- 编程规范和变量详细解读

一、Shell脚本概述 1、什么是Shell Linux系统中运行的一种特殊程序在用户和内核之间充当“翻译官”用户登录Linux系统时,自动加载一个Shell程序Bash是Linux系统中默认使用的Shell程序 2、Shell的作用 Linux系统中的shell是一个特殊的应用程序,它介于操…

Ansys Lumerical|如何将Klayout Cell动态导入Lumerical Multiphysics

附件下载 联系工作人员获取附件 说明 在本例中,演示了如何将KLayout Library Cell动态导入 Lumerical 以执行设计扫描和表征。该功能支持动态导入到Lumerical FDTD、MODE以及Multiphysics的所有工具,包括CHARGE、HEAT、FEEM、MQW、DGTD。本例适用于&am…

【nginx实战】nginx正向代理、反向代理、由反向代理实现的负载均衡、故障转移详解

文章目录 一. 正向代理与反向代理的概念二. Nginx服务器的正向代理服务1. Nginx服务器正向代理服务的配置的3个指令1.1. resolver指令1.2. resolver_timeout指令1.3. proxy_pass指令 2. Nginx服务器正向代理服务的使用 三. Nginx服务器的反向代理服务1. 反向代理的基本指令1.1.…

pytest配置文件pytest.ini

说明: pytest.ini是pytest的全局配置文件,一般放在项目的根目录下是一个固定的文件-pytest.ini可以改变pytest的运行方式,设置配置信息,读取后按照配置的内容去运行 pytest.ini 设置参数 addopts 设置自定义执行参数&#xff0…

IDEA启动项目遇到的异常汇总,包括插件异常,版本依赖异常,启动异常等以及对应的解决办法

该文章旨在记录开发中遇到的一些异常,以供遇到似错误进行参考修改 一、项目在多个环境下切换,有一次启动后编译失败,报异常 背景:项目在不同环境下有对应的分支,切换分支后运行项目,报错如下 错误:Kotlin:…

赠书活动~

关注公众号获得,发送抽奖

PolarDB无感切换特性助力游戏领域高可用实践

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

《WebKit 技术内幕》学习之六(2): CSS解释器和样式布局

2 CSS解释器和规则匹配 在了解了CSS的基本概念之后,下面来理解WebKit如何来解释CSS代码并选择相应的规则。通过介绍WebKit的主要设施帮助理解WebKit的内部工作原理和机制。 2.1 样式的WebKit表示类 在DOM树中,CSS样式可以包含在“style”元素中或者使…

依托物联网、互联网,建立云端大数据管理平台,形成“端+云+大数据”的智慧工地

概述: 智慧工地,是将物联网应用到建筑工地中,从施工现场源头抓起,最大程度的收集人员、安全、环境、材料等关键业务数据,依托物联网、互联网,建立云端大数据管理平台,的业务体系和新的管理模式…

Linux下用树莓派DS18B20温度传感器读取温度并上传至服务端

目录 一、DS18B20温度传感器 二、逻辑分析 三、实战操作 1、服务端 2、客户端 3、运行结果 一、DS18B20温度传感器 DS18B20是比较常用到的温度传感器,采用单总线控制。是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。关于该温度传感…

Leetcode刷题笔记题解(C++):LCR 153. 二叉树中和为目标值的路径

思路:利用回溯的思想,回溯的退出条件为当前节点为空,是符合路径的判断条件为路径和为目标值且叶子节点包含了,代码如下: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *…

Elasticsearch 常用信息

简述 本文针对 Elasticsearch(简称ES)集群6.x版本出现故障时,可通过提供的命令进行排查。 1、集群健康状态 集群健康状态状态说明red不是所有的主要分片都可用。表示该集群中存在不可用的主分片。可以理解为某个或者某几个索引存在主分片丢失…

Vue2:全局事件总线

一、场景描述 之前我们学习了,通过props实现父子组件之间的通信。通过自定义组件,实现了子给父传递数据。 那么,兄弟关系的组件,如何通信了?任意组件间如何通信了? 这个时候,就要学习全局事件总…

测试工程师必看!测试用例设计全解析,让你彻底掌握

测试工程师在入行时,都会接触到一个名词——测试用例,都知道测试用例是干什么用的,提到设计测试用例的方法,大部分测试工程师都会侃侃而谈:等价类法、边界值法、判定表法、正交分解法……这些方法说起来都如数家珍&…

8-Python 工匠:使用装饰器的技巧

Python 工匠:使用装饰器的技巧 前言 这是 “Python 工匠”系列的第 8 篇文章。[查看系列所有文章] 装饰器 (Decorator) 是 Python 里的一种特殊工具,它为我们提供了一种在函数外部修改函数的灵活能力。它有点像一顶画着独一无二 符号的神奇帽子&#x…

仰暮计划|“说是操场,那就是个土坡,我们在那儿上边种种树啊,拔拔草,有的时候还会有同学来喂喂羊啥的,这都是我们的娱乐”

我是1948年农历二月份在河南省许昌市五女店镇的一个乡村里边出生的。从我记事的时候,中华人民共和国就已经成立了。当时是好多年,经历了三大改造呀、生产队呀、大队呀,乱七八糟的很多,估计你们现在这些孩子们啊,都没有…

浪花 - 更新队伍信息

一、接口设计 1. 请求路径:/team/update 2. 请求参数:TeamUpdateRequest 有些数据不允许修改,封装一个请求类,只存放允许修改的参数列表 package com.example.usercenter.model.request;import lombok.Data;import java.io.Se…

9款最新文生图模型汇总!含华为、谷歌、Stability AI等大厂创新模型(附论文和代码)

2023年真是文生图大放异彩的一年,给数字艺术界和创意圈注入了新鲜血液。从起初的基础图像创作跃进到现在的超逼真效果,这些先进的模型彻底变革了我们制作和享受数字作品的途径。 最近,一些大公司比如华为、谷歌、还有Stability AI等人工智能巨…

软件工程实验报告(完整)

博主介绍:✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦! 🍅附上相关C语言版源码讲解🍅 &#x1f44…