xv

XV6 lab2 增加系统调用

在本lab实验中,需要实现两个系统调用,分别为trace和sysinfo。 系统调用trace主要用于debug其他程序所执行的系统调用。打开trace,并通过mask设置需要观察的系统调用内容。在后续命令执行的时候,即可打印相关系统调用和其返回值。 系统调用sysinfo则用于统计空闲内存个数,以 ......
系统 lab2 XV6 lab XV

xv6启动,lab 1

lab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/util.html 课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.html 启动xv6 git clone git://g.csail.mi ......
xv6 lab xv

xv6 想到什么记什么

xv6不同视频里安装了不同版本 两个我都装了 一个是xv6-public 点进去是深大视频里配套的i386 arch 另一个是xv6 risc-V 就是另一个我参考的视频里 运行xv6 用的QEMU 是个linux上的模拟器 xv6又是个unix变体简易版系统 所以最终说起来这个系统是一个程序,跑在 ......
xv6 xv

xv6 start

操作系统必须满足三个要求:多路,隔离,交流。 用户模式和管理模式 强隔离要求应用程序和操作系统之间有一个硬边界。如果应用程序出错,我们不希望操作系统失败或其他应用程序出错,相反操作系统应该能够清理失败的应用程序并继续运行其他应用程序。为了实现强隔离,操作系统必须安排应用程序不能修改(甚至读取)操作系 ......
start xv6 xv

xv6 mmap

in linux 调用mmap,会申请一段内存空间(文件的内存映射部分),并且自动映射到指定的文件内存映射部分。 mmap void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); addr为用 ......
mmap xv6 xv

xv6 file system

xv6 file system 在我看来文件系统某种程度上是最复杂的一部分(单从页数也足以说明了),而且我对文件系统的了解其实很少,因此这部分仔细看了一下。 xv6文件系统提供类似unix的文件、目录和路径名,并将其数据存储在virtio磁盘上以实现持久化。 文件系统解决了几个挑战: 文件系统需要磁 ......
system file xv6 xv

xv6 cow

虚拟内存提供了一定程度的间接性:内核可以通过将PTE标记为无效或只读来拦截内存引用,从而导致页面错误,并可以通过修改PTE来更改地址的含义。 xv6中的fork系统调用将父进程的所有用户空间内存复制到子进程中。如果父对象很大,则复制可能需要很长时间。更糟糕的是,这项工作经常被大量浪费:fork通常在 ......
xv6 cow xv

xv6 device driver

Interrupts and device drivers 驱动程序是操作系统中管理特定设备的代码:它配置设备硬件,告诉设备执行操作,处理由此产生的中断,并与可能等待设备I/O的进程进行交互。驱动程序需要与它所管理的设备并发执行并且必须理解设备的硬件接口,编写代码可能很棘手。 设备通常可以产生中断, ......
device driver xv6 xv

xv6:labs2 syscall

lab2 1、lab2的内容总结:关于系统调用整个跟踪过程: 使用系统调用时,用户态会通过软中断(trap,陷阱)进入内核中,由trap识别中断来自系统调用,然后调用syscall函数, 跟踪过程: 1、打开gdb: 2、跟踪用户态trace执行过程: 首先执行以下两条指令,为trace的main函 ......
syscall labs2 labs xv6 xv

xv6 traps

traps 引入 三种类型的事件会导致CPU暂时搁置普通指令的执行,并强制将控制转移给处理事件的特殊代码。 系统调用。用户程序执行调用指令要求内核为它做一些事情 异常。指令(用户或内核)做了一些非法的事情,例如除以零或使用无效的虚拟地址 设备中断。当设备发出需要注意的信号时,例如当磁盘硬件完成读或写 ......
traps xv6 xv

xv6 pagetables

页表 地址空间简介 Xv6运行在Sv39 RISC-V上,这意味着只使用64位虚拟地址的底部39位;不使用前25位。在这个Sv39配置中,RISC-V页表逻辑上是一个包含227(134,217,728)个页表项(pte)的数组。每个PTE包含一个44位物理页码(PPN)和一些标志。分页硬件通过使用3 ......
pagetables xv6 xv

【操作系统MIT 6.1810笔记】xv6讲义:第一章

第1章-操作系统接口(Operating system interfaces) 设计一个好的接口是困难的:“简单易用的接口” vs “强大复杂的接口功能”是一对主要矛盾。 解决这一矛盾的主要方式:设计可组合在一起以提供更广泛用途的少量机制。 kernel xv6系统中,每个进程(process)包含 ......
讲义 笔记 6.1810 系统 1810

xv6book阅读 chapter1

xv6book主要研究了xv6如何实现它的类Unix接口,但是其思想和概念不仅仅适用于Unix。任何操作系统都必须将进程多路复用到底层硬件上,相互隔离进程,并提供受控制的进程间通信机制。 1 了解xv6 xv6是一个模仿unix内部设计的操作系统,其提供了unix中对应的部分系统调用。理解xv6对于 ......
chapter1 xv6book chapter 6book book

mitos - xv6 for riscv

参考: code: https://github.com/mit-pdos/xv6-riscv book: https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf note: https://mit-public-courses-c ......
mitos riscv for xv6 xv

xv6 traps

trap: 在xv6操作系统中,"trap"是指程序从用户态切换到内核态的一种机制。这种切换通常会在几种情况下发生,例如:系统调用、出现页错误(page fault)或者外部设备触发了中断。Trap机制是通过一些特定的硬件指令和硬件状态来实现的,例如修改程序计数器(PC)的值,以便将程序的控制权转移 ......
traps xv6 xv

xv6 进程切换中的锁:MIT6.s081/6.828 lectrue12:Coordination 以及 Lab6 Thread 心得

引言 这节课和上一节xv6进程切换是一个完整的的进程切换专题,上一节主要讨论进程切换过程中的细节,而这一节主要讨论进程切换过程中锁的使用,所以本节的两大关键词就是"Coordination"(协调)和 "lost wakeup" Coordination 就是有关出让CPU,直到等待的事件发生再恢复 ......
Coordination 进程 心得 lectrue Thread

xv6 中的进程切换:MIT6.s081/6.828 lectrue11:Scheduling 以及 Lab6 Thread 心得

# 絮絮叨 这两节主要介绍 xv6 中的**线程切换**,首先预警说明,这节课程的容量和第 5/6 节:[进程的用户态到内核态的切换](https://www.cnblogs.com/looking-for-zihuatanejo/p/17644000.html)一样,**细节多到爆炸**,连我自己 ......
Scheduling 进程 心得 lectrue Thread

XV6中的锁:MIT6.s081/6.828 lectrue10:Locking 以及 Lab8 locks Part1 心得

这节课程的内容是锁(本节只讨论最基础的锁)。其实**锁本身就是一个很简单的概念**,这里的简单包括 3 点: 1. **概念简单**,和实际生活中的锁可以类比,不像学习虚拟内存时,现实世界中几乎没有可以类比的对象,所以即使这节课偏向于理论介绍,也一点不会感觉晦涩。 2. **使用简单**,几乎所有的 ......
心得 Locking lectrue 6.828 Part1

Xv6 Lab10: file system

Large files 这个作业需要我们将 xv6 的最大文件大小从 12 + 256 Bytes 修改为 11 + 256 + 256 * 256 Bytes。 为了达成这个目标,我们需要使用二级索引块,对 inode 的 addrs 字段,首先将 NDIRECT 从 $12$ 修改为 $11$, ......
system file Xv6 Lab Xv

Xv6 Lab9: Locks

Memory allocator 这一题很简单,主要任务,就是为每个 cpu 维护一个空闲物理内存的链表 freelist,xv6 默认使用的结构体 kmem,其中包含一个 freelist 供所有的 cpu 使用。我们要做的,就是把 freelist 修改成 freelist 的数组,即 stru ......
Locks Lab9 Xv6 Lab Xv

Mit6.s081 Lec15: xv6 的 logging system

Logging layer file system 设计的一大重要问题就是 crash recovery。这是因为文件系统操作往往涉及向磁盘多次写入,而几次写入之后的 crash 可能导致磁盘上的文件系统处于一个不一致的状态。 For example, suppose a crash occurs ......
logging system Mit6 Mit 081

Xv6 Lab7: Multithreading

Uthread: switching between threads 这个题还是对的起它 moderate 的难度了,如果认真看了 book-riscv-rev2.pdf 的 Scheduling 章节,以及看了这个 课程翻译,那么这题可以很快做出来,个人觉得 pdf 讲得更加清楚一些。 这个题甚至 ......
Multithreading Lab7 Xv6 Lab Xv

Xv6 Lab6: Copy-on-Write Fork for xv6

思路 经过 lab5: lazy page allocation 之后,对 xv6 的 page fault 的处理,算是有所了解了。 今天这个 COW 实验,在 2020 年的课程视频中有对思路的讲解,可以先看看 课程翻译,厘清一下思路。 整体思路其实也不难,默认情况下,fokr 会调用 uvmc ......
Copy-on-Write Write Lab6 Copy Fork

Xv6 Lab5: lazy page allocation

前言 这个实验只有 2020 年的才有,2021 年的课程中是没有的,但是感觉这个实验还是挺有意义的,因此用 docker 创建了一个 debian 12 的容器,在容器中搭建了 2020 的实验环境,实验环境的搭建过程可以参照 MIT 6.s081 实验环境搭建。 Eliminate alloca ......
allocation Lab5 lazy page Xv6

Xv6 Lab4: Traps

RISC-V assembly Which registers contain arguments to functions? For example, which register holds 13 in main's call to printf? a2 寄存器,函数调用时,参数从左到右会依次保 ......
Traps Lab4 Xv6 Lab Xv

Xv6 Lab2: System calls

系统调用 Lab1 主要是基于提供的系统调用接口来编写一些小工具程序,而 Lab2 则是要我们自己实现系统调用,并提供系统调用的接口。 以本次 Lab 要我们实现的 trace 调用为例,说明一下系统调用的流程: 在 user/trace.c 的第 $15$ 行,调用了属于 system call ......
System calls Lab2 Xv6 Lab

Xv6 Lab4

RISC-V assembly Which registers contain arguments to functions? For example, which register holds 13 in main's call to printf? a2 寄存器,函数调用时,参数从左到右会依次保 ......
Lab4 Xv6 Lab Xv

Xv6 Lab2

系统调用 Lab1 主要是基于提供的系统调用接口来编写一些小工具程序,而 Lab2 则是要我们自己实现系统调用,并提供系统调用的接口。 以本次 Lab 要我们实现的 trace 调用为例,说明一下系统调用的流程: 在 user/trace.c 的第 $15$ 行,调用了属于 system call ......
Lab2 Xv6 Lab Xv

操作系统 XV6

# 操作系统 XV6 ## 1. 介绍和举例 ### 1.1 课程内容简介 - 课程内容简介 - 理解操作系统的设计和实现 - 2.获得实际动手经验 - 操作系统的目标 - 抽象硬件 - 多个应用程序之间共用硬件资源 - 隔离性,不同的活动之间不能相互影响 - 共享性,不同活动之间要能数据共享 - ......
系统 XV6 XV

Xv6 Lab2

系统调用 Lab1 主要是基于提供的系统调用接口来编写一些小工具程序,而 Lab2 则是要我们自己实现系统调用,并提供系统调用的接口。 以本次 Lab 要我们实现的 trace 调用为例,说明一下系统调用的流程: 在 user/trace.c 的第 $15$ 行,调用了属于 system call ......
Lab2 Xv6 Lab Xv
共42篇  :1/2页 首页上一页1下一页尾页