- 机制与策略。
复习
进程调度
指标:什么叫做os快?高吞吐与低延迟。 调度器:为了达到指标,针对板子 设计策略。 三种调度器:pelt e? 待查
内存管理
内存视频 待查 硬件结构。
课
多个程序
编译器决定放到的地址。
分区分块支持多个程序同时加载。动态加载地址:分段(段基地址寄存器+长度寄存器 待查 ) 定义一个函数foo,要跳到foo哪里,汇编时假设从0开始。链接时库函数地址空间加载,
硬件辅助 地址转换

软件麻烦,硬件来辅助,加上CS
jmp CS:175
先作长度判断,再与基址向加。
连续内存分配
若程序不是同步退出的需要数据结构来分配记录 :
- 位图,块大小,找5个0,连续的5个空闲块找;
- 链表:回收 4种情况

分配算法
更少碎片,更高利用率
- first-fit:按次序,找到符合要求的第一个分区
- best-fit:排序,找到大小与要求相差最小的空闲分区
- worst-fit:排序,找到的第一个大于需求的分区就分配,找到的是最大的空闲分区.
- next-fit:按次序,从上次分配的分区起查找(到最后分区时再回到开头),找到符合要求的第一个分区就分配。
! note
所以
内存分配器 buddy system 作业
不断的一分为二。
二叉搜索树,合并 2的整数次幂,位运算
内存不够
碎片整理:紧凑
碎片的整理:通过调整进程占用的分区位置来减少或避免分区碎片。 碎片紧凑:通过移动分配给进程的内存分区,以合并外部碎片 c语言中memmov:将mem里的数据从cache搬到cpu,再从cpu写回
swapping
搬运到磁盘中把进程 等待状态的进程从内存挪到外层,变成 挂起/对换等待状态。 换的策略:谁占得大;(手机)窗口活跃度,深度。
覆盖技术 overlay
分支平行,不会同时出现在内存里,预加载
按照程序执行的需要加载进内存。声称要使用的内存并非真的要使用。
虚拟存储
逻辑地址空间到物理地址空间 如何记录对应关系?数据结构
- 线性表,数组 页表:余数加上去 。硬件机制实现。 一页(块):4096;实际用到的页框frame. 利用mmu完成对地址翻译。
第几页?抹掉低12位;
缺页异常 os处理
重新执行产生缺页的指令:函数返回地址→当前指令
proc /pid(进程号)/maps
==缺页== 没听懂… 待查
linker loader 压缩解压缩 逆过程

多级page table

b+树;写程序时是按照4k大小分配,page.分支节点和树根也是一个page;
4096的推导??