MIT6.828
文章平均质量分 83
blessing-嵌入式
这个作者很懒,什么都没留下…
展开
-
Lab 5: File system, Spawn and Shell
从头开始,read(我们提供的)工作于任何文件描述符,并简单地分派给适当的设备read函数,在本例中是devfile_read(我们可以有更多的设备类型,如管道)。因此,对于任何大于40KB的文件,我们分配了一个额外的磁盘块,称为文件的间接块,用于存储最多4096/4 = 1024个额外的块号。要从客户端向服务器发送请求,我们使用32位数字作为请求类型(文件系统服务器的rpc是编号的,就像系统调用编号一样),并将请求的参数存储在通过IPC共享的页面上的union Fsipc中。)是打印到fd1的快捷方式。原创 2023-03-12 17:18:49 · 177 阅读 · 0 评论 -
Lab 6: Network Driver (default final project)
虽然QEMU的虚拟网络允许JOS对Internet进行任意连接,但JOS的10.0.2.15地址在QEMU内部运行的虚拟网络之外没有任何意义(也就是说,QEMU充当NAT),因此我们不能直接连接到JOS内部运行的服务器,甚至从运行QEMU的主机上也不能。在answers-lab6.txt中写下实验中提出的问题的简要答案,以及你的挑战练习的描述。与之前的实验室一样,使用git获取此实验室的代码,合并到您自己的代码中,并探索新的net/目录中的内容,以及kern/中的新文件。你将编写一个网络接口卡的驱动程序。原创 2023-02-28 20:41:31 · 381 阅读 · 0 评论 -
Lab 4: Preemptive Multitasking
在A部分中,我们将为JOS添加多处理器支持,实现轮询调度,并添加基本的环境管理系统调用(创建和销毁环境的调用,以及分配/映射内存的调用)。最后,在C部分,你将添加对进程间通信(IPC)的支持,允许不同的用户模式环境显式地相互通信和同步。在B部分中,我们将实现一个类似unix的fork(),它允许用户态环境创建自身的副本。kern/spinlock.h 自旋锁的内核私有定义,包括大内核锁。kern/sched.c用户将要实现的调度器的代码框架。kern/spinlock.c实现自旋锁的内核代码。原创 2023-02-28 18:43:56 · 183 阅读 · 0 评论 -
Lab 3: User Environments
在我们的设计中,JOS内核将支持最多的同时活动的NENV环境,尽管在任何给定的时间内运行的环境通常要少得多。注意:在本实验中,环境和进程这两个术语是可以互换的——它们都指的是允许你运行程序的抽象。在用户环境结束后,内核可以将相同的Env结构重新分配到不同的环境,但新环境的env_id与旧环境的env_id不同,即使新环境重用了envs数组中的相同槽位。在实验2中,你在mem_init()中为pages[]数组分配了内存,这是一个表,内核使用它来跟踪哪些页是空闲的,哪些是空闲的。原创 2023-02-26 16:44:36 · 161 阅读 · 0 评论 -
MIT6.828 主要内容
第二部分将检查我们的6.828内核的引导加载程序,它位于lab树的引导目录中。你的任务是维护数据结构,我们引入“环境”这个术语,而不是传统的“进程”,是为了强调JOS环境和UNIX进程提供了不同的接口,并且没有提供相同的语义。记录哪些物理内存页是空闲的,哪些物理内存页是已分配的,以及有多少进程正在共享每个已分配的内存页。您还将使JOS内核能够处理用户环境发出的任何系统调用,并处理它引起的任何其他异常。的支持,允许不同的用户模式环境显式地相互通信和同步。(创建和销毁环境的调用,以及分配/映射内存的调用)。原创 2023-02-21 18:34:00 · 590 阅读 · 0 评论 -
Lab 2: Memory Management
MIT6.828 lab2原创 2023-02-19 20:53:49 · 267 阅读 · 0 评论 -
MIT 6.828 lab1 part2
当你编译和链接一个C程序(如JOS内核)时,编译器将每个C源文件('. C ')转换为一个对象文件('.o'),其中包含以硬件期望的二进制格式编码的汇编语言指令。再次跟踪引导加载程序的前几个指令,并识别出第一个指令,如果您错误地获得引导加载程序的链接地址,它将“中断”或做错误的事情。对于6.828来说,你可以把ELF可执行文件看作是一个带有加载信息的头文件,后面跟着几个程序段,每个程序段都是一个连续的代码块或数据,打算加载到指定的内存地址中。您将看到比上面列出的更多的部分,但其他部分对我们的目的不重要。原创 2023-02-17 22:40:19 · 299 阅读 · 0 评论 -
MIT6.828环境配置遇到错误
install -d -m 0755 "/usr/local/share/qemu"install: 无法更改"/usr/local/share/qemu" 的权限: 没有那个文件或目录Makefile:382: recipe for target 'install-datadir' failedmake: *** [install-datadir] Error 1原创 2023-02-15 20:25:10 · 153 阅读 · 1 评论