进程运行的5种状态
学习的视频
初始态,终止态,就绪态 和 挂起态, 挂起是指的是阻塞 ,进程放弃了 CPU 的执行权限。
我们知道 ,每个进程在内核中都有一个 进程控制块 (PCB) 来维护进程相关的信息,Linux 内核的进程控制块是 task_struct 结构体
/user/src/linux-headers-3.16.0-30/include.linux/sched.h 文件中可以查看 struct task_struct 结构体定义。 其内部成员有很多,我们重点掌握以下部分即可
- 进程 id,每个进程都有独立 id , c语言中用 pid_t 类型表示
- 进程状态,就绪,运行,挂起,停止
- 进程切换时候需要保存和恢复一些 CPU 寄存器
- 描述虚拟地址空间的信息
- 描述控制终端的信息
- 当前工作目录 (current working direcctory)
- umask 掩码
- 文件描述符表, 包含指向file 结构体的指针
- 信号相关信息
- 用户id 和 组id
- 进程可以使用的资源上限数 【可以用
ulimit -a
查看系统当前的配置】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
ulimit -a
:<<EOF
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 76665
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 76665
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
EOF
:<<EOF
我们可以看到 open files 1024 表示默认 最大打开的文件是 1024 , 前面我们也有讲过, 文件描述符表就是一个数组,默认长度 1024, 同时打开的文件超过 1024 就会有错误的。
EOF
|
进程的环境变量
1
2
3
4
5
|
echo $LANG
echo $HOME
# 通过这些可以查看我们配置的环境变量在哪里
echo $PATH
|
进程里面有一块单独的区域存储环境变量的参数