操作系统之进程

news2024/12/26 20:46:28

操作系统

操作系统图解

在这里插入图片描述
这个图详细说明了计算机整个框架,系统调用,操作系统内核和驱动程序三个统称为操作系统,应用程序通过操作系统提供的api来调用硬件设备,而对于硬件设别来说,每个计算机的硬件设备的种类和厂家不同,不能直接被操作系统调用,此时需要通过操作系统中的驱动程序来适配各种计算机的硬件设备,从而达到操作系统对硬件管理的作用。

操作系统的概念

操作系统指的是对计算机中系统资源管理的软件的统称(这里主要突出的是管理功能,分为对上和对下两个方面的管理:对上给软件提供稳定的运行环境,对下管理硬件设备)。
常见的操作系统:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。

进程

进程的概念

进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看做程序的一次运行过程,通俗来说,操作系统中一个正在运行的程序叫做进程,不在运行的则不能成为进程
特性在这里插入图片描述类似于这种在计算机上的程序但并没有在操作系统中运行的就不能叫做进程。

进程的管理

进程是操作系统分配系统资源的基本单位,是一个重要的“软件资源”,它由操作系统内核来负责管理,管理主要包括对进程的描述和组织;
描述:通过C语言中的结构体(因为操作系统底层使用C/C++代码来写的)来对进程的属性和特征进行描述;
组织:每一个结构体成为一个PCB(进程控制块),组织就是通过数据结构把这些PCB串起来,底层所使 用的数据结构可以近似看成一个双向链表(其实远比双向链表复杂)。

  1. 创建PCB:相当于在双向链表中插入一个包含进程属性的节点
  2. 销毁PCB:相当于在双向链表中删除一个包含进程属性的节点
  3. 查看PCB:相当于遍历双向链表查找到所需要查找的进程节点

进程的属性/特征

  1. pid身份标识符(唯一数字,类似于居民身份证号码,学生的学号)
    在这里插入图片描述
    打开任务管理器在pid这一列可以看出每个进程所对应的pid都是不一样的,一个应用程序也可以对应多个pid
  2. 内存指针(指向了该进程使用的内存有哪些)
  3. 文件描述符表(描述了该进程在硬盘上所使用的文件和其他资源)
    注意:这里的内存指针和文件描述符表通常被统称为进程有哪些硬件资源
  4. 进程调度相关的属性(解决了CPU如何分配的问题

进程调度

每一个进程在执行时需要分配一定的资源(包括硬盘资源和CPU资源),其中硬盘空间很大,硬盘资源的分配比较充裕,而CPU资源较少(大部分为8核或者16核CPU)难以分配给上百个进程,那么如何分配这些CPU资源能让尽可能多的进程可以同时运行呢?这里就会涉及到进程调度。
在讲解进程调度之前,我们需要了解一下操作系统中的并发和并行的问题;
并发:两个进程在微观上不是同时执行,但是进程在不断的快速切换,使得在宏观上感觉是同时执行的。
并发和并行都是由操作系统内核负责处理的,对于操作系统来说,它无法感知进程是并发还是并行,所以我们一般都会称为并发(这里的并发 = 并行 + 并发)。

进程调度的属性

进程是由操作系统来负责管理的,操作系统中的有一个重要模块叫做进程调度器让有限的CPU来调度执行这么多进程。

  1. 进程状态:一般分为三种状态;
    在这里插入图片描述
  2. 优先级:优先级主要解决的是CPU资源先分配给哪些进程后分配给哪些进程,哪些进程分配的资源多哪些进程分配的资源少;
  3. 上下文:上下文主要指的是某一进程进行到哪会被记录下来,下次该进程继续执行的时候会先读取上次的记录紧接着上次后面继续执行(这里的保存记录和读取记录都是CPU中各寄存器的值);
  4. 记账信息:记账信息指的是操作系统统计每个进程在CPU上占用的时间和执行的指令数目,根据这个来决定下一阶段如何调度。
    所以操作系统内核通过以上4个属性来决定如何让有限的CPU来调度执行这么多进程

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

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

相关文章

RNA-seq 保姆教程:差异表达分析(一)

介绍 RNA-seq 目前是测量细胞反应的最突出的方法之一。RNA-seq 不仅能够分析样本之间基因表达的差异,还可以发现新的亚型并分析 SNP 变异。本教程[1]将涵盖处理和分析差异基因表达数据的基本工作流程,旨在提供设置环境和运行比对工具的通用方法。请注意&…

L2搭载率连续两个月站上30%大关,车企加速产业链整合

进入新的行业发展周期,车企的智能化挑战越来越大,也催生新一轮整合热潮。对于全球数百家中小型智能汽车技术公司来说,「上岸」时机已经到来。 本周,全球第四大汽车制造商Stellantis宣布,收购总部位于匈牙利的人工智能…

在 Solidity 中 ++i 为什么比 i++ 更省 Gas?

前言 作为一个初学者,“在 Solidity 中 i 为什么比 i 更省 Gas?” 这个问题始终在每个寂静的深夜困扰着我。也曾在网上搜索过相关问题,但没有得到根本性的解答。最终决定扒拉一下它们的字节码,从较为底层的层面看一下它们的差别究…

多进程编程

系列文章目录 多进程编程 VS 多线程编程_crazy_xieyi的博客-CSDN博客 文章目录 前言一、进程创建二、进程等待前言 Java对操作系统提供的多进程编程接口这些操作进行了限制,最终给用户只提供了两个操作:进程创建和进程等待。 一、进程创建 创建出一个…

Android 基础知识3-1项目目录结构

上一章我们创建了Hello Word项目,代码是由ADT插件自动生成的,我们没有对其进行编码,所以没有对其框架进行分析。其实每一个平台都有自己的结构框架,所以我们对Android项目的结构也进行分析。 与一般的Java项目一样,src…

Qt 学习(二) —— Qt工程基本文件详解

目录1. pro文件内容解释2. main文件内容解释3. widget.cpp/widget.h文件内容解释4. ui_widget.h文件内容解释5. widget.ui文件内容解释以Widget窗口部件项目为例,新建的工程目录有如下几个文件: QtCreator软件将他们做了如下分组,包含三个文件…

idea快捷搜索键

目录 1、shift shift 双击 2、Ctrl F在当前类中,页中进行查找相关方法等 3、CtrlShiftN按【文件名】搜索文件 4、CtrlH 查看类的继承关系 5、Alt F7 查看类在哪儿被使用 idea全局搜索的快捷键 1、shift shift 双击 可以搜索任何东西。类、资源、配置项…

运行写在字符串中的Python代码 exec(‘‘‘print(1)‘‘‘)

【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 运行写在字符串中的Python代码 exec(print(1)) [太阳]选择题 请问对以下Python代码说法错误的是? print("【执行】exec(print(1))") exec(print(1)) myFuncsumab prin…

CTF秀web2

CTF秀web21.分析题目2.解题2.1信息收集3.2获取数据库3.3获取数据库表3.3获取表信息3.uinon注入语句3.1 判断注入3.2 信息收集3.3注入语句1.分析题目 如上图所示,可以看到是sql注入的题目,进入题目看看,题目页面如下: 如上图所示&a…

fastjson反序列化漏洞

1.fastjson反序列化漏洞原理 我们知道fastjson在进⾏反序列化时会调⽤⽬标对象的构造,setter,getter等⽅法,如果这些⽅法内部 进⾏了⼀些危险的操作时,那么fastjson在进⾏反序列化时就有可能会触发漏洞。 我们通过⼀个简单的案例…

kubernetes 资源管理

kubernetes 资源管理 资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在…

纳睿雷达冲刺上市:产能利用率不足仍要扩产,毛利率持续下滑

上海证券交易所信息显示,广东纳睿雷达科技股份有限公司(下称“纳睿雷达”)的IPO进程已有8个月未有变化,上一次更新信息还是2022年3月10日。而证监会网站则显示,已向纳睿雷达发出了注册阶段三次问询问题,最新…

创建线程的几种方式

创建线程的几种方式 文章目录创建线程的几种方式一、继承 Thread 类二、实现 Runnable 接口三、实现 Callable 接口,并结合 Future 实现四、通过线程池创建线程五、前三种创建线程方式对比继承Thread实现Runnable接口实现Callable接口参考链接一、继承 Thread 类 通…

11.20二叉树基础题型

一.二叉树的存储 1.存储结构 存储结构:顺序存储或者是类似于链表的链式存储 二叉树的链式存储是通过一个一个的节点引用起来的,常见的表示方式有二叉和三叉表示方式 // 孩子表示法 class Node {int val; // 数据域Node left; // 左孩子的引用,常常代…

【SpringBoot项目】一文掌握文件上传和下载【业务开发day04】

文章目录前言文件上传下载文件上传介绍文件下载介绍文件上传代码实现文件下载代码实现新增菜品需求分析数据模型代码开发功能测试🌕博客x主页:己不由心王道长🌕! 🌎文章说明:SpringBoot项目-瑞吉外卖【day04】业务开发…

【SRE】MySQL8的安装方式

MySQL8的安装方式Windows下载配置配置my.ini新建data文件夹初始化将数据库加入服务修改root密码Linux下载配置配置my.ini新建data文件夹初始化将数据库加入服务修改root密码Windows 下载 https://downloads.mysql.com/archives/community/ 选择MySQL8最新版本 选择上面这个 …

node和npm的安装配置使用(借鉴数篇文章避坑)

1.Error: EINVAL: invalid argument, mkdir C:\Users\lm\‪D:\nodejs\node_global 怎么解决? 2.环境配置中D:\Develop\nodejs\node_global\node_modules路径的疑惑? 之前看了很多网上的教程,感觉都是在互相抄,没有自己的东西&am…

m多载波MC-CDMA系统单用户检测方法的研究,对比EGC,MRC,ORC以及MMSE

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 传统CDMA技术在码间串扰和多址干扰等方面存在的问题使其总体性能受到限制,随着OFDM技术的发展,出现了OFDM结合CDMA的信技术,即多载波CDMA技术&#xf…

服务器linux下springboot项目启动、停止、重启脚本+配置jdk+配置maven+批量启动jar包脚本

部署springboot项目配置启动、停止、重启脚本 一.在Linux环境下部署springboot项目 1、把springboot项目打成jar包&#xff0c;使用maven插件实现 1.1、引入maven插件 <build><plugins><plugin><groupId>org.springframework.boot</groupId>…

【自用】Linux-CentOS7安装配置jdk1.8

一、准备工作 步骤1.创建目录 /usr/java 并进入该目录 # 进入/usr/目录 cd /usr/# 创建java目录 mkdir java# 进入java目录 cd java步骤2.下载 jdk-8u351-linux-x64.rpm 链接&#xff1a;https://pan.baidu.com/s/1IWDf70ddcy-u_mDofBklCQ?pwdxrfy 提取码&#xff1a;xrfy …