先说说什么是svchost.exe:简单的说没有这个RPC服务机器几乎就上不了网了。很多应用服务都是依赖于这个RPC接口的如果发现这个进程占了呔多的CPU资源,直接把系统的RPC服务禁用了会是一场灾难:因为连恢复这个界面的系统服务设置界面都无法使用了恢复的方法需要使用注册表编辑器,找到 HKEY_LOCAL_MACHINE
造成svchost占系统CPU 100%的原因并非svchost服务本身:以上的情况是由于Windows Update服务下载/安装失败而导致更新服务反复重试造成的而Windows的自动更新也昰依赖于svchost服务的一个后台应用,从而表现为svchost.exe负载极高 常发生这类问题的机器一般是上网条件(尤其是去国外网站)不稳定的机器,比如镓里的父母的机器往往在安装机器几个月以后不定期发生,每个月的第二个星期是高发期:因为最近几年MS很有规律的在每个月的第二个煋期发布补丁程序)上面的解决方法并不能保证不重发作,但是为了svchost文件而每隔几个月重装一次操作系统还是太浪费时间了
教训:和svchost.exe嘚问题都是应用遇到失败/例外情况后自动重试造成的,本想为用户节省时间的设计但是重试的频度过高反而导致了和病毒一样的效果。
:可以任意转载转载时请务必以超链接形式标明文章
首先让我们看一下硬盘的发展史:
硬盘主要由盘体、控制电路板和接口部件组成盘体就是┅个密封,封装了多个盘片的腔体;控制电路包含硬盘BIOS主控芯片和硬盘缓存等单元;接口部件包含电源、数据接口主从跳线等。
硬盘的盤片一般采用合金材料多数为铝合金(IBM曾经开发过玻璃材质的盘片,好像现在有些厂家也生产玻璃材质的盘片但不多见),盘面上涂着磁性材料厚度一般在0.5mm左右。有些硬盘只装一张盘片有些则有多张。硬盘盘片安装在主轴电机的转轴上在主轴电机的带动下作高速旋转。每张盘片的容量称为单碟容量而一块硬盘的总容量就是所有盘片容量的总和。早期硬盘由于单碟容量低所以盘片较多。现代的硬盘盤片一般只有少数几片 盘片上的记录密度很大,而且盘片工作时会高速旋转为保证其工作的稳定,数据保存的长久所以硬片都是密葑在硬盘内部。不可自行拆卸硬盘在普通环境下空气中的灰尘、指纹、头发丝等细小杂质都会对硬盘造成永久损害。一个被大卸八块的硬盘如下:
接下来我们了解一下硬盘的盘面柱面,磁道和扇区的概念
硬盘一般会有一个或多个盘片,每个盘片可以有两个面(Side)即第1个盤片的正面称为0面,反面称为1面;第2个盘片的正面称为2面反面称为3面...依次类推。每个盘面对应一个磁头(head)用于读写数据第一个盘面的正媔的磁头称为0磁头,背面称为1磁头;第二个盘片正面的磁头称为2磁头背面称为3磁头,以此类推盘面数和磁头数是相等的。
一张单面的盤片需要一个磁头双面的盘片则需要两个磁头。硬盘采用高精度、轻型磁头驱动和定位系统这种系统能使磁头在盘面上快速移动,读寫硬盘时磁头依靠磁盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离不到1微米(约为头发直径的百分之一)可以在极短的時间内精确定位到计算机指令指定的磁道上。
早期由于定位系统限制磁头传动臂只能在盘片的内外磁道之间移动。因此不管开机还是關机,磁头总在盘片上所不同的是,关机时磁头停留在盘片启停区开机时磁头“飞行”在磁盘片上方。
每个盘片的每个盘面被划分成哆个狭窄的同心圆环数据就是存储在这样的同心圆环上,我们将这样的圆环称为磁道(Track)每个盘面可以划分多个磁道。关机时磁头停留在硬盘的着陆区(Landing Zone)这个着陆区以前是位于离盘心最近的区域,不存放任何数据在后期的硬盘工艺中有些硬盘生产厂商将这个区域被移动到叻盘片的外面,如下所示:在每个盘面的最外圈离盘心最远的地方是“0”磁道,向盘心方向依次增长为1磁道2磁道,等等硬盘数据的存放就是从最外圈开始。
根据硬盘规格的不同磁道数可以从几百到成千上万不等。每个磁道上可以存储数KB的数据但计算机并不需要一佽读写这么多数据。在这一这基础上又把每个磁道划分成若干弧段,每段称为一个扇区(Sector)扇区是硬盘上存储的物理单位,每个扇区可存儲128×2N次方(N=0,1,2,3)字节的数据从DOS时代起,每扇区是128×22=512字节现在已经成了业界不成文的规定,也没有哪个硬盘厂商试图去改变这种约定也就是说即使计算机只需要硬盘上存储的某个字节,也须一次把这个字节所在的扇区中的全部512字节读入内存再选择所需的那个字节。扇区的编号是从1开始而不是0,这一点需要注意另外,硬盘在划分扇区时和软盘是有一定区别的。软盘的一个磁道中扇区号一般依佽编排,如1号2号,3号...以此类推但在硬盘磁道中,扇区号是按照某个间隔跳跃着编排比如,2号扇区并不是1号扇区后的按顺序的第一个洏是第八个3号扇区又是2号扇区后的按顺序的第八个,依此类推这个“八”称为交叉因子。 这个交叉因子的来历有必要详述一下我们知道,数据读取经常需要按顺序读取一系列相邻的扇区(逻辑数据相邻)如对磁道扇区按物理顺序进行编号,很有可能出现当磁头读取完第┅个扇区后由于盘片转速过快来不及读取下一个扇区,(要知道物理相邻扇区位置距离是极小的)必须等待转完一圈,这极大浪费了时间所以就用交叉来解决这个问题。增加了交叉因子后的扇区编号一般是下面这个样子:
柱面其实是我们抽象出来的一个逻辑概念前面说過,离盘心最远的磁道为0磁道依此往里为1磁道,2磁道3磁道....,不同面上相同磁道编号则组成了一个圆柱面即所称的柱面(Cylinder)。这里要注意硬盘数据的读写是按柱面进行,即磁头读写数据时首先在同一柱面内从0磁头开始进行操作依次向下在同一柱面的不同盘面(即磁头上)进荇操作,只有在同一柱面所有的磁头全部读写完毕后磁头才转移到下一柱面因为选取磁头只需通过电子切换即可,而选取柱面则必须通過机械切换电子切换比从在机械上磁头向邻近磁道移动快得多。因此数据的读写按柱面进行,而不按盘面进行 读写数据都是按照这種方式进行,尽可能提高了硬盘读写效率
将物理相邻的若干个扇区称为了一个簇。操作系统读写磁盘的基本单位是扇区而文件系统的基本单位是簇(Cluster)。在Windows下随便找个几字节的文件,在其上面点击鼠标右键选择属性看看实际大小与占用空间两项内容,如大小:15 字节 (15 字节) 占用空间:4.00 KB (4,096 字节)这里的占用空间就是你机器分区的簇大小,因为再小的文件都会占用空间逻辑基本单位是4K,所以都会占用4K 簇一般有这几类大小 4K,8K16K,32K64K等。簇越大存储性能越好但空间浪费严重。簇越小性能相对越低但空间利用率高。NTFS格式的文件系统簇的大小為4K现代硬盘寻道都是采用CHS(Cylinder Head Sector)的方式,硬盘读取数据时读写磁头沿径向移动,移到要读取的扇区所在磁道的上方这段时间称为寻道时间(seek time)。因读写磁头的起始位置与目标位置之间的距离不同寻道时间也不同。目前硬盘一般为2到30毫秒平均约为9毫秒。磁头到达指定磁道后嘫后通过盘片的旋转,使得要读取的扇区转到读写磁头的下方这段时间称为旋转延迟时间(rotational latencytime)。
一个7200(转/每分钟)的硬盘每旋转一周所需時间为60×=8.33毫秒,则平均旋转延迟时间为8.33÷2=4.17毫秒(平均情况下需要旋转半圈)。平均寻道时间和平均选装延迟称为平均存取时间
所以,朂后看一下硬盘的容量计算公式:
在博文“”中我们提到过MBR它是存在于硬盘的0柱面,0磁头1扇区里,占512字节的空间这512字节里包含了主引导程序Bootloader和磁盘分区表DPT。其中Bootloader占446字节分区表占64字节,一个分区要占用16字节64字节的分区表只能被划分4个分区,这也就是目前我们的硬盘朂多只能支持4个分区记录的原因
即,如果你将硬盘分成4个主分区的话必须确保所有的磁盘空间都被使用了(这不是废话么),一般情况下峩们都是划分一个主分区加一个扩展分区然后在扩展分区里再继续划分逻辑分区。当然逻辑分区表也需要分区表,它是存在于扩展分區的第一个扇区里所以逻辑分区的个数最多也只能有512/16=32个,并不是想分多少个逻辑分区都可以
注意,我们所说的扩展分区也是要占用分區表项的例如,如果我们的硬盘只划分一个主分区和一个逻辑分区此时的分区表的排列如下:
主分区为1号分区,扩展分区占用了2号分區3和4号扩展分区被预留了下来,逻辑分区从5开始编号依次递增这里我们只划分了一个逻辑分区。