操作系统9-进程和系统调度(II)

来源:互联网 发布:c语言角度转弧度 编辑:程序博客网 时间:2024/06/02 07:15

进程的创建

 

操作系统通常是提供库来创建进程。一般有两种模式去创建进程。在Unix社区进程创建有2个函数:fork(2c)exec(2c).在Unix大部分进程创建都是通过shell。shell是用户和操作系统互动的中间点。当一个命令(不是shell的一部分)输入,shell会产生(fork)一个进程。

 

 

fork(2c)是unix系统调用(在libC库),它允许复制自己。当调用fork时,会产生一个与父进程一样的子进程。它从父进程处继承了整个进程的地址空间,包括进程上下文、进程堆栈、内存信息等。父进程与子进程并发同时运行。可以通过fork返回来判断是否子程序。如果返回0,表示运行在子进程,大于0运行在父进程。

 

另外一个系统调用是exec(2c),把一个新程序装入调用进程的内存空间,来改变调用进程的执行代码,从而形成新进程。调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新的进程,但是它的进程标识符与调用进程相同。exec没有建立一个与调用进程并发的新进程,而是用新进程取代了原来的进程。

 


如图,Shell用fork来创建一个新的进程,然后用exec来加载程序的内容。

 

Windows MacOS X

 

MacOSXUnix/ Posix基本是一致,windows是有一点不同的。在Windows(NT)你可以用Unix的语法或者用方法CREATEPROCESS。Windows术语也与Unix不一样。

 

任务,就是进程。

进程,资源的容器。

 

进程的阶层

 

就像文件系统一样,操作系统也把进程定义它的规则。当创建一个进程,这个进程叫子进程,操作系统会把子进程和父进程关联起来的。子进程通常会获得父进程资源的子集。

 

当Unix启动,通常会启动init进程。init进程的任务就是衍生(spawn)其他服务的进程。例如:

 


 

ps命令可以查看的打牌PID(ProcessID'sPPID(ParentProcessID

 

 

参考:

 

 

Linux中的用fork如何由一个父进程创建同时多个子进程),http://www.dnxxj.com/questions/475766b9bb95dd/Linux中的用fork%28%29如何由一个父进程创建同时多个子进程.html

 

WINDOWS任务管理器是怎么工作的),http://www.dnxxj.com/questions/475792f3a7a83d/WINDOWS任务管理器是怎么工作的?.html

0 0
原创粉丝点击