1
程序是代码和数据的可执行映像,是静止的
进程:执行中的程序,是动态的。
2
进程四要素:
(1)一段程序供其执行。
(2)有进程专用的《内核空间堆栈》。
(3)在内核中有一个task_struct数据结构
(4)有独立的用户空间。
3
进程描述
在Linux中,线程、进程都使用struct task_struct来表示,它包含了大量描述线程/进程的信息。
pid_t pid;//进程号
4
经典三态:就绪、执行、阻塞
进程状态:
TASK_TUNNING//正在被CPU执行,或者准备就绪,随时可以执行。
TASK_INTERRUPTIBLE;//处于等待中的进程,等待条件为真时被唤醒,也可以被信号或者中断唤醒。
TASK_UNINTERRUPTIBLE;//处于等待中的进程,等待资源有效时唤醒,但不可以由其他进程通过信号(signal)或中断唤醒。
TASK_STOPPED;//进程终止执行。当接收到SIGSTOP和SIGTSTP等信号时,进程进入该状态。
5
TASK_KILLABLE;//进程睡眠状态,类似TASK_UNINTERRUPTBLE,到可以被致命信号(SIGKILL)唤醒
TSK_TRACED//正处于被调试状态的进程
6
进程状态
int exit_state/*进程退出时的状态
EXIT_ZOMBID//僵死进程,进程执行被终止,但还没有发布waitpid()系统调用来收集有关死亡的进程信息。
EXIT_DEAD//僵死撤销状态,父进程已经使用wait4()或waitpid()系统调用来收集信息,因此进程将由系统删除
7
进程描述
struct_mm_struct*mm
进程用户空间描述指针,内核线程该指针为控,因为他没有用户空间
8
unsigned int policy 该进程的调度策略
int prio优先级