[Linux] 通透讲解 什么是进程

news2024/9/23 10:24:04

标题:[Linux] 通透讲解 什么是进程 

个人主页:@水墨不写bug

(图片来自网络)

目录

一.深入进程基本概念

 二.管理好进程

1.管理好进程的方法

2.描述进程-PCB

3.组织进程


正文开始: 


本文按照对进程的先描述再组织进行讲解 。

一.深入进程基本概念

        课本概念:程序的一个执行实例,正在执行的程序等。

        内核观点:担当分配系统资源(CPU时间,内存)的实体。

 由于进程的概念非常重要,所以我们在这里再次讲解一遍:

        当我们写好一个程序的时候,编译源代码会产生对应的可执行程序,当我们./运行这个程序1的时候,操作系统会做两件事:

        1)将可执行程序加载到内存:

        但是尽管内存中已经加载了可执行程序,但是此时操作系统还无法管理这些程序,因为内存中没有描述相关属性的数据结构。所以在操作系统中,为了描述加载到内存中的程序的相关属性,所以衍生出一个概念PCB。(Linux中称为task_struct)Linux操作系统使用C语言写的,本质上task_struct就是一个结构体。每一个task_struct内部都存储有对应进程的属性信息。

        2)将代码和数据加载到PCB(task_struct)中:

 

         这样的操作最终我们达成了一个目的:将操作系统对进程的管理工作转化为了对特定数据结构的管理。


 二.管理好进程

1.管理好进程的方法

        想要管理好进程,首先需要描述好进程 ,对进程的管理仍然满足我们之前得出的结论:

先描述,再组织。

2.描述进程-PCB

        进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。课本上称之为PCB(process control block), Linux操作系统下的PCB是: task_struct(也就是上图的组织进程的链表的节点)

task_struct-PCB的一种

        在Linux中描述进程的结构体叫做task_struct

        task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。

(看一眼task_struct,不需要刨根问底)

// task_struct结构注释:

//  ==========================

  long state //任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)。

  long counter //任务运行时间计数(递减)(滴答数),运行时间片。

  long priority //运行优先数。任务开始运行时counter = priority,越大运行越长。

  long signal //信号。是位图,每个比特位代表一种信号,信号值=位偏移值+1。

  struct sigaction sigaction[32] //信号执行属性结构,对应信号将要执行的操作和标志信息。

  long blocked //进程信号屏蔽码(对应信号位图)。

//  --------------------------

  int exit_code //任务执行停止的退出码,其父进程会取。

  unsigned long start_code //代码段地址。

  unsigned long end_code //代码长度(字节数)。

  unsigned long end_data //代码长度 + 数据长度(字节数)。

  unsigned long brk //总长度(字节数)。

  unsigned long start_stack //堆栈段地址。

  long pid //进程标识号(进程号)。

  long father //父进程号。

  long pgrp //父进程组号。


  long session //会话号。

  long leader //会话首领。

  unsigned short uid //用户标识号(用户id)。

  unsigned short euid //有效用户id。

  unsigned short suid //保存的用户id。

  unsigned short gid //组标识号(组id)。


  unsigned short egid //有效组id。

  unsigned short sgid //保存的组id。

  long alarm //报警定时值(滴答数)。

  long utime //用户态运行时间(滴答数)。

  long stime //系统态运行时间(滴答数)。

  long cutime //子进程用户态运行时间。

  long cstime //子进程系统态运行时间。

  long start_time //进程开始运行时刻。

  unsigned short used_math //标志:是否使用了协处理器。

//  --------------------------

  int tty //进程使用tty 的子设备号。-1 表示没有使用。

  unsigned short umask //文件创建属性屏蔽位。

  struct m_inode * pwd //当前工作目录i 节点结构。

  struct m_inode * root //根目录i 节点结构。

  struct m_inode * executable //执行文件i 节点结构。

  unsigned long close_on_exec //执行时关闭文件句柄位图标志。(参见include/fcntl.h)

  struct file * filp[NR_OPEN] //进程使用的文件表结构。

//  --------------------------

  struct desc_struct ldt[3] //本任务的局部表描述符。0-空,1-代码段cs,2-数据和堆栈段ds&ss。

task_ struct内容(内部变量)分类:

        标示符: 描述本进程的唯一标示符,用来区别其他进程。

        状态: 任务状态,退出代码,退出信号等。

        优先级: 相对于其他进程的优先级。

        程序计数器: 程序中即将被执行的下一条指令的地址。

        内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。I/ O状态信息: 包括显示的I/O请求,分配给进程的I/ O设备和被进程使用的文件列表。记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等其他信息。

3.组织进程

        可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。(下面作图的例子是以链表的形式组织进程为例


完~

未经作者同意禁止转载

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

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

相关文章

C++之模版的进阶

1.非类型模版参数 模版参数分类类型与非类型形形参 类型形参:出现在模版参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参:用一个常亮作为类(函数)模版的一个参数,在类(函数…

股指期货交割方式是什么?

说起股指期货,这可是个高大上的金融玩意儿。咱们平时买卖股票,那是看准了哪只股就下手,赚了就卖,赔了就扛,挺直接的。但股指期货呢,它玩的是未来的预期,就像是你跟人打赌明天天气好不好&#xf…

Fyne ( go跨平台GUI )中文文档-Fyne总览(二)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2​​​​​​​ 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne…

《python语言程序设计》2018版第8章18题几何circle2D类(中部)

第一、重新分析 第一-1、我设计的第一模式第一-1-1、遇到的逻辑分析迷雾第一-1-2、无畏挣扎后的无奈 第二-1、我就把你们两个放到一起,第二-2、我的想法 当我看到了这个2个园并且比对. 第一-1、我设计的第一模式 设计一个最抽象的Circle2D类. 这个类只包含一个x,y和circle 这个…

Parallels Desktop 20 for Mac 推出:完美兼容 macOS Sequoia 与 Win11 24H2

Parallels Desktop 20 for Mac 近日正式发布,这一新版本不仅全面支持 macOS Sequoia 和 Windows 11 24H2,还在企业版中引入了一个全新的管理门户。新版本针对 Windows、macOS 和 Linux 虚拟机进行了多项改进,其中最引人注目的当属 Parallels …

让模型评估模型:构建双代理RAG评估系统的步骤解析

在当前大语言模型(LLM)应用开发的背景下,一个关键问题是如何评估模型输出的准确性。我们需要确定哪些评估指标能够有效衡量提示(prompt)的效果,以及在多大程度上需要对提示进行优化。 为解决这一问题,我们将介绍一个基于双代理的RAG(检索增强生成)评估系统。该系统使用生成代理…

免费开源的AI 智能网盘,图片和媒体管理工具 | 极空间部署『PicHome』

免费开源的AI 智能网盘,图片和媒体管理工具 | 极空间部署『PicHome』 哈喽小伙伴们好,我是Stark-C~ 想必很多小伙伴儿手机,电脑,甚至是网盘上都存取了大量的各类图片,不知道大家都是怎么管理你手头大量的图片的&…

食探秘:Spring Boot校园周边美食发现平台

第三章 系统设计 3.1 系统概要设计 本校园周边美食探索及分享平台选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所…

PMP--二模--解题--71-80

文章目录 13.干系人管理--干系人登记册--记录干系人的身份信息、评估信息、干系人分类。识别完干系人更新干系人登记册。71、 [单选] 一名初级项目经理被指派到一个新启动的项目,高级项目经理指示该初级项目经理去识别在项目中享有既得利益的人员。高级项目经理让初…

上半年营收净利双降,债台高筑下扩产能,天合光能“激进”前行?

近年来,随着新能源产业的蓬勃兴起,以及消费端对低碳经济追求的日益增强,再叠加分布式光伏发电系统的快速发展,全球市场对光伏组件的需求量愈发高涨。 而我国目前又是全球最大的光伏组件生产国和出口国,这离不开隆基绿…

桶排序和计数排序(非比较排序算法)

桶排序 桶排序是一种基于分配的排序算法,特别适合用来排序均匀分布的数据。它的基本思想是将输入的数据分到有限数量的桶里,然后对每个桶内的数据分别进行排序,最后再将各个桶内的数据合并得到最终的排序结果。(通常用于浮点数,因…

LLM大模型训练/推理的显卡内存需求计算

无论你是从头开始训练 LLM、对其进行微调还是部署现有模型,选择合适的 GPU 对成本和效率都至关重要。在这篇博客中,我们将详细介绍使用单个和多个 GPU 以及不同的优化器和批处理大小进行 LLM 训练和推理时 GPU 要求的所有信息。 计算机处理器由多个决定…

SM2无证书及隐式证书公钥机制签名和加密过程详解(一)

前面介绍SM2无证书及隐式证书公钥机制下用户公私密钥对的Python实现(具体参看SM2隐式证书用户公私钥生成python代码实现_sm2 python 密钥生成-CSDN博客),可以看到需由用户和KGC(可信密钥生成中心)共同参与才能计算得到…

小程序-基础知识1

Mustache语法 小程序和vue一样提供了插值语法 但是小程序不能调用方法{{xxxx()}} hidden属性 hidden是所有组件都默认拥有的属性, hidden与wx:if的区别: wx:if是控制组件是否渲染,hidden控制显示或隐藏是通过添加hidden属性。 wx:for 除了可以遍历…

服务器配置虚拟环境及离线安装python

本篇文章基于已经装好conda环境进行哈,不会安装conda可参考服务器离线安装anaconda-CSDN博客 1.打印现有虚拟环境列表 conda env list,可以看见我现在有base、ai、py38三个环境 2.删除指定虚拟环境 conda remove -n py38 --all,回车后输入ye…

LeetCode 面试经典150题 190.颠倒二进制位

复习知识:正数的原码、反码、补码相同,负数的反码在其原码的基础上, 符号位不变,其余各个位取反,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后1 (即在反码的基础上1)。 题目:颠倒给定的 32 位无符号…

全国及分(31个)省全社会就业人数(1978-2022年)

分省就业人数分析 经济发达省份:如广东、江苏、浙江等省份的就业人数较高,这与它们的经济发展水平和产业结构密切相关。欠发达省份:虽然就业人数相对较低,但也呈现出增长态势,显示了国家在区域协调发展上的成效。 从…

软考高级:数据库事务状态区分:活动、部分提交、提交、失败、中止 AI 解读

讲解 数据库事务状态的区分可以用来表示事务在不同阶段的状态。事务(Transaction)是数据库中的一组操作,要么全部成功,要么全部失败。这些状态可以帮助我们理解事务从开始到结束的整个生命周期。 生活化例子 假设你去餐厅点餐&…

AI资深导师指导-ChatGPT深度科研工作应用、论文撰写、数据分析及机器学习与AI绘图

2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在…

操作系统week3

操作系统学习 三.内存管理 16.内存映射文件 传统的文件访问方式: open系统调用–打开文件seek系统调用–将读写指针移到某个位置read系统调用–从读写指针所指位置读入若干数据write系统调用–将内存中的指定数据,写回磁盘 内存映射文件的访问方式&…