切换到宽版
  • 2888阅读
  • 0回复

什么是进程? [复制链接]

上一主题 下一主题
离线樱子
 

只看楼主 倒序阅读 0 发表于: 2010-03-23
— 本帖被 Manboo 从 电脑名词、术语解析 移动到本区(2010-10-14) —
进程是什么

  进程为应用程序的运行实例,是应用程序的一次动态执行。看似高深,我们可以简单地理解为:它是操作系统当前运行的执行程序。在系统当前运行的执 行程序里包括:系统管理计算机个体和完成各种操作所必需的程序;用户开启、执行的额外程序,当然也包括用户不知道,而自动运行的非法程序(它们就有可能是 病毒程序)。

        危害较大的可执行病毒同样以“进程”形式出现在系统内部(一些病毒可能并不被进程列表显示,如“宏病毒”),那么及时查看并准确杀掉非法进程对于手工杀毒有起着关键性的作用。

        什么是系统进程

        进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。

        那进程与线程的区别到底是什么?进程是执行程序的实例。例如,当你运行记事本程序(Nodepad)时,你就创建了一个用来容纳组成 Notepad.exe的代码及其所需调用动态链接库的进程。每个进程均运行在其专用且受保护的地址空间内。因此,如果你同时运行记事本的两个拷贝,该程 序正在使用的数据在各自实例中是彼此独立的。在记事本的一个拷贝中将无法看到该程序的第二个实例打开的数据。

        以沙箱为例进行阐述。一个进程就好比一个沙箱。线程就如同沙箱中的孩子们。孩子们在沙箱子中跑来跑去,并且可能将沙子攘到别的孩子眼中,他们会互相踢 打或撕咬。但是,这些沙箱略有不同之处就在于每个沙箱完全由墙壁和顶棚封闭起来,无论箱中的孩子如何狠命地攘沙,他们也不会影响到其它沙箱中的其他孩子。 因此,每个进程就象一个被保护起来的沙箱。未经许可,无人可以进出。

        实际上线程运行而进程不运行。两个进程彼此获得专用数据或内存的唯一途径就是通过协议来共享内存块。这是一种协作策略。下面让我们分析一下任务管理器里的进程选项卡。

        这里的进程是指一系列进程,这些进程是由它们所运行的可执行程序实例来识别的,这就是进程选项卡中的第一列给出了映射名称的原因。请注意,这里并没有进程名称列。进程并不拥有独立于其所归属实例的映射名称。换言之,如果你运行5个记事本拷贝,你将会看到5个称为Notepad.exe的进程。它们是如何彼此区别的呢?其中一种方式是通过它们的进程ID,因为每个进程都拥有其独一无二的编码。该进程ID由Windows NT或Windows 2000生成,并可以循环使用。因此,进程ID将不会越编越大,它们能够得到循环利用。

        第三列是被进程中的线程所占用的CPU时间百分比。它不是CPU的编号,而是被进程占用的CPU时间百分比。此时我的系统基本上是空闲的。尽管系统看上去每一秒左右都只使用一小部分CPU时间,但该系统空闲进程仍旧耗用了大约99%的CPU时间。

  第四列,CPU时间,是CPU被进程中的线程累计占用的小时、分钟及秒数。请注意,我对进程中的线程使用占用一词。这并不一定意味着那就是进程已耗用的CPU时间总和,因为,如我们一会儿将看到的,NT计时的方式是,当特定的时钟间隔激发时,无论谁恰巧处于当前的线程中,它都将计算到CPU周期 之内。

  通常情况下,在大多数NT系统中,时钟以10毫秒的间隔运行。每10毫秒NT的心脏就跳动一下。有一些驱动程序代码片段运行并显示谁是当前的线程。让我们将CPU时间的最后10毫秒记在它的帐上。因此,如果一个线程开始运行,并在持续运行8毫秒后完成,接着,第二个线程开始运行并持续了2毫秒, 这时,时钟激发,请猜一猜这整整10毫秒的时钟周期到底记在了哪个线程的帐上?答案是第二个线程。因此,NT中存在一些固有的不准确性,而NT恰是以这种 方式进行计时,实际情况也如是,大多数32位操作系统中都存在一个基于间隔的计时机制。请记住这一点,因为,有时当你观察线程所耗用的CPU总和时,会出现尽管该线程或许看上去已运行过数十万次,但其CPU时间占用量却可能是零或非常短暂的现象,那么,上述解释便是原因所在。上述也就是我们在任务管理器的 进程选项卡中所能看到的基本信息列。

        什么是应用程序

  应用程序指的是程序开发人员要开发的一个数据库应用管理系统,它可以是一个单位的财务管理系统、人事管理系统等。(各种有关功能的窗口的集合构成一个完整的应用系统,分发给各个终端用户的就是一个应用程序。

        怎样察看正在运行的进程

        察看正在运行的进程的方法有很多,最简单就是使用Windows自带的进程管理器察看正在运行的进程:同时按下“Ctl Alt Del”打开Windows进程管理器。点击进程的标签,即可察看系统中进行的进程列表。或者用鼠标右键点系统状态栏“系统管理器”进入系统进程管理器。

        怎样强制结束一个运行中的进程

        1、打开“终端服务管理器(任务管理器)”。

        2、在“进程”选项卡上的“用户”列下,右键单击要结束的进程,然后单击“结束进程”。

  注意:

  (1)必须具有完全控制权限才能结束进程。
        (2)要打开“终端服务管理器”,请依次单击“开始”和“控制面板”,双击“管理工具”,然后双击“终端服务管理器”。
        (3)请注意:在没有警告的情况下结束进程会导致用户会话中的数据丢失。
        (4)可能需要结束进程,因为应用程序没有响应
        (5)也可以使用 tskill 命令结束进程。

   强制结束进程的命令行

   Windows操作系统中只有System、SMSS.EXE和CSRSS.EXE不能杀。前两个是纯内核态的,最后那个是Win32子系统, ntsd本身需要它。ntsd从2000开始就是系统自带的用户态调试工具。被调试器附着(attach)的进程会随调试器一起退出,所以可以用来在命令 行下终止进程。使用ntsd自动就获得了debug权限,从而能杀掉大部分的进程。ntsd会新开一个调试窗口,本来在纯命令行下无法控制,但如果只是简 单的命令,比如退出(q),用-c参数从命令行传递就行了。Ntsd按照惯例也向软件开发人员提供。只有系统开发人员使用此命令。有关详细信息,请参阅 NTSD 中所附的帮助文件。

  用法:开个cmd.exe窗口,输入:ntsd -c q -p PID

      把最后那个PID,改成你要终止的进程的ID。如果你不知道进程的ID,任务管理器->进程选项卡->查看->选择列->勾上“PID(进程标识符)”,然后就能看见了。

      XP下还有两个好用的工具tasklist和tskill。tasklist能列出所有的进程,和相应的信息。tskill能查杀进程,语法很简单:tskill 程序名!

      一些常见的进程

进程名 描述
smss.exe Session Manager
csrss.exe 子系统服务器进程
winlogon.exe 管理用户登录
services.exe 包含很多系统服务
lsass.exe 管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序。
svchost.exe Windows 2000/XP 的文件保护系统
SPOOLSV.EXE 将文件加载到内存中以便迟后打印。
explorer.exe 资源管理器
internat.exe 托盘区的拼音图标
mstask.exe 允许程序在指定时间运行.
regsvc.exe 允许远程注册表操作。(系统服务)→remoteregister
tftpd.exe 实现 TFTP Internet 标准。该标准不要求用户名和密码。
llssrv.exe 证书记录服务
ntfrs.exe 在多个服务器间维护文件目录内容的文件同步。
RsSub.exe 控制用来远程储存数据的媒体。
locator.exe 管理 RPC 名称服务数据库。
clipsrv.exe 支持“剪贴簿查看器”,以便可以从远程剪贴簿查阅剪贴页
msdtc.exe 并列事务,是分布于两个以上的数据库,消息队列,文件系统或其他事务保护资源管理器。
grovel.exe 扫描零备份存储(SIS)卷上的重复文件,并且将重复文件指向一个数据存储点,以节省磁盘空间(只对 NTFS 文件系统有用)。
snmp.exe 包含代理程序可以监视网络设备的活动并且向网络控制台工作站汇报。

以上这些进程都是对计算机运行起至关重要的,千万不要随意“杀掉”,否则可能直接影响系统的正常运行。

当今社会电脑、网络已经与人们的生活密不可分,电脑基础技术专区是电脑普通用户、初学者的乐园,在快乐中学习,在学习中不断提高。
快速回复
限100 字节
告贴,不要在非指定版块发表水贴,谢谢合作。
 
上一个 下一个