MIT 操作系统实验 MIT JOS lab1】的更多相关文章

JOS lab1 首先向MIT还有K&R致敬! 没有非常好的开源环境我不可能拿到这么好的东西. 向每个与我一起交流讨论的programmer致谢!没有道友一起死磕.我也可能会中途放弃. 跟丫死磕究竟.(事实上这个过程会学到非常多东西,非常好玩非常好玩,不要被panic吓到,等你都能定位panic,并修复触发panic的bug的时候.我相信大家debug的能力会上升一个水平,互勉-) ---------------------------------------------------------…
MIT JOS lab2 首先把内存分布理清楚,由/boot/main.c可知这里把kernel的img的ELF header读入到物理地址0x10000处 这里能够回想JOS lab1的一个小问.当时是问的bootloader怎么就能准确的吧kernle 镜像读入到相应的地址呢? 这里就是main.c在作用. 这里往ELFHDR即0x10000处读入了8个SECTSIZE(这里读入的是一个PAGESIZE 4KB), 从凝视//is this a valid ELF? 開始,bootmain以…
一.实验介绍 实验目的: 知识储备: 二.相关下载 1.下载镜像文件 这个镜像文件是vdi类型的,只能用visualbox下载 链接:https://pan.baidu.com/s/1L7WX6ju49DYC6ZS_wNxGkQ 提取码:y397 说明:这个镜像文件是授课老师在Ubuntu的基础上封装了实验所需要的几乎所有东西 2.visualbox下载 下载地址: http://www.virtualbox.org/wiki/Downloads 下载步骤参考: https://jingyan.…
[感受] 这次操作系统实验感觉还是比较难的,除了因为助教老师笔误引发的2个错误外,还有一些关键性的理解的地方感觉还没有很到位,这些天一直在不断地消化.理解Lab3里的内容,到现在感觉比Lab2里面所蕴含的内容丰富很多,也算是有所收获,和大家分享一下我个人的一些看法与思路,如果有错误的话请指正. [关键函数理解] 首先第一部分我觉得比较关键的是对于一些非常关键的函数的理解与把握,这些函数是我们本次实验的精华所在,虽然好几个实验都不需要我们自己实现,但是这些函数真的是非常厉害!有多厉害,呆会就知道了…
北航操作系统实验2019:Lab4-1代码实现参考 部分实现参考自Github前辈们的项目,经过一定程度的勘误. 如果这份代码中存在任何问题或错误,请务必不吝在评论区指出. Exercise 4.1 // user/syscall_wrap.S LEAF(msyscall) // TODO: 执行syscall指令,然后从函数返回 syscall jr ra nop END(msyscall) Exercise 4.2 // lib/syscall.S NESTED(handle_sys,TF_…
北航操作系统实验2019:Lab4-1流程梳理 前言 操作系统的实验课实在令人头秃.我们需要在两周时间内学习相关知识.读懂指导书.读懂代码.补全代码.处理玄学bug和祖传bug,以及回答令人窒息的思考题.可以说,这门课的要求非常高,就个人感觉,远比计算机组成实验课要难受. 一方面,想要达到细致理解操作系统每个实现细节,非常困难,需要大量时间和经历的投入:但另一方面,如果我们能够理解了操作系统实现的每个细节,我们的水平也会有大幅度的提升.在这里,我记录下本次实验课下我的学习经历,如果有不对的地方,…
操作系统实验--SSTF磁盘调度算法 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的 对磁盘进行读/写操作的请求.由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,最短寻道时间优先 算法(Shortest Seek Time First-SSTF)是常用的磁盘调度算法之一. SSTF算法选择调度处理的磁道是与当…
操作系统实验:Shell编程 emmmmm,实验前老师发了一份实验说明,里面有教怎么配置虚拟机Ubuntu.这里就不做过多叙述,需要说明的是,kali和ubuntu都可以以shell运行这个C语言程序,详情如下. 配置虚拟机Ubuntu/Kali 下载VMWare软件和Ubuntu/Kali的镜像文件(https://cn.ubuntu.com/download或者https://www.kali.org/downloads/),这里我附上了中文乌班图官网和卡里官网的镜像地址,然后一步步在VM上…
目录 操作系统实验一:进程管理 1.实验目的 2.实验内容 3.实验准备 3.1.1进程的含义 3.1.2进程的状态 3.1.3进程状态之间的转换 3.2 进程控制块PCB 3.2.1进程控制块的作用 3.2.2进程控制块的内容 3.2.3进程控制块(PCB)的组织形式 3.2.4进程控制原语 3.3进程的创建与撤销   *重点 3.3.1进程的创建 3.3.2进程的撤销 3.4进程的阻塞与唤醒 3.4.1进程的阻塞 3.4.2进程的唤醒 4.代码实现 4.1代码分解介绍 5.运行结果截图 (本…
终于把Mit的分布式系统导论课的实验1-6写完了 做得有些痛苦,但是收获也很大 http://pdos.csail.mit.edu/6.824-2012/labs/index.html 把实验1-6用导图做个小结吧,希望对后来的同学有些小用,欢迎讨论啊,最近老板项目来了,估计7真的没有时间做了,RSM有谁做了,交流一下啊…
首发于公众号:努力学习的阿新 前言 大家好,这里是阿新. MIT 6.824 是麻省理工大学开设的一门关于分布式系统的明星课程,共包含四个配套实验,实验的含金量很高,十分适合作为校招生的项目经历,在文章<2022 双非应届 CS 硕士校招上岸字节跳动(校招总结)>中,我也将其推荐给了各位读者.但由于课程是全英的,实验说明也是全英的,实验过程中还需要阅读相关的英文文献,很多同学(包括曾经的笔者)受困于英语,对其望而却步.因此,笔者决定开启系列文章:MIT 6.824(Spring 2020)实验…
lab1知识点汇总 还是有很多问题,但是我觉得我需要在查看更多资料后回来再理解,学这个也学了一周了,看了大量的资料...还是它们自己的80386手册和lab的指导手册觉得最准确,现在我就把这部分知识做一个汇总,也为之后的lab打下坚实的基础.80386真的难啊,比mips复杂多了..顿时觉得我们学的都是小菜.. 下面这些知识来源于: 实验指导书和答案 80386手册 mooc视频 8086程序设计指导这本书 网上的博客 lab1练习汇总 练习之所以被老师当做练习,一定有它重要的地方,所以我们先把…
源代码参见我的github: https://github.com/YaoZengzeng/MIT-6.824 Part I: Word count MapReduce操作实际上就是将一个输入文件拆分成M份,交由M个Map task进行操作.每个Map task生成R个包含中间键值对的结果.R个Reduce task执行Reduce操作,其中第i个Reduce task操作每个Map task的第i个输出文件.最终,生成R个结果文件,通过Merge操作,将结果生成一个输出文件. 1.mapred…
实验概况 在开始实验之前,先对实验整体有个大概的了解,这样能让我们更好地进行实验. 我们本次实验需要补充的内容包括一整套以sys开头的系统调用函数,其中包括了进程间通信需要的一些系统调用如sys_ipc_can_recv等,以及补充完成fork.c函数,当然也不能少填写syscall_wrap.S. 系统调用 关于系统调用,我们主要是以以下流程来进行的: 用户调用syscall特权指令触发异常 异常触发,pc值自动被硬件置为0x80000080,转向异常分发代码 trap_init识别是系统调用…
实验一.DOS使用命令实验 一.实验目的      DOS是市场上早期获得巨大成功的桌面操作系统,现在很多同学都不太熟悉.本实验的目的就是让同学们读者从操作系统理论的观点来重新认识它们,了解和掌握DOS有关用户接口的特点. (2) 实验环境 MS—DOS 简介 MS-DOS是Microsoft公司20世纪80年代初推出的单用户单任务操作系统,由于性能和移植性较好,使用非常广泛. MS—DOS是采用字符界面的操作系统,人机接口为命令接口.没有进程的并发执行能力,但允许多个进程同时驻留在内存中,也允…
VirtualBox安装教程博客链接(转载)https://blog.csdn.net/u012732259/article/details/70172704 实验名称:Linux的基本操作 实验目的: 1.了解Linux的文件系统结构 2.掌握Linux的基本操作命令 3.掌握Linux部分基本工具的使用(nano.tar和gzip) 4.熟悉Linux下的C语言编译链接环境 实验内容: 1.列出根(/)下的文件清单,解释其中五个目录/bin./etc./home./dev./mnt的意义.…
实验:动态分区式存储管理 实验内容: 编写程序模拟完成动态分区存储管理方式的内存分配和回收.实验具体包括:首先确定内存空闲分配表:然后采用最佳适应算法完成内存空间的分配和回收:最后编写主函数对所做工作进行测试. 实验提示 由于是实验,没有真正的内存分配.所以在实验中首先应建立一张空闲区表,初始状态只有一个空闲登记项(假定的内存空闲区)和一张所有状态都为“空”的已分配区表.假定内存空间110KB,OS占用10KB,其余为空闲区.然后可以选择进行内存分配或回收:若是分配,要求输入作业名和所需内存空间…
lab1的Exercise 2就是让我们熟悉gdb的si操作,并知道BIOS的几条指令在做什么就够了,所以我们也会尽可能的去分析每一行代码. 首先进入到6.8282/lab这个目录下,输入指令make qemu-gdb,之后新打开一个terminal,在lab目录下输入gdb.就进入到gdb了 [f000:fff0] 0xffff0: ljmp $0xf000,$0xe05b 这第一条指令呢,是一条跳转指令,跳转到0xfe05b地址处.学过微机原理或者计算机组成就知道0xfe05b=0xf000…
实验要求: 创建两个线程按数字顺序打印10以下自然数,其中一个线程打印1-3及8-10:另一个线程打印4-6.要求使用线程同步机制实现上述打印顺序. 看网上的资料学习了两种写法 C++11的,使用了std::thread #include <unistd.h> #include <thread> #include <iostream> #include <mutex> #include<bits/stdc++.h> void Fun_1(); v…
实验描述: 代码实现: 链接:https://pan.baidu.com/s/1so3-XsvWBY9ZDbINob6qCw 提取码:8hhe…
实验3:随便写的 #include <windows.h> #include <string> #include <stdio.h> #pragma warning(disable:4996) CRITICAL_SECTION cs; int cnt; DWORD WINAPI Thread( LPVOID lpParam ) { int n = (int)lpParam; ) ; i <= ; i++ ) { EnterCriticalSection(&…
操作系统PV操作之--生产者消费者模型 个人博客主页 参考资料: Java实现PV操作 | 生产者与消费者 浙大公开课 在操作系统的多进程.多线程操作中经常会有因为同步.互斥等等问题引发出的一系列问题,我们的前辈为了解决这些问题,发明出了"信号量(Semaphore)"这么一个令人称奇的变量,就目前来看,很巧妙的解决了这些问题. 信号量是个整形变量 信号量S只允许两个标准操作wait()和signal(),或者他的发明者称呼的P操作和V操作 wait()和signal()是原子操作,不…
static void * alloc(u_int n, u_int align, int clear) { extern char end[]; int i; u_long alloced_mem; if(freemem==0) freemem=(u_long)end; freemem = (((u_long)(freemem))+(align)-1)&~((align)-1); //Step 1 finished. alloced_mem = freemem; //Step 2 finish…
摘要: 1.创建信号量 HANDLE CreateSemaphore( LPSECURITY_ATTIBUTES  lpSemaphoreAttributes, LONG lInitialCount;  //信号量初始值 LONG lMaximumCount, //信号量最大值 LPCTSTR lpName); 应用举例: Empty=CreateSemaphore(NULL,10,10,NULL);  //Semaphore empty=10; 2.P操作 DWORD WaitForSingl…
前言 80x86架构里,因为历史原因字是16位的,因此在汇编指令中用后缀-b,-w,-l来表示操作数是字节 字 或是双字 C声明 Intel数据类型 汇编代码后缀 大小(字节) char 字节 b 1 shrot 字 w 2 int 双字 l 4 long int 双字 l 4 long long int -- -- 4 char * 双字 l 4 float 单精度 s 4 double 双精度 l 8 long double 扩展精度 t 10/12 指令寄存器PC指向下一条指令的地址 EI…
---恢复内容开始--- 1.前期由于2440 的4.3寸屏太小.后来修改程序准备在tiny6410增强版的S70屏上用.但是前期移植再用yaffs的文件系统,但是6410是(MLC)的磁盘,根本就不支持yaffs文件系统,只好做成initramfa的文件系统. 2.出现的问题: 1>由于我的应用程序都是动态编译的,所以文件系统需要动态链接库. 2>我之前移植的motion,tslib,madplay等都是需要配置文件和自己相应的链接库. 3>由于initramfa是基于内存的文件系统,…
一.ucore操作系统介绍 操作系统作为一个基础系统软件,对下控制硬件(cpu.内存.磁盘网卡等外设),屏蔽了底层复杂多样的硬件差异:对上则提供封装良好的应用程序接口,简化应用程序开发者的使用难度.站在应用程序开发人员的角度来看,日常开发中常见的各种关于并发.I/O.程序通信的问题等都和操作系统相关,因此一定程度上了解底层的操作系统工作原理是有必要的. 另一方面,由于操作系统自身功能的复杂性,整体设计一般会有一个好的模块化架构:操作系统作为基础服务,对性能效率的要求也很高,底层会用到许多关于数据…
书接上文Raft Part C | MIT 6.824 Lab2C Persistence. 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试:go test -run 2D -race 相关论文:Raft Extended Section 7 实验指导:6.824 Lab 2: Raft (mit.edu) 实验目标 实现Snapshot.CondInstallSnapshot.InstallSnapshot RPC…
书接上文Raft Part B | MIT 6.824 Lab2B Log Replication. 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试:go test -run 2C -race 相关论文:Raft Extended 实验指导:6.824 Lab 2: Raft (mit.edu) 实验目标 完成persist()和readPersist()函数,编码方式参照注释. 优化nextIndex[]回退方式,…
书接上文Raft Part A | MIT 6.824 Lab2A Leader Election. 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试:go test -run 2B -race 相关论文:Raft Extended Section 5.3 Section 5.4.1 实验指导:6.824 Lab 2: Raft (mit.edu) 实验目标 在Leader Election的基础上,完成Leader和…