# 第四章 进程及其管理
## 4.1 进程概念
> **进程可以看做程序的执行过程。**在大多数计算机中,进程并发活动的单位。从进程观点出发,系统是由进程的集合体组成。
### 4.1.1 多道程序概念
#### 多道程序特点
1. **顺序性**
2. **封闭性**
3. **可再生**
#### 多道程序
**在内存中同时存放多道程序,他们在管理程序的控制下交替地在CPU上运行**
#### 程序并发的特征
1. **失去封闭性**
2. **程序与计算机不再一一对应**
3. **并发程序在执行期间相互制约**
### 4.1.2 进程概念
#### 定义
> 在60年代中期,美国麻省理工学院首先提出的,**进程定义指程序在并发环境中的执行过程**
#### 进程的基本特征
1. **动态性**
2. **并发性**
3. **调度性**
4. **异步性**
5. **结构性**
## 4.2 进程状态
### 4.2.1 进程的基本状态
**至少三种基本状态**
1. **运行态:程序正在处理机上执行**
2. **就绪态:进程已具备运行条件,但因为其它进程正占用CPU,所以**
**暂时不能运行而等待分配CPU的状态。**
3. **阻塞态:进程因等待某事件发生(例等待某一输入、输出操作完成,等待其它进程发来的信号等)而暂时不能运行的状态。**
### 4.2.2 进程状态转换


### 4.2.3 进程族系

## 4.3 进程管理命令
### 4.3.1 查看进程状况
#### ps
**一般格式**
```linux
ps [option]
```
**说明**
列出每个与你当前shell有关的进程的基本信息
**参数**
- **-A 列出所有的行程**
- **-E 显示所有进程的信息。等价于-A**
- **-F 显示进程的所有信息**
- **-L 以长格式显示**
- -w 显示加宽可以显示较多的资讯
- -au 显示较详细的资讯
- **-aux 显示所有包含其他使用者的行程**
- au(x) 输出格式 :
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- **PID: pid 进程标识**
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- **TTY: 终端的次要装置号码 (minor device number of tty)|该进程建立时所对应的终端。"?"标识该进程不占用终端。**
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- **R: 正在执行中**
- **u 显示面向用户的格式(包括用户名、CPU、及内存使用情况等信息)**
- **S: 静止状态**
- **x: 显示所有程序,不以终端机来区分。**
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 行程开始时间
- **TIME: 执行的时间**
- COMMAND|CMD:所执行的指令
#### Kill
**一般格式**
```linux
一般格式:kill [-s 信号|-p ] [-a] pid...
kill -l [信号]
```
**说明**
```
通过向进程发送指定的信号用来终止一个进程的运行。
```
#### Nice
**一般格式**
```linux
一般格式: nice [选项] [命令…]
```
**说明**
```
设定进程的优先数nice值。优先数越小,其优先级越高。
```
#### nohup
**一般格式**
```linux
一般格式: nohup 命令 [参数]...
```
**说明**
```
忽略挂起信号对命令的影响而继续运行指定命令(它可以带参数)
```
#### wait
**一般格式**
```linux
一般格式: wait [n] n可以是进程的ID或者作业描述符
```
**说明**
```
等待指定的进程,并返回其终止状态。
```
### 4.3.2 磁盘使用情况统计
#### df
**一般格式**
```
df [选项]... [FILE]...
```
**说明**
```
可以报告文件系统中未用磁盘空间的情况。按照默认,磁盘盘块以1k字节为单位。
```
#### du
**一般格式**
```
du [选项]...[目录名]...
```
**说明**
```
统计出每个目录占用磁盘空间的情况。该命令可以逐级进入每一个子目录并显示该目录的磁盘利用情况。
```
## 代码
**chvt**
```
切换终端
```
