MIT6.828 Lab4 Preemptive Multitasking(下)】的更多相关文章

Lab4 Preemptive Multitasking(下) lab4的第二部分要求我们实现fork的cow.在整个lab的第一部分我们实现了对多cpu的支持和再多系统环境中的切换,但是最后分析的时候没有分析环境创建的系统调用,这里先补一下对环境创建的系统调用的分析 recall A续 这里的分析要从user/dumpfork.c开始 umain(int argc, char **argv) { envid_t who; int i; // fork a child process who =…
目录 Part A:Multiprocessor Support and Cooperative Multitasking Multiprocessor Support 虚拟内存图 Exercise 01 Application Processor Bootstrap Exercise 02 Question Per-CPU State and Initialization Exercise 03 Exercise 04 Locking Exercise 05 Question Round-Ro…
本文介绍在MacOS下搭建Mit6.828/6.S081 fall2019实验环境的详细过程,包括riscv工具链.qemu和xv6,对于Linux系统同样可以参考. 介绍 只有了解底层原理才能写好上层应用,曾经几度想要系统地学习OS课程,尝试去看了<计算机操作系统>.<Operating Systems: Three Easy Pieces>.<UNIX环境高级编程>,均以半途而废告终.被大量的抽象概念所淹没,对操作系统如何工作,用户程序如何运行,与CPU等硬件如何交…
Lab4 Preemptive Multitasking(上) PartA : 多处理器支持和协作多任务 在实验的这部分中,我们首先拓展jos使其运行在多处理器系统上,然后实现jos内核一些系统功能调用以支持用户级环境去创建新环境.我们还需要实现协同式轮询调度(cooperative round-robin scheduling)算法,允许内核在旧的用户环境资源放弃CPU或者退出的时候切换到一个新的用户环境. 1. Multiprocessor Support 下面是一段对实验指导书的翻译. 我…
Lab 4: Preemptive Multitasking tags: mit-6.828, os 概述 本文是lab4的实验报告,主要围绕进程相关概念进行介绍.主要将四个知识点: 开启多处理器.现代处理器一般都是多核的,这样每个CPU能同时运行不同进程,实现并行.需要用锁解决多CPU的竞争. 实现进程调度算法. 实现写时拷贝fork(进程创建). 实现进程间通信. Part A: Multiprocessor Support and Cooperative Multitasking 该部分做…
本文将介绍如何在macOS下配置MIT6.828 JOS实验的环境. 写JOS之前,在网上搜寻JOS的开发环境,很多博客和文章都提到"不是32位linux就不好配置,会浪费大量时间在配置环境"上之类的论调.故前期开发直接使用了32位ubuntu系统,并做了共享文件系统,背景开一个ubuntu虚拟机进行编译. 最近实在无法忍受背景开虚拟机那恐怖的耗电量和发热量,尝试将开发环境移到macOS下,竟发现非常的简单. Tools we need 在搭建环境之前,首先macOS上需要有以下两个工…
title:[MIT6.828]centos7下使用Qemu搭建xv6运行环境 date: "2020-05-05" [MIT6.828]centos7下搭建xv6运行环境 1. 基础依赖 yum install libX11 libX11-devel SDL2 SDL2-devel -y 2. 编译和安装 QEMU ~]# wget https://download.qemu.org/qemu-4.2.0.tar.xz ~]# xz -d qemu-4.2.0.tar.xz &…
MIT6.828 LAB2:http://pdos.csail.mit.edu/6.828/2014/labs/lab2/ LAB2里面主要讲的是系统的分页过程,还有就是简单的虚拟地址到物理地址的过程.关于系统分页,在MIT6.828 虚拟地址转化为物理地址——二级分页:http://blog.csdn.net/fang92/article/details/47320747中有讲. 下面主要是lab2的几个exercise的解题过程. 1.第一个boot_alloc()函数: static vo…
这个分页,主要是在mit6.828的lab2的背景下来说的. Mit6.828 Lab2:http://pdos.csail.mit.edu/6.828/2014/labs/lab2/ lab2主要讲虚拟内存->物理内存的变换,通过一定的函数来实现软件MMU的部分. 整个地址转化的过程如下图所示: 首先,明确一点,在程序里面的所有地址,都是虚拟地址,程序里面是不会出现物理地址的,就算是物理地址,CPU也会把它当做虚拟地址,通过MMU转化为物理地址. 通过上面的图,可以知道,在系统中,CPU得到一…
Lab Tools 目录 Lab Tools 写在前面 GDB GNU GPL (通用公共许可证) QEMU ELF 可执行文件的格式 Verbose mode Makefile 写在前面 操作系统小学期选择了做mit6.828的lab,非常具有挑战性!希望可以记录下学习的内容和自己努力进步的点滴~ GDB linux 程序调试工具 gdb的目的主要是让你知道程序内部正在运行什么代码,或者是当程序崩溃的时候正在执行什么代码 GDB主要可以做四种事情来帮助你找到bug: 启动你的程序,指定任意可以…