进程管理1

进程基本概述

什么是进程?

进程其实就是正在被运行的程序。

程序和进程的区别

程序:是数据和指令的集合。是一个静态的概念,可以永久存储在系统中。
进程:是一个动态的概念,表示程序运行的过程,当我们结束该进程,进程就随之被销毁。

进程的生命周期

进程的生命周期表示进程在系统中的存活时间。
一个进程的上一级进程叫做父进程,用pid表示。
一个进程的下一级进程叫做子进程,用ppid表示。

僵尸进程

表示子进程在处理代码过程中异常退出,但是父进程却没有回收子进程,这样的进程便是僵尸进程。僵尸进程的存在会导致子进程虽然实体已经消失,但仍然在进程表中占据一条记录,长期这样会导致系统资源的浪费。僵尸进程无法被常规手段清理,只能通过重启来清理。

孤儿进程

表示子进程在处理代码的过程中,父进程退出了,那么这些子进程就没有父进程来管理了,由系统的system进程管理,这样的进程叫做孤儿进程。

监控进程状态

查看进程的状态分为静态和动态两种方式。
静态表示查看某一时刻的进程状态,动态表示实时监控进程状态。

PS

静态监控进程。
我们可以使用ps -aux来查看进程的状态,执行完成后会包含这些信息:

[root@oldboy ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6 128248  6876 ?        Ss   08:30   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    08:30   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    08:30   0:00 [ksoftirqd/0]

上面信息中各列代表的意思是:
USER: 运行该进程的用户(每一个进程都需要一个特定的用户身份来运行)
PID: 进程id
%CPU: 占用CPU百分比
%MEM: 占用内存百分比
VSZ: 虚拟内存,单位KB
RSS: 实际使用内存
TTY: 运行进程的终端 ?:表示该进程是系统运行的。
STAT: 进程的状态。(运行 暂停 停止 ……)
基本进程状态:
R:进程运行。
S:可中断进程。
T:进程被暂停。
D:不可中断进程。
Z:僵尸进程。
s:进程是控制进程。
<:进程运行在高优先级上。
N:进程运行在低优先级上。
+:进程在前台运行。
l:多线程进程。
常见的进程组合状态:
R+:在前台运行的进程。
Ss:父进程。
S+:进程正在前台运行并且是一个可中断进程。
Ssl:父进程是一个多线程进程。
START: 启动时间。
TIME: 进程占用CPU的总时间。
COMMAND: 进程运行的具体命令。这一列下面的内容中,带有[]的进程表示系统内核的进程。

top

动态监控进程。
执行完成后会包含这些信息:

[root@oldboy ~]# top
top - 11:20:06 up  2:49,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 106 total,   1 running, 105 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 
KiB Mem :   995896 total,   693820 free,   141720 used,   160356 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   680284 avail Mem 
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 
   7819 root      20   0       0      0      0 S  0.3  0.0   0:00.48 kworker/+
  7823 root      20   0  161980   2204   1556 R  0.3  0.2   0:00.14 top      
 

上面的内容的意思分别是:

top - 11:20:06 up  2:49,  1 user,  load average: 0.00, 0.01, 0.05
# 11:20:06启动,系统已经运行了2小时49分钟,当前有1个用户登陆系统,1分钟的负载情况是0.00,5分钟的负载情况是0.01,15分钟的负载情况是0.05

Tasks: 106 total,   1 running, 105 sleeping,   0 stopped,   0 zombie
# 一共有个106个进程被运行,1个正在被运行,105个中断的进程,0个被停止的进程,0个僵尸进程
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0st
# us:用户进程占用cpu百分比  sy:内核进程占用cpu百分比
# ni: 优先级高的进程占用cpu百分比	
# id:空闲的百分比		
# wa:等待。这一项数值较大的话说明用户请求磁盘资源,磁盘很慢,请求的资源很多。
# hi:硬中断		si:软中断
# st:虚拟机占用当前物理服务器的CPU资源的百分比。
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 
# PID:进程id USER:运行进程的用户
# PR:进程优先级		NI:负值表示高优先级,正值表示低优先级
# VIRT:共享内存  	RES:进程使用的、未被换出的物理内存大小
# SHR:共享内存大小	 S:进程状态
# %CPU:占用CPU百分比
# %MEM:占用内存百分比
# TIME+:进程使用CPU的时间
# COMMAND:进程运行的具体命令

top常用指令

h:查看帮助
1:显示所有CPU的核心的负载
z:以高亮显示数据
b:高亮显示处于R状态的进程
M:按内存使用的百分比排序输出
P:按CPU使用百分比排序输出
q:退出top

中断

中断是用来响应硬件设备请求的一种机制,他会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。
由于中断程序会打断其他程序的运行,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。如果中断要处理的事情很多,会导致中断处理程序中断时,还会临时关闭中断。这就导致上一次中断没完成之前,后面出现的中断再次出现可能会导致后面出现的中断丢失。
我们的系统为了防止上述情况发生,把中断分成了两个部分,上半部和下半部。
上半部表示直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行。
下半部由内核出发,也就是我们常说的软中断,特点是延迟执行。
举个例子:
1.用户发起上传操作
2.会触发一次硬中断将网卡接收的数据载入到内存
3.硬中断处理完毕后,会通知内存,唤醒软中断
4.软中断可以按照网站协议zhai,进行数据解析和处理
5.最终数据会被送往对应的应用程序,或送往存储设备。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值