计算机五大核心组成部分
控制器:计算机的中枢神经,对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问
运算器:对数据进行各种算术运算和逻辑运算,即对数据进行加工处理
存储器:存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息
输入设备:有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等
输出设备:显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等
最核心的部分:CPU、内存
CPU内存结构
内存和CPU通过控制总线、数据总线、地址总线进行通信。
CPU缓存架构
为了提升效率,减少CPU与内存的交互(交互影响CPU效率),一般在CPU上集成了多级缓存架构,常见的为三级缓存结构
存储器存储空间大小:内存>L3>L2>L1>寄存器
存储器存储空间大小:内存>L3>L2>L1>寄存器
缓存是由最小的存储区块-缓存行(cacheline)组成,缓存行大小通常为64byte
为什么要加高速缓存?
空间局部性原则
如果一个存储器的位置被引用,那么将来他附近的位置也会被引用
时间局部性原则
如果一个信息正在被访问,那么近期被它可能还会被再次访问到
**带有高速缓存的CPU执行计算的流程 **
四个级别:
Linux与Windows只用到了2个级别:ring0、ring3,操作系统内部内部程序指令通常运
行在ring0级别,操作系统以外的第三方程序运行在ring3级别,第三方程序如果要调用操作
系统内部函数功能,由于运行安全级别不够,必须切换CPU运行状态,从ring3切换到ring0,
然后执行系统函数
操作系统内存管理
Linux为内核代码和数据结构预留了几个页框,这些页永远不会被转出到磁盘上。从0x00000000 到 0xc0000000(PAGE_OFFSET) 的线性地址可由用户代码 和 内核代码进行引用(即用户空间)。从0xc0000000(PAGE_OFFSET)到 0xFFFFFFFFF的线性地址只能由内核代码进行访问(即内核空间)
由空间划分,CPU调度的基本单位线程:
进程与线程
栈指令集
**寄存器指令集架构 **
Java符合典型的栈指令集架构特征,像Python、Go都属于这种架构