什么是系统进程

来源:岁月联盟 编辑:zhuzhu 时间:2006-04-28
什么是系统进程内容简介:进程 是指在 系统 中正在运行的一个应用程序;线程是 系统 分配处理器时间资源的基本单元,或者说 进程 之内独立执行的一个单元。对于操 作 系统 而言,其调度单元是线程。一个 进程 至少包括一个线程,通常将该线程称为主线程。一个

  是指在中正在运行的一个应用程序;线程是分配处理器时间资源的基本单元,或者说之内独立执行的一个单元。对于操 作而言,其调度单元是线程。一个至少包括一个线程,通常将该线程称为主线程。一个从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。
  那与线程的区别到底是什么?是执行程序的实例。例如,当你运行记事本程序(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时间占用量却可能是零或非常短暂的现象,那么,上述解释便是原因所在。上述也就是我们在任务管理器的选项卡中所能看到的基本信息列。

图片内容