- 2024-11-20Mit6.S081笔记Lab11: Network 网络设备驱动
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/net.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/netxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相关翻译
- 2024-11-19Mit6.S081笔记Lab10: mmap 文件内存映射
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/mmap.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/mmapxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相关翻
- 2024-11-15Mit6.S081笔记Lab9: file system 文件系统
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/fs.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/fsxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相关翻译:ht
- 2024-11-12Mit6.S081笔记Lab7: Multithreading 多线程
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/thread.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/threadxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相
- 2024-11-11Mit6.S081笔记:知识点记录
课程地址翻译程序到汇编的转换 任何一个处理器都有一个关联的ISA(InstructionSetsArchitecture,指令集架构),ISA就是处理器能够理解的指令集。每一条指令都有一个对应的二进制编码或者一个Opcode。当处理器在运行时,如果看见了这些编码,那么处理器就知道该做什么样的操作。 写
- 2024-11-10Mit6.S081-实验环境搭建
Mit6.S081-实验环境搭建注:大家每次做一些操作的时候觉得不太保险就先把虚拟机克隆一份前言qemu(quickemulator):这是一个模拟硬件环境的软件,利用它可以运行我们编译好的操作系统。准备一个Linux系统,安装qemu以及其他依赖,通过git克隆下github的xv6源码,利用gcc编译源码得到
- 2024-11-07Mit6.S081笔记Lab6: Lab6: Copy-on-Write Fork for xv6 写时复制
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/cow.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/cowxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相关翻译
- 2024-11-05Mit6.S081笔记:页表笔记
xv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相关翻译:http://xv6.dgs.zone/labs/requirements/lab5.html感觉页表很多地方没理解,学习的时候把一些关键地方记录起来,如有错误恳请各位大佬指正。页表笔记 页表是操作系统为每个进程提供私有地址
- 2024-11-04Mit6.S081笔记Lab5: Lazy Page Allocation 惰性分配
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/lazy.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/lazyxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相关翻
- 2024-10-26Mit6.S081笔记Lab3: page tables 页表
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/pgtbl.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/pgtbl相关翻译:http://xv6.dgs.zone/labs/requirements/lab3.html参考博客:https://ww
- 2024-10-26Mit6.S081笔记Lab2: system calls 系统调用
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/syscall.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/syscall相关翻译:http://xv6.dgs.zone/labs/requirements/lab2.html参考博客:https:
- 2024-09-07用户空间的系统调用是如何链接到内核空间的系统调用的——MIT6.S081学习记录
用户态调用了sysinfo()后,系统会从user/user.h里找到相关声明。用户空间的系统调用函数(如sysinfo())是通过链接到usys.S中的汇编代码来实现的。usys.S文件定义了所有系统调用的入口点,这些入口点使用.global指令使函数名在链接时可见。当用户程序中调用sysinfo()时,链接器会
- 2024-06-04MIT6.S081 Lab1
写在开头6.S081/2021/Fall当刚开始做这个实验的时候,我好像又陷入了一个误区,在实现Sleep的时候,我想了解Sleep到底是怎么完成运行的,浪费了一些时间,也没搞懂。浪费了一段时间之后,我突然意识到:我并不熟悉MakeFile。不熟悉MakeFile,我不可能去理解这个xv6是怎么运行的。并且我的目
- 2024-04-24MIT6.S081 Lab Traps
本实验主要是关于如何使用陷阱实现系统调用的。RISC-Vassembly(easy)这个部分主要是回答一些问题。首先我们按照实验的指示,运行下面的命令得到一份容易读懂的汇编和C结合的代码,位于user/call.asm。makefs.imgQuestion1Whichregisterscontainargumentstofuncti
- 2024-04-24MIT6.S081 Lab lazy page allocation
本次实验是有关内存页懒分配的。所谓内存页懒分配,在本实验中,指的是在用户进程使用sbrk()系统调用来增加内存中堆的空间时,我们不直接在物理内存中分配相应的页,而是只是记录了分配到了哪些用户地址,在用户页面表中这些地址默认标记为无效。当进程首次尝试使用任何给定页面的懒惰分
- 2024-04-24MIT6.S081 Lab syscall
这一个实验的主要内容就是给xv6添加两个系统调用:trace和sysinfo。Usinggdb(easy)这个部分我就不做了……M1的MacbookAir上的gdb太难安装了,所以暂时用不了gdb调试……Systemcalltracing(moderate)Inthisassignmentyouwilladdasystemcalltracingfe
- 2024-04-24MIT6.S081 Lab Page Tables
实验开始前的折腾突然发现2023版的和2020版的实验内容其实还不一样……因为我正在看的视频以及参考资料都是基于2020版的课程,因此我还是决定将之前的实验都迁移到2020版的xv6-lab-2020来。在自己的MacbookAir上折腾了好久……还是没能成功。因此还是用上了我在阿
- 2024-04-23MIT6.S081 - Lab2: system calls
Lab2:systemcalls预备知识执行一次系统调用的流程:USERMODEstep1:系统调用声明user/user.h:系统调用函数(如intfork(void))step2:ecall进入内核态user/usys.S(该文件由user/usys.pl生成,后续添加函数可以在这里添加):执行如下命令.globalforkfork:lia7,SYS_f
- 2024-04-20MIT6.S081 - Lecture3: OS Organization and System Calls
为什么要使用操作系统使用操作系统的主要原因是为了实现CPU多进程分时复用以及内存隔离如果没有操作系统,应用程序会直接与硬件进行交互,这时应用程序会直接使用CPU,比如假设只有一个CPU核,一个应用程序在这个CPU核上运行,但是同时其他程序也需要运行,因为没有操作系统来帮助
- 2024-04-16MIT6.S081 - Lab1: Xv6 and Unix utilities
Part1:sleep实验要求与提示可以参考user/echo.c,user/grep.c和user/rm.c文件如果用户忘记传递参数,sleep应该打印一条错误消息命令行参数传递时为字符串,可以使用atoi函数将字符串转为数字使用系统调用sleep,有关实现sleep系统调用的内核代码参考kernel/sysproc.c(
- 2024-04-15MIT6.S081 - Lecture1: Introduction and Examples
课程简介课程目标理解操作系统的设计和实现通过XV6操作系统动手实验,可以扩展或改进操作系统操作系统的目标Abstraction:对硬件进行抽象Multiplex:在多个应用程序之间共用硬件资源Isolation:隔离性,程序出现故障时,不同程序之间不能相互干扰Sharing:实现共享,如数据交互或协
- 2023-09-12xv6 进程切换中的锁:MIT6.s081/6.828 lectrue12:Coordination 以及 Lab6 Thread 心得
引言这节课和上一节xv6进程切换是一个完整的的进程切换专题,上一节主要讨论进程切换过程中的细节,而这一节主要讨论进程切换过程中锁的使用,所以本节的两大关键词就是"Coordination"(协调)和"lostwakeup"Coordination就是有关出让CPU,直到等待的事件发生再恢复执行。人们发明了很
- 2023-08-23MIT6.s081/6.828 lectrue07:Page faults 以及 Lab5 心得
本篇博客主要是复习MIT6.s081/6.828lectrue07:Pagefaults以及记录Lab5:COWfork的心得值得一提的是,2020年之前的版本第5个lab是lazyalloction,但是到了2020年之后就换成了难度稍高一点的COWfork,有兴趣的小伙伴可以把lazyalloction也一起做一做~毕竟这些lab
- 2023-08-20MIT6.s081/6.828 lectrue5/6:System call entry/exit 以及 Lab4 心得
这篇博客主要复习lecture05:GDBcallingconentions和lecture06:Systemcallentry/exit的内容,外加Lab4:traps的心得前置知识这里的前置知识是指lecture05:GDBcallingconentions的内容,是由TA来上的,是作为lecture06的前置知识,主要讲解了以下三点内容:指令集架构的概念
- 2023-08-10MIT6.s081/6.828 lectrue2:OS design 以及 Lab2 心得
这节课主要介绍OS的顶层设计以及OS启动流程和系统调用流程前置知识:要求阅读xv6bookchapter2和xv6源码:kernel/proc.h,kernel/defs.h,kernel/entry.S,kernel/main.c,user/initcode.S,user/init.c,andskimkernel/proc.candkernel/exec.c一、课程内容课程主要