计算机操作系统-第十二天

news/2024/5/6 17:49:41/文章来源:https://blog.csdn.net/m0_73975164/article/details/133955099

目录

进程控制的基本概念

什么是进程控制

如何实现进程控制

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

与进程控制相关的原语

进程创建中的原语

进程终止中的原语

进程的阻塞和唤醒中的原语

进程的切换中的原语

 知识滚雪球-程序是如何运行的?:

本节思维导图


进程控制的基本概念

什么是进程控制

        进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简单理解就是:进程控制就是要实现进程状态转换

如何实现进程控制

        利用微内核中的”原语“实现,前面我们提到原语是一种特殊的程序,它的执行具有原子性,也就是说,这段程序的运行必须一气呵成,不可中断。也就是说进行进程转换的过程要一气呵成这又是为什么? 

假设PCB中的变量state表示进程当前所处状态,1表示就绪态、2表示阻塞态...

假设此时进程2等待的事件发生,则操作系统中,负责进程控制的内核程序至少需要做两件事:

①将PCB2的state设为1

②将PCB2从阻塞队列放到就绪队列

如果此时不能一气呵成,那么假设完成第一步后内核程序接收到了中断信号,那么虽然PCB2的state = 1但是它仍然被放在阻塞队列中,很明显这样是不对的。

所以,如果进程转换不能做到一气呵成,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作。

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

用"关中断指令”和“开中断指令”这两个特权指令实现原子性

        在我们之前的学习中,我们可以知道当CPU执行完每条指令后都会进行外部中断信号的检查,当检测到外部中断信号后就会先执行中断处理程序然后才会去执行下一条指令。

        而我们当CPU执行关中断这个特权指令后,就不会再进行上述判断是否有外部中断信号的操作,CPU会依次执行关中断指令后的指令,直到遇到开中断指令后才会恢复检查外部中断信号的操作。

还有一点需要注意的是,这两条指令都只允许内核程序使用,不允许用户程序使用

与进程控制相关的原语

进程创建中的原语

进程终止中的原语

进程的阻塞和唤醒中的原语

进程的切换中的原语

 知识滚雪球-程序是如何运行的?:

        我们在之前的学习中知道了,CPU会从内存中取出指令,而CPU中会设置很多“寄存器”,用来存放程序/指令在运行过程中所需要的某些数据。常见的寄存器有PSW(程序状态字寄存器)、PC(程序计数器寄存器)、IR(指令寄存器)、通用寄存器、ACC、MQ、MAR、MDR......

其中,PC寄存器用于存放下一条指令的地址,IR用于存放当前正在执行的指令,而通用寄存器中会储存一些其它必要的信息

        如果当执行完指令3后,另一个进程也开始上CPU运行,而另一个进程在运行过程中也会使用各个寄存器,这就可能导致该进程会覆盖指令3在寄存器中存储的内容,那么该如何切换回之前的进程?

解决办法:在进程切换时先在PCB中保存这个进程的运行环境(只保存一些必要的寄存器信息,比如PSW寄存器,PC寄存器、通用寄存器中的内容),当原来的进程再次投入运行时,可以通过PCB恢复它的运行环境。

 

本节思维导图

其实,无论哪个进程控制原语,要做的无非三类事情:

1、更新PCB中的信息(修改进程状态state、保存/恢复运行环境)

2、将PCB插入合适的队列

3、分配/回收资源 

~over~

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

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

相关文章

Linux程序地址

目录 一、定义 二、问题引出 三、虚拟地址和物理地址 &#xff08;一&#xff09;问题解释 &#xff08;二&#xff09;什么是进程地址空间 &#xff08;三&#xff09;为什么要有进程地址空间 一、定义 #include <stdio.h> #include <stdlib.h>//geten…

用Nginx搭建一个具备缓存功能的反向代理服务

在同一台服务器上&#xff0c;使用nginx提供服务&#xff0c;然后使用openresty提供反向代理服务。 参考《Ubuntu 20.04使用源码安装nginx 1.14.0》安装nginx。 参考《用Nginx搭建一个可用的静态资源Web服务器》搭建静态资源Web服务器&#xff0c;但是/nginx/conf/nginx.conf里…

Android JKS MD5 SHA1 公钥生成 私钥生成 APP备案 内容获取

1 查看 jks keytool -list -v -keystore /Users/lipengfei/Desktop/android/androidproject.jks密钥库类型: jks 密钥库提供方: SUN您的密钥库包含 1 个条目别名: ddgj 创建日期: 2018-11-16 条目类型: PrivateKeyEntry 证书链长度: 1 证书[1]: 所有者: CNcn, OUcn, Ocn, Lcn,…

文件目录(文件控制块FCB,目录结构,索引结点)

1.文件控制块&#xff08;实现文件目录的关键数据结构) 目录文件中的一条记录就是文件控制块&#xff08;FCB&#xff09; FCB的有序集合称为“文件目录”&#xff0c;一个FCB就是一个文件目录项。 1.FCB的组成 FCB中包含了文件的基本信息&#xff08;文件名、物理地址、逻…

knife4j-openapi3 无法使用swagger注解@ApiModelProperty

问题描述 当使用knife4j springboot3&#xff0c; 发现无法使用 swagger注解ApiModelProperty需要单独导入一个包但是即使导入这个包也不生效&#xff0c;即使配置了description也为空 原因 简单来说&#xff1a;swagger2 > swagger3的时候出现了破坏性的更新 将ApiMode…

什么是无磁远传水表?工作原理是怎样的?

无磁远传水表是一种新型的智能水表&#xff0c;与传统水表相比&#xff0c;它具有更高的精度和可靠性&#xff0c;并且可以实现远程读数和控制。那么&#xff0c;无磁远传水表的工作原理是怎样的呢?下面&#xff0c;小编来为大家介绍下什么是无磁水表?它的工作原理是怎样的&a…

【OpenCV实现鼠标绘图,轨迹栏做调色板,图像的基本操作】

文章目录 鼠标绘图轨迹栏做调色板图像的基本操作 鼠标绘图 在OpenCV中操作鼠标事件 函数&#xff1a;cv.setMouseCallback() 目的是在鼠标双击的地方画一个圆。首先&#xff0c;我们需要创建一个鼠标回调函数&#xff0c;该函数会在鼠标事件发生时执行。鼠标事件包括左键按下…

【七:docken+jenkens部署】

一&#xff1a;腾讯云轻量服务器docker部署Jenkins https://blog.csdn.net/qq_35402057/article/details/123589493 步骤1&#xff1a;查询jenkins版本&#xff1a;docker search jenkins步骤2&#xff1a;拉取jenkins镜像 docker pull jenkins/jenkins:lts步骤3&#xff1a;…

如何通过命令行进入到mysql?

如何通过命令行进入到mysql&#xff1f; 首先进入到C盘mysql安装目录的bin文件夹&#xff0c;然后在这个文件夹下打开命令行窗口&#xff0c;如下图&#xff1a; 接着输入进入命令mysql -u root -p如下图&#xff1a; 可以发现输入连接命令之后需要让你输入mysql连接密码&am…

Oracle的立场:官网更换首页与以色列站在一起

Oracle公司的官网&#xff0c;更换了首页内容&#xff0c;明确表明立场&#xff1a;Oracle与以色列站在一起。 声明指出&#xff1a; Oracle谴责针对以色列及其公民的恐怖袭击。Oracle将为其员工、以色列政府和国防机构提供一切必要的支持。 Magen David Adom是一家为以色列公民…

CCF CSP认证 历年题目自练Day34

题目一 试题编号&#xff1a; 202303-1 试题名称&#xff1a; 田地丈量 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 问题描述 西西艾弗岛上散落着 n 块田地。每块田地可视为平面直角坐标系下的一块矩形区域&#xff0c;由左下角坐标 (x1,…

spark获取hadoop服务token

spark 作业一直卡在accepted 问题现象问题排查1.查看yarn app日志2.问题分析与原因 问题现象 通过yarn-cluster模式提交spark作业&#xff0c;客户端日志一直卡在submit app&#xff0c;没有运行 问题排查 1.查看yarn app日志 appid已生成&#xff0c;通过yarn查看app状态为…

“传统”开发与AI开发的区别与联系(更新了GPT3.5的反馈)

1、传统开发的算法和软件整体&#xff0c;也可以看成是一个“大模型”&#xff0c;其中有不同层次的处理&#xff0c;最终能够完成从输入到输出的计算&#xff0c;不过&#xff0c;其中的计算都是人工定义的&#xff0c;一般依赖于研究成果的应用。研究成果在实际中的应用处理。…

linux性能分析(一)如何查看网络的性能指标

一 如何查看网络的性能指标 说明&#xff1a; 以下案例中的相关命令只是粗略讲解,后续会有针对性的细讲补充&#xff1a; 各个案例通过不同维度衡量网络的性能指标 ① 如何进行性能分析 思考&#xff1a;如何进行性能分析?1、前提&#xff1a;一定是系统出现不符合预期的…

SpringCloud 完整版--(Spring Cloud Netflix 体系)

目录 SpringCloudSpring Cloud Netflix 体系分布式概念&#xff1a;分析图单体应用分布式架构集群微服务分布式微服务集群 服务注册与发现Eureka作用&#xff1a;为什么使用Eureka&#xff1f;解答&#xff1a;分析图 搭建&#xff1a;1、注册中心Eureka-server搭建创建项目配置…

初出茅庐的小李博客之Windows11运行Linux记录

安装教程 超简单&#xff0c;不安装虚拟机&#xff0c;Windows11运行Linuxhttps://zhuanlan.zhihu.com/p/393484912 注意事项 出现错误有可能是少了驱动 驱动下载地址 https://link.zhihu.com/?targethttps%3A//wslstorestorage.blob.core.windows.net/wslblob/wsl_updat…

电子技术基础之一(电容和电感)

Electronic Techonolgy 1、电容和电感1.1、电容(Capacitor)1.1.1、滤波功能1.1.2、储能功能 1.2、电感(Inductor)1.2.1、楞次定律1.2.2、储能作用 1、电容和电感 先讲一个概念&#xff0c;电流分为直流电和交流电&#xff0c;其中直流电再分为稳定直流电和脉动直流电。 直流电…

Softing为连接PROFIBUS网络提供多种接口产品方案

一 应用广泛的PROFIBUS网络 PROFIBUS是基于统一、标准且独立于应用的通信协议。据PI-China统计&#xff0c;在工业领域里早已有近5090万个PROFIBUS设备被安装在了超过900万节点中。PROFIBUS网络的广泛应用得益于PROFIBUS协议的开放性——用户可以很方便地在PROFIBUS网络的任意…

Redis在分布式场景下的应用

分布式缓存 缓存的基本作用是在高并发场景下对应服务的保护缓冲 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题&#xff1a; redis由于高强度性能采用内存 但是意味着丢失的风险单结点redis并发能力有限分布式服务中数据过多 依赖内存的redis 明显单机不…

JavaSE编程题目练习(三)

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;欢迎关注小弟&#xff01; 博主小留言&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟Cool&#xff0…