mit6专题

MIT6.S081最详解析与归纳——lab10:mmap

Lab10主题:mmap (一)前置知识:mmap(1)VMA(2)mmap (二)Lab:mmap(1)前置工作(2)实现sys_mmap()(3)实现pagefault(4)实现sys_munmap(5)脏页位设置(六)其它函数的小修改 (三)感言 (一)前置知识:mmap (1)VMA VMA(Virtual Memory Area) 代表虚拟内存区域,它描述了一个进程

【MIT6.S081】准备工作

官方网站: 6.S081 / Fall 2020 相关资源: GitHub - PKUFlyingPig/MIT6.S081-2020fall: MIT undergraduate operating system course 版本控制 · 6.S081 All-In-One MIT6.S081 | Miigon's blog

123.Mit6.S081-实验1-Xv6 and Unix utilities

今天我们来进行Mit6.S081实验一的内容。 实验任务 一、启动xv6(难度:Easy) 获取实验室的xv6源代码并切换到util分支。 $ git clone git://g.csail.mit.edu/xv6-labs-2020Cloning into 'xv6-labs-2020'......$ cd xv6-labs-2020$ git checkout utilB

【MIT6.S081】Lab4: traps(详细解答版)

实验内容网址:https://xv6.dgs.zone/labs/requirements/lab4.html 本实验的代码分支:https://gitee.com/dragonlalala/xv6-labs-2020/tree/traps2/ Backtrace 关键点:trapframe、栈 思路: 这道题的关键是栈结构,先阅读xv6中关于栈的知识(https://mit-

【MIT6.S081】Lab3: page tables(详细解答版)

实验内容网址:https://xv6.dgs.zone/labs/requirements/lab3.html 本实验的代码分支:https://gitee.com/dragonlalala/xv6-labs-2020/tree/pgtbl2/ Print a page table 关键点:递归、三级页表 思路: 用上图来解释三级页表的原理最为清晰明了。satp的作用是存放

【MIT6.S081】Lab1: Xv6 and Unix utilities(详细解答版)

实验内容网址:https://xv6.dgs.zone/labs/requirements/lab1.html Sleep 关键点:函数参数判断、系统函数调用 思路: 通过argc来判断函数参数是否正确,通过atoi函数来讲字符串转化为整型,调用sleep函数后退出程序。 代码: #include "kernel/types.h"#include "kernel/stat

Mit6.s081 前置开发环境: 虚拟机ubuntu + ssh + vscode

虚拟机 + ssh + vscode 前置条件 下载VMware Download VMware Workstation ProUbuntuUbuntu系统下载 | Ubuntu vscode Visual Studio Code - Code Editing. Redefined Ubuntu版本:20.04 Ubuntu基本操作 ubuntu 安装 ssh 服务 sudo apt-

mit6.s081 lab11 networking

这个exercise的工作是完善kernel/e1000.c文件中的e1000_transmit()和e1000_recv()函数,从而使得驱动可以发送和接受packet。 e1000_init()函数配置使得E1000从RAM中读取要发送的packet,以及将接收到的packet写入到RAM中,这就是DMA技术,RMA使得硬件可以直接从RAM中读写packet。 有可能出现在短时间内出现大量待处

mit6.s081 lab10 mmap

1.添加mmap和munmap的syscall 2…为了追踪每个process使用mmap产生的映射区域,使用VMA去记录mmap时的address, length, permission, file等信息。可以创建一个固定大小的VMA数组来进行实现,16个VMA元素已经足够。在proc.h中定义VMA结构体,在proc中添加VMA数组,数组的大小为16。需要注意的是VMA结构体中有offset成

mit6.s081 lab9 file system

Large files 这个exercise的工作是提高xv6支持的最大文件大小,现在的inode结构如下图所示 原始的xv6 inode结构中有12个直接索引,1个一级间接索引,所以当前xv6中文件的支持的最大block数为12 + 256 (每个block可以存储256个block num,一个sector为512 bytes,一个block为1024 bytes,一个block num为

mit6.s081 lab6 Copy-on-Write Fork for xv6

Implement copy-on write copy-on-write fork需要解决什么问题? xv6中的fork()调用需要拷贝所有父进程中的user space memory给子进程,如果user space memory中的空间很大,那么这个拷贝的过程需要消耗非常多的时间。而且这个拷贝的动作很多时候都是浪费的,因为在fork()后往往还会调用exec(),之前所拷贝的user sp

mit6.s081 lab2 System calls

添加mit仓库 添加remote git remote add mit git://g.csail.mit.edu/xv6-labs-2020 从mit拉取分支 git fetch mitgit checkout syscall chapter 2 System call tracing 写一个程序追踪另一个程序所调用的system call,打印追踪的syscall的sysc

MIT6.S081学习——二、相关命令行整理

MIT6.S081学习——二、相关命令行整理 1 添加user代码到xv6中并编译2 git版本管理 1 添加user代码到xv6中并编译 问题:如何让在xv6中运行copy.c 答:在xv6中运行copy.c文件,你需要先将该文件添加到xv6源代码目录中,然后修改Makefile以将其编译进内核中。 -1、将copy.c文件添加到xv6源代码目录中。 2、修改Makef

mit6.s081【目录】

〇、前言 现在是 2023 年 12 月 24 日,我终于完成了 mit6.s081课程的学习,期间读完了xv6book、OSTEP、xv6 部分内核源码,也写了 近 20 篇的博客,可以说是学习之旅收获颇丰。本文将会起一个目录,方便查找和阅读。 一、Lab:目录 [mit6.s081] 笔记 Lab10: Networking | 网络 [mit6.s081] 笔记 Lab9: Mmap

MIT6.S081-实验准备

实验全程在Vmware虚拟机 (镜像:Ubuntu-20.04-beta-desktop-amd64) 中进行 一、版本控制 1.1 将mit的实验代码克隆到本地 git clone git://g.csail.mit.edu/xv6-labs-2020 1.2 修改本地git配置文件 创建github仓库,记录仓库地址 我的仓库地址就是https://github.com/luhexi

MIT6.S081Lab3:page tables

准备环境 按照官方指南准备环境,即 $ git fetch$ git checkout pgtbl$ make clean 如果提示之前的修改没有提交的话可以把之前的修改去掉(备份一份)。 1.Print a page table 编写vmprint函数,接收一个pagetable_t作为参数,按照格式打印页表内容,对于这个功能,主要是打印第一个进程的页表。 这个lab并不难,难

MIT6.S081Lab3:page tables

准备环境 按照官方指南准备环境,即 $ git fetch$ git checkout pgtbl$ make clean 如果提示之前的修改没有提交的话可以把之前的修改去掉(备份一份)。 1.Print a page table 编写vmprint函数,接收一个pagetable_t作为参数,按照格式打印页表内容,对于这个功能,主要是打印第一个进程的页表。 这个lab并不难,难

【MIT6.S081/6.828】Lab util: Unix utilities

文章目录 1. sleep1.1 实验要求1.2 代码实现1.3 测试 2. pingpong2.1 实验要求2.2 分析2.3 代码实现2.4 测试 3. primes3.1 实验要求3.2 代码实现3.3 测试 4. find4.1 实验要求4.2 ls代码分析4.3 代码实现4.4 测试 5. xargs5.1 实验要求5.2 代码实现5.3 测试 哈喽,大家好,我是仲

【LittleXi】【MIT6.S081-2022Fall】Lab: syscall

【LittleXi】【MIT6.S081-2022Fall】Lab: syscall 文章目录 lab2实验1:Process counting实验思路实验过程 实验2:Free Memory Cou实验思路实验过程 实验3:System call tracin实验思路实验过程 实验4:流程概述1.请概述用户从发出系统调用指令到得到返回结果的执行的流程。2.搜索资料,概述malloc的底层实

MIT6.S081Lab1: Xv6 and Unix utilities

MIT6.S081 Lab1: Xv6 and Unix utilities 官方文档 一.Boot xv6 如何成功的boot xv6可以看之前的文章MIT6.S081实验环境搭建,只是多一个步骤,在clone的文件夹中执行 git checkout util 切换为util分支即可。 二.sleep 在user/sleep.c中编写程序完成用户可以指定tricks数目休眠的sl

给 Linux0.11 添加网络通信功能 (Day3: 完成 MIT6.S081 最终实验 网卡驱动(1. 安装工具链和依赖))

url: https://pdos.csail.mit.edu/6.S081/2020/labs/net.html 首先看 tools章节:https://pdos.csail.mit.edu/6.S081/2020/tools.html 浏览了一下,就是要我们安装依赖 执行以下命令 sudo apt-get install git build-essential gdb-multiarch

给 Linux0.11 添加网络通信功能 (Day4: 完成 MIT6.S081 最终实验 网卡驱动(2. 启动 xv6 net 分支))

url: https://pdos.csail.mit.edu/6.S081/2020/labs/guidance.html lab guidance 介绍了调试技巧。 这种玩意儿可得好好看看啊!!!!!!!! 我们先把 xv6 跑起来吧,待会儿再专门出个番外了解调试技巧 看 https://pdos.csail.mit.edu/6.S081/2020/labs/util.html 执行

【LittleXi】【MIT6.S081-2020Fall】Lab: locks

【MIT6.S081-2020Fall】Lab: locks 【MIT6.S081-2020Fall】Lab: locks内存分配实验内存分配实验准备实验目的1. 举一个例子说明修改前的**kernel/kalloc.c**中如果没有锁会导致哪些进程间竞争(races)问题2. 说明修改前的kernel/kalloc.c中锁竞争contention问题及其后果3. 解释acquire和rel