ch414p1p2p3p40k0k1515kk38k38k4848kk68k68k80k80k110110kk120k120k空闲区表已分配区表长度标志15k23k未分配48k20k未分配80k30k未分配长度标志0k15kp138k10kp268k12kp3110k10kp4某一时刻的分配状态15k53k未分配ch415可变分区分配算法分配第一个足够大的分区可以从头开始查找也可以从上次分配结束的地点开始查找总是产生最小剩余分区丌浪费一个更大的空间但会寻致剩余分区太小难被再利用总是产生最大剩余分区它可能比最优适应产生的剩余分区更容易利用ch416可变分区的地址转换和存储保护基址基址寄存器逡辑地址cpu绝对地址操作系统区空闲分区1用户迚程1空闲分区2ch417紧凑技术经过一段时间的分配回收后内存中存在很多很小的空闲块
物理地址 = Base(0x4000) + 0x240 = 0x4240
从0x4240获取指令 “la $a0, varx”
Move 0x4050 $a0, Move PC+4 PC
下一条指令的逻辑地址=0x244,转换成物理地址=0x4244,得到 “jal strlen” Move 0x0248 $ra (return address!), Move 0x0360 PC
ch4.10
固定分区存储管理
存储分配:系统维护一张主存分配表,里面记载了 内存的分区划分和使用状态。分配主存时总选择那 些分区占用标志为0且长度小于等于进程所需空间的 分区块。回收只要相应分区占用位置0即可。
分区号 1 2 3 4 5 6
起始地址 8K 16K 32K 48K 64K 96K
长度 8K 16K 16K 16K 32K 32K
两个问题
内存中的进程如何交互? 内核模式和用户模式如何切换?