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