xv6

2024/4/12 7:24:44

Windows/Ubuntu qemu虚拟机xv6-riscv利用riscv-gnu-toolchain编译安装方法

本文参考2019年版的Tools Used in 6.828(注意到当前版本也就是2020版本的Xv6, a simple Unix-like teaching operating system并没有清楚的instruction)。以下两种方法无论是使用apt安装qemu-system-misc还是编译安装qemu皆可,但不要使用apt安…

xv6 2020版使用gdb调试debug的方法

本文参考了MIT 6.S081 2020 操作系统 实验环境搭配详解及问题处理,作者为余晨(北海草鱼)。xv6的安装方法见Windows/Ubuntu qemu虚拟机xv6-riscv利用riscv-gnu-toolchain编译安装方法。该方法适用于Ubuntu上搭建的riscv版的xv6的QEMU虚拟机&am…

MIT 6.S081学习笔记(第八章)

〇、前言 本文主要完成MIT 6.S081 实验八:file system 开始之前,切换分支: $ git fetch$ git checkout fs$ make cleanLarge files (moderate) The format of an on-disk inode is defined by struct dinode in fs.h. You’re particularly …

MIT 6.S081学习笔记(第五章)

〇、前言 本文主要完成MIT 6.S081 实验五:Copy-on-Write Fork for xv6。 开始之前,切换分支: $ git fetch $ git checkout cow $ make clean一、问题 Question requirements The fork() system call in xv6 copies all of the parent proc…

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题在进行pingpong实验的时候遇到了许多问题在这里记录一下。 1.输出乱序问题 出现这个问题主要是因为没有弄懂wait(0)的作用, wait(0)暂时停止目前进程的执行,直到信号来到或子进程结束,…

MIT 6.s081 实验解析——labs1

系列文章目录 MIT 6.s081 实验解析——labs1 文章目录 系列文章目录测试判断流程sleep 未完待续 测试判断流程 完成代码后将.c文件放入user文件夹中在makefile文件的UPROGS处添加要测试的文件,如要添加的是sleep.c,则写为_sleep。 重新编译xv6 make q…

XV6 操作系统实验

环境搭建 ubuntu 新建一个文件setup.sh,内容如下 #获取工具链 git clone --recursive https://github.com/riscv/riscv-gnu-toolchain #安装必要依赖 sudo apt-get update sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev li…

MIT 6.s081前置xv6教材和课程总结——第二章 操作系统架构

系列文章目录 MIT 6.s081前置xv6教材和课程总结——第一章 操作系统接口 MIT 6.s081前置xv6教材和课程总结——第二章 操作系统架构 文章目录 系列文章目录概述1. 抽象系统资源2. 用户态,核心态,以及系统调用3. 内核组织 概述 操作系统必须满足三个要求…

xv6实验课程--xv6的写时复制fork(2023)

7. xv6实验课程--xv6的写时拷贝(COW)(2021) 7. xv6实验课程--xv6懒惰分页分配(lazy)(2020) 本文来源: https://mp.weixin.qq.com/s/XJkhjrlP232ZDsRyXd0oHQ 已完成的实验代码可以从下列网站获取: git clone https://gitee.com/lhwhit196…

MIT 6.S081学习笔记(第九章)

〇、前言 本文主要完成 MIT 6.S081 实验 mmap 。 开始之前,切换分支: $ git fetch$ git checkout mmap$ make cleanLab: mmap (hard) Question requirements The mmap and munmap system calls allow UNIX programs to exert detailed control over th…

MIT 6.S081学习笔记(第六章)(上)

〇、前言 本文主要完成: MIT 6.S081 实验六:Multithreading; 开始之前,切换分支: $ git fetch$ git checkout thread$ make clean对知识的回顾。 一、线程 1、线程概述 为什么需要线程?为了提升性能&a…

xv6 中的一些系统调用(上)

〇、前言 本文将会结合源代码谈论 exit、wait、kill 这三个系统调用。 一、exit 系统调用 以下是 exit()的源码: // Exit the current process. Does not return. // An exited process remains in the zombie state // until its parent calls wait(). void e…

MIT 6.S081学习笔记(第二章)

〇、前言 本文主要完成MIT 6.S081 实验二:system call 一、Using gdb (easy) Question requirements In many cases, print statements will be sufficient to debug your kernel, but sometimes being able to single step through some assembly code or inspe…

MIT 6.S081学习笔记(第六章)(一)

〇、前言 本文主要完成: MIT 6.S081 实验六:Multithreading; 开始之前,切换分支: $ git fetch$ git checkout thread$ make clean对知识的回顾。 一、线程 1、线程概述 为什么需要线程?为了提升性能&a…

MIT 6.S081学习笔记(第六章)(下)

〇、前言 MIT 6.S081 实验六:Multithreading; 开始之前,切换分支: $ git fetch$ git checkout thread$ make clean一、实验:Multithreading Uthread: switching between threads (moderate) In this exercise you wi…

MIT 6.s081前置xv6教材总结——第一章 操作系统接口

系列文章目录 MIT 6.s081前置xv6教材总结——第一章 操作系统接口 文章目录 系列文章目录概述1. 进程和内存1.1 fork系统调用1.2 exec系统调用1.3 wait系统调用1.4 exit系统调用1.5 shell 2. I/O和文件描述符2.1 文件描述符2.2 read系统调用2.3 write系统调用2.4 I/O重定向2.5…

MIT 6.S081学习笔记(第十章)

〇、前言 本文主要完成 MIT 6.S081 实验 net 。 开始之前,切换分支: $ git fetch$ git checkout net$ make cleanLab: networking(hard) Question requirements Your job is to complete e1000_transmit() and e1000_recv(), bo…

MIT 6.S081学习笔记(第七章)

〇、前言 本文主要完成MIT 6.S081 实验七:locks。 开始之前,切换分支: $ git fetch$ git checkout lock$ make clean一、Memory allocator (moderate) Question requirements The program user/kalloctest stresses xv6’s memory allocato…

MIT6.828实验:Xv6 and Unix utilities

2023MIT6.828 lab-1 官方地址 一、sleep 实验内容 调用sleep(系统调用)编写用户级别程序能暂停特定时常的系统滴答程序保存在user/sleep.c 实验过程 xv6的参数传递 查看官方文档提示的文件中,多采用如下定义: int main(in…

MIT6.828 Lab1 Xv6 and Unix utilities

2023MIT6.828 lab-1 官方地址 一、sleep 实验内容 调用sleep(系统调用)编写用户级别程序能暂停特定时常的系统滴答程序保存在user/sleep.c 实验过程 xv6的参数传递 查看官方文档提示的文件中,多采用如下定义: int main(in…

【MIT6.S081】Lab2: syscall(详细解答版)

实验内容网址:https://xv6.dgs.zone/labs/requirements/lab2.html System call tracing 关键点:系统函数调用的整个流程 思路: 解题步骤按照提示来,比较清晰。下面先以read系统调用来描述整个过程。 用户程序调用read函数&#x…

xv6源码分析 002

xv6源码分析 002 今晚我们就来看看xv6提供的应用程序,主要是sh.c和umalloc.c 这两个文件 sh.c是xv6用来进行交互的应用程序,怎么说呢?我们可以将xv6的shell看成是一个代理(proxy),我们将我们需要执行的命…

xv6-x86在ubuntu14.04 i386下正常编译、调试,在ubuntu23.04下编译各种报错--google镜像

来源 原git仓库 xv6-x86(xv6-public) 文档 mit 6.828/2023/ 文档 MIT 6.828/2018/xv6/book-rev11.pdf 原readme 注: xv6-x86(xv6-public) 已经被放弃了, 原作者转向了xv6-riscvxv6-x86文档来源:mit-pdos/xv6-book.git, 它需要 heirloom-doctools 来编译成pdf&#x…

[MIT 6.1810]Lab7-networking

Lab7 networking https://pdos.csail.mit.edu/6.828/2023/labs/net.html 目录 Lab7 networking背景驱动程序E1000手册接收描述符发送描述符寄存器约定环形队列 代码实现发送接收坑 背景 为E1000实现驱动,补全kernel/e1000.c中的两个空函数。 为了达成目的&#xff…

MIT 6.S081学习笔记(第三章)

〇、前言 本文主要完成MIT 6.S081 实验三:page tables。 开始之前,切换分支: $ git fetch$ git checkout pgtbl$ make clean一、Speed up system calls (easy) 这个实验比底下两个都难,但是它的难度是简单? Questio…

【xv6操作系统】Lab systems calls

一、实验前须知 阅读 xv6 文档的第 2 章和第 4 章的 4.3 节和 4.4 节以及相关源文件: 系统调用的用户空间代码在 user/user.h 和 user/usys.pl 中。 内核空间代码在 kernel/syscall.h 和 kernel/syscall.c 中。 与进程相关的代码在 kernel/proc.h 和 kernel/proc.c…

MIT6S081-Lab2总结

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/xjintong。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 Lab2就是了解一下xv6的系统调用流程&…

xv6---Lab3: page tables

目录 参考资料 RISC -V页表的简化图如下所示 ​编辑​ 多级页表 xv6内核页表 3.6 Process Address Space 3.7 Code: Sbrk 3.8 Code: Exec Print a page table A kernel page table per process hints copyin/copyout 参考资料 什么是pagetable? 程序在系统上执行&a…

MIT 6.S081学习笔记(第一章)

〇、前言 本章主要是关于实验环境的搭建和完成 LAB UTIL。 平台:阿里云 Ubuntu20.04VScode on macOS(M1 Apple Silicon)。 一、环境搭建 1、QEMU QEMU(quick emulator)是一款由法布里斯贝拉(Fabrice Bel…