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

在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中,进程就不能剥夺其子女的“继承权”。

时间: 2024-10-08 09:44:50

操作系统 - unix和windows下进程异同的相关文章

【转】操作系统Unix、Windows、Mac OS、Linux的故事

电脑,计算机已经成为我们生活中必不可少的一部分.无论是大型的超级计算机,还是手机般小巧的终端设备,都跑着一个操作系统.正是这些操作系统,让那些硬件和芯片得意组合起来,让那些软件得以运行,让我们的世界在科技的领域里一次又一次的享受生活 我们熟知的操作系统大概都是windows系列,近年来Apple的成功,让MacOS也逐渐走进普通用户.在服务器领域,恐怕Linux是无人不知无人不晓.他们都是操作系统,也在自己的领域里独领风骚.这都还得益于另外一个古董级别的操作系统--Unix,虽然说古董级别,只是

windows下进程与线程剖析

进程与线程的解析 进程:一个正在运行的程序的实例,由两部分组成: 1.一个内核对象,操作系统用它来管理进程.内核对象也是系统保存进程统计信息的地方. 2.一个地址空间,其中包含所有可执行文件或DLL模块的代码和数据.此外,它还包含动态内存分配,比如线程堆栈和堆的分配. 进程要做任何事情,都必须让一个线程在它的上下文中运行.该线程负责执行进程地址空间包含的代码.事实上,一个进程可以有多个线程,所有线程都在进程的地 址空间中"同时"执行代码.为此,每个线程都有它自己的一组CPU寄存器和它自

操作系统Unix、Windows、Mac OS、Linux的故事

文章转自:http://blog.csdn.net/wenmingchan/article/details/49925379 http://www.jb51.net/os/other/159236.html 我们熟知的操作系统大概都是windows系列,近年来Apple的成功,让MacOS也逐渐走进普通用户.在服务器领域,恐怕Linux是无人不知无人不晓.他们都是操作系统,也在自己的领域里独领风骚.这都还得益于另外一个古董级别的操作系统--Unix,虽然说古董级别,只是他年纪大了,性能和功能,U

python通过wmi获取windows下进程的信息

linux应该有很多方法可以获取进程的cpu和内存信息,但windows貌似之前接触的是psutil,后来查了一些资料发现wmi也能够获取进程的信息,但貌似效率不太高,应该可以做监控等性能要求不太高的情况 下载wmi,这个网上很多方法和途径,我是用easyinstall来安装,这个不详细说明了 直接附上代码: import wmi from win32com.client import GetObject import win32gui,time mywmi = GetObject("winmg

Windows下如何枚举所有进程

Windows下如何枚举所有进程 Posted on 13:37:00 by 晓月 and filed under Coding, Windows, Windows Mobile 要编写一个类似于 Windows 任务管理器的软件,首先遇到的问题是如何实现枚举所有进程.暂且不考虑进入核心态去查隐藏进程一类的,下面提供几种方法.请注意每种方法的使用局限,比如使用这些 API 所需要的操作系统是什么(尤其是是否能在 Windows Mobile 下使用). 本文参考用户态枚举进程的几种方法,原文对于

windows下 管理员身份启动java进程

winXp,win2003等老操作系统没有区分管理员身份启动cmd运行程序, win vista,7之后的windows操作系统都有是否以管理员身份启动cmd运行程序.官方的说法是为了安全性.java 项目主服务另外启动一个进程一般用 Runtime.getRuntime().exec(command)来启动. xp,2003系统中一般不会有问题, win7之类的就会提示权限不够,必须以管理员身份运行程序. 查了下,可以通过nircmd这个工具来执行,官网下载zip(http://www.nir

c++ 网络编程(四)TCP/IP LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613861.html 好了,继上一篇说到多进程服务端也是有缺点的,每创建一个进程就代表大量的运算与内存空间占用,相互进程数据交换也很麻烦. 本章的I/O模型就是可以解决这个问题的其中一种模型...废话不多说进入主题-- I/O复用技术主要就是select函数的使用. 一.I/O复用预备知识--select()函数用法与作用 select()用来确定一个或多个套接字的状态(更为本质一点来讲是文

SecureCRT是最常用的终端仿真程序,简单的说就是Windows下登录UNIX或Liunx服务器主机的软件,本文主要介绍SecureCRT的使用方法和技巧

VanDyke CRT 和 VanDyke SecureCRT是最常用的终端仿真程序,简单的说就是Windows下登录UNIX或Liunx服务器主机的软件.二者不同的是SecureCRT支持SSH(SSH1和SSH2). 1 #!/usr/bin/perl 2 3 use strict; 4 use warnings; 5 use 5.01; 6 7 8 9 sub license { 10 print "\n". 11 "License:\n\n". 12 &qu

windows下bat批处理实现守护进程(有日志)

开发部的一个核心程序总是会自己宕机,然后需要手工去起,而这个服务的安全级别又很高,只有我可以操作,搞得我晚上老没法睡,昨晚实在受不了了,想起以前在hp-ux下写的shell守护进程,这回搞个windows下的bat版守护程序吧,当时晚上思路已经很迟钝了,就叫了个兄弟让他写了,上去后运行效果不错,至少昨晚我安心睡了7小时. 早上来把程序改完善一些,增加了记录等功能. 实现: 检查是否有notepad,要用的话就算成自己的进程名,如果进程宕了就过会自动重启(会在当前目录下生成一个start.bat)