Mit.S081操作系统内核
文章平均质量分 94
清酒。233
Hello World!
展开
-
233.Mit6.S081-实验十一-Network
在本实验室中,将为网络接口卡(NIC)编写一个xv6设备驱动程序。原创 2024-08-07 10:32:09 · 972 阅读 · 0 评论 -
232.Mit6.S081-实验十-Mmap
mmap和munmap系统调用允许UNIX程序对其地址空间进行详细控制。它们可用于在进程之间共享内存,将文件映射到进程地址空间,并作为用户级页面错误方案的一部分,如本课程中讨论的垃圾收集算法。在本实验室中,您将把mmap和munmap添加到xv6中,重点关注内存映射文件(memory-mapped files)。原创 2024-08-05 17:19:56 · 923 阅读 · 0 评论 -
231.Mit6.S081-实验九-File system
在本实验室中,您将向xv6文件系统添加大型文件和符号链接。原创 2024-08-03 11:28:13 · 986 阅读 · 0 评论 -
229.MIT6.S081-实验八-Locks
在本实验中,您将获得重新设计代码以提高并行性的经验。多核机器上并行性差的一个常见症状是频繁的锁争用。提高并行性通常涉及更改数据结构和锁定策略以减少争用。您将对xv6内存分配器和块缓存执行此操作。要开始本实验,请将代码切换到lock分支。原创 2024-07-29 15:57:07 · 740 阅读 · 0 评论 -
227.MIT6.S081-Multithreading
本实验将使我们熟悉多线程。将在用户级线程包中实现线程之间的切换,使用多个线程来加速程序,并实现一个屏障。第一个练习让我们在用户态模拟了线程的切换,这里重要的就是进程/线程上下文的保存与恢复;第二三个练习则是让我们跳出了xv6,去熟悉pthread库和线程的同步互斥。原创 2024-07-24 16:01:21 · 664 阅读 · 0 评论 -
225.Mit6.S081-实验六-Copy-on-Write Fork for xv6
虚拟内存提供了一定程度的间接寻址:内核可以通过将PTE标记为无效或只读来拦截内存引用,从而导致页面错误,还可以通过修改PTE来更改地址的含义。在计算机系统中有一种说法,任何系统问题都可以用某种程度的抽象方法来解决。Lazy allocation实验中提供了一个例子。这个实验探索了另一个例子:写时复制分支(copy-on write fork)。原创 2024-07-21 11:25:17 · 581 阅读 · 0 评论 -
221.Mit6.S081-实验5-xv6-xv6 lazy page allocation
一、操作系统可以使用页表硬件的技巧之一是sbrk()。在我们给出的内核中,sbrk()。内核为一个大请求分配和映射内存可能需要很长时间。例如,考虑由262144个4096字节的页组成的千兆字节;即使单独一个页面的分配开销很低,但合起来如此大的分配数量将不可忽视。此外,有些程序申请分配的内存比实际使用的要多(例如,实现稀疏数组),或者为了以后的不时之需而分配内存。为了让sbrk()在这些情况下更快地完成,复杂的内核会延迟分配用户内存。也就是说,sbrk()。。您将在这个实验室中向xv6添加这个延迟分配特性。原创 2024-07-17 19:36:02 · 776 阅读 · 0 评论 -
216.Mit6.S081-实验四-Traps
本实验探索如何使用陷阱实现系统调用。您将首先使用栈做一个热身练习,然后实现一个用户级陷阱处理的示例。开始编码之前,请阅读xv6手册的第4章和相关源文件:要启动实验,请切换到traps。原创 2024-07-12 14:12:22 · 4483 阅读 · 0 评论 -
215.Mit6.S081-实验三-page tables
在本实验室中,您将探索页表并对其进行修改,以简化将数据从用户空间复制到内核空间的函数。原创 2024-07-11 19:16:37 · 1065 阅读 · 0 评论 -
211.xv6——3(page tables)
UART0和UART0_IRQVirtio磁盘接口CLINT#define CLINT_MTIME (CLINT + 0xBFF8) // 启动以来的时钟周期数PLIC。原创 2024-07-04 19:48:08 · 730 阅读 · 0 评论 -
205.Mit6.S081-实验二 system calls
在上一个实验室中,您使用系统调用编写了一些实用程序。在本实验室中,您将向xv6添加一些新的系统调用,这将帮助您了解它们是如何工作的,并使您了解xv6内核的一些内部结构。您将在以后的实验室中添加更多系统调用。原创 2024-06-30 19:38:48 · 1628 阅读 · 0 评论 -
158.xv6——2(system calls)
这些宏在之前的Perl脚本中被使用。例如,fork:ecallret其中会被替换为li a7, 1,即将系统调用号1加载到寄存器a7中,然后触发系统调用(ecall),并返回(ret这样,Perl脚本结合这些宏定义,可以自动生成完整的系统调用存根函数。原创 2024-05-30 20:03:28 · 649 阅读 · 0 评论 -
128.Mit6.S081-实验1-Xv6 and Unix utilities(下)
今天我们继续实验一接下来的内容。原创 2024-05-14 13:59:16 · 1629 阅读 · 0 评论 -
123.Mit6.S081-实验1-Xv6 and Unix utilities
今天我们来进行Mit6.S081实验一的内容。原创 2024-04-22 23:24:33 · 1098 阅读 · 0 评论 -
122.Mit.S081操作系统内核(实验环境搭建)
Mit6.s081 是麻省理工学院面向本科生的操作系统课程,其课程实验是在教学用操作系统xv6上进行扩展和优化。xv6 操作系统源代码只有一万余行,并且相对清晰和模块化,每个 lab 都带有自动评测功能,非常适合用于实践操作系统知识。希望能借此来掌握操作系统的一些知识。qemu(quick emulator):这是一个模拟硬件环境的软件,利用它可以运行我们编译好的操作系统。准备一个Linux系统,安装qemu以及其他依赖,通过git克隆下github。原创 2024-04-18 15:22:01 · 638 阅读 · 0 评论