进程管理(一)-进程的概念以及进程的创建
进程
什么是进程?
程序一旦跑起来就是一个进程,进程是一个可以运行的实例。
每个进程都拥有一个自己的虚拟CPU,但是实际上只有一个CPU,其只是在各个进程之间快速的切换,这种快速切换就叫做多道程序设计
进程和程序有什么区别?
例子:一个计算机科学家给女儿做蛋糕,他有做蛋糕用的食谱,厨房中有大量的原料,比如香草、鸡蛋、面粉、糖等等。其中食谱就是程序,它就是一种方法。计算机科学家就是CPU,做蛋糕的原料就是数据。
进程就是厨师阅读食谱,并取来各种原料再到烘焙蛋糕等一系列动作的总和。
进程就是cpu获取数据,按照程序执行等一系列过程的总和,它是动态的。程序是静态的,它是类似一种方法说明书的东西。
进程的中断:现在计算机科学家的儿子跑进来说被蜜蜂蜇了(更高优先级的事情发生了),计算机科学家会先记录现在蛋糕做到哪里了(保存进程当前的状态),转而去处理儿子的伤势,当处理完儿子的伤势之后,再返回来继续做蛋糕,按照之前保存的状态继续做蛋糕。
注意的是一段程序执行了两次的话算两个进程。
创建进程
创建进程的原因
导致进程被创建的四种原因:
1.系统初始化
启动操作系统的时候会创建多个进程,其中有的是前台的进程,除此之外就是后台的进程,这种进程被称为守护进程,其大部分的时间都在休眠,只有在发生特定的事件的时候才被调用。比如等待接收邮件的程序。
2.正在运行的进程所调用的进程创建系统调用
已经启动的进程,可以调用系统调用,来创建一个进程来帮助它更好的干活。比如有这么一个网络应用程序,它要和大量数据打交道,那么创建一个进程来帮他把数据放到指定区域,而再让另外一个进程取走并处理,这样会更好,因为有人帮忙总比没有人帮忙好。
3.用户请求创建一个新的进程
用户在cmd窗口敲入一个命令,或者用户双击图标,都可以启动一个程序,于此同时会启动一个进程。
4.一个批处理作业初始化
这种情况主要在大型机的批处理系统中的应用,用户朝系统提交批处理作业,操作系统认为现在的资源足够可以创建一个进程的时候,它就会创建一个进程。
UNIX和Windows创建进程
UNIX创建进程
unix系统中只有一个系统调用可以用来创建新的进程,就是fork命令。
Windows创建进程
一个win32函数调用CreateProcess不但处理进程的创建,也负责把正确的程序装入新的进程。
父进程和子进程的空间
进程创建之后,父进程和子进程是有不同的地址空间的,如果某个进程在地址空间修改了一个字,那么其对其子进程来说是不可见的。