第五章 进程管理
第五章 进程管理
5.1 初始进程
5.1.1 进程的组成部分
①已分配内存的地址空间。②安全属性,包括所有权凭据和特权。③程序代码的一个或多个执行线程。④进程状态。
5.1.2 进程状态
①就绪态:进程已经具备运行条件,但是CPU还没有分配过来。
②运行态:进程占用CPU,并在CPU上运行。
③阻塞态:进程因等待某件事发生而暂时不能运行。

5.2查看进程
5.2.1 静态查看进程
ps命令:可以查看静态进程,仅仅是捕捉某一个瞬间某一个进程的状态,类似于给进程制作快照。
- “ps aux”命令:查看当前目录的进程,如下图所示:
![]()
- 基本权限意义
![]()
man工具:查看stat,其中,R表示运行,S表示可中断休眠,D表示不可中断休眠,T表示停止的进程,Z表示僵死的进程,X表示死掉的进程。
- “ps aux --sort -%cpu”命令:查看CUP占用率时,一般会希望进程按照CPU占用百分比的降序排列
![]()
-
“ps -ef”命令:可以查看UID、PID、PPID等信息
![]()
- ps axo”命令:自定义显示的字段
![]()
- 查看指定进程PID的方法:①cat命令,②pidof命令,③pgrep命
![]()
5.2.2 动态查看进程
- top命令:可以实时动态地显示进程(进程信息分为上下两部分,上面为整体信息,下面为每一个进程的信息。系统默认更新时间为3秒,也可以按回车键立即更新。)
![]()
注:
上半部分是系统整体统计信息,具体解释如下:
op - 00:23:23 :当前时间。
up 7:02:启动后运行时间。
2 users:当前在线用户数。
load average: 0.14, 0.05, 0.06:CPU最近1分钟、5分钟、15分钟平均负载值。Red Hat官方手册解释说,假如系统有4个CPU,把每个时间段的平均负载值除以4,所得到的数值为每个CPU的负载,如果该值大于1,表明CPU过载。
Tasks: 172 total:进程个数。
1 running:正在使用CPU的进程个数。
171 sleeping:进程休眠个数。
0 stopped:进程停止个数。
0 zombie:进程僵死个数。
%Cpu(s): 16.8 us, 3.4 sy, 0.0 ni, 79.7 id, 0.0 wa, 0.0 hi, 0.0 si,0.0:CUP使用情况。
KiB Mem : 1867024 total, 604692 free, 689484 used, 572848buff/cache:内存使用情况。
KiB Swap: 2097148 total, 2097148 free, 0 used:交换分区
下半部分:①按M键以内存占用率排序,②按P键以CPU占用率排序,③按N键以PID数值大小排序,④按R键对排序进行反转。按F键显示自定义显示字段。按上下键移动。按空格键选中。按q键退出自定义显示字段。按W键保存自定义显示字段。⑤按1键显示所有CPU的负载。
- op命令后添加参数“-d”可以设置刷新时间,以秒为单位。
![]()
-
添加“-p”参数可以指定查看一个或多个进程的动态信息。
![]()
-
添加“-u”参数可以查看指定用户的进程,添加“-n”参数可以设置刷新次数,完成后自动退出。
![]()
5.3 信号控制进程
5.3.1 kill命令
- "kill -l"命令:终止指定进程的运行
![]()
- 常见的信号
![]()
5.4 进程优先级
5.4.1 使用top命令查看nice级别

5.4.2 使用ps 命令查看nice级别
5.5 作业控制
foreground:前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端。
- 创建sleep进程:
![]()
- background:后台进程没有控制终端,不需要终端的交互。在后台创建sleep进程,使用ctrl+c组合键并不能结束该进程,其中“&”为后台符。
![]()
-
①创建两个sleep进程,sleep 7000在后台运行,sleep 8000在前台运行,在前台运行的进程,可使用ctrl+z组合键暂停。②jobs命令用于显示当前Shell中的作业列表及作业状态,包括后台运行的任务。该命令可以显示作业ID。③使用bg命令可以把任务移动至后台。④使用fg命令可以将后台进程移动到前台,进程会占用终端,即可以使用键盘读取或写入。⑤再次使用jobs命令查看当前作业,只有sleep 8000进程,可以使用kill命令终止它。⑥使用fg命令时若不添加任何作业号,则默认调用最近的一个进程。
![]()
学习心得
在本章的学习中,我对进程管理有了更深入的了解。进程是计算机系统中最基本的执行单元,每个进程都有自己的地址空间、代码、数据和状态。我学会了如何查看系统中运行的进程,掌握了ps命令和top命令等基本方法。通过这些命令,我可以获取进程的详细信息,包括进程ID、CPU使用情况、内存占用等,这对于系统性能分析和故障排查非常有帮助。另外,我也了解了信号控制进程的基本原理和方法。信号是进程间通信和控制的一种方式,常见的信号包括中断、终止、挂起等。我学会了如何使用kill命令向进程发送信号,以及如何处理接收到的信号。这些知识对于进程的管理和控制非常重要,可以帮助我更好地理解进程的行为和状态变化。在学习进程优先级原理时,我了解了不同优先级进程的调度和执行规则。操作系统通过调度算法来决定哪个进程优先执行,高优先级的进程会获得更多的CPU时间,从而提高系统的响应速度和效率。了解进程优先级的原理可以帮助我更好地优化系统性能,提高进程的执行效率。最后,我学习了作业控制的概念,包括如何管理和控制系统中的多个作业。作业控制是操作系统中一个重要的功能,可以帮助我更好地组织和调度系统中的任务,提高系统的整体效率和性能。
通过这些学习,我对操作系统中进程管理的知识有了更全面的掌握。我会继续深入学习进程管理相关知识,不断提升自己的水平。同时,我会将所学应用到实际工作中,以提高自己在进程管理方面的能力和经验。希望能够在未来的学习和工作中,更好地应用和发展这些知识,为自己的发展打下坚实的基础。
















浙公网安备 33010602011771号