1概念
1.1程序与进程
程序: 2进制文件占用磁盘空间
进程: 启动的程序;1:所有数据都在内存中 2:需要占据更多的物理资源(CPU 物理内存)3:资源分配最小单位
例如:
如果程序是棋谱,进程就是棋士复盘;
程序是静的,进程是动的。
1.1.2从程序到进程
内核将程序读入内存,为程序镜像分配内存空间。
内核为该进程分配进程标志符PID。
内核为该进程保存PID及相应的进程状态信息。
1.2并发 并行
No. | 概念 | 状态 | 硬件 | 特点 |
---|---|---|---|---|
1 | 并发(concurrency) | 两个或者多个进程在同时存在 | 单核 | 进程指令同时或者交错执行。 |
2 | 并行(parallellism) | 两个或者多个进程在同时执行 | 多核 | 一种特殊的并发 |
1.3进程控制块(PCB):保存进程控制信息
1:进程id(pid_t类型表示非负数整形)
2:进程状态
3:虚拟地址信息
4:进程要依赖一个终端
5:每一个进程中都有umask掩码
1.4进程状态
状态 | 含义 |
---|---|
1 就绪(Ready) | 进程已获得到除CPU以外的所有必要的资源,获得CPU立即执行 |
2 运行(Running) | 程序正在CPU上执行 |
3 阻塞(Blocked) | 等待某个事件发生而无法执行时,放弃CPU |
1.5程序格式ELF
ELF(Executable and Linkable Format)文件格式,一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。
查看程序(ELF文件): readelf -S 文件名
查看进程空间大小: size 文件名
1.6虚拟存储器/虚拟地址空间
段名 | 组成 | 来源 |
---|---|---|
代码段 | .text | 可执行文件 |
数据段 | .data bss | 可执行文件 |
堆栈段 | heap stack | 请求 |
变量 | 位置 |
---|---|
经过初始化的全局变量和静态变量 | .data |
未经初始化的全局变量和静态变量 | .bss |
函数内部声明的局部变量 | stack |
const修饰的全局变量 | .text |
const修饰的局部变量 | stack |
字符串常量 | .text |
1.7如何查看进程:
OS | 命令 | e.g. |
---|---|---|
1 Windows | tasklist | tasklist /FI “PID eq 进程PID” |
2 Linux | ps / pstree / top | - |
1.6.1ps
查看某进程
通过进程PID查看:ps -p 进程PID
通过命令行查看:ps -C 命令行
查看进程
风格 | 命令 | 属性说明 |
---|---|---|
1 BSD风格 | ps aux | a: 终端上所有用户的进程;u:以用户为中心显示详细信息,x:无终端进程 |
2 System V风格 | ps -ef | e:所有进程;f:树状显示 |
查看某个进程:grep (查找) 最下面是grep进程
1.6.1.1BSD风格
No. | 标识 | 含义 |
---|---|---|
1 | USER | 用户 |
2 | PID | 进程ID |
3 | %CPU | 进程占用的CPU百分比 |
4 | %MEM | 占用内存的百分比 |
5 | VSZ | 进程虚拟大小 |
6 | RSS | 常驻内存(内存中页的数量) |
7 | TTY | 终端ID |
8 | STAT | 进程状态 |
9 | START | 启动进程的时间 |
10 | TIME | 进程消耗CPU的时间 |
11 | COMMAND | 命令的名称和参数 |
进程状态标识
No. | 标识 | 含义 |
---|---|---|
1 | D | 不可中断Uninterruptible(usually IO) |
2 | R | 正在运行,或在队列中的进程 |
3 | S | 处于休眠状态 |
4 | T | 停止或被追踪 |
5 | Z | 僵尸进程 |
6 | W | 进入内存交换(从内核2.6开始无效) |
7 | X | 死掉的进程 |
8 | < | 高优先级 |
9 | n | 低优先级 |
10 | s | 包含子进程 |
11 | + | 位于后台的进程组 |
PPID 父进程 PGID进程组 SID绘画ID
1.6.2pstree命令
以树状图的方式展现进程之间的派生关系
1.6.3top命令
实时显示系统中各个进程的资源占用,类似Windows任务管理器
Linux一切皆文件,在/proc/下也可以查看到进程。
1.8如何创建进程
No. | OS | 命令 |
---|---|---|
1 | Windows | 程序名 |
2 | Linux | 程序名 |
1.9如何杀死进程
No. | OS | 命令 |
---|---|---|
1 | Windows | taskkill /F /PID 进程标识/taskkill /F /IM 程序名 |
2 | Linux | kill 进程标识PID |