Mit6.828/6.S081 fall 2019的Lab1是Unix utilities,主要内容为利用xv6的系统调用实现sleep.pingpong.primes.find和xargs等工具.本文对各程序的实现思路及xv6的系统调用流程进行详细介绍. 前言 在实验之前,推荐阅读一下官网LEC1中提供的资料.其中Introduction是对该课程的的概述,examples则是几个系统编程的样例,这两部分快速浏览一遍即可.对于xv6 book的第一章,则建议稍微细致地阅读一遍,特别是对fork…
目录 1. 简介 2. 安装ubuntu20.04 3. 更换源 3.1 更换/etc/apt/sources.list文件里的源 3.2 备份源列表 3.3 打开sources.list文件修改 3.4 刷新列表 4. 安装SSH 4.1 SecureCRT 报错 4.2 解决方法 4.3 修改ssh_config 4.4 修改sshd_config 4.5 重新启动服务并测试 5. 配置静态IP 6. 安装RISC-V交叉编译工具 7. 安装QEMU 8 测试 8. 1 下载xv6源码 8.…
现在你的操作系统内核已经具备一定的异常处理能力了,在这部分实验中,我们将会进一步完善它,使它能够处理不同类型的中断/异常. Handling Page Fault 缺页中断是一个非常重要的中断,因为我们在后续的实验中,非常依赖于能够处理缺页中断的能力.当缺页中断发生时,系统会把引起中断的线性地址存放到控制寄存器 CR2 中.在trap.c 中,已经提供了一个能够处理这种缺页异常的函数page_fault_handler(). Question 5: 修改一下 trap_dispatch 函数,使…
Lab3 这个实验分成了两个大部分. 1. PartA User Environments and Exception Handling kernel使用Env这个数据结构来trace每一个user enviroment,你需要设计JOS来支持多environments. kernel维护三个主要的全局变量来完成上面的内容 struct Env *envs = NULL; // All environments struct Env *curenv = NULL; // The current…
Lab4 Preemptive Multitasking(下) lab4的第二部分要求我们实现fork的cow.在整个lab的第一部分我们实现了对多cpu的支持和再多系统环境中的切换,但是最后分析的时候没有分析环境创建的系统调用,这里先补一下对环境创建的系统调用的分析 recall A续 这里的分析要从user/dumpfork.c开始 umain(int argc, char **argv) { envid_t who; int i; // fork a child process who =…
Lab 3: User Environments 在这个lab中我们需要创建一个用户环境(UNIX中的进程,它们的接口和实现不同),加载一个程序并运行,并使内核能够处理一些常用的中断请求. Part A: User Environments and Exception Handling 在kern/env.c中可以找到内核维护的三个全局变量: struct Env *envs = NULL; // All environments struct Env *curenv = NULL; // Th…
Lab 3: User Environments实验报告 tags:mit-6.828 os 概述: 本文是lab3的实验报告,主要介绍JOS中的进程,异常处理,系统调用.内容上分为三部分: 用户环境建立,可以加载用户ELF文件并执行. 建立异常处理机制. 提供系统调用的能力. Part A: User Environments and Exception Handling 本实验指的用户环境和UNIX中的进程是一个概念,之所有没有使用进程是强调JOS的用户环境和UNIX进程将提供不同的接口.…
Lab 4: Preemptive Multitasking tags: mit-6.828, os 概述 本文是lab4的实验报告,主要围绕进程相关概念进行介绍.主要将四个知识点: 开启多处理器.现代处理器一般都是多核的,这样每个CPU能同时运行不同进程,实现并行.需要用锁解决多CPU的竞争. 实现进程调度算法. 实现写时拷贝fork(进程创建). 实现进程间通信. Part A: Multiprocessor Support and Cooperative Multitasking 该部分做…
前言 最近绝大多数的空闲时间都拿来锤15-445了,很久没动6.S081.前几天回头看了一下一个月前锤完的Lazy Allocation,自己写的代码几乎都不认识了.......看来总结之类的东西最好还是趁着热乎的时候写啊. 不过15-445的内容实在太多了,我只是为了锤Lab粗略的看了看课件,课件里很多东西都没研究,相关的总结还是推迟到所有Lab锤完后重新整理一下再写吧.先把几天前刚做完的Copy-On-Write给写出来.最近会把前面草草写下的Lab Lazy Allocation的相关内容…
目录 Part A:Multiprocessor Support and Cooperative Multitasking Multiprocessor Support 虚拟内存图 Exercise 01 Application Processor Bootstrap Exercise 02 Question Per-CPU State and Initialization Exercise 03 Exercise 04 Locking Exercise 05 Question Round-Ro…