进程为应用程序的运行实例,是应用程序的一次动态执行。它是操作系统当前运行的执行程序。当前运行的执行程序里包括:系统管理计算机个体和完成各种操作所必需的程序,你开启,执行的额外程序,当然也包括你不知道,而自动运行的非法程序(如病毒等)。
深入了解进程
(注:本文中的“\”,如有需要体验或者使用,请替换成半角斜线)
一.名词解释
1.程序:具有独立功能的一组指令或一组语句的集合,或者是指出处理器执行操作的步骤.是一个静态的文本.
2.进程:一个程序在一个数据集上的一次执行.它是一个动态的过程.每个进程都有一个唯一的进程标识符,简称为PID.
3.作业:用户要求计算机系统进行处理的一个计算问题.一个作业可能需要多个进程配合才能完成.如360安全卫士的进程有360Safe.exe,360tray.exe,可能还有safeboxTray.exe.
4.线程:它是进程中可独立执行的子任务,一个进程中可以有一个或多个线程,每个线程也都有一个唯一的标识符.
5.父进程:可以创建其他进程的进程.比如,我们运行的大部分程序的父进程都是explorer.exe
6.子进程:由父进程创建的进程.父进程和子进程是相对而言的,有的进程可能既是父进程又是子进程.
*7.进程句柄:实际上是一个Long (整长型)的数据.它是windows用来标识应用程序所建立的进程的唯一整数,就像公民的身份证一样.
*8.指针:在C语言中可能会经常遇到,这里我们不讲语言,我们这样理解就行了:它是一种内存地址.内存地址和句柄一样也是一个16位的整数.而句柄则是指针的指针.
9.对象:系统中的一切都可称为对象,如文件,进程,程序等.这好比生活中的所有东西都可以称为物品一样.
二.深入了解进程
1.进程到底是什么?
进程为应用程序的运行实例,是应用程序的一次动态执行.它是操作系统当前运行的执行程序.当前运行的执行程序里包括:系统管理计算机个体和完成各种操作所必需的程序,你开启,执行的额外程序,当然也包括你不知道,而自动运行的非法程序(如病毒等).
进程是程序在计算机上的一次执行活动.当你运行一个程序,你就启动了一个进程.显然,程序是死的(静态的),进程是活的(动态的).进程可以分为系统进程和用户进程.凡是用于完成操作系统的各种功能的进程就是系统进程,病毒也常常把自己注册成系统进程,用户进程就是所有由你启动的进程.进程是操作系统进行资源分配的单位,系统进程具有较高的优先权来得到资源.
2.进程的特征.
动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的.
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位.
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的,不可预知的速度向前推进.
句柄的本质
3.结构特征
进程由程序,数据和进程控制块三部分组成.
*4.为什么会有句柄这一说?
刚才上面说了,句柄是一种指向指针的指针.而所谓的指针是一种内存地址.应用程序启动后,组成这个程序的各对象是住留在内存的.简单地理解,似乎我们只要获知这个内存的首地址就可以随时用这个地址访问对象(如进程).但是,如果你真的这样认为,那么你就错了.我们知道,Windows是一个以虚拟内存为基础的操作系统.Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的内存需要.对象被移动意味着它的地址变化了.如果地址总是如此变化,我们该到哪里去找该对象呢?(进程失控了?)
为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的.Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存.这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置.这个地址是在对象装载(Load)时由系统分配给的,当对象被撤消(Unload)时又释放给系统。
可能大家理解不了,举个形象点的例子.一本书(可以理解为我们的操作系统),总是会有一个目录页(登记具体内容的页码),目录页的每一行就相当于一个句柄,每一行后面的页码就相当于一个指针.当正文内容需要调整时(如原来在第一章的,我现在要把它放到最后一章),那么当内容改动时,我们就要修改目录页中相应的页码(目录页本身是不动的,只是改了页码而已,对于系统来说就是修改了句柄所指向的内存地址的内容).
*5,句柄的本质.
windows程序并不是用物理地址来标识一个内存块,文件,任务或进程的.系统给这些项目分配确定的句柄,并将其值返回给应用程序,然后通过句柄来对其进行操作.程序每次重新启动,系统分配给这个程序的句柄通常是不一样的.
*6.线程到底是什么?
线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程.线程不拥有系统资源,只有运行必须的一些数据结构,它与父进程的其它线程共享该进程所拥有的全部资源.线程可以创建和撤消线程.从而实现程序的并发执行.比如,在一个程序中,我们创建一个线程读写磁盘,用另一个线程来处理用户的其他请求.
查看你系统中的进程
三.实践
1.查看你系统中有多少进程?
打开任务管理器(按快捷键Ctrl+Alt+Del),切换到进程页.在这里我们可以看到系统中所有的进程(隐藏的进程在这里看不到),映像名称,有时也称为进程名,这个名字一般就是相应程序的文件名.在左下角,你可以看到你系统中有多少进程了,比如我的,现在是27.
我现在打开一个画图程序
现在是28个了,多了哪个?多了mspaint.exe,这个就是画图程序的进程.看看这个进程的详细信息吧.点查看,选择列...,在PID,CPU时间,内存使用,用户名,虚拟内存大小等的前面打勾,确定.现在看到多了几列了.
映像名称:即进程名,可能存在多个名字相同的进程名.
PID:前面已经讲过,这是唯一的,系统中不可能存在重复的PID.
用户名:是指这个程序是由谁启动的或是用于说明其优先情况的.
CPU 时间:我们知道在单核系统中,CPU同时只能处理一件事(一个进程),但是为什么会有这么多进程同时运行呢?系统把CPU时间分成许多的时间片,每个进程每次可以使用一个由时间片规定的CPU时间.这样,多个进程轮流使用CPU时间,如果某个进程在规定的时间内还没有完成它的全部工作,这时也要把CPU让给其他进程,等待下一轮再使用一个时间片的时间,循环轮转,直到结束.由于CPU的执行速度非常快,所以你看上去它们好像是在同时运行的. 当进程出现问题并且系统自身无法修正时,就可能出现CPU占用居高不下,甚至是100%,导致其他进程无法占用CPU时间,这时系统的反映就会很慢,很卡.这时可以把有问题的进程结束掉. 有些杀毒软件的进程在扫描时也会占用较高,这是正常现象.
内存:程序执行所占用的内存.一般程序通常不超过50M.游戏什么的可能占用会比较大.
虚似内存,同上,但有些区别,这个值一般不超过150M,超过此值的就要注意一下了,当某个进程的虚拟内存占用很大时,同样会导致系统很卡.结束这个进程则恢复正常.
2.两个拥有特殊PID的进程
System Idle Process:这个进程的PID为0,虚拟内存占用为0,CPU很高,常常在90以上,事实上,它并不是真正的进程,这个称为系统空闲进程,它的CPU值越高越好.该进程无法结束,没有对应的文件.
System: 这个进程的PID为4,该进程不能结束,它也没有对应的文件.并且没有后缀名,如果你看到带有后缀名的或是PID不是4的system,则这个进程很可能是病毒进程.如果你看到此进程正常,但CPU占用很高,则说明这个进程被注入了,大部分是木马或病毒的行为,因为正常程序不会去搞它的.
系统正常运行需要哪些进程?
3.系统正常运行需要哪些进程?
除了上面提到的两个,其他还有几个.下面按重要性来一个个说明.(下面讲到路径时,以系统盘为C盘为例),进程名不区分大小写.认识这些进程,对你使用系统和维护系统安全都有着非常重要的作用!如果嫌我讲得啰嗦,你大可以百度一下相关进程名查找更啰嗦的.
smss.exe :这是系统中有对应文件的第一个真正进程.文件位于c:\windows\system32\smss.exe,这是一个会话管理子系统,负责启动用户会话,系统所有进程的初始化工作都由它来完成,当某些进程出现不可预知的重大错误时,该进程负责调节,无法调节时,系统将停止响应.
winlogon.exe :管理用户登陆,注销等.该进程是由父进程smss.exe创建的,正常路径c:\windows\system32\winlogon.exe,屏幕保护程序的启动等也是由它来管理的.以system用户来运行.
csrss.exe : 管理系统图形相关子系统.也是由smss.exe创建的,正常路径c:\windows\system32\csrss.exe
lsass.exe :该进程是多个Windows系统服务的宿主,由winlogon.exe创建,它控制一些服务的启动与关闭,与services.exe具有同等重要的作用.它们分管系统中所有的服务.lsass.exe管理的服务包括HTTP SSL,IPSEC Services,Kerberos Key Distribution Center,Net Logon,NT LM Security Support Provider,Protected Storage,Security Accounts Manager.正常情况下,它开启了多个服务,一般至少有Protected Storage和Security Accounts Manager两项,如果没有开启这些服务,此进程可以被关闭.
services.exe :和上面的一样,也是由winlogon.exe创建的,除上面七个服务外,其他所有服务全部由该进程来管理.关于服务相关的内容,以后会专门用一个课时来详细说明,现在只要了解就行了.路径c:\windows\system32\services.exe
svchost.exe :标准的动态连接库主机处理服务.由services.exe创建,该进程在启动的时候会检查注册表中相应位置来决定需要加载的服务.系统中常常会存在很多个svchost.exe进程,因为不同的服务可能要不同的svchost.exe进程来启动.有的svchost.exe进程只启动了一个服务,而有的可能启动了好几个服务.所以系统中存在3~7个同样的这个进程并不奇怪.路径c:\windows\system32\svchost.exe.部分这个进程可以被结束的,结束后的结果可能会很奇怪,比如复制粘贴功能没有了...
alg.exe :即Application Layer Gateway Service,应用程序网关服务,为Internet连接共享和Windows防火墙提供第三方协议插件的支持.
用好任务管理器
4.哪些进程可以结束?
除了上面说到的,其他的都可以结束,刚刚的截图,我系统的进程数20多个,有些人的可能有30多个甚至更多.下面我就先来优化一下吧.结果如图:
其实还可以精减掉几个svchost.exe的,重新开启需要以服务形式启动,嫌麻烦就不结束了...还有一个原因是任务管理器提供的信息太少,不知道哪个svchost.exe启动了哪些服务,盲目结束总不是很好.最坏的情况是系统30秒倒计时重启或关机.如何解决倒计时关机?
很简单,按快捷键Win+R,然后输入shutdown -a确定即可.
对于杀毒软件的进程,可能你无法用任务管理器来结束,你可以直接关闭杀毒软件.其他无法关闭的进程还有很多,比如病毒进程,服务进程等.无法结束的进程可以使用第三方工具来结束,比如冰刃(IceSword).实践完毕后别忘了重新开启你的杀毒软件的监控.
另一个特殊的进程:explorer.exe,这个进程是可以被结束的,结束后桌面消失,别害怕,重新启动这个进程就行了,在任务管理器中点文件,新建任务,输入explorer.exe后确定即可.
还有一个进程是taskmgr.exe,这个进程是任务管理器的进程,你结束它试一下,任务管理器关闭了,呵.
5.用好任务管理器
结束进程,当前选中进程将被结束.
结束进程,当前选中进程及所有由该进程创建的子进程全部被结束
切换到应用程序页,选中某个任务,右键选择:
切换至,则该任务的窗口将位于最上面,并且成为激活状态
前置,和切换至很类似,但不一定是激活状态的.
最大化,最小化,这两个不用我说了吧.
结束任务,关闭相应的任务.
转到进程,该任务对应的是哪个进程一看便知.
在任务管理器四周空白处双击一下试试.再次双击可变回原样.
在应用程序页双击将最小化任务管理器.
(注:本文中的“\”,如有需要体验或者使用,请替换成半角斜线)
网友评论