感谢图灵和冯诺依曼两位大佬赏饭吃
本文只记录我个人知道且感觉需要知道的知识点,系统学习请网上查找资料
计算机基本结构(也叫冯诺依曼模型)
运算器、控制器、存储器、输入设备、输出设备
存储器:我们常说的内存
运算器、控制器:我们常说的CPU(中央处理器),有寄存器、控制单元和逻辑运算单元等组件
输入设备、输出设备:鼠标、键盘、显示器…32位和64位的区别
32 和 64 指的是CPU 的位宽,代表的是 CPU 一次可以计算(运算)的数据量,所以64位(0~2^64-1)的电脑可以兼容32(0~2^32-1)的软件,反之不行寄存器
是一种内存,存在于cpu里面的内存
常见的有通用寄存器(存放需要进行运算的数据),程序计数器(存放下一个指令的内存地址),指令寄存器(存放当前正在执行的指令)。GHz(CPU的参数),千兆赫兹的简写
1GHz=1000000000Hz
1GHz,代表着 1 秒会产生 1G 次数的脉冲信号,每一次脉冲信号高低电平的转换就是一个周期,称为时钟周期
程序执行时间=指令数量每个指令需要的是时钟周期时钟周期
结论:买电脑和服务器选那种赫兹数大的选,还有架构不同也会影响速度,涉及知识盲区了存储器
看另一篇文章
http://laiyong.wang/2024/05/08/storage虚拟内存、物理内存
1、为了解决多进程之间地址冲突的问题,每个进程都有自己的页表,所以每个进程的虚拟内存空间就是相互独立的。进程也没有办法访问其他进程的页表,所以这些页表是私有的
2、虚拟内存可以使得进程对运行内存超过物理内存大小,因为程序运行符合局部性原理,CPU 访问内存会有很明显的重复访问的倾向性,对于那些没有被经常使用到的内存,我们可以把它换出到物理内存之外,比如硬盘上的 swap 区域
3、还涉及到内存分段和分页,自己去看,我也只懂皮毛内存满了会发生什么
这个内存指的是物理内存,如果没有空闲的物理内存,且又被申请,则会触发内存回收:
1、后台内存回收(kswapd):在物理内存紧张的时候,会唤醒 kswapd 内核线程来回收内存,这个回收内存的过程异步的,不会阻塞进程的执行。
2、直接内存回收(direct reclaim):如果后台异步回收跟不上进程内存申请的速度,就会开始直接回收,这个回收内存的过程是同步的,会阻塞进程的执行。用户在小内存的电脑上申请大内存时会咋样
假设有 4GB 物理内存,用户申请 6GB
32 位系统的内核空间占用 1G,位于最高处,剩下的 3G 是用户空间;64 位系统的内核空间和用户空间都是 128T,因为用户申请的都是虚拟内存,若还未使用,不会申请物理内存所以 32 系统会失败,64 位的会成功
Swap 分区机制(当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,与磁盘进行换入换出)
如果没有 Swap 分区,因为物理空间不够,进程会被操作系统杀掉,原因是 OOM(内存溢出),被 killed
如果有 Swap 分区,即使物理内存只有 4GB,程序也能正常使用 8GB 的内存,进程可以正常运行,但也不是无限大