总算搞完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 已经实现了