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】

相关推荐
每天都要写算法(努力版)1 小时前
【服务器操作指南】从 Hugging Face 上下载文件 | 从某一个网址上下载文件到 Linux 服务器的指定目录
linux·运维·服务器
天狼12222 小时前
第5章-1 优化服务器设置
运维·服务器·adb
傻啦嘿哟3 小时前
Python正则表达式:用“模式密码“解锁复杂字符串
linux·数据库·mysql
浪裡遊4 小时前
Linux常用指令
linux·运维·服务器·chrome·功能测试
SugarPPig5 小时前
PowerShell 查询及刷新环境变量
服务器
段ヤシ.5 小时前
银河麒麟(内核CentOS8)安装rbenv、ruby2.6.5和rails5.2.6
linux·centos·银河麒麟·rbenv·ruby2.6.5·rails 5.2.6
深夜情感老师7 小时前
centos离线安装ssh
linux·centos·ssh
我的作业错错错7 小时前
搭建私人网站
服务器·阿里云·私人网站
王景程8 小时前
如何测试短信接口
java·服务器·前端
微网兔子8 小时前
伺服器用什么语言开发呢?做什么用什么?
服务器·c++·后端·游戏