重温基础:操作系统
Laiyong Wang Lv5

感谢图灵和冯诺依曼两位大佬赏饭吃

本文只记录我个人知道且感觉需要知道的知识点,系统学习请网上查找资料

  1. 计算机基本结构(也叫冯诺依曼模型)
    运算器、控制器、存储器、输入设备、输出设备
    存储器:我们常说的内存
    运算器、控制器:我们常说的CPU(中央处理器),有寄存器、控制单元和逻辑运算单元等组件
    输入设备、输出设备:鼠标、键盘、显示器…

  2. 32位和64位的区别
    32 和 64 指的是CPU 的位宽,代表的是 CPU 一次可以计算(运算)的数据量,所以64位(0~2^64-1)的电脑可以兼容32(0~2^32-1)的软件,反之不行

  3. 寄存器
    是一种内存,存在于cpu里面的内存
    常见的有通用寄存器(存放需要进行运算的数据),程序计数器(存放下一个指令的内存地址),指令寄存器(存放当前正在执行的指令)。

  4. GHz(CPU的参数),千兆赫兹的简写
    1GHz=1000000000Hz
    1GHz,代表着 1 秒会产生 1G 次数的脉冲信号,每一次脉冲信号高低电平的转换就是一个周期,称为时钟周期
    程序执行时间=指令数量每个指令需要的是时钟周期时钟周期
    结论:买电脑和服务器选那种赫兹数大的选,还有架构不同也会影响速度,涉及知识盲区了

  5. 存储器
    看另一篇文章
    http://laiyong.wang/2024/05/08/storage

  6. 虚拟内存、物理内存

    1、为了解决多进程之间地址冲突的问题,每个进程都有自己的页表,所以每个进程的虚拟内存空间就是相互独立的。进程也没有办法访问其他进程的页表,所以这些页表是私有的
    2、虚拟内存可以使得进程对运行内存超过物理内存大小,因为程序运行符合局部性原理,CPU 访问内存会有很明显的重复访问的倾向性,对于那些没有被经常使用到的内存,我们可以把它换出到物理内存之外,比如硬盘上的 swap 区域
    3、还涉及到内存分段和分页,自己去看,我也只懂皮毛

  7. 内存满了会发生什么
    这个内存指的是物理内存,如果没有空闲的物理内存,且又被申请,则会触发内存回收:
    1、后台内存回收(kswapd):在物理内存紧张的时候,会唤醒 kswapd 内核线程来回收内存,这个回收内存的过程异步的,不会阻塞进程的执行。
    2、直接内存回收(direct reclaim):如果后台异步回收跟不上进程内存申请的速度,就会开始直接回收,这个回收内存的过程是同步的,会阻塞进程的执行。

  8. 用户在小内存的电脑上申请大内存时会咋样
    假设有 4GB 物理内存,用户申请 6GB
    32 位系统的内核空间占用 1G,位于最高处,剩下的 3G 是用户空间;64 位系统的内核空间和用户空间都是 128T,因为用户申请的都是虚拟内存,若还未使用,不会申请物理内存所以 32 系统会失败,64 位的会成功
    Swap 分区机制(当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,与磁盘进行换入换出)
    如果没有 Swap 分区,因为物理空间不够,进程会被操作系统杀掉,原因是 OOM(内存溢出),被 killed
    如果有 Swap 分区,即使物理内存只有 4GB,程序也能正常使用 8GB 的内存,进程可以正常运行,但也不是无限大

 Comments