CPU :运算器、 控制器、寄存器。(三大核心部件)
RAM :内存设备 一个字节为一个存储单元 cell
NorthBridge :
32bit 2^32=4GB 32位的CPU最多只能理解4G的物理内存空间
64bit 4GB*4GB
CPU------(线路复用)寻址------RAM
PAE: 物理地址扩展(physical Address Extension)--给32bit的寻址总线上有添加了4bit
32bit,+4bit =64G (使32位的操作系统CPU最大寻址到64G的内存空间) -前提:内核必须支持额外4bit寻址总线的能力。
现在:当你的内存大于4G时,会直接使用64bit操作系统。
64G的内存:单进程的寻址能力仍为3G,另外1G交给内核了。
拓展:Mysql为单进程多线程的模型
CPU的存取频率远大于RAM,两者速度不匹配,这就需要提供缓存了。
缓存器:比原始存储设备快,但内存很小
,
置换策略:可以保证一旦缓存中没有足够的空间可用而后续的数据又需要载入的时候,能够将缓存空间按序腾出来。
空间局部性:如果一个数据被访问到,那么理他很近的数据也会快被访问到。(提高命中率)
时间局部性:如果一段数据被访问到过一次,那么很快它还可能会被访问一次。
引入缓存后,弥补了CPU和RAM速度的巨大差异。
多级缓存:缓存级别越小离CPU越近。速度也越接近CPU速度。
直接映射:RAM中任意一个存储单元
N路关联:1路关联、2路关联、4路关联,8路(完全)关联
N路关联大大提高了缓存的命中率,同时保证了缓存不会被置换的过于频繁。
CPU通过逐级缓存方式,最终在一级缓存访问数据。
通写(Write Through):
回写(Write Back) :CPU在更新缓存中的数据以后,不会立刻将其更新到其他级别的缓存或主存中去。数据在丢弃的时候,才会被写回到主存中去。
Video Card(显卡):既处理大量的显示数据,这些数据既需要在硬件上加速,有需要在CPU上进行渲染。
带宽、交互。
固态硬盘:支持内部并行读写能力的U盘 PCI-E
IO Port :65535 任何一个IO设备通过IO总线接入到整个计算机总线上的时候,它必须在一开级就注册申请一批连续的IO Port(IO端口号)
系统一开机,一加电,BIOS一些。。完成自检的时候,每一个硬件都必须向CPU注册申请IO端口。
总线复用
数据都是先从外部设备装载进内存的,然后有内存再到缓存由CPU控制处理的。
Pool
中断控制器(Interrupt Controller):帮CPU识别是那个设备发来的中断信号。
DMA :直接内存访问,寻址,访问RAM预留内存空间。
时钟周期:
时钟脉冲:
Monitor(监控程序)
OS----VM
Process(进程) : 一个独立的运行单位。
系统资源:CPU时间,内存空间
OS : VM
CPU : 时间:切片
缓存:当前程序数据
假如 CPU:10G(时钟频率为10G),一秒钟翻转10G次,
OS 于是把一个10G的CPU虚拟成10个1G的CPU,拼凑出一个个运算单位
接下来是个人理解非正解。
因为CPU、缓存、内存的属性速度差异,通过OS对CPU进行时间切片,一个切片运行一个进程,从而减小它们之间的差异,避免资源浪费。
假如一个进程里面包含有100条命令,当它执行到第73条的时候,分给它的时间用完了。下次执行的时候CPU如何知道它要继续运行第74条命令。
73:74
这时候就用到了CPU内部的寄存器
指令计数器:
进程切换,保护现场。恢复现场。
保持现场到------主存------
内存如何虚拟?让多个进程同时使用,大家还不会彼此占用。
内存切片;
IO设备:
内核-----进程
CPU运行的时候有两种模式:
如果运行的是内核程序,叫做内核模式。
当用户进程在CPU上运行的时候,叫做用户模式。
区别是:用户是不能直接控制硬件的。
在CPU内部,是将CPU所能运行的指令划分为四层的。
最里环为,特权指令(内核)
地址映射----内核唤醒进程
进程队列。 进程优先级----优先调度
内核调度进程的算法-----时间复杂度---O