Skip to content

feat(lazy): 实现懒加载内存

zhangweijie requested to merge mit6.s081_lazy into lazy

延迟分配

  1. 在调用sys_sbrk扩大使用内存的时候,先只增加sz,但不实际分配内存
  2. 在只增加sz而不分配内存的情况下,会出现三种情况
    1. 当调用回收内存的时候,当物理内存实际不存在,而页表也没有对应的项,但sz却表示其存在,造成冲突
    2. 读取或写回物理内存的时候,发现不存在页表项,触发异常。
    3. fork复制的时候发现错误
    4. 异常触发的时候,除了lazy,还有其他情况,比如权限不符、或者是栈、保护页等地方,这时候直接将程序杀死即可
  3. 解决第一种回收时的异常,当遍历页表出现不存在,不panic,而是跳过
  4. 解决第二种读取或者写回时出现的页表不存在(不一定是这两种情况),当出现的时候,会触发异常,在异常判断是否是缺页导致
    1. 若是缺页,分配页表,分配物理内存
    2. 读写的时候,也需要判断是否缺页,这里不会走中断,所以需要额外处理!

Merge request reports

Loading