码迷,mamicode.com
首页 > Windows程序 > 详细

操作系统 - unix和windows下进程异同

时间:2017-06-24 19:41:51      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:程序   win32   进程   文件   进程组   标准   它的   handle   不同的   

        在UNIX系统中,仅仅有一个系统调用能够用来创建新进程:fork。这个系统调用会创建一个与调用进程相同的副本。

在调用了fork之后。这两个进程(父进程和子进程)拥有相同的存储映像、相同的环境字符串和相同的打开文件。

这就是所有情形。同城,子进程接着运行execve或一个类似的系统调用,以改动其存储映像并运行一个新的程序。比如,当一个用户在shell中键入命令时,shell就创建一个子进程,然后,这个子进程运行sort。

之所以要安排两步建立进程,是为了在fork之后但在execve之前同意该子进程处理其文件描写叙述符,这样能够完毕对标准输入、标准输出和标准出错的重定向。

        在windows中,情形正相反。一个Win32函数调用CreatProcess既处理进程的创建,也负责把正确的程序装入新的进程。

该调用有10个參数,期中包含要运行的程序、输入给该程序的命令行參数、各种安全属性、有关打开的文件是否继承的控制位、优先级信息、为该进程(若有的话)所须要创建的窗体规格以及指向一个结构的指针,在该结构中新创建进程的信息被返回给调用者。

除了CreateProcess。Win32中有大约100个其它的函数用于处理进程的管理、同步以及相关的事物。

        在Unix和Windows中。进程创建之后,父进程和子进程有各自不同的地址空间。

假设当中某个进程在其地址空间中改动了一个字,这个改动对其它进程而言是不可见的。

在UNIX中,子进程的初始地址是父进程的一个副本,可是这里涉及两个不同的地址空间,不可写的内存去是共享的(某些UNIX的实现使程序征文在两者间共享,由于它不能被改动)。可是。对于一个新创建的进程而言,确实有可能共享其创建者的其它资源。诸如打开的文件等。在Windows中,从一開始父进程的地址空间和子进程的地址空间就是不同的。


        在UNIX中,进程和它的全部子女以及后裔project组成一个进程组。

        相反,Windows中没有进程层次的概念,全部的进程都是地位同样的。唯一类似于进程层次的暗示是在创建进程的时候。父进程得到一个特别的令牌(成为句柄handle),该句柄能够用来控制子进程。可是,它有权把这个令牌传给某个其它进程。这样就不存在进程层次了。在UNIX中,进程就不能剥夺其子女的“继承权”。

操作系统 - unix和windows下进程异同

标签:程序   win32   进程   文件   进程组   标准   它的   handle   不同的   

原文地址:http://www.cnblogs.com/gavanwanggw/p/7074118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!