Linux 进程入门:带你走进操作系统的核心地带(1)

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟
🚩用通俗易懂且不失专业性的文字,讲解计算机领域那些看似枯燥的知识点🚩


在 Linux 操作系统的奇妙世界里,进程就像是一群默默工作的小魔法师🧙‍♂️,它们在后台有条不紊地运行,支撑着整个系统的稳定与高效。对于想要深入了解 Linux 系统的人来说,进程相关知识无疑是一把打开操作系统核心大门的钥匙。今天,就让我们一同踏上这趟探索 Linux 进程的奇妙之旅🎈。


目录

[一、从 "管理" 角度理解进程](#一、从 “管理” 角度理解进程)

[1.1 描述被管理对象](#1.1 描述被管理对象)

1.2组织被管理对象

1.3总结

二、进程的基本概念🤔

[三、描述进程 - PCB(process control block)📄](#三、描述进程 - PCB(process control block)📄)

[task_struct - PCB 的一种🧩](#task_struct - PCB 的一种🧩)

组织进程👥

查看进程🔍

四、通过系统调用获取进程标示符🆔

[五、结语 🎉](#五、结语 🎉)


一、从 "管理" 角度理解进程

在探讨进程之前,我们先通过计算机管理硬件的例子,来理解 "管理" 的概念。计算机要管理硬件,需要完成两个关键步骤:描述被管理对象以及组织被管理对象🤔。

1.1 描述被管理对象

对于计算机硬件的管理,我们通常使用 struct 结构体来描述硬件的各种属性。例如,要描述一块硬盘,结构体可能包含硬盘的容量、型号、接口类型等信息📏。通过这种方式,将硬件的复杂特性以数据结构的形式呈现出来,方便计算机系统进行识别和操作,就像给每个硬件都贴上了详细的 "身份标签"🏷️。

1.2组织被管理对象

为了更高效地管理众多硬件设备,我们会采用链表或其他高效的数据结构来组织它们。链表结构能够方便地添加、删除和查找硬件设备,就像将所有硬件设备串联起来,形成一个有序的集合🎗️。这样,计算机系统在需要访问或操作某个硬件时,能够快速定位到目标设备,提高管理效率,仿佛有了一张清晰的 "硬件地图"🗺️。

1.3总结

从计算机管理硬件的例子可以看出,管理的本质就是先通过合适的数据结构对被管理对象进行详细描述,然后采用高效的组织方式将这些对象有序地整合起来,以便系统能够有效地对它们进行操作和控制✅。


二、进程的基本概念🤔

进程,从课本的角度看,它是程序的一个执行实例,就如同一场戏正在舞台上表演,这个正在执行的程序便是主角🎭。而在内核的眼中,进程则担当着更为关键的角色 ------ 分配系统资源(如 CPU 时间和内存)的实体,仿佛是一位精打细算的资源大管家🧑‍💼,合理地调度着每一份资源,确保系统的顺畅运行。

总结表格

角度 定义
课本概念 程序的一个执行实例,正在执行的程序
内核观点 担当分配系统资源(CPU 时间,内存)的实体

三、描述进程 - PCB(process control block)📄

为了更好地管理这些进程 "小魔法师",Linux 操作系统为每个进程准备了一份专属的 "魔法档案"------ 进程控制块(PCB),在 Linux 系统中,它具体体现为 task_struct 结构体。(进程属性的集合)

task_struct - PCB 的一种🧩

task_struct 就像一个无所不知的 "大管家",它安居在内存(RAM)这个 "魔法仓库" 里,详细记录着进程的点点滴滴。

  1. 标示符:这是进程独一无二的 "魔法印记"🆔,就像我们每个人的身份证,凭借它可以轻松地将不同进程区分开来。
  2. 状态:记录着任务状态、退出代码以及退出信号等信息,如同进程的 "健康报告"📈,实时反馈进程的运行状况,是正常运行、准备休息,还是遭遇了什么问题,都能从中一目了然。
  3. 优先级:决定了进程获取 CPU 这个 "魔法能量" 的优先程度,优先级高的进程就像拥有 VIP 特权的客人🌟,能够优先获得执行的机会,在系统资源的竞争中抢占先机。
  4. 程序计数器:宛如进程的 "魔法导航仪"🧭,精确地指明程序中即将被执行的下一条指令的地址,引导着进程的 "魔法之旅" 沿着正确的方向前进。
  5. 内存指针:不仅指向程序代码和进程相关数据,还负责管理与其他进程共享的内存块,它就像进程与内存之间的 "魔法桥梁"🛤️,确保进程能够准确无误地访问和操作所需的内存资源。
  6. 上下文数据:进程执行时处理器寄存器中的数据,恰似进程的 "魔法记忆"🧠,当进程暂停或恢复执行时,它能保证进程的状态不会丢失,如同魔法的延续,让进程能够无缝衔接之前的工作。
  7. I/O 状态信息:包含进程的 I/O 请求、分配到的 I/O 设备以及使用的文件列表,展现了进程与外部设备和文件系统之间的 "魔法互动"🖼️,就像进程与外界沟通的魔法通道,实现数据的输入输出。
  8. 记账信息:诸如处理器时间总和、使用的时钟数总和、时间限制以及记账号等,这些信息就像进程的 "魔法账本"📊,帮助系统统计和管理进程对资源的使用情况,确保资源的合理分配与利用。

总结表格

内容分类 描述
标示符 描述本进程的唯一标示符,用于区别其他进程
状态 任务状态,退出代码,退出信号等
优先级 相对于其他进程的优先级
程序计数器 程序中即将被执行的下一条指令的地址
内存指针 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据 进程执行时处理器的寄存器中的数据
I/O 状态信息 包括显示的 I/O 请求,分配给进程的 I/O 设备和被进程使用的文件列表
记账信息 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等

组织进程👥

在 Linux 内核这个神秘的 "魔法城堡" 里,所有运行的进程如同有序排列的小魔法师,以 task_struct 链表的形式整齐地组织在一起。这种组织方式就像城堡里的魔法师们按照一定的秩序各司其职,方便内核这位 "大魔法师" 高效地管理与调度它们,确保整个城堡的和谐运转。

总结表格

描述 详情
组织形式 所有运行在系统里的进程以 task_struct 链表的形式存在内核里
位置 在内核源代码里可找到

查看进程🔍

如果我们想要了解这些进程 "小魔法师" 的情况,Linux 系统为我们提供了多种神奇的 "魔法工具"。其中一种方法是通过 /proc 系统文件夹,这就像一个神秘的 "魔法档案库"📂,例如,要获取 PID 为 1 的进程信息,只需打开 /proc/1 这个文件夹,里面就藏着该进程的各种详细信息。此外,top 和 ps 等用户级工具也如同贴心的 "魔法助手"🤝,它们能帮我们轻松获取大多数进程的信息,让我们对进程的运行状况了如指掌。

总结表格

查看方式 详情
系统文件夹 通过 /proc 系统文件夹查看,如获取 PID 为 1 的进程信息,查看 /proc/1 文件夹
用户级工具 使用 top 和 ps 等用户级工具获取大多数进程信息

四、通过系统调用获取进程标示符🆔

进程的世界就像一个庞大的魔法家族👨‍👩‍👧‍👦,每个进程都有自己独特的 "魔法身份标识"------ 进程 id(PID),以及它的 "魔法家族长辈"------ 父进程 id(PPID)。通过系统调用这个神奇的 "魔法咒语"🔑,我们就能轻松获取这些标识符,从而清晰地了解进程间的家族关系,揭开它们神秘的身世之谜。

总结表格

标识符 含义
进程 id(PID) 本进程的唯一标识符
父进程 id(PPID) 该进程的父进程的标识符

五、结语 🎉

无论是 Linux 系统的其他神秘角落,还是与进程相关的进阶知识,都有可能在新文章里一一呈现✨。请保持关注,精彩即将上线,让我们一同开启下一段知识探索之旅🚀,敬请期待!


如果在学习过程中有任何疑问或建议,欢迎随时交流分享哦😉! 👉【A Charmer】

相关推荐
kevin_tech3 小时前
Go 项目开发实战-用户Token的刷新、踢人下线和防盗检测
运维·服务器·开发语言·后端·golang
微学AI3 小时前
内网穿透的应用-Ubuntu本地Docker部署Leantime项目管理工具随时随地在线管理项目
linux·ubuntu·docker
0709003 小时前
Docker中安装Tailscale方法二
运维·docker·容器
vvw&3 小时前
如何在 Ubuntu 22.04 上安装 Caddy Web 服务器教程
linux·运维·服务器·前端·ubuntu·web·caddy
likeyou~coucou3 小时前
Linux中SSH服务(二)
linux·运维·ssh
金增辉4 小时前
Linux 虚拟机与windows主机之间的文件传输--设置共享文件夹方式
linux·运维·服务器
爬楼的猪6 小时前
Ubuntu Bash工具
linux·ubuntu·bash
步、步、为营6 小时前
任务调度系统Quartz.net详解2-Scheduler、Calendar及Listener
服务器·.net
928-y6 小时前
CentOS离线安装gcc环境(附安装包+图文并茂)
linux·运维·centos