内存管理
1. 单片机
- 单片机没有操作系统
- 单⽚机的 CPU 是直接操作内存的「物理地址」
2. MMU(内存管理单元)
- 分段内存:
进程持有的虚拟地址会通过 CPU 芯⽚中的内存管理单元(MMU)的映射关系,来转换变成物理地址,然后再通过物理地址访问内存
3. 内存分段
- 由代码分段、数据分段、栈段、堆段组成
- 段表保存在内存中。每个进程有一份
段基地址:指向段内存的起始位置
段界限
特权等级DPL
- 虚拟地址由两部分组成段选择子和段内偏移量
段选择子:可以确定段表中指向的段号,在寄存器中
段内偏移量:有效内存的长度,段基地址~段基地址+偏移量,就是实际的内存段地址
- 段表也叫全局描述符(GDT),一个处理器只有一个。局部描述表(LDT),一个进程一个LDT,是GDT的子表
- 优点:
每个段有逻辑(实际)意义
方便编程:通常一个作业是由多个程序段和数据段组成的,一般情况下,用户希望按逻辑关系对作业分段,并能根据名字来访问程序段和数据段
信息共享:共享是以信息的逻辑单位为基础的。页是存储信息的物理单位,段却是信息的逻辑单位
信息保护:段式管理中,可以以信息的逻辑单位进行保护
- 缺点:
第⼀个就是内存碎⽚的问题
第⼆个就是内存交换的效率低的问题
4. 内存分页
- 4kb一个页
- ⻚表存储在内存⾥(每个进程都有一份),内存管理单元(MMU)就做将虚拟内存地址转换成物理地址的⼯作
- 虚拟内存到页表查不到,就产生缺页异常。进行页面置换
- 置换效率高:释放的内存都是以⻚为单位释放的,也就不会产⽣⽆法给
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
后端开发面试高频八股+算法 文章被收录于专栏
涵盖各大厂考官最爱问知识点,22年最新整理!