CHS_01.2.1.1+2.1.3+进程的概念、组成、特征

news2024/12/23 17:51:31

CHS_01.2.1.1+2.1.3+进程的概念、组成、特征

  • 进程
    • 进程的概念
  • 进程的组成——PCB
  • 进程的组成——PCB
  • 进程的组成——程序段、数据段
    • 知识滚雪球:程序是如何运行的?
    • 进程的组成
    • 进程的特征
  • 知识回顾与重要考点

从这个小节开始 我们会正式进入第二章处理机管理相关的内容

那么在这个小节当中 我们会首先来认识一个很重要的概念 叫做进程 在第一章的讲解当中 我们经常会说系统当中正在运行的程序怎么怎么地 怎么怎么地 偶尔也会提到进程这个术语

进程

在这里插入图片描述

进程和程序这两个概念其实是比较容易混淆不易理解的

那这个一会我们会介绍 接下来我们还会介绍一个进程 有哪些部分组成 有什么重要的特征

那首先来看第一个部分进程的概念

进程的概念

我们这次采用一个更贴近大家生活经验的一种方式来进行讲解
在这里插入图片描述

首先来看一下 我在我自己的windows电脑里打开了任务管理器 那任务管理器当中就可以看到此时系统当中正在运行的进程有这么多

那此时如果我想要使用qq的话 那我打开我的qq程序 于是我的这个qq程序就开始运行

那相应的 在进程这一栏里 我会看到一个和qq相关的这样的一个条目信息

而如果说此时我想要同时登录两个甚至三个qq号 那我可以再打开两次qq程序

那在这个时候 会发现进程这一栏里qq相关的条目出现了三条

也就是说 在系统当中 此时有三个qq进程正在运行
在这里插入图片描述

虽然说这三次我打开的都是qq.exe这个程序 但是这个程序的三次执行会对应三个不同的进程

如果大家的电脑现在就在身边的话 就可以自己动手看一下是不是这样的情况 所以 其实所谓的程序 它是一种静态的

存放在磁盘里的可执行文件 在windows电脑里就是qq.exe那么这个可执行文件其实就是一系列的指令集合

而指令的概念 我们在第一章当中讲解过 而所谓的进程 它是动态的

是程序的一次执行过程 也就是说 即使是同一个程序 它多次执行
那么每一次的执行都会对应一个不同的进程
就像我们在这个地方所看到的这样

所以用这个界面 大家应该能够很直观的体会到进程和程序他们的一个区别

进程的组成——PCB

在这里插入图片描述

那么接下来问题产生了 既然这三个进程执行的都是同一个程序
那么操作系统在背后要怎么区分这三个进程呢
不能把它们都叫做腾讯qq进程吧

所以 其实为了解决这个问题 操作系统在创建一个进程的时候 会给这个进程分配一个唯一的

不重复的id叫做p i d 也就是进程i d 它就相当于我们人类世界的身份证号 我们每个人的身份证号都是唯一的不重复的

而p i d就是进程的身份证号 那还是让大家看一个直观的例子 我现在正在录制视频 使用的是苹果的电脑

那苹果的电脑有一个叫做活动监视器的一个小工具 它和windows的那个

任务管理器其实是一样的 可以用这个小工具来看一下现在在我的

系统上正在运行的进程有哪些 那这些就是现在正在运行的进程

在这一溜可以看下有一个叫做pid 也就是进程id的一个属性

我们让这些进程根据p i d的递减的次序来排列 那可以看到各个进程的p i d 他们都是不重复的

那此时我来打开一个叫做typal的一个应用程序 当我打开这个应用程序之后

大家注意 观察这个地方 出现了和他相对应的一个进程的信息

它的p i d是2641那此时我再把这个

应用程序给退出 然后再一次打开

有没有发现他的p i d变成了2642

刚才是2641现在变成了2642所以这就能很好的说明一个问题

我们每一次新建一个进程 都会给他分配一个不重复的 唯一的id

在很多操作系统当中 pid的分配都是每一次加一这样的一个很简单的策略

哎 可以看到 现在系统在背后 他又自己创建了一个新的进程 虽然我不知道这个进程是干嘛的

但是他的p i d依然是递增的 所以其实回到刚才的这个图 虽然说这些进程 他们的进程的名称都叫腾讯qq32位

但是他们在背后都有各自的p i d 他们的p i d肯定是不重复的

那细心的同学可能会发现 除了pid之外 操作系统还会记录各个进程其他的一些信息

比如说他使用了多久的cpu时间 它是由哪个用户所创建的

还有一些各个进程对内存的使用信息 比如这个进程使用了745 7兆字节的

内存 另外 操作系统还会统计各个进程对磁盘的一个访问的情况

比如说这个进程 他向磁盘写入了3 45gb这么多的数据 而其他的进程对磁盘写入和读取的数据会少很多

那这些信息其实在我们的进程管理当中都是很有必要的 像这个进程 他经常往磁盘里写数据 所以这个进程肯定是一个需要经常访问磁盘的一个进程

那操作系统在对这些进程进行管理的时候 都可以根据这些进程的各自的特性来制定相应的策略

那还有 像最后的这一列 它是列出了各个进程的一个对网络流量的使用情况

所以 其实操作系统在背后 他不只是记录了各个进程的p i d

除了p i d之外 他还记录了各个进程的其他的一些信息 比如说刚才我们所看到的

他所属的用户id或者简称u i d 那操作系统可以根据pid uid这些基本的进程描述信息

来区分各个进程 还有刚才我们看到的分配了多少内存 正在使用哪些l设备正在使用哪些文件 这些信息的记录可以帮助操作系统

实现对系统资源的一个管理工作 另外呢 还有刚才我们看到的什么cpu使用时间 磁盘使用情况 网络流量使用情况等等

这些信息可以帮助操作系统实现对进程的控制和调度等等一系列的管理策略

进程的组成——PCB

在这里插入图片描述

那既然操作系统在背后要记录这么多的信息 那么这些信息都会被统一的放在一个叫做p c b的一个数据结构当中

他的英文缩写是process control block就是进程控制快 总之 操作系统他需要对各个并发运行的进程进行管理

而但凡他在管理这些进程的时候 所需要用到的信息都会放在这个

叫做p c b的数据结构 当中 所以p c b是一个很重要的数据结构

它是进程存在的唯一标志 当一个进程被创建的时候 操作系统也会为它创建相应的pcb

当然 这个p c b当中又包含了进程的p i d uid等等一系列的信息

而当一个进程结束的时候 操作系统就会回收它的p c b 那在p c b当中需要保存的信息大致上可以分为这样的四类

进程描述信息 进程控制和管理相关的信息 还有资源分配的情况
这三种类型的信息刚才我们都已经介绍过 除此之外 还会在pcb当中保留处理机相关的信息

只有在p c b当中保存了处理机相关的信息 才可以实现进程的切换工作

那这个坑我们先留着 之后再来填 接下来让大家看一个令人脑壳疼的东西

我在网上找到了linux的内核源码 然后在一个叫做shed.h这样的文件当中

我们就可以看到 在另一次操作系统当中 他定义的p c b长什么样子

在linux当中 他的pcb的名字叫做taskstruct 有兴趣的同学也可以大家去linux的官网下载一下他的源码来

看一下这个文件 那在这个taskstruct里边 他会记录各种各样的信息 比如说这个字段

state这个字段 它其实就是记录了进程当前的状态 它是处于旧序态呢 运行态呢 还是阻塞才能 等等

那进程的状态 这是我们下一个小节当中会展开介绍的内容 再来看这个字段

feels这个字段 它记录的是当前进程 它打开了哪些文件

然后还有一个叫做iocontact的字段 这个字段它记录的是io管理当中所需要使用的信息

当然 这个数据结构里面定义了好多好多字段 大家可以看一下 光是这个数据结构的定义 他就写了1900多行的代码

这么多代码是让人很抓狂的一个事情 总之呢 我们想要认识pcb当中的所有字段 那是不可能的 我们只需要知道pcb当中存放的都是操作系统

在对进程进行管理的时候所需要的那些信息就可以了 那除了p c b之外呢

进程的组成——程序段、数据段

在这里插入图片描述

进程还有两个很重要的组成部分 一个叫做程序段 一个叫做数据段

刚才我们说过pcb 它是给操作系统用的一个数据结构 而程序段和数据段它其实是给进程自己用的

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

那我们具体来看一个例子 在之前的第一章节当中 我们学到了
在这里插入图片描述

这个程序 它在运行之前需要编译成二进制的机器指令

而这个程序执行的过程 其实就是cpu执行这些一条一条的指令的一个过程

那接下来 我们把程序运行的过程再进一步的细化一下 其实我们写完一个程序之后

经过编译 链接等等一系列的步骤 最终会形成一个可执行文件 向大家熟悉的windows电脑里就是点exe的文件
在这里插入图片描述

那这个可执行文件平时是存放在硬盘当中的 这个可执行文件当中保存的其实就是我们刚才说的那一系列的指令序列

而当这个程序要运行之前 需要把它从硬盘读入到内存当中

并且操作系统会建立一个与它相对应的进程 那根据刚才我们的分析 我们知道它会建立相对应的pcb

那除了p c b之外 这个程序的那一系列指令序列也需要读到内存当中 那这一系列的指令序列 我们把它称作为程序段

那其实这个程序执行的过程 或者说这个进程 它执行的过程就是

cpu从内存当中读入这些一条一条的指令 然后来执行这些指令 那除了执行这些指令之外 其实在执行指令的过程当中会有一些中间的数据

比如说 我们这定义了一个变量 叫做x 那么这些变量的内容其实也需要放在内存当中 所以还会有另外一个叫做数据段的区域 用来存放这个程序运行过程当中所产生所需要使用的各种数据 就比如说 我们定义了哪些

变量 这些信息就是放在数据段里的 所以一个进程的实体
它由p c b 程序段和数据段这么三个部分组成

进程的组成

在这里插入图片描述

我们之前一直在说进程有哪些部分组成 但其实更严格的来说应该是说进程实体 或者说进程印象有哪些部分组成

进程它是动态的 而进程实体进程印象它是静态的 我们可以把进程实体理解为是

这个进程在动态执行过程当中某一时刻的一个快照 一个照片

进程实体能够反映这个进程在某一个时刻的状态 比如说这个进程运行的过程 当中x的值 这个变量的值本来是一但是在进行了加加这个操作之后 x的值就会变成二

所以 在进程的运行过程当中 进程实体 它是在不断变化的 所以准确的说 我们应该说 进程实体由p c b 程序段和数据段这么三个部分组成

不过除非题目特别考察进程和进程实体进程印象的区别 不然大家也可以认为所谓的进程就是进程实体 没必要去钻这个牛角尖扣这个字眼

那p c b是给管理者 也就是给操作系统使用的 而程序段和数据段里面的内容是给进程自己使用的

和进程自己的运行逻辑有关 所以在引入了进程实体的概念之后 我们可以把进程定义为这样

进程 它是进程实体的一个运行过程 是系统进行资源分配和调度的独立单位

进程是资源分配的独立单位 这一点很好理解 从刚才活动监视器这我们也可以看到

操作系统是以进程为单位 给各个进程来分配这些资源的 比如说内存

所以进程是资源分配的独立单位 那这个地方还涉及到另一个概念 叫做进程的调度

其实所谓的调度 就是指操作系统决定让哪个进程上cpu运行

进程的调度相关的内容 我们会在之后的小节当中有更进一步的学习 总之呢 一个程序运行多次会对应多个进程

如果说我们同时挂三个qq号的话 那么这三个qq进程 他们的p c b和数据段都是各不相同的
他们的pcb不相同 这个很好理解 刚才我们也已经解释过了 而数据段不相同是因为我们登录的三个qq号 他们的信息数据 这些都是存放在数据段当中的 所以三个不同的qq号 他们的数据段肯定是不同的
但是呢 这三个qq进程背后 他们运行的其实是相同的qq程序

也就是他们的程序段内容其实是相同的 那讲到这儿 相信大家对进程和程序的理解

应该会比较直观了

那么之前我们介绍了进程的定义和进程的组成 接下来我们看一下进程有哪些特征

进程的特征

在这里插入图片描述

相比于程序 进程拥有以下的一些特征 第一叫做动态性 因为进程是程序的一次执行过程吗 或者说 进程是进程实体的一次执行过程

它是动态的 产生 变化和消亡的 所以动态性很好理解 它 也是进程的一个最基本的特性

第二个特性叫并发性 是指内存当中同时会有多个进程实体

然后各个进程可以并发的执行 那这点在经过第一章的学习相信也很好理解 然后独立性是指进程能够独立运行 独立获得资源 独立接受调度

然后各个并发运行的进程还会有异步性 就是指他们以各自独立的 不可预知的速度向前推进

进程的并发带来的异步性可能会让进程的执行结果不确定 但是有的时候我们又必须让并发执行的进程来相互配合协调着工作 那

具体怎么实现呢 这个我们会在进程同步的小节当中进行学习 这先不展开

最后 进程还拥有结构性 就是指每个进程都会有一个p c b一个程序段数据段

那所有的这些特性大家都只需要理解 不需要死记硬背好的 那么这个小节我们介绍了进程这个很重要的概念

进程 或者说进程实体 由pc b 程序段和数据段这样三个部分组成

p cb是一个很重要 很重要的数据结构 它是进程存在的唯一标志 操作系统就是通过p c b里面记录的这些各种各样的信息来对各个进程进行管理的

所以 但凡是操作系统管理进程所需要的数据 肯定都是放在pcb当中 而进程他自己所需要的数据是放在程序段和数据段当中的

另外呢 需要注意的是 进程的动态性是它最基本的特性 并且还需要注意进程 它是独立获得资源

独立接受调度的一个基本单位 让大家注意这一点的原因是
在引入了线程之后 进程就不再是接受调度的基本单位了

但是进程依然是获得资源的基本单位 这点还会经过后续的小节进行进一步的讲解 这暂时先不展开

知识回顾与重要考点

好的 那么以上就是这个小节的全部内容

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

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

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

相关文章

暴雨信息发布算力网络应用平台打造零感知算网服务新模式

为进一步优化算力网络应用服务能力和降低算力网络使用难度,暴雨信息突破基于算力网络的实例跨域协同与迁移、基于测试评估的应用度量和解构等技术,研发并推出算力网络应用平台。该系统通过提供一种即开即用、按需付费的零感知算网应用服务,使…

捕捉小红书开年顶流,品牌快“跟风”上车!

2024年开年,“南方小土豆”纷纷北上,元旦期间哈尔滨收入近60亿元,“冰雪”一跃成为今冬最炙手可热的流行趋势! 千瓜数据显示,小红书“冰雪”相关商业笔记同比去年增长649.84%。本期,千瓜将从“冰雪”场景出…

离散数学-二元关系

4.1关系的概念 1)序偶及n元有序组 由两个个体x和y&#xff0c;按照一定顺序排序成的、有序数组称为有序偶或有序对、二元有序组&#xff0c; 记作<x&#xff0c;y>&#xff0c;其中x是第一分量&#xff0c;y是第二分量。 相等有序偶&#xff1a;第一分量和第二分量分…

Excel·VBA按指定顺序排序函数

与之前写过的《ExcelVBA数组冒泡排序函数》不同&#xff0c;不是按照数值大小的升序/降序对数组进行排序&#xff0c;而是按照指定数组的顺序&#xff0c;对另一个数组进行排序 以下代码调用了《ExcelVBA数组冒泡排序函数》bubble_sort_arr函数&#xff08;如需使用代码需复制…

EasyPOI导出报表

报表导出是一种很常见的功能&#xff0c;只要是开发都会涉及到这一功能&#xff0c;早些年经常集成poi完成导出功能&#xff0c;我之前也有写过关于poi导出的文章&#xff0c;现如今&#xff0c;也有了更为方便的导出插件 — EasyPOI&#xff0c;废话不多说&#xff0c;开始撸代…

内网渗透实战攻略

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 介绍 什么是内网&#xff1f; 什么是内网渗透&#xff1f; 内网渗透的目的&#xff1a; 内网…

el-table实现多行合并的效果,并可编辑单元格

背景 数据为数组包对象&#xff0c;对象里面有属性值是数组&#xff1b;无需处理数据&#xff0c;直接使用el-table包el-table的方法&#xff0c;通过修改el-table的样式直接实现多行合并的效果 html代码 <template><div><el-table size"mini" :d…

Python基础知识:整理9 文件的相关操作

1 文件的打开 # open() 函数打开文件 # open(name, mode, encoding) """name: 文件名&#xff08;可以包含文件所在的具体路径&#xff09;mode: 文件打开模式encoding: 可选参数&#xff0c;表示读取文件的编码格式 """ 2 文件的读取 文…

设计模式-规格模式

设计模式专栏 模式介绍模式特点应用场景规格模式和策略模式的区别和联系代码示例Java实现规格模式Python实现规格模式 规格模式在spring中的应用 模式介绍 规格模式&#xff08;Specification Pattern&#xff09;是一种行为设计模式&#xff0c;其目的是将业务规则封装成可重…

【笔记】书生·浦语大模型实战营——第三课(基于 InternLM 和 LangChain 搭建你的知识库)

【参考&#xff1a;tutorial/langchain at main InternLM/tutorial】 【参考&#xff1a;(3)基于 InternLM 和 LangChain 搭建你的知识库_哔哩哔哩_bilibili-【OpenMMLab】】 笔记 基础作业 这里需要等好几分钟才行 bug&#xff1a; 碰到pandas相关报错就卸载重装 输出文字…

【野火i.MX6ULL开发板】开发板连接网络(WiFi)与 SSH 登录、上电自动登录、设置静态IP、板子默认参数

0、前言 参考之前自己写的&#xff1a; http://t.csdnimg.cn/g60P8 参考资料&#xff1a; [野火]《Linux基础与应用开发实战指南——基于i.MX6ULL开发板》_20230323 从野火官网下载 参考博客&#xff1a; http://t.csdnimg.cn/8uh4O 参考官方文档&#xff1a; https://doc.…

【算法每日一练]-练习篇 #Tile Pattern #Swapping Puzzle # socks

目录 今日知识点&#xff1a; 二维前缀和 逆序对 袜子配对(感觉挺难的&#xff0c;又不知道说啥) Tile Pattern Swapping Puzzle socks Tile Pattern 331 题意&#xff1a;有一个10^9*10^9的方格。W表示白色方格&#xff0c;B表示黑色方格。每个(i,j)方的颜色由(i…

PowerDesigner简介以及简单使用

软件简介&#xff1a; PowerDesigner是Sybase公司开发的数据库设计工具&#xff0c;开发人员能搞利用PowerDesigner开发数据流程图、各数据模型如物理数据模型&#xff0c;可以分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库…

一点一点,照亮你的美

一、实验要求 当鼠标点击屏幕时&#xff0c;随机出现大大小小的星星闪烁&#xff0c;犹如夜晚的星空 二、实验思路 设置图片的大小 设置事件&#xff08;当鼠标点一下&#xff0c;获取一张图片&#xff09; 设置图片的位置 设置鼠标的位置和图片的相对位置 设置随机大小 …

如何使用GaussDB创建脱敏策略(MASKING POLICY)

目录 一、前言 二、GaussDB中的脱敏策略 1、数据脱敏的定义 2、创建脱敏策略的语法说明 三、在GaussDB中如何创建数据脱敏策略(示例) 1、创建脱敏策略的一般步骤 2、GaussDB数据库中创建脱敏策略的完整示例 1&#xff09;开启安全策略开关&#xff0c;以初识用户omm登录…

这6个设计小白学习网站,海量免费学习教程!

划到最后“阅读原文”——领取工具包&#xff08;超过1000工具&#xff0c;免费素材网站分享和行业报告&#xff09; Hi&#xff0c;我是胡猛夫~&#xff0c;专注于分享各类价值网站、高效工具&#xff01; ​更多资源&#xff0c;更多内容&#xff0c;欢迎交流&#xff01;公…

Unity编辑器扩展(外挂)

每日一句:未来的样子藏在现在的努力里 目录 什么是编译器开发 C#特性[System.Serializable] 特殊目录 命名空间 /*检视器属性控制*/ //添加变量悬浮提示文字 //给数值设定范围&#xff08;最小0&#xff0c;最大150&#xff09; //指定输入框&#xff0c;拥有5行 //默认…

寄快递选哪个平台便宜?快递优惠券免费领取!

寄快递选哪个平台便宜&#xff1f;快递优惠券免费领取&#xff01; 对于市场来说&#xff0c;快递业是非常重要的一部分&#xff0c;它业既贯通市场流通消费投资出口的各环节&#xff0c;又关联一二三各产业。根据相关数据显示&#xff0c;我国的快递行业正呈现势如破竹的劲头&…

双位置继电器DLS-5/2TH 额定电压:110VDC 触点形式:7开3闭 柜内安装

系列型号&#xff1a; DLS-5/1电磁式双位置继电器; DLS-5/2电磁式双位置继电器; DLS-5/3电磁式双位置继电器; DLS-5/2G电磁式双位置继电器; DLS-5/3 220VDC双位置继电器 一、用途 1.1用途 DLS-5双位置继电器(以下简称产品)用于各种保护与自动控制系统中&#xff0c;作为切换…

x-cmd pkg | magick - 开源图像处理工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 magick 是由 ImageMagick 提供的一个功能强大且多功能的开源图像处理工具&#xff0c;可以灵活高效地处理图像文件&#xff0c;例如格式转换、图像大小调整、图像裁减、图像拼接、图像色彩校正和图像合成等常见的图像…