Jupzmsmss.exe是什么进程啥进程

d:\xmpsetup_4.8.0.807-360.exe.p2p 是啥进程???_百度知道
d:\xmpsetup_4.8.0.807-360.exe.p2p 是啥进程???
我有更好的答案
偤懿淮砼叮
这是迅雷进程。
其他类似问题
p2p的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁init进程_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&init进程
描述init进程,它是启动的第一个用户级进程。init有许多很重要的任务,比如像启动getty(用于登录)、实现运行级别、以及处理孤立进程。本章解释了怎样配置init以及如何运用不同的运行级别。定&&&&义它是启动的第一个用户级进程用&&&&途用户登录
对于Linux系统的运行来说,init程序是最基本的程序之一。但你仍可以大部分的忽略它。一个好的Linux发行版本通常随带有一个init的配置,这个配置适合于绝大多数系统的工作,在这样一些系统上不需要对init做任何事。通常,只有你在碰到诸如串行终端挂住了、拨入(不是拨出)、或者你希望改变缺省的运行级别时你才需要关心init。
当启动了自己之后(已被装入内存、已经开始运行、已经初始化了所有的设备驱动程序和等等),通过启动用户级程序init来完成引导进程的内核部分。因此,init总是第一个进程(它的进程号总是1)。
在几个位置上来查寻init,这几个位置以前常用来放置init,但是init的最适当的位置(在Linux系统上)是/sbin/init。如果没有找到init,它就会试着运行/bin/sh,如果还是失败了,那么系统的启动就宣告失败了。
当init开始运行,它通过执行一些管理任务来结束引导进程,例如检查文件系统、清理/tmp、启动各种服务以及为每个终端和启动getty,在这些地方用户将登录系统。
在系统完全起来之后,init为每个用户已退出的终端重启getty(这样下一个用户就可以登录)。init同样也收集孤立的进程:当一个进程启动了一个子进程并且在子进程之前终止了,这个子进程立刻成为init的子进程。对于各种技术方面的原因来说这是很重要的,知道这些也是有好处的,因为这便于理解进程列表和图。init的变种很少。绝大多数Linux发行版本使用sysinit(由Miguel van Smoorenburg著),它是基于System V的init设计。UNIX的BSD版本有一个不同的init。最主要的不同在于运行级别:System V有而BSD没有(至少是传统上说)。这种区别并不是主要的。在此我们仅讨论sysvinit。 配置init以启动getty:/etc/inittab文件
当init启动后,init读取/etc/inittab配置文件。当系统正在运行时,如果发出HUP信号,init会重读它;这个特性就使得对init的配置文件作过的更改不需要再重新启动系统就能起作用了。 /etc/inittab文件有点复杂。我们将从配置getty行的简单情况说起。
etc/inittab中的行由四个冒号限定的域组成:
id:runlevels:action:process
下面对各个域进行了描述。另外,/etc/inittab可以包含空行以及以数字符号(’#’)开始的行;这些行均被忽略。
id 这确定文件中的一行。对于getty行来说,指定了它在其上运行的终端(设备文件名/dev/tty后面的字符)。对于别的行来说,是没有意义的(除了有长度的限制),但它必须是唯一的。
runlevels 该行应考虑的运行级别。运行级别以单个数字给出,没有。
action 对于该行应采取的动作,也即,respawn再次运行下一个域中的命令,当它存在时,或者仅运行一次。为了在第一个上(/dev/tty1)运行getty、在所有的正规多用户运行级别中(2-5),应该写入下面这行:
1:2345:respawn:/sbin/getty 9600 tty1
第一个域指出这是对应于/dev/tty1的行。第二个域说明它应用于运行级别2,3,4和5。第三个域是说在命令退出之后,应被再次执行(因此,用户可以登录、退出并且再次登录)。最后一个域是在第一个上运行getty的命令。
如果你需要给系统增加终端或者拨入线路,你应该给/etc/inittab增加更多的行,每一行对应一个终端或一条拨入线。详细信息,参见init、inittab以及getty的manual page。如果一个命令运行时失败了,并且init配置成重运行它,它会使用许多的:init运行它、它失败了、init再运行它、再次失败等等,没完没了。为了避免这样,init将追踪一个命令重运行了多少次,并且如果重运行的频率太高,它将被延时五分钟后再运行。
一个运行级别(run level)是init以及整个系统的状态,它定义了能够提供什么。运行级别用数字来定义,见表7-1。对于如何使用用户定义运行级别(2到5)没有一致的意见。有些使用运行级别来定义哪个子系统工作,也即,X是否能运行、网络是否能工作等等。其他人总是让所有子系统工作着或者单独地运行以及停止它们,而不改变它们的运行级别,因为运行级别对于控制他们的系统来说显得太粗率了。你必须自己决定,但是按照你的Linux发行版本的做法来做也许是最容易的了。
在Linux中初始化脚本在/etc/inittab 文件(或称初始化表)中可以找到关于不同运行级别的描述。其描述如下:
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 6 - reboot (Do NOT set initdefault to this)0 终止系统
1 单用户模式(用于特别管理)
2-5 正常操作(用户定义)
运行级别通过如下行所示的行在/etc/inittab中配置:
l2:2:wait:/etc/init.d/rc 2
第一个域是任意给的符号,第二个域指出是运行级别2。第三个域说明当进入该运行级别时,init应该运行第四个域中的命令一次,并且init应该等待它的结束。在进入运行级别2时,在需要时/etc/init.d/rc命令运行或者停止服务。第四个域中的命令做所有设置一个运行级别的艰巨工作。它启动还没有运行的服务,并且停止在新的运行级别中不应再运行的服务。确切的命令是什么以及运行级别是如何配置的,依赖于各个Linux发行版本。当init开始运行时,它在/etc/inittab中查寻一行,该行指定了缺省的运行级别:通过给一个single或emergency,你可以在init运行开始时转到一个非缺省的运行级别上。例如,可以通过LILO给出。这使得你可以选择单用户模式(运行级别 1)。当系统正在运行时,telinit命令可以改变运行级别。当运行级别改变时,init就运行/etc/inittab中相应的命令。
/etc/inittab中的特殊配置
/etc/inittab有些特殊的特性,它允许init对特别的环境作出响应。这些与众不同的特性在第三个域中由标出。一些例子如下:
powerwait 当系统电源失败时,允许init关闭系统。这里假设使用了UPS以及用于监视UPS和通知init电源失败的软件。
ctrlaltdel 当用户在控制台上按了ctrl-alt-del组合键时,允许init重新(启动)引导系统。注意,能够配置对ctrl-alt-del组合键的响应为其它的什么,例如,忽略它,如果系统是在一个公共的环境中(或者开始nethack。)
sysinit 当系统引导时要执行的命令。例如,这个命令通常是清理/tmp。
上面所列并不是全部。对于所有的以及如何使用它们请参见inittab的manual page。一个很重要的运行级别是单用户模式(single user mode)(运行级别1),在这个模式中只有在使用机器并且只有很少的在运行,如登录服务。对于一些管理任务来说单用户模式是必须的,如在/usr分区上运行fsck,因为这需要该分区没被加载,除非几乎所有的都被终止了,否则不可能会有这种情况。通过telinit请求运行级别1,一个运行着的系统可以转换到单用户模式。在启动时,可以通过在的命令行上给出single或emergency来进入单用户模式:内核同样也将命令行给init,init会理解那个单词并且不会使用缺省的运行级别。(命令行输入的方法依赖于系统是如何引导的。)在加载文件系统之前,引导进入单用户模式有时是需要的,这样就可以手工运行fsck命令了,否则的话很可能损坏/usr分区(在一个有问题的文件系统上的任何操作会更进一步地损坏它,所以fsck要尽早地运行)。如果启动时fsck的自动检查失败了,启动描述文件init就会自动地进入单用户模式。这是试图避免系统使用一个文件系统,这个文件系统损坏的太严重以至于fsck都不能够自动地修复它。这样的毁坏情况是相当少的,通常是硬盘有问题或是在试验一个,但是有准备总比没有好。作为一个安全措施,一个正确配置的系统应该在运行单用户模式的shell之前要求口令。否则的话,只要给LILO输入适当的一行参数就很容易地以root身份进入系统。(当然,如果由于文件系统的问题而使/etc/passwd毁坏时,就不是这样了。如果是这样的话,你手头最好有张引导。)
新手上路我有疑问投诉建议参考资料 查看进程管理_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&进程管理
进程是正在运行的实体,并且包括这个运行的程序中占据的所有,比如说CPU(),IO,,网络资源等。很多人在回答的概念的时候,往往只会说它是一个运行的实体,而会忽略掉进程所占据的资源。比如说,同样一个,同一时刻被两次运行了,那么他们就是两个独立的。linux下查看的命令是ps。注:Windows 8及其以上版本系统内“进程”则以应用程序名称呈现。类&&&&别计算机,电脑工程操&&&&作鼠标,键盘
并发和顺序程序有本质上的差别,为了能更好地描述程序的并发执行,实现操作系统的并发性和共享性,引入“”的概念。
是具有一定独立功能的关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
处理器是系统中最重要的资源。在现代系统中,为了提高系统的资源利用率,将为某一独占。通常采用设计技术,即允许多个程序同时进入系统的并运行![1]Csrss.exe:这是子系统服务器,负责控制Windows创建或删除以及16位的虚拟DOS环境。
System Idle Process:这个是作为运行在每个处理器上,并在系统不处理其它线程的时候分派处理器的时间。
Smss.exe:这是一个会话,负责启动用户会话。
Lsass.exe:本地的安全授权服务。
Explorer.exe:。
Spoolsv.exe:管理中的打印和作业。
Svchost.exe:这个要着重说明一下,有不少朋友都有这种错觉:若是在“”中看到多个Svchost.exe在运行,就觉得是有病毒了。其实并不一定,系统启动的时候,Svchost.exe将检查注册表中的位置来创建需要加载的服务列表,如果多个Svchost.exe同时运行,则表明当前有多组服务处于活动状态;多个DLL文件正在调用它。⑴ system process
文件: system process
: Windows处理
描述: Windows页面,拥有0级优先。
是否为: 是
⑵ alg.exe
进程文件: alg or alg.exe
描述: 这是一个服务用于网络共享。
是否为系统进程: 是
⑶ csrss.exe
进程文件: csrss or csrss.exe
:Runtime Server Subsystem
描述:服务子系统,用以控制Windows图形相关子系统。
是否为: 是
⑷ ddhelp.exe
进程文件: ddhelp or ddhelp.exe
: DirectDraw Helper
描述: DirectDraw Helper是DirectX这个用于图形服务的一个组成部分。
是否为系统进程: 是
⑸ dllhost.exe
进程文件: dllhost or dllhost.exe
: DCOM DLL Host进程
描述: DCOM DLL Host支持基于COM对象支持DLL以运行Windows。
是否为系统进程: 是
⑹ inetinfo.exe
进程文件:or inetinfo.exe
: IIS Admin Service Helper
描述: InetInfo是Microsoft Internet Infomation Services (IIS)的一部分,用于Debug调试除错。
是否为系统进程: 是
⑺ internat.exe
进程文件: internat or internat.exe
进程名称: Input Locales
描述: 这个输入控制图标用于更改类似国家设置、键盘类型和日期格式。
是否为系统进程: 是
⑻ kernel32.dll
进程文件: kernel32 or kernel32.dll
: Windows壳进程
描述: Windows壳用于管理多、和资源。
是否为系统进程: 是
⑼ lsass.exe
进程文件: lsass or lsass.exe
: 本地安全权限服务
描述: 这个本地安全权限服务控制Windows安全机制。
是否为系统进程: 是
⑽ mdm.exe
进程文件: mdm or mdm.exe
: Machine Debug Manager
描述: Debug除错管理用于调试和Microsoft Office中的Microsoft Script Editor。
是否为系统进程: 是
⑾ mmtask.tsk
进程文件: mmtask or mmtask.tsk
:支持进程
描述: 这个Windows多媒体后台控制多媒体服务,例如MIDI。
是否为系统进程: 是
⑿ mprexe.exe
文件: mprexe or mprexe.exe
进程名称: Windows进程
描述: Windows进程包括向适当的网络部分发出网络请求。
是否为系统进程: 是
⒀ msgsrv32.exe
进程文件: msgsrv32 or msgsrv32.exe
进程名称: Windows
描述: Windows调用Windows驱动和管理在启动。
是否为系统进程: 是
⒁ mstask.exe
进程文件: mstask or mstask.exe
进程名称: Windows计划任务
描述: Windows计划任务用于设定继承在什么时间或者什么日期备份或者运行。
是否为系统进程: 是
⒂ regsvc.exe
进程文件: regsvc or regsvc.exe
: 远程注册表服务
描述: 远程注册表服务用于访问在远程的注册表。
是否为系统进程: 是
⒃ rpcss.exe
文件: rpcss or rpcss.exe
: RPC Portmapper
描述: Windows 的RPC进程处理RPC调用(远程调用)然后把它们映射给指定的服务提供者。
是否为系统进程: 是
⒄ services.exe
进程文件: services or
进程名称: Windows Service Controller
描述: 管理。
是否为系统进程: 是
⒅ smss.exe
文件: smss or smss.exe
: Session Manager Subsystem
描述: 该进程为会话用以初始化,MS-DOS驱动名称类似LPT1以及COM,调用Win32壳子系统和运行在Windows登陆过程。
是否为系统进程: 是
⒆ snmp.exe
进程文件: snmp or snmp.exe
: Microsoft SNMP Agent
描述: Windows简单的代理(SNMP)用于监听和发送请求到适当的网络部分。
是否为系统进程: 是
⒇ spool32.exe
进程文件: spool32 or spool32.exe
: Printer Spooler
描述: Windows打印任务控制,用以打印机就绪。
是否为系统进程: 是
(21) spoolsv.exe
进程文件: spoolsv or spoolsv.exe
进程名称: Printer Spooler Service
描述: Windows打印任务控制程序,用以打印机就绪。
是否为系统进程: 是
(22) stisvc.exe
进程文件: stisvc or stisvc.exe
: Still Image Service
描述: Still Image Service用于控制扫描仪和连接在Windows。
是否为系统进程: 是
(23) svchost.exe
进程文件: svchost or svchost.exe
进程名称: Service Host Process
描述: Service Host Process是一个标准的动态连接库主机处理服务。
是否为系统进程: 是
(24) system
进程文件: system or system
进程名称: Windows System Process
描述: Microsoft Windows系统进程。
是否为系统进程: 是
(25)taskmon.exe
进程文件: taskmon or taskmon.exe
进程名称: Windows Task Optimizer
描述: windows任务优化器监视你使用某个的频率,并且通过加载那些经常使用的程序来整理优化。
是否为系统进程: 是
(26) tcpsvcs.exe
进程文件: tcpsvcs or tcpsvcs.exe
: TCP/IP Services
描述: TCP/IP Services Application支持透过TCP/IP连接局域网和Internet。
是否为系统进程: 是
(27) winlogon.exe
进程文件: winlogon or winlogon.exe
进程名称: Windows Logon Process
描述: Windows NT用户登陆。
是否为系统进程: 是
(28) winmgmt.exe
进程文件: winmgmt or winmgmt.exe
进程名称: Windows Management Service
描述: Windows Management Service透过Windows Mana[2]gement Instrumentation data (WMI)技术处理来自应用的请求。
是否为系统进程: 是操作系统的职能之一,主要是对进行管理。为了提高CPU的利用率而采用技术。通过管理来协调之间的关系,使CPU得到充分的利用。在桌面空白处 → 右键单击 →「新建」→「快捷方式」→ 输入以下代码
cmd /k echo off&color 2&echo for /f &skip=3 delims=& %%I in ('wmic process get ExecutablePath')do set #%%I=%%I&.bat&set H=:&set/p H=Enter:&.BAT&cls&for /f &tokens=2 delims==& %I in ('set #^|findstr /i &%H%&')do (echo %I&explorer /select,%I)
新手上路我有疑问投诉建议参考资料 查看进程通信_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&进程通信本词条缺少概述、信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
为了提高计算机系统的效率.增强计算机系统内各种硬件的并行操作能力.操作系统要求程序结构必须适应并发处理的需要.为此引入了进程的概念。进程是操作系统的核心,所有基于的操作系统都建立在进程的概念之上。目前的均提供了多任务并行环境.无论是应用程序还是系统程序.都需要针对每一个任务创建相应的进程。进程是设计和分析操作系统的有力工具。然而不同的进程之间.即使是具有家族联系的父子进程.都具有各自不同的。由于不同的进程运行在各自不同的内存空间中.一方对于的修改另一方是无法感知的.因此.进程之间的信息传递不可能通过变量或其它直接进行,只能通过来完成。
并发进程之间的相互是实现间协作和同步的常用工具.具有很强的实用性,是层极为重要的部分。根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型:控制信息的通信和大批数据信息的通信.前者称为低级通信,后者称为高级通信。低级通信主要用于进程之间的同步、互斥、终止、挂起等等的,两个并行进程可以通过互相发送消息进行合作,消息是通过消息缓冲而在进程之间相互传递
系统中的进程间的通讯有两层含义:
---单一进程内部各个模块间的通讯
---作为单独单位的各个不同进程间的通讯
前者沿袭了单任务操作系统中的模块通讯方法;
后者必须保证各个进程在通讯过程中互不干扰从而保持其通信的一致性。1) 文件和记录锁定。
为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其进行锁定,该进程访问完后再释放。这是UNIX为共享资源提供的互斥性保障。
管道一般用于两个不同进程之间的通信。当一个进程创建一个管道,并调用fork创建自己的一个子进程后,关闭读管道端,子进程关闭写管道端,这样 提供了两个进程之间数据流动的一种方式。
FIFO是一种先进先出的队列。它类似于一个管道,只允许数据的单向流动。每个FIFO都有一个名字,允许不相关的进程访问同一个FIFO。因此也成为命名管。
UNIX下不同进程之间可实现共享资源的一种机制;UNIX允许不同进程将格式化的数据流以消息形式发送给任意进程。对具有操作权限的进程都可以使用msget完成对消息队列的操作控制。通过使用消息类型,进程可以按任何顺序读消息,或为消息安排优先级顺序。
5)信号灯。
作为的一种方法,它不是用于交换大批数据,而用于之间的同步(协调对共享存储段的存取)。
通过信号灯实现存储共享(类似“红灯停、绿灯行”)几种通信方法总结综上所述.进程之间的多种通信方法各自有各自的优点和缺点:如果用户传递的信息较少.或是需要通过信号来触发某些行为.前文提到的信号机制不失为一种简捷有效的进程间通信方式.但若是进程间要求传递的信息量比较大或者进程间存在交换数据的要求,那就需要考虑别的通信方式了。无名管道简单方便.但局限于单向通信的工作方式.并且只能在创建它的进程及其子孙进程之间实现管道的共享:有名管道虽然可以提供给任意关系的进程使用.但是由于其长期存在于系统之中,使用不当容易出错.所以普通用户一般不建议使用。消息缓冲可以不再局限于父子进程.而允许任意进程通过共享来实现.并由函数来实现消息发送和接收之间的同步.从而使得用户在使用消息缓冲进行通信时不再需要考虑同步问题.使用方便,但是信息的复制需要额外消耗CPU的时间.不适宜于信息量大或操作频繁的场合。针对消息缓冲的缺点改而利用内存缓冲区直接交换信息,无须复制,快捷、信息量大是其优点。但是的通信方式是通过将共享的内存缓冲区直接附加到进程的空间中来实现的.因此,这些进程之间的读写操作的同步问题操作系统无法实现。必须由各进程利用其他同步工具解决。另外,由于内存实体存在于中.所以只能由处于同一个计算机系统中的诸进程共享。不方便。不同的进程通信方式有不同的优点和缺点.因此.对于不同的应用问题,要根据问题本身的情况来选择进程间的通信方式。
一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批。有时也把进程间控制信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。
新手上路我有疑问投诉建议参考资料 查看僵死进程_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&僵死进程本词条缺少概述、信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
僵死进程简而言之就是:子进程退出时,父进程并未对其发出的SIGCHILD信号进行适当处理,导致子进程停留在僵死状态等待其父进程为其收尸,这个状态下的子进程就是僵死进程。
在fork()/execve()过程中,假设子进程结束时仍存在,而父进程fork()之前既没安装SIGCHLD信号处理waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为,无法正常结束,此时即使是root身份kill -9也不能杀死。补救办法是杀死僵尸进程的(僵死进程的父进程必然存在),僵死进程成为&孤儿进程&,过继给1号进程init,init始终会负责清理僵死进程。
在unix术语中,一个已经终止但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占用的资源)的进程称为(zombie)。怎样产生的:
一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为(Zombie)的(系统调用exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。在Linux进程的状态中,是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵尸进程不再占有任何内存空间。它需要它的来为它收尸,如果他的父进程没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程结束,又没有显式忽略该信号,那么它就一直保持僵尸状态,如果这时父进程结束了,那么init进程自动会接手这个子进程,为它收尸,它还是能被清除的。但是如果是一个循环,不会结束,那么子进程就会一直保持僵尸状态,这就是为什么系统中有时会有很多的。怎么查看:
利用命令ps,可以看到有标记为Z的进程就是。怎样来清除:
1.改写,在子进程死后要为它收尸。具体做法是接管SIGCHLD信号。子进程死后,会发送SIGCHLD信号给,父进程收到此信号后,执行waitpid()函数为子进程收尸。这是基于这样的原理:就算没有调用wait,内核也会向它发送SIGCHLD消息,尽管对的默认处理是忽略,如果想响应这个消息,可以设置一个处理函数。
2.把杀掉。死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。在Linux中可以用
a all w/ tty, including other users 所有窗口和终端,包括其他用户的进程
u user-oriented 面向用户(用户友好)
-w,w wide output 宽格式输出
x processes w/o controlling ttys
在后面 会标注
看,以树形方式现实进程列表
会把列出来,在linux下进程和线程是统一的,是的两种方式。
显示进程的详细状态
一般都不能杀掉 defunct进程
用了kill -15,kill -9以后 之后反而会多出更多的
kill -kill pid
fuser -k pid
可以考虑杀死他的parent process,
kill -9 他的parent process
一个已经终止,但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息、释放它仍占用的资源)的进程被称为僵死进程(Zombie Process)。
避免zombie的方法:
1)在SVR4中,如果调用signal或sigset将SIGCHLD的配置设置为忽略,则不会产生僵死子进程。另外,使用SVR4版的sigaction,则可设置SA_NOCLDWAIT标志以避免子进程僵死。
Linux中也可使用这个,在一个程序的开始调用这个函数
signal(SIGCHLD,SIG_IGN);
2)调用fork两次。程序8 - 5 实现了这一点。
3)用waitpid等待子进程返回.
zombie进程是僵死进程。防止它的办法,一是用wait,waitpid之类的函数获得
进程的终止状态,以释放资源。另一个是fork两次
defunct进程只是在process table里还有一个记录,其他的资源没有占用,除非你的系统的process个数的限制已经快超过了,zombie进程不会有更多的坏处。
可能唯一的方法就是reboot系统可以消除zombie进程。
任何程序都有僵尸状态,它占用一点内存资源(也就是进程表里还有一个记录),仅仅是表象而已不必害怕。如果程序有问题有机会遇见,解决大批量僵尸简单有效的办法是重起。kill是无任何效果的
fork与zombie/defunct"
在Unix下的一些进程的运作方式。当一个进程死亡时,它并不是完全的消失了。进程终止,它不再运行,但是还有一些残留的小东西等待收回。这些残留的东西包括子进程的返回值和其他的一些东西。当fork() 一个子进程后,它必须用 wait() 或者 waitpid() 等待子进程退出。正是这个 wait() 动作来让子进程的残留物消失。
自然的,在上述规则之外有个例外:可以忽略 SIGCLD而不必要 wait()。可以这样做到(在支持它的系统上,比如Linux):
signal(SIGCLD, SIG_IGN); /* now I don't have to wait()! */
fork(); /* Rabbits, rabbits, rabbits! */
现在,子进程死亡时没有 wait(),通常用 ps 可以看到它被显示为“”。它将永远保持这样 直到wait(),或者按以下方法处理。
这里是你必须知道的另一个规则:当在它wait()子进程之前死亡了(假定它没有忽略 SIGCLD),子进程将把 init(pid 1)进程作为它的父进程。如果子进程工作得很好并能够控制,这并不是问题。但如果子进程已经是 defunct,我们就有了一点小麻烦。看,原先的不可能再 wait(),因为它已经消亡了。这样,init 怎么知道 wait() 这些 zombie 进程。
答案:不可预料的。在一些系统上,init周期性的破坏掉它所有的defunct进程。在另外一些系统中,它干脆拒绝成为任何defunct进程的,而是马上毁灭它们。如果你使用上述系统的一种,可以写一个简单的循环,用属于init的defunct进程填满进程表。这大概不会令你的系统管理员很高兴吧?
你的任务:确定你的不要忽略 SIGCLD,也不要 wait() 它 fork() 的所有进程。不过,你也未必 要 总是这样做(比如,你要起一个 daemon 或是别的什么东西),但是你必须小心编程,如果你是一个 fork() 的新手。另外,也不要在心理上有任何束缚。
子进程成为 defunct 直到wait(),除非父进程忽略了 SIGCLD 。
更进一步,没有 wait() 就消亡(仍假设父进程没有忽略 SIGCLD )的子进程(活动的或者 defunct)成为 init 的子进程,init 用重手法处理它们。
新手上路我有疑问投诉建议参考资料 查看}

我要回帖

更多关于 smss.exe是什么进程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信