第2章 进程和线程
2.1 进 程 概 念 2.2 进程的状态和组成 2.3 进 程 管 理 2.4 线 程 2.5 进程的同步和通信 2.6 经典进程同步问题 2.7 管程 2.8 进程通信 2.9 Linux的进程管理
2.1 进 程 概 念
2.1.1程序的顺序执行和并发执行
• 程序的执行有两种方式:顺序执行和并发执行。
A:
… N=N+1; …
B:
… printf(“%d”,N);
N=0;
…
3
(1) N=N+1在Print(N)和N=0之前,此时得到的N值分别
为n+1, n+1, 0。
(2) N=N+1在Print(N)和N=0之后,此时得到的N值分别 为n, 0, 1。 (3) N=N+1在Print(N)和N=0之间,此时得到的N值分别 为n, n+1, 0。
序文件中通常也划分了代码段和数据段,而核心段通常就是 OS核心(由各个进程共享,包括各进程的PCB)
8
2.1.2 进程概念
进程和程序的区别 :
• 进程是动态的,程序是静态的:程序是有序代码的集合;
进程是程序的执行。通常进程不可在计算机之间迁移; 而程序通常对应着文件、静态和可以复制。 • 进程是暂时的,程序的永久的:进程是一个状态变化的 过程,程序可长久保存。 • 进程与程序的组成不同:进程的组成包括程序、数据和 进程控制块(即进程状态信息)。 • 进程与程序的对应关系:通过多次执行,一个程序可对
26
}
2.3.3 进程终止
(1)正常终止 (2)异常结束
① 越界错误 ② 保护错 ③ 非法指令 ④ 特权指令错 ⑤ 运行超时 ⑥ 等待超时 ⑦ 算术运算错 ⑧ I/O故障