一、计算机组成
1.中央处理器
CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元,这三部分由CPU内部总线连接起来。
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191353268-464741045.jpg)
- 控制单元
控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
- 运算单元
是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。由算术逻辑单元(ALU)、通用寄存器、数据缓冲寄存器DR和状态条件寄存器PSW组成。
- 存储单元
包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191353626-1614795007.jpg)
关于CPU的几个参数
1)主频
表示在CPU内数字脉冲信号震荡的速度,即CPU的时钟频率,计算机的操作在时钟信号的控制下分步执行,每个时钟信号周期完成一步操作,时钟频率的高低在很大程度上反映了CPU速度的快慢。
主频和实际的运算速度存在一定的关系,但还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(缓存、指令集,CPU的位数等等)。CPU的主频不代表CPU的速度,但提高主频对于提高CPU运算速度却是至关重要的。举个例子来说,假设某个CPU在一个时钟周期内执行一条运算指令,那么当CPU运行在100MHz主频时,将比它运行在50MHz主频时速度快一倍。因为100MHz的时钟周期比50MHz的时钟周期占用时间减少了一半,也就是工作在100MHz主频的CPU执行一条运算指令所需时间仅为10ns比工作在50MHz主频时的20ns缩短了一半,自然运算速度也就快了一倍。
这里实际是体现的木桶效应,速度会受到最短那个“短板”影响。这里也解答了一个误区,一般大家选择CPU的时候发现,主频越高核数越少,基本成反比规律。这个可作为一般选择CPU的看法,但不是科学的看法,一般可以理解为是目前给出的一种性价比较高的方案。当然在核数少的情况下,高主频会发挥最大优势。
这里可以明确的是主频越高,功耗就越高。
2)核数
在2005年以前,主频一直是两大处理器巨头Intel和AMD争相追逐的焦点。而且处理器主频也在Intel和AMD的推动下达到了一个又一个的高峰就在处理器主频提升速度的同时,单纯主频的提升已经无法为系统整体性能的提升带来明显的好处,并且高主频带来了处理器巨大的发热量,更为不利是Intel和AMD两家在处理器主频提升上已经有些力不从心了。在这种情况下,Intel和AMD都不约而同地将投向了多核心的发展方向在不用进行大规模开发的情况下将现有产品发展成为理论性能更为强大的多核心处理器系统,无疑是相当明智的选择。
多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核),此时处理器能支持系统总线上的多个处理器,由总线控制器提供所有总线控制信号和命令信号。
3)多线程
CPU多线程同简称SMT。SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或Cache未命中带来的访问内存延时。当没有多个线程可用时,SMT处理器几乎和传统的宽发射超标量处理器一样。
当前在选购CPU的时候线程数也是一个重要的参考指标,一般与CPU的核数呈现1:2的关系。
这里已经将主频、核数、线程数进行简单的总结,但如何让CPU的性能发挥最大,一个关键的因素是程序,若程序设计的时候不能使用多核、不能多线程,再多的核心数、线程数支持也是白搭。所有我们监测服务器性能的时候发现,CPU利用率不高,但程序比较慢,这个时候就要想想程序架构了。
4)制造工艺
目前最新的制造工艺是7nm
5)缓存
高速缓冲存储器Cache是位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在Cache中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从Cache中调用,从而加快读取速度。由此可见,在CPU中加入Cache是一种高效的解决方案,这样整个内存储器(Cache+内存)就变成了既有Cache的高速度,又有内存的大容量的存储系统了。Cache对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与Cache间的带宽引起的。
数据存储数据从慢到快依次是:机械硬盘<固态硬盘<内存<L3<L2<L1
- 读取顺序
CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入Cache中,可以使得以后对整块数据的读取都从Cache中进行,不必再调用内存。
正是这样的读取机制使CPU读取Cache的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在Cache中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先Cache后内存。
- 缓存分类
CPU一般由L1、L2、L3三个级缓存组成,每级的缓存大小和用途定义也不同。
L1(1级)高速缓存是计算机系统中存在的最快的内存。就访问优先级而言,L1缓存具有CPU在完成特定任务时最可能需要的数据。
就其大小而言,L1高速缓存通常最多可达256KB。但是,一些真正功能强大的CPU现在将其占用近1MB。现在,某些服务器芯片组(如Intel的高端Xeon CPU)具有1-2MB的一级缓存。
L1缓存通常也分为两种方式,分为指令缓存和数据缓存。指令高速缓存处理有关CPU必须执行的操作的信息,而数据高速缓存则保留要在其上执行操作的数据。
L2(2级)缓存比L1缓存慢,但大小更大。它的大小通常在256KB到8MB之间,尽管更新,功能强大的CPU往往会超过此大小。L2高速缓存保存下一步可能由CPU访问的数据。在大多数现代CPU中,L1和L2高速缓存位于CPU内核本身,每个内核都有自己的高速缓存。
L3(3级)高速缓存是最大的高速缓存存储单元,也是最慢的一个。它的范围从4MB到50MB以上。现代CPU在CPU裸片上具有用于L3高速缓存的专用空间,并且占用了很大一部分空间。
- 读取命中率
CPU在Cache中找到有用的数据被称为命中,当Cache中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有2级Cache的CPU中,读取L1 Cache的命中率为80%。也就是说CPU从L1 Cache中找到的有用数据占数据总量的80%,剩下的20%从L2 Cache读取。由于不能准确预测将要执行的数据,读取L2的命中率也在80%左右(从L2读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。在一些高端领域的CPU(像Intel的Itanium)中,我们常听到L3 Cache,它是为读取L2 Cache后未命中的数据设计的—种Cache,在拥有L3 Cache的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。
为了保证CPU访问时有较高的命中率,Cache中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出Cache,提高Cache的利用率。
- 缓存的未来
缓存设计一直在发展,尤其是随着内存变得更便宜,更快和更密集。英特尔和AMD在缓存设计方面进行了相当多的试验,英特尔甚至还在试验L4缓存。CPU市场正在以前所未有的速度向前发展。
处理器状态
- 运行状态(operating state):执行指令
- 解题状态(Problem state):执行应用程序
- 仅执行非特权指令:管理程序状态(Supervisor state)
- 特权模式下执行:程序可以访问整个系统,同时执行特权和非特权指令
- 等待状态(Wait state):等待特定事件完成
2.存储器
2.1.内存
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速率快。内存是电脑中的主要部件,它是相对于外存而言的。我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外存上的,但仅此时这些功能还不能使用,必须把它们调入内存中运行,才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的。通常我们把要永久保存的、大量的数据存储在外存上,而把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会直接影响电脑的运行速度。
按工作原理分类
1)只读存储器(ROM)
ROM表示只读存储器(Read Only Memory),在制造ROM的时候,信息(数据或程序)就被存入并永久保存。这些信息只能读出,一般不能写入,即使机器停电,这些数据也不会丢失。ROM一般用于存放计算机的基本程序和数据,如BIOS ROM。其物理外形一般是双列直插式(DIP)的集成块。
现在比较流行的只读存储器是闪存( Flash Memory),它属于EEPROM(电擦除可编程只读存储器)的升级,可以通过电学原理反复擦写。现在大部分BIOS程序就存储在 FlashROM芯片中。U盘和固态硬盘(SSD)也是利用闪存原理做成的。
2)随机存储器(RAM)
随机存储器(Random Access Memory)表示既可以从中读取数据,也可以写入数据。当机器电源关闭时,存于其中的数据就会丢失。我们通常购买或升级的内存条就是用作电脑的内存,内存条(SIMM)就是将RAM集成块集中在一起的一小块电路板,它插在计算机中的内存插槽上,以减少RAM集成块占用的空间。目前市场上常见的内存条有1G/条,2G/条,4G/条等。
RAM分为两种:DRAM和SRAM。
DRAM( Dynamic RAM,动态随机存储器)的存储单元是由电容和相关元件做成的,电容内存储电荷的多寡代表信号0和1。电容存在漏电现象,电荷不足会导致存储单元数据出错,所以DRAM需要周期性刷新,以保持电荷状态。DRAM结构较简单且集成度高,通常用于制造内存条中的存储芯片。
SRAM( Static RAM,静态随机存储器)的存储单元是由晶体管和相关元件做成的锁存器,每个存储单元具有锁存“0”和“1”信号的功能。它速度快且不需要刷新操作,但集成度差和功耗较大,通常用于制造容量小但效率高的CPU缓存。
a)SDRAM
Synchronous Dynamic RAM,同步动态随机存储器)采用3.3V工作电压,内存数据位宽64位。 SDRAM与CPU通过一个相同的时钟频率锁在一起,使两者以相同的速度同步工作。 SDRAM它在每一个时钟脉冲的上升沿传输数据SDRAM内存金手指为168脚。
SDRAM内存有以下几种:PC66/100/133150/166,核心频率分别为66MHz,100Mz133MHz,150MHz,166MHz。时钟频率、等效频率与核心频率相等。单根 SDRAM内存数据传输带宽最高为 166MHz × 64bit ÷ 8 = 1.3GB/s。
b)DDR SDRAM
Double data Rate SDRAM,双倍速率同步动态随机存储器)采用2.5V工作电压,内存数据位宽64位。 DDR SDRAM (简称DDR内存)一个时钟脉冲传输两次数据,分别在时钟脉冲的上升沿和下降沿各传输一次数据,因此称为双倍速率的SDRAM。
DDR内存金手指为184脚。DDR内存有以下几种::DDR 200 / 266 / 333400 / 500。核心频率与时钟频率相等,分别为100 MHz, 133 MHz, 166 MHz, 200 MHz, 250 MHz,等效频分别为200 MHz, 266 MHz, 333 MHz, 400 MHz, 500 MHz,请注意, DDR内存的等效频率是时钟频率的两倍,因为DDR内存是双倍速率工作的。DDR内存核心采用2位数据预读取,也就是一次(一个脉冲)取2位。
而DDR内存核心频率等于时钟频率,等效频率是时钟频率的2倍,所以内存核心一次(一个脉冲)取出的数能及时地一次(一个脉冲)传输出去。单根DDR内存数据传输带宽最高为500 MHz×64 bit÷ 8=4 GB/s。
c)DDR2 SDRAM
Double Data Rate 2 SDRAM)采用1.8V工作电压,内存数据位宽64位。 DDR2内存和DDR内存一样,一个时钟脉冲传输两次数据,但DDR2内存却拥有两倍于上一代DDR内存的预读取能力,即4位数据预读取。
DDR 2内存金手指为240脚。DDR2内存有以下几种: DDR2 533 / 667 / 800 / 066。核心频率分别为133 MHz, 166 MHz, 200 MHz, 266 MHz,时钟频率分别为: 266 MHz,333 MHz, 400 MHz, 533 MHz,等效频率分别为533 MHz, 667 MHz, 800 MHz, 1066 MHz。
前面已经说过, DDR2内存核心采用4位数据预读取,也就是一次(一个脉冲)取4位,如果和上一代DDR内存一样,时钟频率与核心频率相等,等效频率是时钟频率2倍的话,就无法及时地将取出的数传输出去;所以DDR 2内存的时钟频率是核心频率的2倍,这样才能将相同时间间隔内从内存核心取出的数,在相同时间间隔内传输出去。
单根DDR2内存的数据传输带宽最高为1066 MH2z X 64 bit÷ 8 = 8.6 GB/s。
d)DDR3 SDRAM
Double Data Rate 3 SDRAM)采用1.5 V工作电压,内存数据位宽64位。同样, DDR3内存拥有两倍于上一代DDR2内存的预读取能力,即8位数据预读取。
对于DDR 3内存,可以得出以下关系:时钟频率是核心频率的4倍,等效频率是时钟频率的2倍,也就是说DDR3内存等效频率是核心频率的8倍。
DDR 3内存有以下几种: DDR3 1066 / 1333 / 1600 / 1800 / 2000。核心频率分别为133 MHz,166 MHz, 200 MHz, 225 MHz, 250 MHz,时钟频率分别分533 MHz, 667 MHz, 800 MHz,900 MHz, 1000 MHz,等效频率分别为: 1066 MHz, 1333 MHz, 1600 MHz, 1800 MHz,2000 MHz。单根DDR3内存的数据传输带宽最高为2000 MHz × 64 bit÷ 8 =16 GB/s。
d)DDR4 SDRAM
Double Data Rate 4 SDRAM)采用1.2V工作电压,内存数据位宽64位, 16位数据预读取。取消双通道机制,一条内存即为一条通道。工作频率最高可达4266 MHz,单根DDR4内存的数据传输带宽最高为34 GB/s。
e)DDR5 SDRAM
DDR5 SDRAM的主要特性是芯片容量,而不仅仅是更高的性能和更低的功耗。DDR5预计将带来4266至6400 MT / s的I / O速度,电源电压降至1.1 V,允许的波动范围为3%(即±0.033V)。每个模块使用两个独立的32/40位通道(不使用/或使用ECC)。此外,DDR5将具有改进的命令总线效率(因为通道将具有其自己的7位地址(添加)/命令(Cmd)总线),更好的刷新方案以及增加的存储体组以获得额外的性能。
3)高速缓冲存储器(Cache)
Cache也是我们经常遇到的概念,也就是平常看到的一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache)这些数据,它位于CPU与内存之间,是一个读写速度比内存更快的存储器。当CPU向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中。当CPU再次需要这些数据时,CPU就从高速缓冲存储器读取数据,而不是访问较慢的内存,当然,如需要的数据在Cache中没有,CPU会再去读取内存中的数据。
2.2.硬盘
2.2.1.机械硬盘
机械硬盘(Hard Disk Drive)由一个或者多个铝制或者玻璃制的碟片组成。这些碟片外覆盖有铁磁性材料。主要由盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191354048-1713831354.jpg)
1)磁盘容量
硬盘的容量以兆字节(MB)或千兆字节(GB)为单位,1GB=1024MB,1TB=1024GB。但硬盘厂商在标称硬盘容量时通常取1G=1000MB,因此我们在BIOS中或在格式化硬盘时看到的容量会比厂家的标称值要小。
2)转速
转速(Rotationl Speed 或Spindle speed),是硬盘内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数。
转速的快慢是标示硬盘档次的重要参数之一,它是决定硬盘内部传输率的关键因素之一,在很大程度上直接影响到硬盘的速度。硬盘的转速越快,硬盘寻找文件的速度也就越快,相对的硬盘的传输速度也就得到了提高。硬盘转速以每分钟多少转来表示,单位表示为RPM,RPM是Revolutions Per minute的缩写,是转/每分钟。RPM值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。
硬盘的主轴马达带动盘片高速旋转,产生浮力使磁头飘浮在盘片上方。要将所要存取资料的扇区带到磁头下方,转速越快,则等待时间也就越短。因此转速在很大程度上决定了硬盘的读取速度。
家用的普通硬盘的转速一般有5400rpm、7200rpm几种,高转速硬盘是台式机用户的首选;服务器用户对硬盘性能要求最高,服务器中使用的SCSI硬盘转速基本都采用10000rpm,甚至还有15000rpm的,性能要超出家用产品很多。较高的转速可缩短硬盘的平均寻道时间和实际读写时间,但随着硬盘转速的不断提高也带来了温度升高、电机主轴磨损加大、工作噪音增大等负面影响。笔记本硬盘转速低于台式机硬盘,一定程度上是受到这个因素的影响。笔记本内部空间狭小,笔记本硬盘的尺寸(2.5寸)也被设计的比台式机硬盘(3.5寸)小,转速提高造成的温度上升,对笔记本本身的散热性能提出了更高的要求;噪音变大,又必须采取必要的降噪措施,这些都对笔记本硬盘制造技术提出了更多的要求。同时转速的提高,而其它的维持不变,则意味着电机的功耗将增大,单位时间内消耗的电就越多,电池的工作时间缩短,这样笔记本的便携性就受到影响。
3)传输速率
传输速率(Data Transfer Rate) 硬盘的数据传输率是指硬盘读写数据的速度,单位为兆字节每秒(MB/s)。硬盘数据传输率又包括了内部数据传输率和外部数据传输率。
内部传输率(Internal Transfer Rate) 也称为持续传输率(Sustained Transfer Rate),它反映了硬盘缓冲区未用时的性能。内部传输率主要依赖于硬盘的旋转速度。
外部传输率(External Transfer Rate)也称为突发数据传输率(Burst Data Transfer Rate)或接口传输率,它标称的是系统总线与硬盘缓冲区之间的数据传输率,外部数据传输率与硬盘接口类型和硬盘缓存的大小有关。
4)磁盘接口
硬盘接口分为IDE、SATA、SCSI、SAS和光纤通道五种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而光纤通道只用于高端服务器上,价格昂贵。SATA主要应用于家用市场,有SATA、SATAⅡ、SATAⅢ,是现在的主流。
a)IDE
英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,常见的2.5英寸IDE硬盘接口。它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为硬盘生产厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器兼容。对用户而言,硬盘安装起来也更为方便。IDE这一接口技术从诞生至今就一直在不断发展,性能也不断的提高,其拥有的价格低廉、兼容性强的特点,为其造就了其它类型硬盘无法替代的地位。
IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191354376-222252780.jpg)
b)SCSI
SCSI的英文全称为“Small Computer System Interface”(小型计算机系统接口),是同IDE(ATA)完全不同的接口,IDE接口是普通PC的标准接口,而SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。SCSI接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等优点,但较高的价格使得它很难如IDE硬盘般普及,因此SCSI硬盘主要应用于中、高端服务器和高档工作站中。
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191354735-1108611167.jpg)
c)SATA
使用SATA(Serial ATA)口的硬盘又叫串口硬盘.
2001年,由Intel、APT、Dell、IBM、希捷、迈拓这几大厂商组成的Serial ATA委员会正式确立了Serial ATA 1.0规范,2002年,虽然串行ATA的相关设备还未正式上市,但Serial ATA委员会已抢先确立了Serial ATA 2.0规范。Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。
串口硬盘是一种完全不同于并行ATA的新型硬盘接口类型,由于采用串行方式传输数据而知名。相对于并行ATA来说,就具有非常多的优势。首先,Serial ATA以连续串行的方式传送数据,一次只会传送1位数据。这样能减少SATA接口的针脚数目,使连接电缆数目变少,效率也会更高。实际上,Serial ATA 仅用四支针脚就能完成所有的工作,分别用于连接电缆、连接地线、发送数据和接收数据,同时这样的架构还能降低系统能耗和减小系统复杂性。其次,Serial ATA的起点更高、发展潜力更大,Serial ATA 1.0定义的数据传输率可达150MB/s,这比目前最新的并行ATA(即ATA/133)所能达到133MB/s的最高数据传输率还高,而在Serial ATA 2.0的数据传输率将达到300MB/s,最终SATA将实现600MB/s的最高数据传输率。
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191355134-1716012943.jpg)
SATAⅡ接口
SATA Ⅱ是在SATA的基础上发展起来的,其主要特征是外部传输率从SATA的1.5Gbps(150MB/sec)进一步提高到了3Gbps(300MB/sec),此外还包括NCQ(Native Command Queuing,原生命令队列)、端口多路器(Port Multiplier)、交错启动(Staggered Spin-up)等一系列的技术特征。单纯的外部传输率达到3Gbps并不是真正的SATA II。
SATA II的关键技术就是3Gbps的外部传输率和NCQ技术。NCQ技术可以对硬盘的指令执行顺序进行优化,避免像传统硬盘那样机械地按照接收指令的先后顺序移动磁头读写硬盘的不同位置,与此相反,它会在接收命令后对其进行排序,排序后的磁头将以高效率的顺序进行寻址,从而避免磁头反复移动带来的损耗,延长硬盘寿命。另外并非所有的SATA硬盘都可以使用NCQ技术,除了硬盘本身要支持 NCQ之外,也要求主板芯片组的SATA控制器支持NCQ。此外,NCQ技术不支持FAT文件系统,只支持NTFS文件系统。
由于SATA设备市场比较混乱,不少SATA设备提供商在市场宣传中滥用“SATA Ⅱ”的现象愈演愈烈,例如某些号称“SATA Ⅱ”的硬盘却仅支持3Gbps而不支持NCQ,而某些只具有1.5Gbps的硬盘却又支持NCQ,所以,由希捷(Seagate)所主导的SATA-IO(Serial ATA International Organization,SATA国际组织,原SATA工作组)又宣布了SATA 2.5规范,收录了原先SATA Ⅱ所具有的大部分功能——从3Gbps和NCQ到交错启动(Staggered Spin-up)、热插拔(Hot Plug)、端口多路器(Port Multiplier)以及比较新的eSATA(External SATA,外置式SATA接口)等等。
4)SAS
SAS的接口技术可以向下兼容SATA。具体来说,二者的兼容性主要体现在物理层和协议层的兼容。在物理层,SAS接口和SATA接口完全兼容,SATA硬盘可以直接使用在SAS的环境中,从接口标准上而言,SATA是SAS的一个子标准,因此SAS控制器可以直接操控SATA硬盘,但是SAS却不能直接使用在SATA的环境中,因为SATA控制器并不能对SAS硬盘进行控制;在协议层,SAS由3种类型协议组成,根据连接的不同设备使用相应的协议进行数据传输。其中串行SCSI协议(SSP)用于传输SCSI命令;SCSI管理协议(SMP)用于对连接设备的维护和管理;SATA通道协议(STP)用于SAS和SATA之间数据的传输。因此在这3种协议的配合下,SAS可以和SATA以及部分SCSI设备无缝结合。
SAS硬盘算是机械硬盘中速度最快的了,首先接口上SAS接口就比SATA和SCSI的机械硬盘快,其次加上转速快,寻道快,所以SAS硬盘都被应用到无盘服务器上做读或写。
SAS系统的背板(Back Panel)既可以连接具有双端口、高性能的SAS驱动器,也可以连接高容量、低成本的SATA驱动器。所以SAS驱动器和SATA驱动器可以同时存在于一个存储系统之中。但需要注意的是,SATA系统并不兼容SAS,所以SAS驱动器不能连接到SATA背板上。由于SAS系统的兼容性,使用户能够运用不同接口的硬盘来满足各类应用在容量上或效能上的需求,因此在扩充存储系统时拥有更多的弹性,让存储设备发挥最大的投资效益。
在系统中,每一个SAS端口可以最多可以连接16256个外部设备,并且SAS采取直接的点到点的串行传输方式,传输的速率高达3Gbps,估计以后会有6Gbps乃至12Gbps的高速接口出现。SAS的接口也做了较大的改进,它同时提供了3.5英寸和2.5英寸的接口,因此能够适合不同服务器环境的需求。SAS依靠SAS扩展器来连接更多的设备,SAS的扩展器以12端口居多,不过根据板卡厂商产品研发计划显示,未来会有28、36端口的扩展器引入,来连接SAS设备、主机设备或者其他的SAS扩展器。
和传统并行SCSI接口比较起来,SAS不仅在接口速度上得到显著提升(主流Ultra 320 SCSI速度为320MB/sec,而SAS才刚起步速度就达到300MB/sec,未来会达到600MB/sec甚至更多),而且由于采用了串行线缆,不仅可以实现更长的连接距离,还能够提高抗干扰能力,并且这种细细的线缆还可以显著改善机箱内部的散热情况。
5)光纤通道
光纤通道的英文拼写是Fibre Channel,和SCSI接口一样光纤通道最初也不是为硬盘设计开发的接口技术,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬盘系统中。光纤通道硬盘是为提高多硬盘存储系统的速度和灵活性才开发的,它的出现大大提高了多硬盘系统的通信速度。光纤通道的主要特性有:热插拔性、高速带宽、远程连接、连接设备数量大等。
光纤通道是为在像服务器这样的多硬盘系统环境而设计,能满足高端工作站、服务器、海量存储子网络、外设间通过集线器、交换机和点对点连接进行双向、串行数据通讯等系统对高数据传输率的要求。
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191355676-1853517983.jpg)
2.2.2.固态硬盘
固态硬盘(Solid State Drive),简称SSD,是用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)以及缓存单元组成。区别于机械硬盘由磁盘、磁头等机械部件构成,整个固态硬盘结构无机械装置,全部是由电子芯片及电路板组成。根据固态硬盘的定义,我们可以知道固态硬盘的内部结构,其实就是由三大块主控芯片、闪存颗粒、缓存单元构成。
1)主控芯片
作用一是合理调配数据在各个闪存芯片上的负荷,二则是承担了整个数据中转,连接闪存芯片和外部SATA接口。
2)闪存颗粒单元
在固态硬盘里面,闪存颗粒则替代了机械磁盘成为了存储单元。闪存(Flash Memory)本质上是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位。
根据NAND闪存中电子单元密度的差异,又可以分为SLC(单层次存储单元)、MLC(双层存储单元)以及TLC(三层存储单元),此三种存储单元在寿命以及造价上有着明显的区别。成本+性能+寿命 SLC>MLC>TLC
- SLC(单层式存储),单层电子结构,写入数据时电压变化区间小,寿命长,读写次数在10万次以上,造价高,多用于企业级高端产品。
- MLC(多层式存储),使用高低电压的而不同构建的双层电子结构,寿命长,造价可接受,多用民用高端产品,读写次数在5000左右。
- TLC(三层式存储),是MLC闪存延伸,TLC达到3bit/cell。存储密度最高,容量是MLC的1.5倍。 造价成本最低, 使命寿命低,读写次数在1000~2000左右,是当下主流厂商首选闪存颗粒。
3)缓存芯片
是固态硬盘三大件中最容易被人忽视的一块,也是厂商最不愿意投入的一块。和主控芯片、闪存颗粒相比,缓存芯片的作用确实没有那么明显,在用户群体的认知度也没有那么深入,相应的就无法以此为噱头进行鼓吹。
磁盘的速度与接口类型有密切关系
市面上主流的固态硬盘接口有 SATA、mSATA、m.2、PCI-E插槽这4种。
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191356097-767192314.jpg)
目前的固态硬盘都是用的PCI-E×2、×4这个等级,其中×4的最大速度已经可以达到 3000 MB/s以上了。这个还与使用的协议有关,不支持NVMe协议的硬盘最大只能跑1500MB/s,而支持NVMe协议的硬盘就可以跑到3000MB/s甚至以上。
SATA接口:
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191356558-297940473.jpg)
mSATA接口:
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191356877-339716280.jpg)
M.2接口有两种:M key和B key,如图所示
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191357299-313816964.jpg)
PCI-E接口:
![](https://img2020.cnblogs.com/blog/870512/202007/870512-20200705191357616-1576136742.jpg)
关于固态硬盘部分的描述来自:https://www.cnblogs.com/whl320124/p/10063608.html,大家可以这里了解具体内容。
2.3.存储器映射
1)地址映射
CPU通过主板与存储器芯片连接,使用物理地址表示
物理地址由存储管理器映射成逻辑地址,线程中实际使用的是相对地址
2)内存溢出
- 缓冲区溢出问题
- 当以输入方式接收过多数据时,就会发生缓冲区溢出
- 栈的溢出,造成改写,FILO机制
- 需要控制边界
- 存储器泄露:应用程序不释放存储空间
3)存储器的管理
- 提供交换机制和指针
- 保护分配的资源
- 共享存储段
- 分段提供寻址方案和允许共享特定软件模块(DLL)
- 划分物理空间
动态链接库(DLL):是一组功能,用于执行各种类型的过程。crypt32.dll是实现加密的功能
保护机制(如何保护进程仅与它自己存储段交互):通过基本寄存器和界限寄存器地址对比实现
4)虚拟存储器
为了解决内存空间不够的问题,系统使用磁盘空间扩充RAM
Windows下的pagefile.sys
linux下的swap空间
3.进程管理
3.1.定义
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
3.2.特征
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
3.3.三个基本状态
进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程可能具有以下三种基本状态。
1)就绪状态(Ready):
进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
等待向CPU发送指令
2)运行状态(Running):
进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
CPU正在执行其指令和数据
3)阻塞状态(Blocked):
由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理器资源分配给该进程,也无法运行。
等待输入数据,如用户按键
3.4.管理
操作系统负责创建进程、分配资源、同步通信和安全
操作系统维护一个进程表:状态、指针、存储器分配、程序计数器、打开文件使用状况
系统使用中断信号来决定是否与CPU通信:需要判断优先级来决定中断的先后顺序
存储器栈:每个处理进程都有自己的栈,采用后入先出(LIFO)的方式读写的数据架构
线程管理
- 线程由一个独立的指令集和需要CPU处理的数据构成
- 进程创建的每个线程共享该进程的资源
- 当进程需要传输数据给CPU时,会生成一个线程
- 线程根据需要动态产生和销毁
- 进度调度:资源释放问题
进程地址保护:一旦进程分配到自己的存储空间,它就会根据需要对这些空间进行编址,这个称为虚拟地址空间映射。 虚拟地址映射运行不同的进程拥有各自的存储器空间。 存储管理器确保没有进程与进程之间的存储器进行不适当的交互。 通过上述为每个进程及其数据提供完整性和机密性。
3.5.进程攻击
检验时间/使用时间攻击(TOC/TOU)
- 多任处理操作系统发生的事件的时序依赖性
- 正常情况下程序必须一步步执行指令,只有程序1完成后才能执行程序2,。如果攻击者能够使用程序进入这些步骤之间攻击更改,程序就会出现混乱
- 攻击者要进入两个进程之间进行更改,以达到控制结果的目的
- 竞争攻击只是改变顺序
状态攻击(竞争条件):是一种TOC/TOPU攻击。是指两个不同的进程需要在同一个资源上执行其任务的情况,这些进程必须遵循正确的顺序。是一种打乱进程执行顺序以控制结果的攻击
4.输入输出
也是我们常说的IO设备。
块或字符设备:块设备以固定大小的块处理数据,例如:硬盘
字符设备处理字符流:打印机、网卡、鼠标
操作系统使用驱动调用设备控制器 由设备控制器与总线联系 中断控制器会探测这个信号,完成I/O的控制
- 可编程I/O:向I/O设备发送数据并轮询,当未准备好时,只能等待。轮询
- 中断驱动I/O:与可编程类似,但不等待。通过中断来利用等待的时间 发送字符-离开做其他事情-中断-发送下一个字符。直接中断。
- DMA的I/O:一种不使用CPU,而是I/O设备与系统存储器之间传输的方式。直接和IO建立联系。
- 映射前I/O:CPU将物理地址提交给请求的I/O,建立信任关系后I/O设备直接与存储设备间通信。由CPU控制建立联系关系。
- 全面映射I/O:不完全信任。给的逻辑地址。由CPU控制建立联系关系,但只给逻辑地址。
5.操作系统架构
单块架构(monolithic):操作系统提供服务,通过系统调用来供应,所有都运行在内核模式下,例如:MS-DOS
分层架构:被分成可被调用不同的层。缺点:性能、负责性和安全性。所有运行在内核模式下分层,例如:UNIX
微内核架构:核心操作系统运行内核模式下,其余运行在用户模式下
混合内核架构:微内核:主要执行进程与进程之间的通信活动和存储器管理职责。其余运行在客户端/服务器模型下
与CPU之间调用:操作系统和CPU必须通过指令集通信。使用保护环(protection ring)。环号越低,离内核越近,权限越大。环号高的不能访问环号低,反之可以
CPU供应商决定有多少环,操作系统供应商决定如何使用
可信计算机(TCB):是系统内提供某类安全并实施系统安全策略的所有硬件、软件和固件的组合。
安全边界:划分可信和不可信区域
引用监视器(refernce monitor):是一种抽象机,它是主体对客体进行所有访问的中介,不但要确保主体拥有必要的访问权限,还要保护客体不被未授权访问和破坏性更改;要求主体(程序、用户或进程)在访问客体(文件、程序或资源)之前获得完全授权;在允许主体使用被请求的客体之前,必须确信主体已被赋予了访问权限
引用监视器是一种访问控制概念,不是实际的物理概念
安全内核:由位于TCB内的硬件、软件和固件组件构成,并且实现和实施引用监控器概念
- 必须为实施应用监控器概念的进程提供隔离,并且这些进程必须不被篡改
- 每个访问过程必须调用安全内核,不能跳过
- 必须足够小,以便能够完整地和全面地对其进行测试和验证
二、信息安全评估模型
1.产品评估模型-CC
通用准则 :CC定义了作为评估信息技术产品和系统安全性的基础准则,全面地考虑了与信息技术安全性有关的所有因素,与PDR(防护、检听、反应)模型和现代动态安全概念相符合的,强调安全的假设、威胁的、安全策略等安全需求的针对性,充分突出保护轮廓。
仍强调把安全需求划分为安全功能需求和 安全保证需求两个独立的部分,根据安全保证需求定义安全产品的安全等级
定义了7个评估保证级别(EAL),每一级均需评估相关安全功能类。 分别为:
1)功能性检测
2)结构性测试
3)系统性测试及检查
4)系统性设计、测试及检查、
5)半正规化测试及检查
6)半正规化检查、设计及测试
7)正规化查证、设计及测试
保护样板
- 描述性元素提供样板的名称以及对要解决的安全问题的描述
- 以及采用样板的依据,更详细地描述要解决的现实问题
- 功能要求建立一个保护边界
- 开发保证要求确定了产品或协同从设计到实现的开发阶段必须满足的特定要求
- 包含安全需求的集合、它们的含义和推理以及所需产品对应的EAL评级
- 描述了对环境的假设、目标以及功能性和保证级别的期望
- 描述所需的安全解决方案
评估目标:提供所需的安全解决方案的建议产品
安全目标:供应商的书面说明,解释满足所需安全解决方案的安全功能和保证机制。
安全功能要求:产品必须提供的每一个安全功能
安全保证要求:对研发和评估过程中,为保证合乎所声称的安全功能的规定而采取的措施
数据包(即EAL):把功能和保证需求封装起来,以便今后使用。这部分详细描述要实现特定EAL评级所必须满足的要求。
ISO/IEC 15408:是国家标准,是评估CC框架产品安全属性的基础.
- 15408-1 入门和通用评估模型
- 15408-2 安全功能组件
- 15408-3 安全保证组件
其他行业和国际安全实施指南
- ISO27001 (ISMS-信息安全管理体系)
- COBIT
- PCI-DSS
2.认证与认可
认证
- 处于认可的目的而对安全组件及其一致性进行全面的技术评估
- 一个认证过程可以使用防护措施评估、风险分析、验证、测试和审计技术来估计特定系统的适用性
- 认证过程的目的是确保系统、产品或网络能给适合客户的目的
- 是评估安全机制和评估安全效果的一种技术性审查
认可
- 管理层对系统整体安全和功能的充分性的正式认定
- 管理层正式接受认证过程中的调查结果
特别声明:
1.以上所有描述内容部分参考链接/文献未逐一列出,若有侵权,请及时告知,有则改之无则加勉。
2.以上仅是学习过程的总结,相信有很多理解偏差的地方,特别希望指出,给予帮助,更新知识体系,共同进步。
参考文献:
https://baike.baidu.com/item/%E5%A4%84%E7%90%86%E5%99%A8%E7%BB%93%E6%9E%84/14724193?fr=aladdin 处理器结构
https://blog.csdn.net/chen1083376511/article/details/81941318 计算机组成原理(4)-中央处理器CPU
https://blog.csdn.net/u010632165/article/details/106795478 CPU缓存L1,L2和L3是什么?如何工作?
https://blog.csdn.net/godloveyuxu/article/details/77353806 CPU的缓存L1、L2、L3
http://c.biancheng.net/view/879.html 硬盘结构(机械硬盘和固态硬盘)详解
https://www.cnblogs.com/whl320124/p/10063608.html SSD固态硬盘内部结构详解
https://www.cnblogs.com/whl320124/articles/10063813.html 深入了解机械硬盘的读写原理和碎片的产生