关闭

现代操作系统笔记之 进程

发表于:2013-8-06 09:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:YetToCome    来源:51Testing软件测试网采编

  进程:对正在运行程序的一个抽象

  对于只有一个用户的PC,当启动系统时,会同时启动许多进程,而CPU则在这些进程之间进行切换。严格的说,在某一瞬间,CPU只能运行一个进程,而在1秒内,它可以运行多个进程,这就造成了并行的错觉,称为伪并行。用于描述并行的概念模型称为顺序模型。

  1.进程模型

  计算机上所有可运行的软件,包括操作系统,被组织成若干顺序进程。一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量。每个进程有自己的虚拟CPU,而真正的CPU则在各个进程间进行切换,这种快速的切换称为多道程序设计。

  在第一张图中,4个进程每一个都有自己的控制流程,独立的运行。而由于只有一个物理程序计数器,每个程序运行的时候,它的逻辑程序计数器就会被装入到物理程序计数器中,当程序执行暂停时,物理程序计数器就会被保存在逻辑程序计数器中,每一时刻只有一个进程在运行。

  关键思想:一个进程是某种类型的一个活动,它有程序输入、输出以及状态。单个处理器可以被若干程序共享,它使用某种调度算法决定何时停止一个进程的工作,并转为为另一个进程提供服务。

  如果一个进程运行了两遍,那他就算作两个进程。

  2.创建进程

  四种事件导致进程创建:

  1、系统初始化(前台进程、后台进程)

  2、执行了正在运行的进程所调用的进程创建系统调用(系统调用创建新的进程)

  3、用户请求创建一个新进程(交互式系统中启动程序)

  4、一个批处理作业的初始化(提交批处理任务)

  所有情形中新进程都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的。

  UNIX:fork指令用来创建,这个系统调用用来创建一个与调用进程相同的副本,这两个进程拥有相同的存储映像、同样的环境字符串和同样的打开文件,然后,子进程执行execve修改存储映像并运行新的程序。之所以需要两部来完成这个创建过程,是为了在fork之后在execve之前允许该子进程处理其文件描述符,这样可以完成对标准输入、标准输出和标准出错的重定向。

  Windows:调用CreateProcess创建进程,把程序装入进程,与UNIX恰好相反,一开始的子进程与父进程就不同。

  3.进程的终止

  进程终止通常由以下原因造成:

  1、正常退出(自愿的):工作完成,通知操作系统

  2、出错退出(自愿的):可处理的错误,一般不退出,要求用户再试一次

  3、严重错误(非自愿):程序中的错误所致

  4、被其他进程杀死(非自愿):系统调用

  4.进程的层次结构

  父进程创建子进程,子进程可以创建孙子进程,等等等等,然后这些进程可以保持一定的联系,这些进程就构成了进程的层次结构。

  UNIX中,进程和它所有的后裔组成一个进程组,可以完成某项特定的任务(如键盘输入、init初始化)。

  Windows中没有层次概念,创建进程的时候,父进程得到句柄,句柄可以用来控制子进程,且能够传给其他进程。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号