ch6 Linux进程管理.pdf
文本预览下载声明
进程管理
本章内容
本章内容:
Linux进程概念
进程控制块task_struct结构
Linux进程的创建
Linux进程调度
1.2
进程概念
Linux是一个多任务多用户操作系统。
一个任务(task)就是一个进程(process)。每一个进程都具
有一定的功能和权限,它们都运行在各自独立的虚拟地址
空间。
在Linux中,进程是系统资源分配的基本单位,也是使用
CPU运行的基本调度单位。
Linux进程与传统UNIX进程的概念没有多大区别。没有真
正意义上的线程概念。但Linux通过clone()系统调用支持
轻量级(Lightweight process)进程(线程),两个轻量级进
程可以共享如地址空间、打开文件等资源;
Linux还支持内核线程,内核线程永远在核心态运行,没
有用户空间。
1.3
进程概念
Linux中运行ps命令,你能得到当前系统中进程的列表,
比如:
$ ps x
PID TTY STAT TIME COMMAND
1668 tty1 Ss 0:00 -bash
3201 tty1 S+ 0:00 xinit
3206 tty1 S 0:00 twm
3209 tty1 R 0:02 xterm
3211 pts/0 Ss 0:00 bash
3486 pts/0 S 0:00 xeyes
4392 ? Ss 0:00 gvim
4400 pts/0 R+ 0:00 ps x
pstree
1.4
Linux进程的组成
存放在磁盘上的可执行文件的代码和数据的集合称为可执行
映象(Executable Image)。
当一个程序装入系统中运行时,它就形成了一个进程。
进程是由正文段(text)、用户数据段(user segment)和系统
数据段、堆栈段(system segment)组成的一个动态实体。
正文段中存放着进程要执行的指令代码,具有只读的属性。
用户数据段是进程在运行过程中处理数据的集合,它们是进程直接
进行操作的所有数据, 以及进程使用的进程堆栈。
系统数据段存放着进程的控制信息。其中包括进程控制块PCB。
1.5
Linux进程状态
task_struct结构中定义:
volatile long state
long exit_state;
用于表示进程的状态
前者表示用来表征进程的可运行性,
后者表征进程退出时候的状态。
1.6
Linux进程状态
include/linux/sched.h (2.6.15 )
114 /*
115 * Task state bitmask. NOTE! These bits are also
116 * encoded in fs/proc/array.c: get_task_state().7
117 *
118 * We have two separate sets of flags: task-state
显示全部