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

文章目录

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

什么是进程控制

控制进程的状态变换

在这里插入图片描述

总览

在这里插入图片描述

如何实现进程控制?

原语实现

假设不是原语实现,若此时进程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一般包括修改进程状态或保护/恢复运行环境
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

离线直线度测量仪的三种类型

智能型离线直线度测径仪主要用于金属棒材、管材、陶瓷管材等产品在生产节拍时间充裕时的直径和直线度检测。测量方便,自动将检测数据显示于显示屏上。 离线直线度测量仪使用前,设置产品规格,在更换轧材规格时,在设置一次&#xff…

强化学习:MuJoCo机器人强化学习仿真入门(1)

声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…

【MATLAB源码-第123期】基于matlab的SSK(空间位移键控)调制和QSSK(正交空间位移键控)调制误码率对比。

操作环境: MATLAB 2022a 1、算法描述 1. SSK(空间位移键控): - 基本原理:SSK是一种MIMO(多输入多输出)系统中的调制技术。它通过选择性地激活不同的发送天线来传输信息。在每个时间槽&…

第十三回 赤发鬼醉卧灵官殿 晁天王认义东溪村-FreeBSD 下编辑文件ee 用法

话说雷横绑了一个大汉,先押到晁保正庄上讨些点心吃。这东溪村的保正叫晁盖,人称他托塔天王。晁盖热情接待了雷横和士兵们,自己却趁着他们喝酒的时候尿遁去看那大汉。原来那大汉就是来找晁保正的,于是谎称他是晁盖的外甥&#xff0…

【K8S 云原生】K8S的包包管理器-helm

目录 一、helm概念 1、什么是helm 2、helm的概念: 二、实验部署: 1、安装helm: 2、对chart仓库的基本使用: 2.1、查看和更新chart仓库 2.2、安装chart 2.3、卸载chart: 3、helm自定义模版: 3.1、…

【Linux】【实战系列】10 分钟掌握日常开发中 Linux 网络处理相关命令

文章目录 lsofnetstatpingnslookupsshssh-keygenscpsftp 网络工具 curl网络工具 wget最后个人简介 hello,大家好,我是 Lorin,上一期和大家分享一期日常开发中常用的 Linux 文件和文本命令实战教学,这一期给大家带来常用的网络处理…

k8s部署Ingress

前提:有自备的域名,没有域名可用主机配置的域名解析代替测试 #主机配置的域名 vi /etc/hosts #追加以下内容 127.0.0.1 kuboard1、部署Ingress vi deploy.yaml #输入以下内容apiVersion: v1 kind: Namespace metadata:labels:app.kubernetes.io/instan…

git使用指南——以gitlab为例

注册gitlab 自行注册 新建项目 选择新建一个空白的项目 上传项目 clone项目地址到本地 执行完之后,会在目录下生成如下内容:进入里面,选择.git,要上传的内容(资料或代码复制到该目录下):…

华夏基金“冰火两重天”:产品增量不增值,靠什么赢得用户?

近日,华夏基金发布关于华夏野村日经225交易型开放式指数证券投资基金(QDII)(下称“华夏野村日经ETF”)二级市场交易价格溢价风险提示及临时停牌公告。 公告内容显示,华夏野村日经ETF二级市场交易价格明显高…

Prometheus 架构全面解析

在本指南中,我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统,能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标,并根据阈值收到警报。 此外,在当今世界,可观…

如何使用宝塔面板搭建Discuz论坛服务并结合内网穿透远程访问

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board(以下简称 Discuz!)是一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上&a…

架构篇18:单服务器高性能模式-PPC与TPC

文章目录 PPCpreforkTPCprethread小结高性能是每个程序员的追求,无论我们是做一个系统还是写一行代码,都希望能够达到高性能的效果,而高性能又是最复杂的一环,磁盘、操作系统、CPU、内存、缓存、网络、编程语言、架构等,每个都有可能影响系统达到高性能,一行不恰当的 deb…

【强化学习】QAC、A2C、A3C学习笔记

强化学习算法:QAC vs A2C vs A3C 引言 经典的REINFORCE算法为我们提供了一种直接优化策略的方式,它通过梯度上升方法来寻找最优策略。然而,REINFORCE算法也有其局限性,采样效率低、高方差、收敛性差、难以处理高维离散空间。 为…

力扣hot100 环形链表 快慢指针 哈希 数学公式

Problem: 142. 环形链表 II 文章目录 思路Code 思路 👨‍🏫 参考题解 Code ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( 1 ) O(1) O(1) /** /*** Definition for singly-linked list.* class ListNode {* int val;* …

C++大学教程(第九版)6.29素数

题目 (素数)素数是只能被1和自已整除的整数。例如,235和7是素数而468和9不是素数 a)编写一个函数,确定一个数是否是素数。 b)在程序中使用这个函数,该程序确定和打印2 ~10000之间的所有素数。在确信已找到所有的素数之前,实际需测试这些数中…

老师家访的目的是什么

家访,对于老师来说,是工作中必不可少的一部分。有人会问,老师家访的目的是什么呢?是为了了解学生的家庭情况,还是为了和家长建立良好的沟通关系?其实,老师家访的目的远不止于此。 老师家访是为…

MIT6.1810(which was called 6.S081 then) Lab1-4

关于用VScode调试XV6的方法我在上一篇博客有过介绍NJU操作系统课(蒋炎岩) 笔记-CSDN博客 这篇主要记录做XV6 Lab的过程。 关于Lec的学习我英语差而且机翻会有误差(会努力学英语的!),所以我使用肖宏辉大佬自己翻译的书面版本,非常感谢这位大佬…

GPS位置虚拟软件 AnyGo mac激活版

AnyGo for Mac是一款一键将iPhone的GPS位置更改为任何位置的强大软件!使用AnyGo在其iOS或Android设备上改变其GPS位置,并在任何想要的地方显示自己的位置。这对那些需要测试应用程序、游戏或其他依赖于地理位置信息的应用程序的开发人员来说非常有用&…

QSqlQuery 执行Update 判断执行成功与否

1.执行更新操作的SQL语句 update s_info set name"009" where contact_number "13511112222" 怎么样判断是否确实更新操作是执行成功的 ,可以通过下列语句判断 query.numRowsAffected() > 0 2.主要的几步操作如下: QSqlQuery query;query.…

如何解决GitHub打不开的问题?

网址:https://github.com.ipaddress.com Domain Summary 140.82.114.3 github.com二、查看github.global.ssl.fastly.net的IP地址 网址:https://fastly.net.ipaddress.com/github.global.ssl.fastly.net hostname summary 199.232.69.194 github.global…