计算机体系结构和内存层次
睡不醒的鲤鱼 2021-05-23 操作系统 uCore
# 一、计算机体系结构
计算机系统包括 CPU、内存和 I/O 设备,如下图所示。
内存是我们更多用来存数据的地方,其最小访问单位为 1 字节,也就是 8 比特,而通常我们所说的计算机系统是 32 位的总线,也就是一次读写可以从内存当中读或写 32 位,也就是 4 字节,这样一来我们的读写速度就会快了。
针对这个特点,由于一次读写 32 字节有地址对齐问题,在访问的时候就不能从任意的地方开始一个 4 字节,有可能这个读写会被分成两次。
在 CPU 中我们可以在寄存器中保存数据,但寄存器的容量一般是非常小的,大约为几十到几百个字节;另外在 CPU 中还存在高速缓存,其作用是加快指令的读写速度。其详细结构如下图所示。
# 二、内存层次
下面我们更详细的来看存储的层次结构,如下图所示。
我们已经知道在 CPU 里有两级缓存,如果在读写数据或者指令的时候,在缓存里已经有相应的内容事先读取过,那这时候就可以直接从缓存里拿到,这时的速度是最快的;如果在这里缓存没有命中,那就必须要到内存中读取数据。
我们在写程序时是感觉不到 L1、L2 缓存的存在的,原因在于这部分完全由硬件控制,程序不能显式的控制它们;而内存的访问就需要操作系统的控制了,如果在内存里访问的时候仍找不到,那就需要到外存中继续查找。
在这个体系结构中,我们可以看到,从 CPU 的内部到硬盘的外部,它们的速度差别是非常大的,达到百万倍的数量级。
# 三、操作系统的内存管理方式
下图是操作系统内存管理示意图:
操作系统通过一层内存管理单元(MMU),将逻辑地址空间转变为物理地址空间,其要实现的目标是:
- 抽象:逻辑地址空间
- 保护:独立地址空间
- 共享:访问相同内存
- 虚拟化:更大的地址空间
操作系统中采用的内存管理方式有:
- 重定位(relocation)
- 分段(segmentation)
- 分页(paging)
- 虚拟存储(virtual memory)