首页 > TAG信息列表 > MIT6

mit6.s081-21-Lab1/ Xv6 and Unix utilities

sleep Implement the UNIX program sleep for xv6; your sleep should pause for a user-specified number of ticks. A tick is a notion of time defined by the xv6 kernel, namely the time between two interrupts from the timer chip. Your solution should be in the

MIT6.S081-Lab5 COW

开始日期:22.4.19 操作系统:Ubuntu20.0.4 Link:Lab COW 目录Lab COW写在前面Virtual address参考链接Copy-on-Write总结 Lab COW 写在前面 Virtual address 关于虚拟地址的概念,一直不是很清晰,book-riscv-rev2中给出的概念是:虚拟地址是用来给xv6操作的地址 P26 The RISC-V page tab

MIT6.S081-Lab4 Traps

开始日期:22.4.7 操作系统:Ubuntu20.0.4 Link:Lab Traps 目录Lab Traps写在前面vscode+wsl2+unbuntu20.04只使用gdb-multiarch进入qemu-gdb参考链接实验内容RISC-V assemblyBacktraceAlarmtest0: invoke handlerstest1/test2(): resume interrupted code总结 Lab Traps 写在前面 vsco

MIT6.S081-Lab Utilities

开始日期:22.2.24 操作系统:Ubuntu20.0.4 Link:Lab Utilities 目录Lab Utilities环境配置实验内容在实验之前lab Boot xv6 (easy)sleep (easy)pingpong (easy)primes (moderate)/(hard)find (moderate)xargs (moderate)总结 Lab Utilities 环境配置 每次的环境配置都是一段折磨又快乐

MIT6.S081 ---- Preparation: Read chapter 4

Preparation: Read Chapter 4 有三种事件会造成CPU放弃正常的指令执行,强制将控制权交给一段特殊的代码处理这个事件: 一种情况是一个系统调用,当一个用户程序执行ecall指令请求内核为它做事的时候。 一种情况是异常(exception):一条指令(内核或者用户)做一些非法操作,如除零或使用一个无

MIT6.S081调试技巧

Debug总结 debug开启 在一个窗口运行make qemu-gdb。 在另一窗口运行gdb-multiarch kernel/kernel,如果要导入其他debubg的可执行文件,如调试find程序,执行file user/_find,之后远程链接gdb,target remote localhost:26000,然后正常调试。 一些有用的调试技巧: 分屏 Change the layout of

MIT6.S081 ---- Preparation: Read chapter 2

Preparation: Read Chapter 2 一个操作系统的关键特征是支持多个任务。例如,用fork系统调用接口创建新的进程,这些进程分时共享计算资源。尽管进程数量比硬件CPU数量多,操作系统一定可以确保所有进程都有机会执行。另一个特征是进程的隔离性(isolation),如果一个进程有一个bug或故障,不会

MIT6.S081 LAB3 pagetable & virtual memory

预备知识(理解相关代码) 1. 地址空间 为什么需要地址空间(address space)?(1)进程之间的内存隔离性;(2)实现了抽象性,为了对内存进行更好的管理。 2. 页表 2.1 页表(page table)在一个物理内存上创建不同的地址空间。页表在硬件中通过内存管理单元(MMU)实现,MMU将虚拟地址翻译称物理地址,物理地址用

[Mit6.S081] Page Table笔记

Lecture 4 Page Table Isolationmemoryaddress spacespage tables(hardware support) every app has its own map(page table) perpage(4KB, 4096 = 2^12 -> offset = 12) virtual address(64) = {EXT(25) + index(27) + offset(12)}RISC-V physical address(56) = {

MIT6.S081 Lec09翻译

MIT6.S081 Lec09笔记 Lec09 Interrupts (Frans) 9.1 真实操作系统内存使用情况 今天课程的内容是中断。但是在具体介绍中断之前,我想先回顾一下上周一些有趣的内容。因为上周的课程主要是讲内存,我们收到了很多内存相关的问题。我想先讨论一下内存是如何被真实的操作系统(而不是

MIT6.S081 Lec06翻译

Lec06 Isolation & system call entry/exit (Robert) 6.1 用户空间和内核空间的切换(Trap机制) 今天我想讨论一下,程序运行是完成用户空间和内核空间的切换。每当 程序执行系统调用程序出现了类似page fault、运算时除以0的错误一个设备触发了中断(interrupt) 使得当前程序运

【MIT6.S081/6.828】手把手教你搭建开发环境

目录1. 简介2. 安装ubuntu20.043. 更换源3.1 更换/etc/apt/sources.list文件里的源3.2 备份源列表3.3 打开sources.list文件修改3.4 刷新列表4. 安装SSH4.1 SecureCRT 报错4.2 解决方法4.3 修改ssh_config4.4 修改sshd_config4.5 重新启动服务并测试5. 配置静态IP6. 安装RISC-V交

MIT6.S081学习总结-lab6:Copy-On-Write Fork

lab6 也是虚拟内存的一种应用,主要实现fork时的写时复制copy-on-write功能。 问题 xv6中的fork()系统调用将所有父进程的用户空间内存复制到子进程中。如果父进程用户空间很大,复制可能需要很长时间。更糟糕的是,这种复制工作经常被浪费;例如,子进程中的fork()后跟exec()将导致子

MIT6.S081学习总结-lab3:page tables

lab3 主要是页表相关,难度突然提高了好多,遇到了无数个坑,太难了。 打印页表 第一个进程启动时打印页表内容 实现: kernel/vm.c里添加,递归实现即可 每个进程一张内核页表 目前xv6的实现里,每个进程只有一张独立的用户地址空间页表,共享一张内核页表,这样的话每次内核不能直接使用用

MIT6.S081学习总结-lab2: system calls

lab2 主要实现两个系统调用 添加系统调用过程 user/user.h里添加系统调用函数,这个lab需要添加两个系统调用,下图中最后两个:trace 和 sysinfo user/usys.pl里添加一个entry,这个文件会生成user/usys.S,就是系统调用的具体实现,之后会使用ecall指令跳转到相应的系统调用去执行。

Mit6.S081-实验4-Traps

Mit6.S081-实验4-Traps 一、RISC-V assembly1,实验准备2,实验要求3,相关问题 一、RISC-V assembly 1,实验准备 1)阅读xv6 book章节4 2)从user space过渡到kernel space,kernel space返回到user space的汇编代码:kernel/trampoline.S 3)解决所有中断的代码:kernel/trap.c 2,实验要求

MIT6.S081/6.828 实验1:Lab Unix Utilities

Mit6.828/6.S081 fall 2019的Lab1是Unix utilities,主要内容为利用xv6的系统调用实现sleep、pingpong、primes、find和xargs等工具。本文对各程序的实现思路及xv6的系统调用流程进行详细介绍。 前言 在实验之前,推荐阅读一下官网LEC1中提供的资料。其中Introduction是对该课程的

MIT6_0002F16_ProblemSet3

MIT6_0002F16_ProblemSet3 实验内容: 本次实验主要围绕模拟一个机器人打扫房间的场景进行,通过随机模拟以及利用各种数学公式等,完成模拟。因此对随机类中的许多函数需要掌握。 这个实验非常有趣,因为提供的test函数将会使自己的函数可视化! 实验流程: 阅读实验pdf,可知实验具体要