• 机制与策略。

复习

进程调度

指标:什么叫做os快?高吞吐与低延迟。 调度器:为了达到指标,针对板子 设计策略。 三种调度器:pelt e? 待查

内存管理

内存视频 待查 硬件结构。

多个程序

编译器决定放到的地址。

分区分块支持多个程序同时加载。动态加载地址:分段(段基地址寄存器+长度寄存器 待查 ) 定义一个函数foo,要跳到foo哪里,汇编时假设从0开始。链接时库函数地址空间加载,

硬件辅助 地址转换

软件麻烦,硬件来辅助,加上CS jmp CS:175 先作长度判断,再与基址向加。

连续内存分配

若程序不是同步退出的需要数据结构来分配记录 :

  1. 位图,块大小,找5个0,连续的5个空闲块找;
  2. 链表:回收 4种情况

分配算法

更少碎片,更高利用率

  1. first-fit:按次序,找到符合要求的第一个分区
  2. best-fit:排序,找到大小与要求相差最小的空闲分区
  3. worst-fit:排序,找到的第一个大于需求的分区就分配,找到的是最大的空闲分区.
  4. 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的推导??