程序的一次执行实例

程序文件保存指令与初始资料,进程则包含执行这些指令时的当前状态。运行同一个编辑器两次,可以建立不同进程;它们即使来自相同代码,也可能打开不同文件并处在不同执行位置。系统用进程标识和相关记录管理这种实例,而不是只根据程序文件名称区分它们。

参考:[1]

需要保存哪些状态

进程的执行位置、寄存器、地址空间及所用资源共同描述它正在做什么。操作系统在切换时保存必要信息,恢复时让执行从相应位置继续。运行、就绪与等待等状态帮助系统区分能够使用处理器的活动,以及必须先等输入、设备或其他条件的活动。

参考:[2]

创建与资源继承

Unix式fork创建子进程,并规定哪些状态被复制、哪些资源引用由父子继承。现代实现可以先共享物理页面,在需要写入时再复制;应用看到的地址空间规则与实际复制时机因而能够分开。创建进程也需要处理失败情况,不能把系统接口调用当作无限资源的来源。

参考:[1]

隔离与协作

独立地址空间帮助分隔进程的数据,但进程仍可通过管道、套接字或共享内存协作。哪些资源能够共享、怎样同步,以及进程退出后谁取得状态,都由接口与协议规定。进程是资源和执行管理的重要边界,同时也可以包含多个线程,使同一应用在边界内继续组织并发工作。

参考:[2]