目录
01.进程的基本概念
程序与进程
进程的属性
02.进程控制块(PCB)
task_struct的内容分类
组织进程
03.查看进程
ps命令
top指令
在计算机科学领域,进程是一项关键概念,它是程序执行的一个实例,是操作系统的基本单位。本文将从进程的基本概念到内核观点的深入理解,以及Linux操作系统下的具体实现等方面逐步探讨进程的相关知识。
01.进程的基本概念
程序与进程
程序与进程之间存在着密切的关系,但并不是同一个概念。
程序
- 程序是一组指令的集合,是静态的代码文件,通常存储在磁盘或其他存储介质中。
- 程序是计算机执行特定任务的指令序列,它描述了如何处理输入数据以产生输出结果。
进程
- 进程是程序的执行实例,是操作系统中的基本执行单位。
- 进程包括了程序的执行状态、内存空间、资源分配情况等信息。
- 每个进程都有自己的唯一标识符(PID),并且可以独立运行和被操作系统调度。
用生活中的例子来解释,程序就像是一本菜谱,描述了如何准备一道菜的步骤、所需的食材以及烹饪方法,但它本身并不会做任何事情;而进程则是根据菜谱准备食物的实际过程,它是程序在执行过程中的动态实例。就像你可以同时烹饪多道菜一样,操作系统可以同时执行多个进程,每个进程都在独立地执行它们的指令,拥有自己的资源和状态。
进程的属性
进程的属性包括了唯一标识符、状态、优先级、程序计数器、内存指针、上下文书籍、I/O状态信息、记账信息等。这些属性描述了进程在执行过程中的各个方面,是操作系统进行进程管理的基础。进程信息存放在名为进程控制块的数据结构中,也可以称之为进程属性的集合。
02.进程控制块(PCB)
在内核观点中,进程被认为是担任分配资源的实体。而进程的信息被存放在一个称为进程控制块的数据结构中,它是进程属性的集合,包含了进程在执行过程中所需的所有信息。
在LInux操作系统中,描述进程的结构体称为"task_struct".它被装载到内存中,并包含了进程的所有信息。"task_struct"是Linux内核的一种数据结构。
task_struct
的内容分类
标示符:
描述本进程的唯一标识符,通常是一个PID(进程ID),用来区别其他进程。
状态:
包括任务状态、退出代码、退出信号等,描述了进程当前所处的状态和执行情况。
优先级:
相对于其他进程的优先级,用来决定进程在调度时的执行顺序。
程序计数器:
记录了程序中即将被执行的下一条指令的地址,用来指示进程当前执行的位置。
内存指针:
包括了程序代码和进程相关数据的指针,以及与其他进程共享的内存块的指针,用来管理进程的内存空间和数据共享。
上下文数据:
指进程执行时处理器的寄存器中的数据,包括了寄存器的状态、程序计数器等,是进程从一个状态切换到另一个状态时需要保存和恢复的信息。
I/O状态信息:
包括显示的I/O请求、分配给进程的I/O设备和被进程使用的文件列表等,用来描述进程的I/O操作情况。
记账信息:
包括了处理器时间总和、使用的时钟数总和、时间限制、记账号等,用于统计和记录进程的运行情况和资源消耗情况。
组织进程
在Linux内核源代码中,所有运行在系统中的进程都以"task_struct"链表的形式存在内核中。这种组织形式方便了操作系统对进程的管理和调度。
03.查看进程
进程的信息可以通过 /proc系统文件夹查看
大多数进程信息同样可以使用ps或top工具来获取
ps命令
ps命令用于显示系统中当前运行进程的信息。它提供了许多选项,可以根据需要显示不同的进程信息。以下是它的常用选项:
-e
:显示所有进程信息。-f
:显示详细的进程信息,包括父进程的PID、CPU利用率等。-u user
:显示指定用户的进程信息。-aux
:显示所有用户的所有进程信息,并且以更详细的方式显示。-p pid1,pid2,...
:显示指定PID的进程信息。-N
:显示与指定条件不匹配的进程信息。-o format
:指定显示的输出格式。
示例:
在使用ps命令查找某一进程的信息时,可以结合“grep”命令,例如
ps aux | grep proc
这样就会筛选出名称为proc的进程的信息
此时为什么会用两个进程的信息呢,第一行时proc进程的信息,第二行其实是grep的进程信息,grep命令在输出时会给匹配的文本添加高亮颜色,如果不想看到grep进程信息,可以使用-v选项
此时就只有proc进程的信息了。
注意:有时候可能因为没用正确方式终止程序导致留下一个僵尸进程或者后台进程,这个时候虽然程序没有在运行,但是进程信息仍然会显示在ps命令的输出中。这个时候就需要使用“kill”命令终止程序(一般的程序只需要ctrl+c就可以终止)下面看一个例子:
还是proc程序,运行时加入选项&,此时就会生成一个后台程序,ctrl+c无法进行终止
此时复制一个当前窗口,获取该进程PID并输入kill指令
这样进程就终止了
top指令
top命令是一个用于实时监测系统进程的工具,它可以显示系统当前正在运行的进程以及它们的资源占用情况。运行top命令后,会在终端显示一个实时更新的进程列表,包括进程的PID、用户、CPU占用率、内存占用率等信息。
top命令以交互方式运行,可以在列表中执行一些命令:
- 按
q
键退出top
命令。 - 按
k
键输入一个进程的 PID 并按回车,然后输入一个信号值(例如9
表示SIGKILL
),可以杀死指定的进程。 - 按
u
键输入一个用户名,可以过滤显示属于该用户的进程。 - 按
?
键可以查看更多可用的命令列表。 - 按
P
键按 CPU 占用率排序。 - 按
M
键按内存占用率排序。
还可以通过在命令行中指定选项来修改 top
命令的默认行为。例如,你可以使用 -d
选项指定更新间隔时间,使用 -n
选项指定显示进程的数量等。
以上就是进程的一些相关知识的整理了~
总结:
进程作为计算机系统中的基本概念,承载着程序的执行实例,是操作系统进行资源分配和管理的核心。通过对进程的基本概念、内核实现以及创建和调度的深入探讨,我们能够更好地理解操作系统中进程管理的机制。觉得博客对你有帮助的,点赞关注支持一下吧~😉