进程切换及一些常见概念(面试必问)

news2024/11/16 13:33:29

目录

    • 前言
    • 一、竞争性
        • 1、什么是进程的竞争性?
        • 2、为什么进程间存在竞争性?
    • 二、独立性
        • #这里先简单了解
    • 三、并行
    • 四、并发
    • 五、优先级队列
    • 六、进程切换
      • 寄存器
        • 1. 函数返回值
        • 2. 进程上下文数据
    • 总结

前言

在不同的进程在处理机上切换的过程中,我们需要学习一些相关概念以便我们更好地理解进程间的切换,这些概念包括:进程的竞争性,独立性,并行性,并发性,时间片,抢占式调度算法,进程的上下文数据

一、竞争性

1、什么是进程的竞争性?

进程的竞争性指进程间为抢夺某种资源而出现的现象

2、为什么进程间存在竞争性?

一般情况下,进程的数量是非常多的,而系统中的资源总是有限的,所以就会出现资源供不应求的现象,因此,为了获得资源,进程间就必须进行竞争

二、独立性

#这里先简单了解

进程的独立性指进程之间在运行的时候互不干扰,相互独立,一个进程挂掉或者异常不会影响其他进程
在这里插入图片描述
在这里插入图片描述
比如:QQ和微信是两个不同的进程,这两个进程在运行的时候是互不干扰的,QQ 挂掉的话不会影响微信的正常运行

三、并行

并行指的是在多个CPU中,不同的进程同时运行的一种现象,一般情况指的是不同的CPU中同时运行多个进程的现象,在多CPU中任何时候都有可能出现同时在运行,这里以一个两个CPU的图进行理解
在这里插入图片描述

四、并发

并发指的是在一个CPU中多个,多个进程在CPU的运行队列中相继上CPU运行的现象,不会出现多个CPU同时运行的情况,因为一个CPU在同一时间内只能处理一个进程,但是由于CPU的运行速度过快,给我们宏观的感觉就是多个进程在同时运行
在这里插入图片描述
比如现在在我的电脑上看好像是四个进程在同时运行,其实实际上并不是的,这四个进程是相继以很快的速度上CPU不断轮流运行的,只是因为CPU的运行速度太快所以给我们的感觉是几个进程在同时运行

  • 那么问题来了,多个进程在CPU上到底是如何进行切换的呢??CPU是死板地将一个进程处理完再运行下一个进程吗??
    显然不是的,现在的大部分操作系统都是分时操作系统,也就是说,操作系统会给每一个进程在每一次调度周期内赋予一个时间片,在一个时间段内,多个进程都会通过切换交叉的方式让多个进程在一段时间内得到推进,这种现象叫做并发
    时间片:指操作系统指定的一个进程在一次上CPU运行的时间间隔,通常是毫秒级别
    调度器存在于CPU中负责调度进程上CPU上运行

五、优先级队列

在系统中会存在很多的进程,那么通过上面我们已经知道,CPU并不是运行完一个进程之后才会运行下一个进程,而是操作系统会设置一个时间片,让每个上CPU运行的进程每次以该时间片的时间在CPU上运行之后才下CPU,那么此时如果一个在CPU上运行的进程如果还没达到运行的时间片,此时系统中又来了一个优先级比该进程还要高的进程,此时咋整?
显然,操作系统会强制性让原先在CPU上运行的进程下处理机,回到运行队列,让优先级高的进程上CPU上运行,这种现象叫抢占式算法

  • 抢占式内核:当一个更高优先级的进程来的时候,会将一个正在CPU上运行的低优先级进程从CPU上剥离,放上更高优先级的进程上CPU运行

  • 进程的优先级很多,那么此时操作系统如何处理呢??
    操作系统会维护一个叫优先级队列的东西,其思想是:将不同优先级的进程分别放在一个哈希表中进程存储,这个哈希表是一个数组,数组中存放的是指向进程PCB的指针,比如说:有优先级为1、2、3、4、5、6的进程,那么哈希表中就必须存放指向优先级为1、2、3、4、5、6的进程控制块的指针,相同的优先级采取先到先得的方式排成一个队列,如图
    在这里插入图片描述
    需要知道的是,在操作系统中,允许不同优先级进程的存在,相同的优先级可能存在多个,因此,操作系统只需要维护一个task_struct* priority_queue[6];的哈希表就行了

  • 但是在系统中,我们知道可能会有不同的进程源源不断地加入队列,此时应该怎么办呢?
    操作系统会维护两个一模一样的哈希表来存储相应优先级的进程
    在这里插入图片描述
    这两个哈希表的作用:

  • active:是用来运行当前队列中存在的进程

  • old:用于存储新加入的进程
    当active中的进程运行完的时候,我们只需要调用swap函数将两个哈希表的地址交换一下就可以了,swap(active,old);那么原先的old就变成active,原先的active就变成old

六、进程切换

寄存器

CPU中存在很多的寄存器,这些寄存器可以存储很多临时数据,存储的量比较少,但是很重要

1. 函数返回值

函数中的返回值在函数调用结束时会将返回值先写到CPU中的某个寄存器中,然后再move到对应的变量中,比如下面一个简单的例子
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在Add函数调用结束之前会先将x+y的值写到CPU中的某个寄存器,然后再将这个值move给c

2. 进程上下文数据

进程被执行的过程中会产生很多临时数据,这些临时数据会被暂存到CPU中的某些寄存器中,我们把进程在运行的过程中产生的各种寄存器数据叫做进程的上下文数据当进程从处理机被剥离时,要保存好上下文数据,当进程重新上处理机运行的时候,需要将上下文数据恢复到寄存器,这些数据在进程下处理机后会保存在进程的PCB中(Linux中叫task_struct)
注意:在进程离开CPU时保存进程的上下文数据,就是为了在进程重新上CPU运行的时候能够很好地告诉CPU上次执行到哪个地方,恢复回下CPU时的情况

总结

本文我们学习了进程中的一些概念,包括:竞争性,独立性,并行性,并发性,时间片,抢占式调度算法,还有进程间切换的上下文数据

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

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

相关文章

碳酸钙/GPC3单克隆抗体介导阿霉素二氧化硅纳米粒/DOX-GNRs@mSiO2-HA-RGD纳米制备方法

小编在这里整理了碳酸钙/GPC3单克隆抗体介导阿霉素二氧化硅纳米粒/DOX-GNRsmSiO2-HA-RGD纳米制备方法,来看! 碳酸钙阿霉素二氧化硅纳米颗粒制备方法: 包括以下步骤: 将含有钙离子的乙醇溶液与含有氨水与盐酸阿霉素的水溶液混合,…

【Jupyter】远程连接Jupyter服务器

远程连接Jupyter 步骤一 配置Jupyter https://blog.csdn.net/MYRLibra/article/details/109599531 https://blog.csdn.net/weixin_40641725/article/details/114636779 安装 conda activate abc #激活虚拟环境 pip install jupyter #安装 jupyter notebook --generate-conf…

Webservice接口-WSDL文档【Webservice】

WSDL是一个用于精确描述Web服务的文档,WSDL文档是一个遵循WSDL-XML模式的XML文档。WSDL 文档将Web服务定义为服务访问点或端口的集合。在 WSDL 中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象…

python使用flask实现前后端分离通过前端修改数据库数据【全栈开发基础】

文章目录🚎前言:🛺工具🚓截图🚕数据库截图🚙前端截图🚘代码🚲增加🍕前端 HTML🍟后端 python🛴 删除🍕前端 HTML🍟后端 pyt…

AMM 套利者

AMM 套利者 理由 以太坊和其他支持 EVM 的区块链上有很多 AMM。其中许多 AMM 是 UniswapV2 的分叉项目或与 UniswapV2 具有相同的接口。这些 AMM 的列表: Uniswap V2(以太坊)寿司交换(以太坊)煎饼掉期(BSC)MDEX(BSC/heco) ... 一旦相同代币…

SpiderPool - 云原生容器网络 IPAM 插件

SpiderPool 来源于容器网络落地实践的经验积累,是「Daocloud 道客」开源的原生容器网络 IPAM 插件(github:https://github.com/spidernet-io/spiderpool),主要用于搭配 Underlay CNI 实现容器云平台精细化的管理和分配…

策略验证_指标买点分析技法_运用boll布林线指标选择买点

写在前面: 1. 本文中提到的“股票策略校验工具”的具体使用操作请查看该博文; 2. 文中知识内容来自书籍《同花顺炒股软件从入门到精通》 3. 本系列文章是用来学习技法,文中所得内容都仅仅只是作为演示功能使用 目录 解说 策略代码 结果 解…

基于云原生网关的可观测性最佳实践

作者: 井轶 为什么要进行可观测性建设 可观测性并不是一个新词,该词来源于控制理论,是指系统可以由其外部输出推断其其内部状态的程度,随着 IT 行业几十年的发展,IT 系统的监控,告警,问题排查…

【附源码】计算机毕业设计JAVA学生信息管理系统

【附源码】计算机毕业设计JAVA学生信息管理系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA my…

联想Filez助力知名生物制药企业 建立业务数据安全体系

苏州某生物制药企业是一家抗体研发企业,其研发生产基地设在苏州。主要从事临床样品(原液和成品)的开发和生产,致力于通过持之以恒的研发和专业的生产技术,以最快的速度实现生物制品的批准。 随着企业各项业务的快速发展…

Redis——》数据类型

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 Redis——》数据类型5种基本类型3种特殊类型数据类型和底层数据结构5种基本…

第一个 GoWeb 程序,三款主流框架 Beego、Gin 和 Iris 快速入门

1、什么是web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。 一个Web应用程序是由完成特定任务的各种Web组件构成的并通过Web将服务展示给外界。…

网络是怎样连接的--生成HTTP请求消息过程

文章目录1.1 何为网址1.2 解析网址1.3 HTTP在干嘛1.4 生成http请求和响应1.1 何为网址 网址,准确来说应该叫URL,比如以http://开头的那一串东西.但实际上除了“http:”,网址还可以以其他一些文字开头,例如“ftp:”“file:”“mailto:”等。而…

免费申请Jetbrains全家桶

文章目录Jetbrains全家桶免费申请的人群学生和老师申请的要求申请方式申请流程解决收不到邮件的问题编辑内容进行认证申请成功Jetbrains全家桶 Jetbrains是著名的编程工具商业软件提供商,旗下有很多软件。包括IDE、团队开发工具、插件和微软.Net辅助工具、包括自创语…

[附源码]java毕业设计小型银行贷款管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

C\C++刷题DAY4

目录 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 1.第一题 206. 反转链表 - 力扣(LeetCode) 思路:调转指向关系,使用双指针的思想 1指向2,改成2指向1,以此类推。 参考代码: struct L…

2022年NPDP新版教材知识集锦--【第三章节】(5)

【系统工程】 系统工程的概念 系统工程原理将系统思维和系统工程过程模型的概念结合起来,通过设计、项目管理工具和方法的系统和集成过程将问题转化为解决方案。 所有系统都由具有属性或功能的部分组成,元素之间通过关系相互联系。 系统复杂性由结构…

想学爬虫爬取网页,但是不知道流程?

爬取网页总体概述: 1.使用urllib请求网页,获取网页源码。 2.使用bs4配合re正则表达式进行页面数据解析,获取到自己想要的数据。 3.使用pymysql保存到数据库或xlwt保存成excel文件。 温馨提示:学习之前需要先了解py基础知识&#x…

PTA题目 计算符号函数的值

对于任一整数n,符号函数sign(n)的定义如下: 请编写程序计算该函数对任一输入整数的值。 输入格式: 输入在一行中给出整数n。 输出格式: 在一行中按照格式“sign(n) 函数值”输出该整数n对应的函数值。 输入样例1: 10输出样例1: sign(10) 1输入样…

住宅代理详细介绍——助您快速入门!

Oxylabs的高级代理池能够为客户提供来自世界各地的1亿多个住宅代理,并且其规模还在不断壮大中,即使是难搞的网络抓取任务也能够处理。住宅代理能轻松从复杂的目标中收集数据,帮助您在无需面对CAPTCHA验证或封锁的情况下实现抓取。 想要全方位…