进程与程序
- 程序通常时一个静态的可执行文件。
- 进程是程序运行动态体现。
- 在 windos 下可执行文件类型是 exe;通常在 Linux 下可执行文件类型是 ELF,Linux 中可执行文件没有固定后缀。
- 进程是系统管理的最小单位。
ELF 格式文件类型
- 可执行文件
- 可重定位文件:.o .a (静态库)
- 共享目标文件:.so (动态链接库)
- 核心转储文件:.dump
// 查看可执行文件 a.out 的头部信息
readelf -h a.out
struct task_struct 结构体位置:
/usr/src/linux-headers-4.15.0-142-generic/include/linux/sched.h
pstree // 查看系统进程树
ps -ef // 查看系统中当前进程
top - H // 动态查看系统中当前进程
htop // 动态查看系统中当前进程 (需要自行安装插件)
//sudo apt-get install htop
init 属于整个系统中最顶层的进行 (没有父进程)
其余进程都有父进程
进程组、对话期、终端
- 进程
- 每运行一个程序就会有一个进程
- 进程组
- 进程组实际上一组进程,是为了方便多个关联进程的管理。
- 每个进程组也都拥有一个组 ID,通常会使用进程组中所有进程 PID 最小的那个进程当成进程组组长。
- 如果进程组的组长进程优先退出,当前进程组依旧存在不受影响,直到组内所有进程全部退出之后,进程组才会消亡。
- 如果进程组的组长进程优先退出,不会有新的进程晋升为组长,我们依旧使用原进程组组长创建的组 ID 来管理当前进程组。
- 进程必定属于某一个进程组,且只能属于一个进程组。
- 对话期 (会话期)
- Linux 是多用户多任务操作系统
- 当一个用户登录一次系统时就会形成一个会话
- 每个会话也有一个领导
- 一个会话可以拥有多个进程组
- 通常只能有一个前台进程组
- 一个会话可以有一个控制终端
- 一个会话中应该包括控制进程 (会话首进程)、一个前台进程组和任意个后台进程组
- 终端
- Linux 中通常说的终端就是一个与用户交互的命令窗口
- 每打开一个命令终端就会有自己的前台工作和后台工作。