3.1.1 什么是内存?进程的基本原理,深入指令理解其过程
1.什么是内存?有何作用?
(1)存储单元
关于存储单元有关内容在我写的组成原理笔记中有提到:存储单元
(2)几个常用数量单位&内存地址
总结一下
(2)逻辑地址(相对地址)vs物理地址(绝对地址)
(3)从写程序到程序运行—编译、链接、装入
(4)装入模块装入内存
不修改装入模块中的指令地址就直接装入内存的话:
(5)装入的三种方式
①绝对装入
②静态重定位
③ 动态重定位
(6)链接的三种方式
① 静态链接
②装入时动态链接
③运行时动态链接
3.1.2 操作系统内存管理管些什么?
1.内存空间的分配与回收
2.内存空间的扩展(实现虚拟性)
3.地址转换
三种方式
4.内存保护
两种方式
3.1.3 操作系统覆盖技术与交换技术的思想 这章略过,新的大纲已经删除,有时间再看,把别人的文章链接复制过来
3.1.4连续分配管理方式
1.单一连续分配
2.固定分区分配
(1)分区说明表
3.动态分区分配(可变分区分配)
(1)系统要用怎样的数据结构记录内存的使用情况呢?
(2)当多个空闲分区都能满足要求时,应该选择哪个分区进行分配?
(3)如何进行分区的分配和回收操作?
如何分配?
如何回收?
4.内部碎片与外部碎片
这里面注意,当进行紧凑的技术来解决外部碎片的时候,需要改变进程的起始地址,而起始地址在进程的PCB当中,所以会把起始地址放到重定位寄存器里面,通过加减指令改变并重新放回到PCB中
3.1.5 操作系统之动态分区分配的四种算法(首次适应算法、最佳适应算法、最坏适应算法、临近适应算法)
1.首次适应算法
2.最佳适应算法
每次分配的时候顺序查找,分配后再从小到大分配,这样就能保证空闲的大小和进程所需求的大小最接近,这也是最适的名字的原因
3.最坏(大)适应算法
跟最佳适应算法相反,他是从大到小
4.临近适应算法
5.四种算法归纳比较
附上一个对四种算法总结成代码的文章
分配算法代码