下载后可任意编辑C 语言多进程编程 一
多进程程序的特点 进程是一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动,是处于活动状态的计算机程序
进程作为构成系统的基本细胞,不仅是系统内部独立运行的实体,而且是独立竞争资源的基本实体
进程是资源管理的最小单位,线程是程序执行的最小单位
进程管理着资源(比如 cpu、内存、文件等等),而将线程分配到某个 cpu 上执行
在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持多处理器系统和减小上下文切换开销
进程的状态 系统为了充分的利用资源,对进程区分了不同的状态
将进程分为新建,运行,堵塞,就绪和完成五个状态
新建 表示进程正在被创建,运行 是进程正在运行,堵塞 是进程正在等待某一个事件发生,就绪 是表示系统正在等待 CPU 来执行命令,完成 表示进程已经结束了系统正在回收资源
由于 UNIX 系统是分时多用户系统, CPU 按时间片分配给各个用户使用,而在实质上应该说 CPU 按时间片分配给各个进程使用, 每个进程都有自己的运行环境以使得在 CPU 做进程切换时不会"忘记"该进程已计算了一半的"半成品”
以 DOS 的概念来说, 进程的切换都 是一次"DOS 中断"处理过程, 包括三个层次: 1)用户数据的保存: 包括正文段(TEXT), 数据段(DATA,BSS), 栈段(STACK), 共享内存段(SHARED MEMORY)的保存
2)寄存器数据的保存: 包括 PC(program counter,指向下一条要执行的指 令的地址), PSW(processor status word,处理机状态字), SP(stack pointer,栈指针), PCBP(pointer of process control block,进程控制块指针), FP(frame pointer,指向栈中一个