总算搞完Lab1 管理存储介质的东西 cpu 内存 io 设备 内存一次最小单位 8 bit 计算机 总线32bit
有大量的数据要读写,CPU内有高速缓存 内存层次,两级缓存
##操作系统的内存管理## 内存 以字节为单位进行访问 磁盘 扇区编号 每一个扇区512 字节最小单位
内存管理系统的要求 抽象,保护,共享,虚拟化
内存管理机制: + 重定位:(relocation) + 分段 : (segmentation) + 分页 : (paging) + 虚拟储存(virtual memory) 多数系统 按 需页式虚拟储存 ##地址空间 & 地址生成## 从写出来的符号 到总线上的物理地址
地址空间 : 物理地址空间 硬件支持的地址空间 起始是0 知道 MAXsys 逻辑地址空间 CPU运行时 进程看到的地址 0- MAX prog
逻辑地址根据方法转换成物理地址 ###逻辑地址的生成###
编译时: 假设起始地址已知 如果起始地址改变,必须重新编译
加载时: 编译时起始位置位置,编译器徐生成可重定位的代码(reloctable code) 加载时,生成绝对地址
执行时: 执行时代码可移动 需地址转换(映射)硬件支持
地址的生成过程:
逻辑地址到物理地址的传唤
##地址检查##
##连续内存分配## ###连续内存分配和内存碎片###
你要分配510字节 结果分配了512字节 剩下几个字节就是内碎片 取决于分配单元大小是否要取整。
动态分区分配
###最先匹配策略###
空闲分区链表 First Fit Allocation
Best Fit Allocation
合并还慢 因为要找地址临近 但是却是按照大小排序的
Wrost Fit Allocation
##碎片整理## 紧凑(ompaction) 碎片紧凑: 否有应用程序都是可以动态重定位
分区对换 Swapping in/out 对换到对换区内
处于等待状态的程序搬到外存区 有一个对换区
##伙伴系统## ##伙伴系统的实现 Buddy System## 整个可分配的分区大小 的策咯 ##数据结构## 空闲块的二维数组 第一维 由小到大 排成第一位 同大小就按地址排序
##u core 中的物理内存管理##
ucore 已经实现了
来源:oschina
链接:https://my.oschina.net/u/4384021/blog/3987418