Hsin's Notebook
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

MIT 6.S081 lab8:mmap | 内存映射文件

MIT 6.S081 Lab: mmap mmap 是操作系统中特别重要的一个特性。它允许我们将文件映射到进程的虚拟地址空间,使得我们可以像操作数组一样操作文件。在本次 Lab 中,我们需要在 xv6 中实现一个简化版的 mmap 系统调用。 核心难点在于:懒加载(Lazy Allocation) 的实现以及 VMA(Virtual Memory Area) 的管理。 1. 实验目标 实现 mm
2024-03-23
6.S081
#6.S081

MIT 6.S081 lab6:Lazy alloc | 懒加载

本实验旨在通过修改 xv6 的缺页异常处理机制,实现内存的懒分配(Lazy Allocation)。当用户调用 sbrk() 时不立即分配物理内存,而是延迟到发生 Page Fault 时才按需分配。 1. 实验目标 (Goal) 传统的 sbrk() 系统调用会立即分配物理内存并映射页表。本实验要求: 1. 修改 sys_sbrk(),仅增加进程的 sz 而不实际分配内存。 2. 在 us
2024-03-22
6.S081
#6.S081

MIT 6.S081 lab5:Copy-on-Write | 写时复制

1. 实验背景与原理 在原始的 xv6 中,fork() 系统调用通过 uvmcopy() 分配物理内存并直接拷贝父进程的所有内容。对于大型进程,这种全量拷贝极其耗时且浪费内存。 Copy-on-Write (COW) 的核心思想是:延迟分配。 * fork 时:父子进程共享相同的物理页,将这些页设置为只读,并在 PTE 中标记为 COW 页。 * 写操作时:当任何一个进程尝试写入该页,硬件触发
2024-03-01
6.S081
#6.S081

MIT 6.S081 lab4:traps | 陷入

lab4 - traps 前置准备 主要内容为探索陷阱处理机制。 根据课程官网的要求,需要阅读完教材的第四章\(Page \space tables\)。并且读懂下列源代码:kernel/memlayout.h, kernel/vm.c, kernel/kalloc.c, kernel/riscv.h, user/exec.c。 相关笔记参考: lecture 4 Notes 将pgtbl分支所有
2024-02-29
6.S081
#6.S081

MIT 6.S081 第四章笔记 | 陷入指令和中断

4.1 ISA & Assembly Language \(ISA\): \(Instruction \space Set\)。 \(workflow\): \(C \rightarrow Assembly(.S/.asm) \rightarrow binary(object.o)\) 汇编语言没有明确的工作流,只是一行一行的执行指令。汇编语言是基于寄存器进行操作的,而不是内存。 \(RI
2024-02-29
6.S081
#6.S081

MIT 6.S081 第五章笔记 | 页面故障

当视图访问 \(PTE_V\) 为 \(0\) 的页表, 或用户尝试访问 \(PTE_U\) 为 \(0\) / 内核尝试访问 $PTE_U 为 \(1\) 的页表, 或者是其他违反了 \(PTE_R\) 或 \(PTE_W\) 等 \(flag\) 的页表时就会出现 \(Page Faults\)。 一共有三种 \(Page Faults\): 1. \(load \space page \sp
2024-02-29
6.S081
#6.S081

MIT 6.S081 lab3:page tables | 页表

lab3 - page table 前置准备 主要内容为熟悉页表遍历以及地址转换。 根据课程官网的要求,需要阅读完教材的第三章\(Page \space tables\)。并且读懂下列源代码:kernel/memlayout.h, kernel/vm.c, kernel/kalloc.c, kernel/riscv.h, user/exec.c。 相关笔记参考: lecture 3 Notes 将
2024-02-28
6.S081
#6.S081

MIT 6.S081 第三章笔记 | 页表

页表让每个进程都拥有自己独立的虚拟内存,从而实现内存隔离。 3.1 Paging hardware 用户和内核都只能操作虚拟地址(\(virtual \space address\)),但是实际物理内存使用物理地址(\(physical \space address\))来索引。页表提供了虚拟地址到逻辑地址的转换。 xv6只使用了64位地址空间中的低39位,其中高\(27\)位为页面号,低\(12
2024-02-27
6.S081
#6.S081

MIT 6.S081 Lab2:System Calls | 系统调用

前置准备 主要内容为自己实现系统调用,或者优化已有的系统调用。 根据课程官网的要求,需要阅读完教材的第二章\(Operating \space system \space organization\)。并且读懂下列源代码:kernel/proc.h, kernel/defs.h, kernel/entry.S, kernel/main.c, user/initcode.S, user/init.c
2024-02-25
6.S081
#6.S081

MIT 6.S081 第二章笔记 | 操作系统结构

操作系统应该实现三个功能:并发、隔离、交互。即能保证多个程序都能分到硬件资源;各个进程之间的内存、指令、数据相互隔离,一个进程崩溃不会影响到其他进程;进程之间能通过受控的接口来进行通信。 操作系统提供了高级别的抽象,来管理硬件资源。例如,用文件描述符来抽象磁盘、内存、管道等资源,用户程序能通过简单的read、write、close来访问所有存储资源,而不用关心是和磁盘、内存、管道、还是标准输入输出
2024-02-25
6.S081
#6.S081
123

搜索

Hexo Fluid