电脑系统线程异常什么原因-系统线程异常处理
1.蓝屏代码:0xc000007E(0xC0000005,0x804E9813,0xF892A97C,0xF892A678 这是什么原因:
2.CS162操作系统课程第二课-4个核心OS概念
3.我的电脑老是cpu占用率100%
蓝屏代码:0xc000007E(0xC0000005,0x804E9813,0xF892A97C,0xF892A678 这是什么原因:
报错代码:0x0000007E表示如果某个系统线程生成了错误处理程序未捕获的异常,就可能会出现此问题。
此异常可能由下列任一情况导致:
如果在Windows 安装过程中第一次重新启动后或在安装完成后出现此问题,则可能是计算机没有足够的硬盘空间来运行Windows XP。
计算机的BIOS 可能与Windows XP 不兼容或者可能必须要更新。
视频适配器驱动程序可能与Windows XP 不兼容。
设备驱动程序或系统服务可能已经损坏。
如果问题与Win32k.sys 文件相关联,则说明此问题可能是由第三方远程控制程序导致的。
依所列次序使用下列方法故障排除:
方法1、确保具有足够的硬盘空间
首先,确保具有足够的硬盘空间。硬盘空间不足可能会导致Stop 错误。
如果您可以使用安全模式或恢复控制台启动计算机,请删除所有不需要的临时文件、Internet 缓存文件、程序备份文件以及包含磁盘扫描所产生的已保存文件碎片的文件(.chk 文件)。也可以将Windows XP 安装到另一个有更多可用空间的硬盘上。
如果无法启动计算机,请转到下一个方法来更新计算机的BIOS。
方法2、更新计算机的BIOS
如果释放硬盘空间没有解决该问题,则可能必须更新BIOS。使用“参考”部分中列出的硬件和软件供应商联系信息文章与计算机制造商联系,以获得最新的BIOS 更新。
注意:在更新BIOS 时可能必须暂时禁用BIOS 内存选项,如缓存或阴影操作。
方法3、禁用或更新设备驱动程序
如果已经成功更新了BIOS 但该问题仍然存在,则可能必须更新或禁用计算机上的视频适配器驱动程序。按照下列步骤对视频适配器驱动程序进行故障排除:
如果Stop 错误消息中列出了某驱动程序的名称,则请禁用或删除该驱动程序。
如果在启动过程中发生该错误,且系统分区使用的是NTFS 文件系统,则也许可以使用安全模式重命名或删除有问题的驱动程序。
如果在安全模式下启动系统时需要使用该驱动程序,则必须使用恢复控制台启动计算机。
如果Stop 错误消息未指出具体是哪个驱动程序,请将视频适配器驱动程序更新到最新版本。
禁用或删除最近添加的所有驱动程序或服务。
方法4、删除未经签名的驱动程序
如果已经更新了视频适配器驱动程序但该问题仍然存在,或者无法在安全模式下启动Windows,则该问题可能是由其他未经签名的驱动程序引起的。删除所有未经Microsoft 数字签名的驱动程序。
方法5、删除所有第三方驱动程序
您可能无法确定是哪个第三方驱动程序导致了该问题。如果删除了未经签名的驱动程序后未解决该问题,请尝试将所有第三方驱动程序文件从%Windir%\System32\Drivers 文件夹移动到其他位置。按照下列步骤移动第三方驱动程序文件:
步骤1、使用恢复控制台启动计算机;如果已执行并行Windows 安装,则也可以从其他Windows 安装启动计算机。
步骤2、创建一个临时文件夹以存放驱动程序文件。例如,您可以创建文件夹c:\DriverTemp。
步骤3、将所有针对Windows XP的文件从%Windir%\System32\Drivers 文件夹移动到在“步骤2”中创建的临时文件夹中。
警告:如果计算机依靠第三方IDE 或SCSI 控制器驱动程序才能够正常运行,则必须识别这些驱动程序文件并将它们保留在%Windir%\System32\Drivers 文件夹中。
重新启动计算机。
继续执行Windows 安装程序。可以将驱动程序文件逐一添加回计算机,以确定有问题的驱动程序。
方法6、删除第三方远程控制服务
如果使用上述方法后仍然存在该问题,并且Stop 错误消息中包含Win32k.sys 文件名而不是驱动程序文件名,则该问题可能是由第三方远程控制程序引起的。若要删除该服务,请使用恢复控制台启动计算机,然后删除第三方远程控制服务文件。
CS162操作系统课程第二课-4个核心OS概念
熟肉视频地址:
CS162操作系统课程第二课-4个核心OS概念(上)
CS162操作系统课程第二课-4个核心OS概念(下)
我们讨论了操作系统如何扮演裁判,魔术师和粘合剂的角色,裁判是指对于资源保护的管理;魔术师是指我们要让它看起来像我们有一套非常干净易用的资源的抽象,而不是使用实际的没有统一接口的物理资源。粘合剂是一组通用服务,它们使在操作系统上编写程序变得更容易,例如文件系统服务、网络服务等等。
今天我们要讲操作系统四个基本概念:我们将从什么是线程(Thread)开始讨论,线程会完整地描述一个程序状态或者一个线性执行上下文,它会有一个程序计数器,寄存器,执行标志,线程栈等等。然后是地址空间(Address Space),这是程序可访问的一组内存地址。然后我们会介绍什么是进程(Process),进程包括地址空间以及一个或者多个线程。最后,我们将讨论在这门课的前期特别重要的硬件机制也就是双模式操作(dual mode operation),即一个典型的处理器至少有两种不同的模式,我们可以松散地称之为内核模式(Kernel mode)和用户模式(User mode)。我们要学习如何编写和编译程序成为可执行文件,然后从文件系统中取出这些可执行文件后,建立运行的进程,文件被加载到内存中,我们会详细讨论那个进程运行需要提供的栈和堆。然后是转移控制(Transfer Control),意思是处理器的程序计数器将会指向该进程的用户代码中的指令,然后程序就会开始执行。操作系统需要给这些进程提供各种系统服务,同时操作系统需要保护操作系统和进程不受其他进程和其他用户的影响。我们来回忆下 CS61B + CS61C 课程的内容: 处理器一开始有一个程序计数器(PC,Program Counter),还有一个可以读取的内存(Memory),内存里面有一组指令(Instruction)。程序计数器会指向内存中的指令,让处理器读取下一条指令。我们把指令从内存中拉出来,解码,然后把它输入到执行流水线中。我们在 CS61C 中经常谈论的是一种风险类型的处理器(risk style processor),有五个执行流水线。解码后,它们会输入一组寄存器和 ALU 来进行实际操作,然后递增程序计数器并继续下一条指令。
我们的第一个操作系统概念是一个控制线程(Thread of Control),线程实际上是一个唯一的执行上下文,它有程序计数器,寄存器,执行标志,线程栈,内存状态。线程就像上一张幻灯片中你看到的处理器的虚拟版本。一个线程正在处理器或核心上执行,顺便说一下,我现在混用处理器和核心这两个概念,后面我们就能更清楚地理解这两个概念的区别。但它是在处理器寄存器中常驻(Resident)时才会执行的。寄存器中有线程的上下文(Context)或根状态(Root State),有些东西在寄存器中,剩下的在内存中:
包括一个程序计数器,当前正在执行的指令,程序计数器指向内存中的下一条指令,所有的指令都存储在内存中
包括用于进行计算的中间值
有一个栈指针,它有一个指向内存中栈的顶部的指针,线程的其余部分都在内存中。 当线程的状态不在寄存器中即不是常驻的时候,线程就被挂起(suspended)或不再执行。被挂起的线程实际上是在内存中,还没有执行或者根本没有执行,有其他线程正在执行。
这是另一个关于执行过程的视图(冯·诺依曼体系)这是一组地址,我们稍后会把它叫做地址空间,从 0 到 2^32 -1。里面有一组将要执行的指令,粉色的是你的处理器。进程有一个与之相关的保护状态,处理器包括寄存器和流水线的集合,我们的执行序列(Execution Sequence)包括:在程序计数器上获取一条指令,解码它,执行它,写回寄存器,获取下一条指令,并重复这个执行循环。
那么我们是如何产生多处理器的错觉的呢?我们上次讲过在你的笔记本电脑上做一个ps -aux或者其他的操作唤起任务管理器,如果你仔细看,你会发现有数百个进程在运行,大部分在休眠状态。但它们都可以在你当前的处理器上使用,那么它是如何工作的呢?让我们假设只有一个物理处理器上只有一个核,在任何给定的时间在硬件上只有一个执行线程。但现在我们想要的是有多个cpu,或者说是多个cpu同时运行的假象,所以我们可以有多个线程同时运行。从程序员的视图来看是,我有一堆东西都在运行,它们都共享内存。 每个线程是一个虚拟核心,我们这里有三个线程,品红色线程,青色线程以及**线程,造成他们同时运行的错觉的方式是通过我们多重复用硬件,我们运行一段时间的品红色线程,然后运行一会青色线程,然后运行一会**线程,以此循环。 线程的内容包括什么?显然,每个线程都需要一个程序计数器和一个堆指针,还有所有寄存器状态。如果线程在运行中,寄存器状态就在处理器的寄存器中;如果不在运行中,这些状态就在内存中,被称为线程控制块(TCB,Thread Control Block)
我们举一个例子:在 T1 的时候 vCPU1 在运行,在 T2 的时候 vCPU2 在运行,在 T1 和 T2 时,发生了上下文切换(Context Switch),在底层是一个事件,我们把所有的程序计数器,栈指针,所有其他寄存器都保存在内存中的对应线程控制块中。我们从 vcpu2 加载程序计数器、堆栈指针等,然后运行 vcpu2。
一些 Q&A:
每个线程是否都有自己独占的 CPU 缓存?答案是否定的,一般每个核有一个高速缓存,线程都共享同一个缓存,你可以想到如果切换太快,就没有线程能利用好缓存了。原始处理器中的缓存或 TLB 必须在切换时被刷新,更高级的处理器则不会。缓存本身通常在物理空间中,你从一个线程切换到另一个,你只是改变了页表,不需要清空缓存。
线程上下文切换这需要多长时间?这大概需要几微秒的时间,需要确保转换的时间不要太长,不要把大部分时间都花在转换上。
然后是什么触发了上下文切换?全局倒计时器时间到了,或自愿让出CPU等这样的事情触发的。比如某个线程要做一些 I/O,那么操作系统就会调度其他线程。
我们可能有一堆内存(蓝色的代表内存),我们可以想象这些虚拟进程中的每一线程都有自己的栈、堆、数据和代码,它们都以某种方式分布在内存中,我们要做的就是以某种方式记录所有东西的位置。线程控制块是所有东西的所在,当我们从绿色切换到**,我们要做的第一件事是将所有的绿色线程的寄存器保存到它的线程控制块中,顺便说一下,那是内核内存的一部分。
我们今天要讲的第二个操作系统概念是地址空间:它是一组可访问地址和与之相关的状态,这只是处理器对可用地址的视图。对于 32 位处理器,可以访问的地址空间是 2 的 32 次方大约是 40 亿,对于 64 位的处理器,2 的 64 次方是 18 万亿。但是这并不是说所有的空间里都有对应的物理 DRAM 内存可以使用,只有一部分有对应的物理 DRAM。 当你读或写一个地址空间中的地址时,也许它像普通内存一样运行,或者完全忽略写入操作;或者可能是系统导致一个I/O操作发生,这被称为内存映射 I/O;或者它可能会导致异常,如果你试图在我这里展示的栈和堆之间的某个地方读或写是可以的,但是如果没有物理内存分配给这个进程,就会出现页面错误(Page fault);或者写入内存的行为是为了与另一个程序通信。
程序计数器(PC,Program Counter)指向某个地址,意味着处理器能执行在那个地址的指令。
栈指针(SP,Stack Pointer)指向某个地址,通常是栈的底部(图里面栈向下增长,所以最后一个元素是栈底)
栈(stack):栈就是当你递归调用一个函数时,前一个函数的变量会被推到栈上,然后栈指针向下移动,当函数返回时,你把它们从栈中取出,栈指针向上移动。
堆(heap):你用 malloc 分配东西等的时候,通常就会放在堆上。堆的初始物理内存也比程序最终需要的要少,随着程序的增长,这会在堆上分配东西,你会遇到页面错误,然后分配实际的物理内存。
代码段(Code Segment):保存着要执行的代码。
静态数据(Static Data):静态变量,全局变量等等
操作系统必须保护自己不受用户程序的影响,这样做有很多原因:
可靠性:危及操作系统通常会导致系统崩溃
安全性:你想要限制恶意软件的作用范围
隐私:限制每个线程访问它应该访问的数据,不希望我的密码或者秘密被泄露
公平性:我不希望这样一个线程,例如它计算 PI 的最后一位,突然就能占用所有的cpu,以牺牲其他所有的线程为代价。
操作系统必须保护用户程序之间的安全,防止一个用户拥有的线程影响另一个用户拥有的线程。那么硬件能做些什么来帮助操作系统保护自己免受程序的侵害呢,这里有一个非常简单的想法,事实上非常简单,以至于微小的物联网设备可以用很少的晶体管做到这一点,这个概念我称之为基础和界限(B&B,base and bound):
我们要做的是我们有两个寄存器,一个base寄存器和一个bound寄存器,这两个寄存器记录**线程允许访问内存的哪一部分。程序运行的时候,磁盘上的文件被加载并移动到内存的这一部分。所以现在当程序开始执行的时候,它与程序计数器一起工作,比如在1010范围内,这就是代码所在的地方。硬件会做一个快速比较看看这个程序的计数器是否大于 base,以及它是否小于 bound。
这种方式实现很简单,但是访问里面的每一块内容,都要记录一个长地址。 但是对于这个进程分配的内存,在这个模型下是很难改变的。因为有多个进程在共享这个内存,所以当你想扩展内存的时候,可能需要将当前**的部分复制到内存中其他剩余空间更大的一块地方。 为了优化这些问题,我们一般不直接访问物理内存,而是加上地址空间翻译机制(Address Space Translation):
其中一种翻译设计是加入一个硬件加法器:地址实际上是在动态转换的,所有的地址其实是一个偏移量,操作系统记录每个进程的内存基址(Base Address),之后加上这个偏移量就是实际的物理内存地址。
另一种方法是利用分段,在x86硬件中,我们有代码段,堆栈段等等各种段,每段有不同的基址与长度,即不同的 base 和 bound,即硬件寄存器,有 base 和 bound 硬编码在该段。代码段是有物理起点(即 base)和长度(即 bound)的,而实际运行的指令指针是段内的偏移量。
最后一种是我们实际中更常用的,我们要做的是,我们要把地址空间,也就是所有的DRAM,分成一堆大小相等的页(Page)。硬件会使用页表(Page Table)进行从虚拟内存地址到硬件 DRAM 内存地址的转换。
我们今天要讲的第三个操作系统概念是进程:进程实际上是一个权利受限的执行环境,我们讲过,简单的虚拟线程有这样的问题,每个线程都能访问每个线程的内存,内存翻译机制可以保护我们可以访问的内存,即一个受保护的内存块。它被操作系统中的一个实体独占,这个实体叫做进程。它包括一个受限的地址空间和一个或多个线程,它拥有一些文件描述符和文件系统上下文。
进程提供了内存保护抽象,在保护和效率之间有一个基本的权衡,如果你在同一个进程中有一堆线程,它们之间可以很容易地通信,因为它们共享相同的内存,它们可以通过一个写入内存,另一个读取内存来通信,但是它们之间可能会互相覆盖导致并发安全问题。有时候你想要高性能,提高并行性,你会想要在一个进程中有很多线程。但是当你想要保护时,你想要限制进程之间的通信,所以进程之间的通信故意变得更加困难,这就是我们得到保护的方式。
这是一个单线程的进程还有一个多线程的进程。对于单线程的进程,只有一组寄存器还有栈内存。对于多线程的进程,代码段,数据,文件是共享的,但是每个线程有独立的寄存器还有栈。当我们从一个线程切换到另一个线程时,为了给人一种多处理的错觉,我们需要从第一个线程切换出寄存器,这样我们就能从第二个线程把它们加载回来。
线程封装了并发性,为什么进程要用多线程?
一个是并行性(Parallelism)。如果你有多个核,通过在同一个进程中有多个线程,可以让许多任务同时处理。
另一个是为了并发(Concurrency)。并发性就是大多数线程大部分时间都在休眠的情况,比如某个线程需要做一些 I/O,开始 I/O 时进入睡眠,然后在 I/O 完成时醒来,那么 CPU 不必等待 I/O 完成,而是可以做其他的事情。这就是多线程的好处。
那么为什么我们需要进程来保证可靠性、安全性和隐私性呢?
对于可靠性:Bug 只会覆盖一个进程的内存,恶意的或者被破坏的进程不能干扰其他进程。
对于安全还有隐私性:进程不能修改其他进程的内存
公平性:共享磁盘,CPU 等资源。
这个保护主要通过翻译机制实现的,每个进程地址空间通过翻译机制映射到物理内存,这个翻译是进程本身不可控的。那么操作系统是如何保证进程无法修改页表从而影响翻译呢?这就引入了下一个话题:双模式操作(Dual-mode Operation)
硬件至少提供了两种模式:内核模式(Kernel mode,或管理模式 Supervisor mode)和用户模式(User mode)。当你在用户模式下运行时某些操作会被禁止,比如当你在用户模式时你不能改变你使用的页表,这只有在内核模式下的操作系统才能做到。在用户模式下还不能禁止中断,这样,一个如果想计算PI最后一位的进程就不能阻止其他进程在计时器结束时获得CPU时间。在用户模式下你也被阻止直接与硬件交互等等,因此不能破坏磁盘上的文件。
我们小心控制的用户模式和内核模式之间的转换的是什么?包括系统调用(System call),中断,异常等等。如上图中的流程所示,我们有用户进程,它们对内核进行系统调用,从用户模式切换到内核模式执行系统调用中对应的操作,完成后退出内核模式,系统调用返回。
这是一个典型的Unix系统结构中各个模式分别包含什么的表格:
用户模式包含你所有的程序和库等等。
系统调用:表示可以安全访问各种资源的代码。
内核模式包含:信号处理,I/O 系统,文件系统,块交换 I/O 系统,磁盘驱动,CPU 调度,页交换,虚拟内存管理等等。内核通过接口访问并控制硬件。
举个例子,我们有硬件有内核模式和用户模式。硬件可能会 exec 创建一个新进程。用户模式下的系统调用会进入内核模式,执行完操作后返回用户模式。中断可能导致用户模式进入内核,然后可能检查硬件比如 I/O 就绪,最终从中断中返回。在你除以零或者发生一个页面错误,会发生一个异常,导致进入内核模式,然后最终返回。
总共有三种可能触发用户模式到内核模式转换的操作类型:
系统调用:
调用一个系统服务,例如 exit 退出进程
函数调用,但是涉及访问进程外的一些资源
目前没有系统函数需要的内存地址
RPC 远程函数调用
Marshall 寄存器中的系统调用id和参数并执行系统调用
中断:
外部异步事件触发上下文切换,例如,定时器,I/O设备
Trap 或者异常:
内部同步事件触发上下文切换
例如,违反保护(segmentation fault),除以零,…
如果你注意到这里有两个进程,一个绿色的,一个**的。灰色的代表的是操作系统的内存。
原文: style="font-size: 18px;font-weight: bold;border-left: 4px solid #a10d00;margin: 10px 0px 15px 0px;padding: 10px 0 10px 20px;background: #f1dada;">我的电脑老是cpu占用率100%
WinXP中CPU占用100%原因及解决方法
我们在使用Windows XP操作系统的时候,用着用着系统就变慢了,一看“ 任务管理器 ”才发现CPU占用达到100%。这是怎么回事情呢?遇到病毒了,硬件有问题,还是系统设置有问题,在本文中笔者将从硬件,软件和病毒三个方面来讲解系统资源占用率为什么会达到100%。
经常出现CPU占用100%的情况,主要问题可能发生在下面的某些方面:
CPU占用率高 的九种可能
1、防杀毒软件造成 故障
由于新版的 KV 、金山、 瑞星 都加入了对网页、 插件 、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,或者,升级你的硬件配备。
2、驱动没有经过认证,造成CPU资源占用100%
大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 处理方式:尤其是 显卡驱动 特别要注意,建议使用 微软认证 的或由官方发布的驱动,并且严格核对型号、版本。
3、 病毒、木马 造成
大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。
4、控制面板— 管理工具 —服务—RISING REALTIME MONITOR SERVICE 点鼠标右键,改为手动。
5、开始->运行->msconfig->启动,关闭不必要的启动项,重启。
6、查看“ svchost ”进程。
svchost . exe 是Windows XP系统 的一个核心进程。 svchost.exe 不单单只出现 在Window s XP中,在使用 NT 内核的 Windows系统 中都会有svchost.exe的存在。一般在 Windows 2000 中 svchost.exe进程 的数目为2个,而 在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。
7、查看 网络连接 。主要是网卡。
8、查看网络连接
当安装了Windows XP的计算机做服务器的时候,收到端口 445 上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。你要确定合适的 MaxWorkItems 设置以提高系统响应能力。如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太 多系统 资源。
要解决此问题,我们可以通过修改注册表来解决:在 注册表编辑器 中依次展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver ]分支,在右侧窗口中 新建 一个名为“maxworkitems”的 DWORD值 。然后双击该值,在打开的窗口中键入下列数值并保存退出:
如果计算机有512MB以上的内存,键入“1024”;如果计算机内存小于 512 MB,键入“256”。
9、看看是不是Windows XP使用鼠标右键引起CPU占用100%
前不久的报到说在资源管理器里面使用鼠标右键会导致CPU资源100%占用,我们来看看是怎么回事?
征兆:
在资源管理器里面,当你右键点击一个目录或一个文件,你将有可能出现下面所列问题:
任何文件的拷贝操作在那个时间将有可能停止相应
网络连接速度将显著性的降低
所有的流输入/输出操作例如使用Windows Media Player 听音乐将有可能是音乐失真成因:
当你在资源管理器里面右键点击一个文件或目录的时候,当快捷 菜单显示 的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平。
解决方法:
方法一:关闭“为菜单和工具提示使用过渡效果”
1、点击“开始”--“控制面板”
2、在“控制面板”里面双击“显示”
3、在“显示”属性里面点击“外观”标签页
4、在“外观”标签页里面点击“效果”
5、在“效果”对话框里面,清除“为菜单和工具提示使用过渡效果”前面的复选框接着点击两次“确定”按钮。
方法二:在使用鼠标右键点击文件或目录的时候先使用鼠标左键选择你的目标文件或目录。然后再使用鼠标右键弹出快捷菜单。
CPU占用100%解决办法
一般情况下CPU占了100%的话我们的电脑总会慢下来,而很多时候我们是可以通过做 一点点 的改动就可以解决,而不必问那些大虾了。
当机器慢下来的时候,首先我们想到的当然是任务管理器了,看看到底是哪个程序占了较搞的比例,如果是某个大程序那还可以原谅,在关闭该程序后只要CPU正常了那就没问题;如果不是,那你就要看看是什幺程序了,当你查不出这个进程是什幺的时候就去google或者 baidu 搜。有时只结束是没用的,在 xp下 我们可以结合msconfig里的启动项,把一些不用的项给关掉。在2000下可以去下个winpatrol来用。
一些常用的软件,比如浏览器占用了很搞的CPU,那幺就要升级该软件或者干脆用别的同类软件代替,有时软件和系统会有点不兼容,当然我们可以试下xp系统下给我们的那个兼容项,右键点该. exe文件 选兼容性。
svchost.exe有时是比较头痛的,当你看到你的某个svchost.exe占用很大CPU时你可以去下个aports或者fport来检查其对应的程序路径,也就是什幺东西在掉用这个svchost.exe,如果不是c:\Windows\ system32 (xp)或c:\winnt\system32(2000)下的,那就可疑。升级杀毒软件杀毒吧。
右击 文件导致100%的CPU占用我们也会遇到,有时点右键停顿可能就是这个问题了。官方的解释:先点左键选中,再右键(不是很理解)。非官方:通过在桌面点右键-属性-外观-效果,取消”为菜单和工具提示使用下列过度效果(U)“来解决。还有某些杀毒软件对文件的监控也会有所影响,可以 关闭杀毒软件 的文件监控;还有就是对网页,插件,邮件的监控也是同样的道理。
一些驱动程序有时也可能出现这样的现象,最好是选择微软认证的或者是官方发布的驱动来装,有时可以适当的升级驱动,不过记得最新的不是最好的。
CPU降温软件 ,由于软件在运行时会利用所以的CPU空闲时间来进行降温,但Windows不能分辨普通的CPU占用和 降温软件 的降温指令 之间的区别 ,因此CPU始终显示100%,这个就不必担心了,不影响正常的系统运行。
在处理较大的 word文件 时由于word的拼写和语法检查会使得CPU累,只要打开word的工具-选项-拼写和语法把”检查拼写和检查语法“勾去掉。
单击 avi视频 文件后CPU占用率高是因为系统要先扫描该文件,并检查文件所有部分,并建立索引;解决办法:右击保存视频文件的文件夹-属性-常规-高级,去掉为了快速搜索,允许索引服务编制该文件夹的索引的勾。
CPU占用100%案例分析
1、 dllhost进程造成CPU使用率占用100%
特征:服务器正常CPU消耗应该在75%以下,而且CPU消耗应该是上下起伏的,出现这种问题的服务器,CPU会突然一直处100%的水平,而且不会下降。查看任务管理器,可以发现是DLLHOST.EXE消耗了所有的CPU空闲时间,管理员在这种情况下,只好重新启动IIS服务,奇怪的是,重新启动IIS服务后一切正常,但可能过了一段时间后,问题又再次出现了。
直接原因:
有一个或多个ACCESS数据库在多次读写过程中损坏,微软的 MDAC 系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其它线程只能等待,IIS被锁了,全部的CPU时间都消耗在DLLHOST中。
解决办法:
安装“一流信息监控拦截系统”,使用其中的“首席文件检查官IIS健康检查官”软件,
启用”查找锁模块”,设置:
--wblock=yes
监控的目录,请指定您的主机的文件所在目录:
--wblockdir=d:\test
监控生成的日志的文件保存位置在安装目录的log目录中,文件名为:logblock.htm
停止IIS,再启动“首席文件检查官IIS健康检查官”,再启动IIS,“首席文件检查官IIS健康检查官”会在logblock.htm中记录下最后写入的ACCESS文件的。
过了一段时间后,当问题出来时,例如CPU会再次一直处100%的水平,可以停止IIS,检查logblock.htm所记录的最后的十个文件,注意,最有问题的往往是计数器类的ACCESS文件,例如:”**COUNT. MDB ”,”**COUNT.ASP”,可以先把最后十个文件或有所怀疑的文件删除到回收站中,再启动IIS,看看问题是否再次出现。我们相信,经过仔细的查找后,您肯定可以找到这个让您操心了一段时间的文件的。
找到这个文件后,可以删除它,或下载下来,用ACCESS2000修复它,问题就解决了。
2、 svchost.exe造成CPU使用率占用100%
在win.ini文件中,在[Windows]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什幺都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如“AOL Trojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。
在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那幺后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。
在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”下的Explorer 键值改为Explorer=“C:\Windows\expiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run”、“HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run”的目录下都有可能,最好的办法就是在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马该病毒也称为“Code Red II(红色代码2)”病毒,与早先在西方英文系统下流行“红色代码”病毒有点相反,在国际上被称为VirtualRoot(虚拟目录)病毒。该蠕虫病毒利用Microsoft已知的溢出漏洞,通过80端口来传播到其它的Web页服务器上。受感染的机器可由黑客们通过Http Get的请求运行scripts/root.exe来获得对受感染机器的完全控制权。
当感染一台服务器成功了以后,如果受感染的机器是中文的系统后,该程序会休眠2天,别的机器休眠1天。当休眠的时间到了以后,该蠕虫程序会使得机器重新启动。该蠕虫也会检查机器的月份是否是10月或者年份是否是2002年,如果是,受感染的服务器也会重新启动。当Windows NT系统启动时,NT系统会自动搜索C盘根目录下的文件explorer.exe,受该网络蠕虫程序感染的服务器上的文件explorer.exe也就是该网络蠕虫程序本身。该文件的大小是8192字节,VirtualRoot网络蠕虫程序就是通过该程序来执行的。同时,VirtualRoot网络蠕虫程序还将cmd.exe的文件从Windows NT的system目录拷贝到别的目录,给黑客的入侵敞开了大门。它还会修改系统的注册表项目,通过该注册表项目的修改,该蠕虫程序可以建立虚拟的目录C或者D,病毒名由此而来。值得一提的是,该网络蠕虫程序除了文件explorer.exe外,其余的操作不是基于文件的,而是直接在内存中来进行感染、传播的,这就给捕捉带来了较大难度。
”程序的文件名,再在整个注册表中搜索即可。
我们先看看微软是怎样描述svchost.exe的。在微软知识库314056中对svchost.exe有如下描述:svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
其实svchost.exe是Windows XP系统的一个核心进程。svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。一般在Windows 2000中svchost.exe进程的数目为2个,而在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。所以看到系统的进程列表中有几个svchost.exe不用那幺担心。
svchost.exe到底是做什幺用的呢?
首先我们要了解一点那就是Windows系统的中的进程分为:独立进程和共享进程这两种。由于Windows系统中的服务越来越多,为了节约有限的系统资源微软把很多的系统服务做成了共享模式。那svchost.exe在这中间是担任怎样一个角色呢?
svchost.exe的工作就是作为这些服务的宿主,即由svchost.exe来启动这些服务。svchost.exe只是负责为这些服务提供启动的条件,其自身并不能实现任何服务的功能,也不能为用户提供任何服务。svchost.exe通过为这些系统服务调用动态链接库(DLL)的方式来启动系统服务。
svchost.exe是病毒这种说法是任何产生的呢?
因为svchost.exe可以作为服务的宿主来启动服务,所以病毒、木马的编写者也挖空心思的要利用svchost.exe的这个特性来迷惑用户达到入侵、破坏计算机的目的。
如何才能 辨别 哪些是正常的svchost.exe进程,而哪些是 病毒进程 呢?
svchost.exe的键值是在“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost”,如图1所示。图1中每个键值表示一个独立的svchost.exe组。
微软还为我们提供了一种察看系统正在运行在svchost.exe列表中的服务的方法。以Windows XP为例:在“运行”中输入:cmd,然后在命令行模式中输入:tasklist /svc。系统列出如图2所示的服务列表。图2中红框包围起来的区域就是svchost.exe启动的服务列表。如果使用的是Windows 2000系统则把前面的“tasklist /svc”命令替换为:“tlist -s”即可。如果你怀疑计算机有可能被病毒感染,svchost.exe的服务出现异常的话通过搜索 svchost.exe文件 就可以发现异常情况。一般只会找到一个在:“C:\Windows\System32”目录下的svchost.exe程序。如果你在其它目录下发现svchost.exe程序的话,那很可能就是中毒了。
还有一种确认svchost.exe是否中毒的方法是在任务管理器中察看进程的执行路径。但是由于在Windows系统自带的任务管理器不能察看进程路径,所以要使用第三方的进程察看工具。
上面简单的介绍了svchost.exe进程的相关情况。总而言之,svchost.exe是一个系统的核心进程,并不是病毒进程。但由于svchost.exe进程的特殊性,所以病毒也会千方百计的入侵svchost.exe。通过察看svchost.exe进程的执行路径可以确认是否中毒。
3、 Services.exe造成CPU使用率占用100%
症状
在基于 Windows 2000 的计算机上,Services.exe 中的 CPU 使用率可能间歇性地达到100 %,并且计算机可能停止响应(挂起)。出现此问题时,连接到该计算机(如果它是文件服务器或域控制器)的用户会被断开连接。您可能还需要重新启动计算机。如果 Esent.dll 错误地处理将文件刷新到磁盘的方式,则会出现此症状。
解决方案
Service Pack 信息
要解决此问题,请获取最新的 Microsoft Windows 2000 Service Pack。有关其它信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
260910 如何获取最新的 Windows 2000 Service Pack
修复程序信息
Microsoft 提供了受支持的修补程序,但该程序只是为了解决本文所介绍的问题。只有计算机遇到本文提到的特定问题时才可应用此修补程序。此修补程序可能还会接受其它一些测试。因此,如果这个问题没有对您造成严重的影响,Microsoft 建议您等待包含此修补程序的下一个 Windows 2000 Service Pack。
要立即解决此问题,请与“Microsoft 产品支持服务”联系,以获取此修补程序。有关“Microsoft 产品支持服务”电话号码和支持费用信息的完整列表,请访问 Microsoft Web 站点:
注意 :特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新程序能够解决您的问题,可免收通常情况下收取的电话支持服务费用。对于特定更新程序无法解决的其它支持问题和事项,将正常收取支持费用。
下表列出了此修补程序的全球版本的文件属性(或更新的属性)。这些文件的日期和时间按协调通用时间 (UTC) 列出。查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用“控制面板”中的“日期和时间”工具中的 时区 选项卡。
状态
Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中存在的问题。此问题最初是在 Microsoft Windows 2000 Service Pack 4 中更正的。
4、正常软件造成CPU使用率占用100%
首先,如果是从开机后就发生上述情况直到关机。那幺就有可能是由某个随系统同时登陆的软件造成的。可以通过运行输入“msconfig”打开“系统实用配置工具”,进入“启动”选项卡。接着,依次取消可疑选项前面的对钩,然后重新启动电脑。反复测试直到找到造成故障的软件。或者可以通过一些优化软件如“优化大师”达到上述目的。另:如果键盘内按键卡住也可能造成开机就出现上述问题。
如果是使用电脑途中出项这类问题,可以调出任务管理器(WINXP CTRL+ALT+DEL WIN2000 CTRL+SHIFT“ESC),进入”进程“选项卡,看”CPU“栏,从里面找到占用资源较高的程序(其中SYSTEM IDLE PROCESS是属于正常,它的值一般都很高,它的作用是告诉当前你可用的CPU资源是多少,所以它的值越高越好)通过搜索功能找到这个进程属于哪个软件。然后,可以通过升级、关闭、卸载这个软件或者干脆找个同类软件替换,问题即可得到解决。
5、病毒、木马、间谍软件造成CPU使用率占用100%
出现CPU占用率100% 的故障经常是因为病毒木马造成的,比如震荡波病毒。应该首先更新病毒库,对电脑进行全机扫描 。接着,在使用反间谍软件Ad—Aware,检查是否存在间谍软件。论坛上有不少朋友都遇到过svchost.exe占用CPU100%,这个往往是中毒的表现。
svchost.exe Windows中的系统服务是以动态链接库(DLL)的形式实现的,其中一些会把可执行程序指向svchost.exe,由它调用相应服务的动态链接库并加上相应参数来启动服务。正是因为它的特殊性和重要性,使它更容易成为了一些病毒木马的宿主。
6、 explorer.exe进程造成CPU使用率占用100%
在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那幺后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。
在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”下的
Explorer 键值改为Explorer=“C:\Windows\expiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run”、“HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run”的目录下都有可能,最好的办法就是在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马”程序的文件名,再在整个注册表中搜索即可。
7、超线程导致CPU使用率占用100%
这类故障的共同原因就是都使用了具有超线程功能的P4 CPU。我查找了一些资料都没有明确的原因解释。据一些网友总结超线程似乎和天网防火墙有冲突,可以通过卸载天网并安装其它防火墙解决,也可以通过在BIOS中关闭超线程功能解决。
8、AVI视频文件造成CPU使用率占用100%
在Windows XP中,单击一个较大的AVI视频文件后,可能会出现系统假现象,并且造成exploere.exe进程的使用率100%,这是因为系统要先扫描该文件,并检查文件所有部分,建立索引。如果文件较大就会需要较长时间并造成CPU占用率100%。解决方法:右键单击保存视频文件的文件夹,选择”属性—>常规—>高级“,去掉”为了快速搜索,允许索引服务编制该文件夹的索引“前面复选框的对钩即可。
9、杀毒软件CPU使用率占用100%
现在的杀毒软件一般都加入了,对网页、邮件、个人隐私的即时监空功能,这样无疑会加大系统的负担。比如:在玩游戏的时候,会非常缓慢。关闭该杀毒软件是解决得最直接办法。
10、处理较大的Word文件时CPU使用率过高
上述问题一般还会造成电脑假,这些都是因为WORD的拼写和语法检查造成的,只要打开WORD的“工具—选项”,进入“拼写和语法”选项卡,将其中的“键入时检查拼写”和“键入时检查语法”两项前面的复选框中的钩去掉即可。
11、网络连接导致CPU使用率占用100%
当你的Windows2000/xp作为服务器时,收到来自端口445上的连接请求后,系统将分配内存和少量CPU资源来为这些连接提供服务,当负荷过重,就会出现上述情况。要解决这个问题可以通过修改注册表来解决,打开注册表,找到HKEY—LOCAL—MACHNE\SYSTEM\CurrentControlSet\Services\lanmanserver,在右面新建一个名为";maxworkitems";的DWORD值.然后双击该值,如果你的电脑有512以上内存,就设置为";1024";,如果小于512,就设置为256.
一些不完善的驱动程序也可以造成CPU使用率过高
经常使用待机功能,也会造成系统自动关闭硬盘DMA模式。这不仅会使系统性能大幅度下降,系统启动速度变慢,也会使是系统在运行一些大型软件和游戏时CPU使用率100%,产生停顿。
进程占用CPU 100%时可能中的病毒
system Idle Process
进程文件: [system process] or [system process]
进程名称: Windows内存处理系统进程
描 述: Windows页面内存管理进程,拥有0级优先。
介 绍:该进程作为单线程运行在每个处理器上,并在系统不处理其它线程的时候分派处理器的时间。它的CPU占用率越大表示可供分配的CPU资源越多,数字越小则表示CPU资源紧张。
Spoolsv.exe
进程文件: spoolsv or Spoolsv.exe
进程名称: Printer Spooler Service
描 述: Windows打印任务控制程序,用以打印机就绪。
介 绍:缓冲(spooler)服务是管理缓冲池中的打印和传真作业。
Spoolsv.exe→打印任务控制程序,一般会先加载以供列表机打印前的准备工作
Spoolsv.exe,如果常增高,有可能是病毒感染所致
目前常见的是:
Backdoor/Byshell(又叫隐形大盗、隐形杀手、西门庆病毒)
危害程度:中
受影响的系统: Windows 2000, Windows XP, Windows Server 2003
未受影响的系统: Windows 95, Windows 98, Windows Me, Windows NT, Windows 3.x, Macintosh, Unix, Linux,
病毒危害:
1. 生成病毒文件
2. 插入正常系统文件中
3. 修改系统注册表
4. 可被黑客远程控制
5. 躲避反病毒软件的查杀
简单的后门木马,发作会删除自身程序,但将自身程序套入可执行程序内(如:exe),并与计算机的通口(TCP端口138)挂钩,监控计算机的信息、密码,甚至是键盘操作,作为回传的信息,并不时驱动端口,以等候传进的命令,由于该木马不能判别何者是正确的端口,所以负责输出的列表机也是其驱动对象,以致Spoolsv.exe的使用异常频繁......
Backdoor.Win32.Plutor
破坏方法:感染PE文件的后门程序
病毒采用VC编写。
病毒运行后有以下行为:
1、将病毒文件复制到%WINDIR%目录下,文件名为";Spoolsv.exe";,并该病毒文件运行。";Spoolsv.exe";文件运行后释放文件名为";mscheck.exe";的文件到%SYSDIR%目录下,该文件的主要功能是每次激活时运行";Spoolsv.exe";文件。如果所运行的文件是感染了正常文件的病毒文件,病毒将会把该文件恢复并将其运行。
2、修改注册表以下键值:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Currentversion\Run
增加数据项:";Microsoft Script Checker"; 数据为:";MSCHECK.EXE /START";
修改该项注册表使";MSCHECK.EXE";文件每次系统激活时都将被运行,而";MSCHECK.EXE";用于运行";Spoolsv.exe";文件,从而达到病毒自激活的目的。
3、创建一个线程用于感染C盘下的PE文件,但是文件路径中包含";winnt";、";Windows";字符串的文件不感染。另外,该病毒还会枚举局域网中的共享目录并试图对这些目录下的文件进行感染。该病毒感染文件方法比较简单,将正常文件的前0x16000个字节替换为病毒文件中的数据,并将原来0x16000个字节的数删除
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。