fork示例
编译并运行这个程序: $gcc -o fork_test fork_test.c $./fork_test PID before fork():1991 I am the parent process, my process ID is 1991 I am the child pro world. hello wold. 再运行一遍,输出结果可能不同。 读者考虑一下为什么?
进程介绍-进程状态
一般操作系统中进程有三个最基本的状态 运行态
阻塞态
就绪态
进程控制块
为了描述和控制进程的运行,系统为每个进程定 义了一个数据结构 —进程控制块 (process control block,PCB),它是进程实体的一部分,是操作系统 中最重要的记录型数据结构。 进程控制块中记录了操作系统所需的、用于描述 进程当前情况以及控制进程运行的全部信息。操作系 统是根据进程控制块来对并发执行的进程进行控制和 管理的。
进程
进程介绍
进程控制块
进程的组织方式
进程调度 进程的创建
与进程相关的系统调用及其应用 与调度相关的系统调用及应用
并行与并发
现代计算机系统提供多道程序运行环境,这种环境可以由 多处理器结构构成,也可以由单处理器结构构成。 并行(Parallelism):多个程序在不同的处理器上同时运行。 并发(Concurrency):多个程序在单个处理器上按照一定 规则进行切换, 轮流运行。由于切换迅速,给用户的感觉 是每个用户独占自己的cpu,宏观上面看起来并行。
fork示例
#include <stdio.h> main() { int pid; /*此时仅有一个进程*/ printf(“PID before fork():%d\n”,(int)getpid()); pid=fork( ); /*此时已经有两个进程在同时运行*/ if(pid<0) printf("error in fork!"); else if(pid==0) printf("I am the child process, my process ID is%d\n",getpid()); else printf("I am the parent process, my process ID is%d\n",getpid()); printf(“hello world.\n”); }