标签:linux进程
Linux下进程管理简概目录
Linux内核功能简述
进程相关概念
进程管理查看工具
一.Linux内核功能简述
1.进程管理
内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出). 不同进程间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也由内核处理. 另外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在单个或者几个 CPU 之上的抽象
2.内存管理
计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 到更多更复杂的功能.
3.文件系统
Linux 在很大程度上基于文件系统的概念; 几乎 Linux 中的任何东西都可看作一个文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物理介质上不同的数据组织方式.
4.设备控制
几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器.
5.网络
网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程,进入系统的报文是异步事件,报文在某一个进程接手之前必须被收集,识别,分发. 系统负责在程序和网络接口之间递送数据报文, 它必须根据程序的网络活动来控制程序的执行. 另外, 所有的路由和地址解析问题都在内核中实现.
二.进程相关概念
1.进程
Process:是运行中的程序的一个副本,被载入内存的一个指令集合,有生命周期,都由其父进程创建
进程ID:被用来标记各个进程
task struct:Linux内核存储进程信息的数据结构格式,是固定格式
task list:多个任务的的task struct组成的链表
2.进程优先级0-139
0:一般不使用
1-99:实时优先级;数字越大优先级越高,系统自动安排
100-139:静态优先级;数字越小优先级越高,可手动更改
3.Nice值
-20至19,对应于100到139或99
普通用户只能将自己的优先级调低,root用户可以随意调制
每个队列有两对:运行队列、过期队列,140对280队,通过CPU中断控制来给进程运行时间
4.进程内存
Page Frame: 页框,用存储页面数据,存储Page 4k
MMU:Memory Management Unit负责转换线性和物理地址
进程在内存上的存储单元可能是不连续的
LRU:Least Recently Used 近期最少使用算法,释放内存 物理地址空间和线性地址空间
假设序列为 4 3 4 2 3 1 4 2 物理块有3个,则
第1轮 4调入内存 4
第2轮 3调入内存 3 4
第3轮 4调入内存 4 3
第4轮 2调入内存 2 4 3
第5轮 3调入内存 3 2 4
第6轮 1调入内存 1 3 2
第7轮 4调入内存 4 1 3
第8轮 2调入内存 2 4 1
IPC:Inter Process Communication进程间通信
同一主机上:signal信号、shm: shared memory共享内存、semerphor旗语手势
不同主机上:rpc: remote procecure call远程过程调用、socket套接字
5.进程类型
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
注意:也可把在前台启动的进程送往后台,以守护模式运行
6.进程状态
运行态:running,进程占用CPU,并在CPU上运行;
就绪态:ready,进程已经具备运行条件,但是CPU还没有分配过来;
可中断睡眠态:处于这个状态的进程因为等待某某事件的发生(比如等待socket连接、等待信号量),而被挂起。这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时(由外部中断触发、或由其他进程触发),对应的等待队列中的一个或多个进程将被唤醒。
不可中断睡眠:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指的并不是CPU不响应外部硬件的中断,而是指进程不响应异步信号。绝大多数情况下,进程处在睡眠状态时,总是应该能够响应异步信号的。但是有延迟
可中断:interruptable
不可中断:uninterruptable,不可中断,指的并不是CPU不响应外部硬件的中断,而是指进程不响应异步信号。
停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped
僵死态:zombie,结束进程,父进程结束前,子进程不关,不可被kill, 即不响应任务信号, 无法用SIGKILL杀死
7.进程分类
CPU-Bound:cpu密集型,对CPU占用大,非交互式
IO-Bound:io密集型,对io占用大,交互式
三.进程管理查看工具(pstree,ps,pgrep)
Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
1.pstree:进程树查看
pstree常用选项:-p,打印进程PID
2.ps:查看当前进程状态
ps -ef:以完整格式显示所有的进程信息(-e:显示所有进程,-f:显示完整格式的进程信息)
说明
UID:启动进程用户
PID:运行进程号
PPID:父进程的进程号,0在内核启动init之前存在,init启动后终止,存在过渡,一般为swap的进程
C:cpu utilization,CPU的占用百分比
STIME:启动时间
TTY:与其终端相关
TIME:累计运行CPU时间
CMD:启动此进程的命令
ps -eFH:树状层级结构显示(-H:以层级(树状)结构显示进程的相关信息)
F比f显示的信息更加全面,层级结构显示,缩进相同同层级
PSR:运行在哪颗CPU上,十进制编号,0/1/2/3
3.pgrep:
pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。
pgrep -U root:显示以root用户身份运行的进程的ID(-U UID:仅显示由指定用户身份运行的进程PID)
标签:linux进程
原文地址:http://blog.51cto.com/13570227/2090770