下载后可任意编辑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,指向栈中一个函数的 local变量的首地址), AP(augument pointer,指向栈中函数调用的实参位置), ISP(interrupt stack pointer,中断栈指针), 以及其他的通用寄存器等. 3)系统层次的保存: 包括 proc,u,虚拟存储空间管理表格,中断处理栈.以便于该进程再一次得到 CPU 时间片时能正常运行。 既然系统已经处理好所有这些中断处理的过程, 我们做程序还有什么要担心 的呢? 我们尽可以使用系统提供的多进程的特点, 让几个程序精诚合作, 简单而又高效地把结果给它搞出来。下载后可任意编辑另外,UNIX 系统本身也是用 C 语言写的多进程程序,多进程编程是 UNIX 的特点,当我们熟悉了多进程?将会对 UNIX 系统机制有一个较深的认识.首先我介绍一下多进程程序的一些...