首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MIT 操作系统实验 MIT JOS lab2

大家好,又见面了,我是全栈君 MIT JOS lab2 首先把内存分布理清楚,由/boot/main.c可知这里把kernel的img的ELF header读入到物理地址0x10000处 这里能够回想JOS...lab1的一个小问。...这里不记得了就去看lab 1 内存分布就清楚了 注意到kernel结束之后就是free memory了,而在free memory的最開始存放的是pgdir,这块内存相同由boot_alloc申请...Make sure nextfree is kept aligned // to a multiple of PGSIZE. // // LAB 2: Your code here....注意以下ULIM是分界线,ULIM以上是内核地址空间,以下是用户空间 这个页面布局代表的是启用地址转换以后,不管是操作系统还是用户程序,看到的虚拟内存布局,这也就是说,操 操 作系统和用户程序使用的是同一套页文件夹和页表

53130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MIT 6.828 操作系统工程 lab2 通关指南

    /yunwei37/6.828-2018-labs 目录 MIT 6.828 操作系统工程 lab2 通关指南 目录 第1部分:物理页面管理 第2部分:虚拟内存 虚拟,线性和物理地址 引用计数 页表管理...第3部分:内核地址空间 权限和故障隔离 初始化内核地址空间 地址空间布局选择 lab2 主要是关于内存管理的部分。...kern/kclock.c 第1部分:物理页面管理 操作系统必须跟踪物理RAM的哪些部分空闲以及当前正在使用哪些部分,现在,您将编写物理页面分配器:它使用struct PageInfo对象的链接列表(...此操作系统可以支持的最大物理内存量是多少?为什么?...这部分应该是回顾lab1的知识,有一个临时性的页表; 地址空间布局选择 我们在JOS中使用的地址空间布局不是唯一可能的一种。操作系统可能会将内核映射到低线性地址,而将线性地址空间的上部留给用户进程。

    62210

    MIT 6.828 操作系统工程 lab3A:用户环境和异常处理

    这篇是我自己探索实现 MIT 6.828 lab3A 的笔记记录,会包含一部分代码注释和要求的翻译记录,以及踩过的坑/个人的解决方案 这里是我实现的完整代码仓库,也包含其他笔记等等:https://github.com.../yunwei37/6.828-2018-labs 目录 MIT 6.828 操作系统工程 lab3A:用户环境和异常处理 目录 记录一个奇怪的问题 A部分:用户环境和异常处理 环境的状态 分配环境数组...记录一个奇怪的问题 在开始阶段我把代码 merge 到 lab3 分支中,开始运行的时候,发现会出现: kernel panic at kern/pmap.c:154: PADDR called with...static void load_icode(struct Env *e, uint8_t *binary) { // LAB 3: Your code here....但是,诸如异常,陷阱,中断,故障和中止之类的术语在整个体系结构或操作系统中没有标准含义,并且经常被使用而无视它们在特定体系结构(例如x86)上的细微差别。

    66320

    MIT 6.828 操作系统工程 Lab5: File system, Spawn and Shell 笔记

    MIT 6.828 操作系统工程 Lab5: File system, Spawn and Shell 这篇是我自己探索实现 MIT 6.828 lab 的笔记记录,会包含一部分代码注释和要求的翻译记录...,以及踩过的坑/个人的解决方案 实际上 lab5 可能是最简单的一个 lab 了(绝大多数的代码都已经写好了,就一点点完形填空要做) lab5 需要仔细阅读的材料比较多: 实验室这部分的主要新组件是文件系统环境...文件系统 包含以下内容,需要仔细了解: 磁盘文件系统结构 扇区和块 超级块 文件元数据 目录与常规文件 磁盘访问 我们操作系统中的文件系统环境需要能够访问磁盘,但是我们还没有在我们的内核中实现任何磁盘访问功能...我们没有采用传统的“单体”操作系统策略,即向内核添加 IDE 磁盘驱动程序以及必要的系统调用以允许文件系统访问它,而是将 IDE 磁盘驱动程序实现为用户级文件的一部分系统环境。...There are // super->s_nblocks blocks in the disk altogether. // LAB 5: Your code here.

    64410

    CSAPP lab

    CSAPP学习过程 这篇文章主要记录CSAPP书和lab的学习过程,具体某个lab的踩坑过程会分别附单独链接,本文主要是记录漫长的学习过程以及方便想学但是尚未开始学习的同学参考,以下是github的lab...image.png Todo Bilibili翻译课程 lecture 1-4 搭建实验环境 Data lab Bilibili翻译课程 lecture 5-9 Bomb lab Attack...lab 前置材料 一本CSAPP CSAPP的bilibili翻译课程 实验材料 参考经验贴1 参考经验贴2 我想做些什么 开设这个仓库是想记录我做CSAPP的lab的过程,也顺便将踩坑过程分享,帮助后人少走弯路...学习过程(以Lab为单位总结) 简单查阅别的学习经验后,大多数人的分享都说看书再多遍也不如做lab学到的多,lab是课程的精髓,我已经粗略的学过编译原理,计算机组成原理和操作系统,所以我会比较快速的过一遍网课然后开始...lab,目标3个月完成大多数的lab(也许有一些实在不感兴趣的lab会跳过) Timeline 2022-03-30 完成Datalab 2022-03-28 完成实验环境搭建 2022-03-27 完成

    1K10

    ucore-lab7

    练习解答 理解操作系统的同步互斥的设计实现; 理解底层支撑技术:禁用中断、定时器、等待队列; 在ucore中理解信号量(semaphore)机制的具体实现; 理解管程机制,在ucore内核中增加基于管程...自行填写,懒得找了,可以参考kiprey 练习一 理解内核级信号量的实现和基于内核级信号量的哲学家就餐问题(不需要编码) 完成练习0后,建议大家比较一下(可用meld等文件diff比较软件)个人完成的lab6...和练习0完成后的刚修改的lab7之间的区别,分析了解lab7采用信号量的执行过程。...可以在proc的结构体里面增加信号量的相关代码,用于获取信号量的值,发出增加或减少信号量的请求,再由操作系统实现。详细可以参考kiprey,他参考了linux的实现。...//看注释知道要做什么 void cond_signal (condvar_t *cvp) { //LAB7 EXERCISE1: YOUR CODE cprintf("cond_signal

    92630

    ucore-lab2

    其他内容建议看Kiprey ucore_lab2 练习0 合并代码,直接meld然后copy to right就行,lab1修改的文件有: kern/debug/kdebug.c kern/trap/trap.c...kern/init/init.c 可以看到lab2与lab1有很多文件不同,记得只能修改上述三个文件。...kern/mm/pmm.c找到get_pte函数,根据注释不难写出: pte_t * get_pte(pde_t *pgdir, uintptr_t la, bool create) { /* LAB2...然后lab2提了一个问题,如何使虚拟地址与物理地址相等? 显然,由于我们现在的ucore是通过虚拟地址到物理地址的映射实现的内存管理,如果要取消该映射,我们应该反向查找lab2中的映射方式。...首先是更改内核的加载地址为0,在lab2-copy中更改tools/kernel.ld,把内核的加载地址由0xc0100000修改为0x0,之后修改内核偏移地址,在kern/mm/memlayout.h

    64130

    ucore-lab1

    请求特权级(Requested Privilege Level,RPL):保护机制 中断与异常 在操作系统中,有三种特殊的中断事件: 异步中断(asynchronous interrupt)。...(中断方式用到) Trap-gate descriptor(系统调用用到) 特权 特权级共分为四档,分别为0-3,其中Kernel为第0特权级(ring 0),用户程序为第3特权级(ring 3),操作系统保护分别为第...TSS(Task State Segment) 是操作系统在进行进程切换时保存进程现场信息的段 trapframe结构是进入中断门所必须的结构,其结构如下 struct trapframe {...在os_kernel_lab-master/labcodes/lab1/Makefile中,可以找到要分析的makefile。 makefile的结构如下: target....../labcodes/lab1/bin/ucore.img -s -S -d in_asm -D q.log 打开ucore,打开gdb,输入target remote localhost:1234 ,

    1.9K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    领券