Linux 进程及作业管理(内存、进程和作业命令详解)

本文详述了Linux下的进程管理,包括进程的基本状态、转换情况和优先级管理,重点解析了进程内存、IPC(进程间通信)以及常用管理工具如`ps`、`top`、`htop`等的使用,还介绍了作业管理和内存状态查看工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程概念

  • 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等

  • Process: 运行中的程序的一个副本,是被载入内存的一个指令集合

    进程ID(Process ID,PID)号码被用来标记各个进程
    UID、GID、和SELinux语境决定对文件系统的存取和访问权限
    通常从执行进程的用户来继承
    存在生命周期
    
  • task struct:Linux内核存储进程信息的数据结构格式

  • task list:多个任务的的task struct组成的链表

  • 进程创建:

    init:第一个进程
    进程:都由其父进程创建,父子关系,CoW
    	fork(), clone()
    

进程的基本状态

  • 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
  • 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
  • 执行状态:进程处于就绪状态被调度后,进程进入执行状态
  • 阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
  • 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

进程之间转换六种情况

  • 运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态
  • 就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
  • 运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求
  • 阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列

以下两种状态是不可能发生的:

  • 阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取
  • 就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态

在这里插入图片描述

进程优先级

系统优先级:数字越小,优先级越高
	0-139(CentOS4,5)
		各有140个运行队列和过期队列
	0-98,99(CentOS6)
		实时优先级: 99-0 值最大优先级最高
		nice值:-20到19,对应系统优先级100-139或99
Big O:时间复杂度,用时和规模的关系
	O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)

进程优先级管理

# 进程优先级调整
	静态优先级:100-139
	进程默认启动时的nice值为0,优先级为120
	只有根用户才能降低nice值(提高优先性)
	
# nice命令
	nice [OPTION] [COMMAND [ARG]...]
	
# renice命令
	renice [-n] priority pid...
	
# 查看
	ps axo pid,comm,ni

进程相关概念

1、进程内存

  • Page Frame: 页框,用存储页面数据,存储Page 4k
  • LRU:Least Recently Used 近期最少使用算法,释放内存
  • MMU:Memory Management Unit 负责转换线性和物理地址(物理地址空间和线性地址空间)
  • TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存

2、IPC(Inter Process Communication:进程间通信)

同一主机:signal:信号
	shm: shared memory
	semaphore:信号量,一种计数器

不同主机:socket: IP和端口号
	RPC: remote procedure call
	MQ:消息队列,Kafka,ActiveMQ

进程状态

Linux内核:抢占式多任务

进程类型:
	守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
	前台进程:跟终端相关,通过终端启动的进程
		注意:两者可相互转化

进程状态:
	运行态:running
	就绪态:ready
	睡眠态:
		可中断:interruptable
		不可中断:uninterruptable
	停止态:stopped,暂停于内存,但不会被调度,除非手动启动
	僵死态:zombie,结束进程,父进程结束前,子进程不关闭

进程信息的相关文件

1、内核状态信息的相关文件

/proc/:内核中的状态信息
	内核参数:
		可设置其值从而调整内核运行特性的参数;/proc/sys/
		状态变量:其用于输出内核中统计信息或状态信息,仅用于查看
					
	参数:模拟成文件系统类型

2、相关进程的参数信息

/proc/#:
	#:PID          
		# 里面有此进程的内核参数,内容非常不友好,不是内核开发人员看不懂
	
		# cat cmdline   # 启动此进程的命令参数
		# cat mem        # 查看此进程的内存参数,一般不予许查看
		# cat maps       # 哪些内存空间存储了哪些内容文件

系统管理工具

进程的分类:
	CPU-Bound:CPU密集型,非交互
	IO-Bound:IO密集型,交互

Linux系统状态的查看及管理工具:
	# pstree    ps      pidof    pgrep   top/htop
	# glance    pmap    vmstat   dstat   kill
	# pkill     job     bg       fg      nohup

系统状态查看工具

pstree

以树状图的方式展现进程之间的派生关系。

pstree  - display a tree of processes

1、pstree 命令

pstree命令 以树状图的方式展现进程之间的派生关系,显示效果比较直观。

语法格式:

pstree [OPTIONS]

OPTIONS:
-a           # 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示
-c           # 不使用精简标示法
-G           # 使用VT100终端机的列绘图字符
-h           # 列出树状图时,特别标明现在执行的程序
-H PID       # 此参数的效果和指定"-h"参数类似,但特别标明指定的程序
-l           # 采用长列格式显示树状图
-n           # 用程序识别码排序。预设是以程序名称来排序
-p           # 显示程序识别码
-u           # 显示用户名称
-U           # 使用UTF-8列绘图字符
-V           # 显示版本信息

2、pstree 示例

1、获取 SSH 会话的 PID。

# pstree -p | grep ssh

|-sshd(1221)-+-sshd(2768)---bash(2770)-+-grep(2810)
|            `-sshd(2807)---sshd(2808)

从上方的输出中,你可以看到 sshd 进程与分支的树形图。sshd 的主进程是 sshd(1221),另两个分支分别为 sshd(2768) 和 sshd(2807)。

2、显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。

# pstree  -a

3、显示当前所有进程的进程号和进程id。

# pstree -p

ps(重要)

通过查看进程的内核参数来进行友好的输出。

# ps - report a snapshot of the current processes.

Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中。

语法格式

# ps [options]
选项有三种风格
  • 1 UNIX options, which may be grouped and must be preceded by a dash.(例 -A -e)
  • 2 BSD options, which may be grouped and must not be used with a dash.(例 a)
  • 3 GNU long options, which are preceded by two dashes.(如 --help)
启动进程的方式
  • 系统启动过程中自动启动:与终端无关的进程
  • 用户通过终端启动:与终端相关的进程
选项
a                 # 选项包括所有终端中的进程
x                 # 选项包括不链接终端的进程
u                 # 选项显示进程所有者的信息
f                 # 选项显示进程树,相当于 --forest
k|--sort          # 属性 对属性排序,属性前加- 表示倒序
o                 # 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
L                 # 显
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值