当前位置: 首页 > news >正文

【操作系统】408操作系统核心考点精讲:第二章——进程的概念、组成与特征​

进程

  • 导读
  • 一、概念
    • 1.1 实例介绍
    • 1.2 可执行文件
    • 1.3 程序编号
    • 1.4 进程实体
  • 二、组成
    • 2.1 PCB
    • 2.2 程序段
    • 2.3 数据段
  • 三、特征
  • 结语

进程与线程

导读

大家好,很高兴又和大家见面啦!!!

在前面的内容中我们介绍了【操作系统】的基本概念、发展历程、运行环境以及体系结构等重要内容。这些内容让我们对【操作系统】有了一个初步的印象与了解。

从本篇内容开始,我们将进入【操作系统——第二章——进程与线程】的学习。在这个章节中,我们将会学习以下知识点:

  • 进程与线程
  • CPU调度
  • 同步与互斥
  • 死锁

下面就让我们直接进入今天的内容,开始深入探索操作系统吧!!!

一、概念

在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了 进程(Process) 的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。

1.1 实例介绍

为了方便大家理解什么是进程,下面我们可以打开自己的任务管理器(快捷键:Ctrl + Alt + Del):

任务管理器

在任务管理器中,我们在进程页面中看到下面正在运行的所有程序以及在后台运行的所有程序。由此我们可以得到一个定义:

  • 进程就是一个正在执行程序的实例

1.2 可执行文件

上图中展示的这些正在执行的程序,实际上都是运行的存储在硬盘中的后缀名为 .exe可执行文件

我们在编译器中通过各种高级语言编写的代码会被保存在相应的 源文件 中,如 C语言编写的代码会被保存到 .c 文件。此时的文件还需要经过一系列的处理才能够变为可执行文件:

  • 预处理:将 .c 文件进行预处理后生成 .i 文件
  • 编译:将预处理好的 .i 文件通过编译器生成 .s 文件
  • 汇编:将编译好的 .s 文件通过汇编器翻译成 .o 文件
  • 链接:将汇编的 .o 文件通过链接器链接为 .exe 文件

生成的可执行文件实际上就是一系列指令的集合,该文件会被存储在硬盘中,当我们要运行该程序时,计算机会先将可执行文件读取到内存中,这时可执行文件中的一条条指令会逐步执行,而执行的结果就是我们在 GUI 上看到的程序运行的各种画面;

这时我们就可以说,进程时一个程序及其数据从磁盘加载到内存后,在 CPU 上的执行过程

1.3 程序编号

程序被存储在内存块中时,它是静态的

当我们运行该程序后,程序中存储的一条条指令会被动态的执行;

那现在问题来了,如果在同一台计算机上,不同的用户打开同一个程序,这时的指令运行会产生冲突吗?

程序编号

在上图的演示中,我打开了3次记事本,但是从任务管理器中可以看到,记事本这个程序被打开了多次,每一次都是独立的在运行。

这时我们又可以说——进程是动态的,是程序的一次执行过程

那为什么同一个程序在多次执行时,程序的执行不会产生冲突呢?

这是因为当一个进程被创建时,操作系统会为该进程分配一个唯一的、不重复的身份证号——进程IDProcess ID, PID)。

PID
在任务管理器的详细信息页面,我们能够清楚的看到每一个进程所对应的 PID ,这里我是按进程名称进行的排序,可以看到,对于同一个chrome.exe 程序,它在系统中运行时同时存在多个 进程,而每一个进程对应的 PID 都不相同。

这时可能有朋友会奇怪,我们现在不是就打开了一个 chrome.exe ,为什么会有这么多进程呢?

为了回答这个问题,我们可以回到进程页面进行观察:

后台进程

可以看到,当我们打开一个程序时,操作系统的后台也会同时存在多个进程,这是因为每个程序实例可能包含了多个协同工作的独立进程,因此我们才会在详细信息页面看到不同的进程以及对应的 PID

这时我们可以说——进程时一个具有独立功能的程序在一个数据集合上运行的过程

1.4 进程实体

系统为了使参与并发执行的每个程序(含数据)都能独立地运行,必须为之配置一个专门的数据结构,称之为 进程控制块Process Control Block, PCB)。

系统利用 PCB 来描述进程的基本情况和运行状态,进而控制和管理进程。所谓的创建进程,就是创建进程的 PCB;撤销进程,就是撤销进程的 PCB

程序段相关数据段PCB 这三个部分构成了进程实体(也称进程映像)。

这时我们可以说——进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

注意:
这里所说的系统资源指的是 CPU、存储器和其他设备服务于某个进程的“时间”。
因为进程是这些资源分配和调度的独立单位,即 “时间片” 分配的独立单位,这就决定了进程是一定是一个动态的过程性 的概念。

二、组成

进程是一个独立的运行单位,是操作系统进行资源分配和调度的基本单位。它由以下三部分构成:

  • PCB
  • 程序段
  • 数据段

下面我们就来详细介绍一下这三部分;

2.1 PCB

进程在创建的时候,操作系统会为它新建一个 PCB,该结构之后常驻内存,任意时刻都可以进行存取,并在进程结束时删除。PCB 是进程实体的一部分,是进程存在的唯一标志

当我们打开一个记事本时,从资源管理器中我们可以看到以下信息:

PCB

在进程页面记录者该进程对系统资源的使用情况:

  • CPU利用率
  • 内存使用
  • 磁盘读取速度
  • 网络流量
  • GPU利用率
  • 电源使用情况
  • 电源使用情况趋势

当我们在详细页面再一次找到该进程时,我们可以看到以下信息:

PCB2
这里记录了进程的名称、PID、状态、用户名、CPU、内存、UAC等信息。

也就是说,PCB 中包含了操作系统对一个进程进行管理时的所有信息,这其中主要包括以下内容:

  • 进程描述信息:说明进程的ID和所使用该进程的用户。
    • PID(Process ID):进程标识符,标志着各个进程,每个进程都有一个唯一的标识符
    • UID(User ID):用户标识符,标志着进程所归属的用户,用户标识符主要为共享和保护服务。
  • 进程控制和管理信息:说明进程的当前状态和优先级。
    • 进程当前状态:描述进程的状态信息,作为CPU分配调度的依据
    • 进程优先级:描述进程抢占 CPU 的优先级,优先级高的进程可优先获得 CPU
  • 资源分配清单:说明有关内存地址空间或虚拟地址空间的状况,锁打开文件的列表和所使用的输入/输出设备信息。
  • 处理机相关信息:也称 CPU 上下文,主要值 CPU 中各寄存器的值。
    • 当进程处于执行态时,CPU的许多信息都在寄存器中。
    • 当进程被切换时,CPU状态信息必须保持在相应的 PCB 中,以便该进程再次执行时,能从断点处继续执行。

2.2 程序段

程序段就是能被进程调度到 CPU 执行的程序代码段。

2.3 数据段

一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果。

三、特征

进程的基本特征是对比单个程序的顺序执行提出的。总共有4点:

  • 动态性。进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命周期,是动态地产生、变化和消亡。动态性是进程最基本的特征。

  • 并发性。指多个进程同存于内存中,能在一段时间内同时运行。引入进程的目的就是使进程能和其他进程并发执行。并发性是进程的重要特征,也是操作系统的重要特征。

  • 独立性。指进程是一个能独立运行、独立获得资源和独立接受调度的基本单位。凡未建立 PCB 的程序,都不能作为一个独立的单位参与运行。

  • 异步性。由于进程的相互制约,使得进程按各自独立的、不可与预知的速度向前推进。异步性会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制。

结语

今天的内容到这里就结束了。通过本文的学习,我们系统地梳理了进程这一操作系统的核心概念。

  • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
  • 进程由 PCB进程控制块)、程序段数据段三部分组成
  • 进程拥有动态性并发性独立性异步性四大基本特征

这些内容让我们逐步构建起对进程的全面认识。理解进程是深入探索操作系统并发世界的基石。

在下一篇内容中,我们将探讨​​进程的状态与转换​​,这是理解操作系统如何进行进程调度的关键。

互动与分享

  • 点赞👍 - 您的认可是我持续创作的最大动力

  • 收藏⭐ - 方便随时回顾这些重要的基础概念

  • 转发↗️ - 分享给更多可能需要的朋友

• 评论💬 - 欢迎留下您的宝贵意见或想讨论的话题

感谢您的耐心阅读! 关注博主,不错过更多技术干货。我们下一篇再见!

http://www.dtcms.com/a/528568.html

相关文章:

  • 基于脉冲神经网络的语音识别系统实现:识别“将榴弹从位置幺搬到位置两“命令
  • 破茧成蝶:全方位解析Java学习难点与征服之路
  • 江门网页建站模板aws 搭建wordpress
  • C语言:使用顺序表实现通讯录
  • 手机网站与app免费的网站平台有哪些
  • SQL186 对试卷得分做min-max归一化
  • 哪家开发app好有南昌网站优化公司
  • vue3 npm run dev局域网可以访问,vue启动设置局域网访问,
  • 网站建设续费催款通知书哈尔滨微信网站开发
  • NLP之Embedding:Youtu-Embedding的简介、安装和使用方法、案例应用之详细攻略
  • 做网站需要学哪些语言wordpress sina
  • Redis常见指令
  • 机器学习02——环境安装
  • 网站可以用中国二字做抬头吗WordPress 评论框表情
  • 随笔——记一次常见的浮点数精度问题到Grisu3初识
  • 【git】rebase 和 merge 区别及使用建议
  • 机器学习催化剂设计!
  • Agent Zero:重新定义AI Agent的有机生长框架——从“预设工具“到“自我进化“的范式革命
  • 脚本更新--CosMx、Xenium的邻域通讯分析(R版本)
  • VS Code搭建C/C++开发调试环境-Windows
  • 怎么把自己做的网站发布到网上网站建设专题页面
  • 面向智慧农业的自主移动果蔬采摘机器人:融合视觉识别与自动驾驶的智能化农作系统研究
  • 厦门专业网站设计公司低价网站建设推广优化
  • ClickHouse 介绍
  • 何时在 ClickHouse 中使用 ARRAY JOIN
  • Stream流中.filter和.map的用法区别
  • 在万网上域名了怎么做网站网页设计与制作工资多少
  • 哈尔滨网站建设制作费用百度推广销售
  • FireFox如何滚动截屏?
  • 【Linux】Tomcat基本配置