内存基础知识
1. 逻辑地址与物理地址
每个程序编译后都是从0开始的逻辑地址,经过链接形成完整的逻辑地址,之后装入内存,才有了在内存中的物理地址。
2. 虚拟内存
(1)虚拟存储技术和覆盖技术和交换技术一样,都是实现内存地址扩充的技术。
(2)虚拟内存的三个特性:
无需作业运行时一次全部装入内存,而是可以分成多次调入内存 —— 多次性
作业无需常驻内存,只需要在作业需要运行时换入,换出 —— 对换性
在逻辑上扩充了内存容量,让用户感觉内存容量变大了很多 —— 虚拟性
(3)虚拟内存实际容量=min(内外存容量之和,CPU寻址范围)
比如:32位的操作系统最大虚拟内存=2^32-1=4GB,操作系统会为每一个新进程分配一个4GB虚拟内存,这是一个4GB的页表(虚拟内存到物理内存),进程以为内存有4GB大
页表存放在物理内存中,每个进程有自己的页表,进程互相看不到彼此地址,互不影响
(4)为了实现虚拟内存,需要增加两个功能:一是当访问的内容不在内存时的请求调页(请求调段);二是当内存不足时把不用的内容页面置换(段置换)
(5)虚拟内存中,物理内存的分配是不连续的,一个程序可能用了物理上两块不相邻的空间
3. 存储器组织结构
(1)L0寄存器是CPU的一部分,用于存放指令,数据,位址;
(2)内存分为只读存储器ROM、随机存储器RAM(主存),和高速缓存存储器cache;
(3)cache是位于CPU与主内存间的一种容量较小但速度很高的存储器,由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,cache中保存着CPU刚用过或循环使用的一部分数据(基于局部性原理)
4. 开启mmu后地址转换过程
虚拟地址转换物理地址的过程:打开mmu后,cpu访问的都是虚拟地址,当cpu访问一个虚拟地址的时候,会通过cpu内部的mmu来查询物理地址,mmu首先通过虚拟地址在tlb(快表)中查找,如果找到相应表项,直接获得物理地址;如果tlb没有找到,就会通过虚拟地址从页表基地址寄存器保存的页表基地址开始查询多级页表,最终查询到找到相应表项,会将表项缓存到tlb中,然后从表项中获得物理地址。