`
talin2010
  • 浏览: 526083 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

[MIT6.828]LAB2 Exercise & Question总结

阅读更多

E1:In the file kern/pmap.c, you must implement code for the following functions.
boot_alloc()
page_init()
page_alloc()
page_free()


最后在i386_vm_init()中把painc()那句删掉,然后指定地方加入


在page_init中,那些被占用页的引用次数是从后面的代码中得到的,但因为这些页不会被释放的,所以写成什么都无所谓,但是写成正确的还是有助于系统完整性。

E2:看intel手册,明白分段保护的机制。

E3:实验看虚拟地址和对应的物理地址是否是相同的数据,略过。

E4:In the file kern/pmap.c, you must implement code for the following functions.
pgdir_walk()
boot_map_segment()
page_lookup()
page_remove()
page_insert()

Exercise 5. Fill in the missing code in i386_vm_init() after the call to page_check().

在指定位置添加如下代码即可完成物理页结构,内核栈,全部256MB内存的映射:

Q1:Assuming that the following JOS kernel code is correct, what type should variable x have, uintptr_t or physaddr_t?
mystery_t x;
char* value = return_a_pointer();
*value = 10;
x = (mystery_t) value;
value是可以直接操作虚拟内存的char * ,x是从value强制转化而来,没有经过虚拟内存转物理内存的步骤,所以mystery_t应该也是虚拟内存的一种,故x是uintptr_t类型。

Q2:What entries (rows) in the page directory have been filled in at this point? What addresses do they map and where do they point? In other words, fill out this table as much as possible:

Q3:After check_boot_pgdir(), i386_vm_init() maps the first four MB of virtual address space to the first four MB of physical memory, then deletes this mapping at the end of the function. Why is this mapping necessary? What would happen if it were omitted? Does this actually limit our kernel to be 4MB? What must be true if our kernel were larger than 4MB?
在开启了分页,但是虚拟内存的段基址仍然是0xf0000000的时候,内核的虚拟地址转化位线性地址后是定位到pgdir[0]页目录项0,所以pgdir[0]必须保存有内核物理页表地址。pgdir[0]=pgdir[PDX(KERNBASE)];这句代码就是做的这件事。直到后面加载完新的GDT时候,内核虚拟地址等同于线性地址,线性地址直接映射到pgdir[PDX(KERNBASE)]上,pgdir[0]就可以清空了。

Q4:(From Lecture 4) We have placed the kernel and user environment in the same address space. Why will user programs not be able to read or write the kernel's memory? What specific mechanisms protect the kernel memory?
因为我们的页表和页目录有PTE_U位,可以来控制用户是否可以访问某页。

Q5:What is the maximum amount of physical memory that this operating system can support? Why?
从目前的代码来看,一共映射了0--256M-1的物理内存地址空间,所以最多是访问256MB的内存。

Q6:How much space overhead is there for managing memory, if we actually had the maximum amount of physical memory? How is this overhead broken down?

目前来看就是这么多,如果要计算物理内存位256MB的极限情况,把256MB带入phymem即可。

总结:大胆猜想,小心求证,高屋建瓴,细致入微。

分享到:
评论

相关推荐

    MIT 6.828 lab3 完整代码

    【MIT 6.828 lab3 完整代码】是麻省理工学院(MIT)操作系统课程6.828“操作系统工程”的第三实验的源码集合。这个实验旨在让学生深入理解操作系统的基本概念,特别是与内存管理和进程调度相关的部分。在进行这个...

    mit 6.828(清华北大操作系统实习课使用)

    在描述中提到的“完成了6个lab必做的exercise部分”,这六个实验旨在逐步引导学生掌握上述知识点,每个实验通常涉及一个或多个具体的操作系统组件。 首先,我们来看第一个实验,通常涉及进程管理。在操作系统中,...

    MIT 6.828 JOS lab3

    《MIT 6.828 JOS实验室:深入...总之,MIT 6.828 Lab3是操作系统学习者的一次宝贵实践,通过实际操作,理论知识得以巩固,同时也能提升解决复杂问题的能力。对于有志于操作系统领域的人来说,这是一次不容错过的旅程。

    MIT6.828 lab4 实验报告

    在MIT6.828的lab4实验报告中,核心知识点包括多处理器支持、协作式多任务处理、内存映射输入输出、应用处理器(AP)引导程序、CPU私有状态与初始化、大内核锁、轮转调度算法、创建其他进程的系统调用、写时复制...

    MIT 6.828 JOS 全部代码

    MIT 6.828 JOS 操作系统Lab1 - Lab5的全部代码。 MIT 6.828 是精典的操作系统公开课程。同时也是我们对系统学习和认知的很好的课程。作者曾经也苦于没有很好的实践方案让自己更深入的了解操作系统和x86体系机构。...

    mit6.828_2011_JOS

    这是JOS mit6.828课程的网站资源,为了学习操作系统,但是害怕这门课的教程总是变来变去,并且配置环镜总是变化,所以把除视频和lab1,lab2...lab7的源代码之外的所有网站的资源全部下载下来了,这样就可以安心的学习...

    mit6.828_Jos_lab4.rar_jos lab4

    总结起来,MIT6.828的JOS Lab4是一个实践性的学习平台,它让学习者通过实际操作来理解操作系统的核心组件和它们如何协同工作。这个过程中,学生不仅会掌握到操作系统设计的基本原理,还能提升自己的编程和调试技能,...

    MIT6.828 lab5 实验报告

    MIT6.828 lab5 报告中包含有具体的基础知识和练习的解析,具有很好的学习价值

    mit 6.828 lab1答案

    mit 6.828 lab1答案 printf.c 里面的是代码的实现 打印8进制数字

    MIT6.828 lab2 实验报告

    在这份操作系统MIT6.828实验报告中,作者李丙昕总结了实验室中比较重要的知识点,并详细讨论了在实验练习中遇到的问题及其扩展内容。报告主要围绕物理页面管理、虚拟内存以及内核地址空间三个核心知识点进行阐述,并...

    MIT6.828-2016-中文:MIT 6.828(操作系统)的中文版本

    这是MIT6.828的个人学习笔记,纳入非计算机专业出身,可能会有太多纰漏,烦请大神斧正。个人认为,操作系统是计算机专业课之中综合性很强的一门课,牵涉面广,知识点多,相对也非常难学。 大名鼎鼎的6.828的最大的...

    MIT 8.828 jos lab2

    MIT 的JOS系统,资源里面是lab2的修改后源码

    git qemu mit6.828

    在这个“git qemu mit6.828”项目中,我们可以推测这可能是一个关于麻省理工学院(MIT)6.828课程的实践项目,该课程通常涉及操作系统原理和实现。下面我们将详细讨论 Git 和 QEMU 的相关知识点。 **Git** Git 是一个...

    MIT 6.828 操作系统讲义

    ### MIT 6.828 操作系统讲义知识点概览 #### 1. 操作系统的目的与设计 - **目的**: - **支持应用程序**:操作系统的主要目标之一是支持各种应用程序,使得它们能够在同一硬件平台上高效稳定地运行。 - **硬件...

    peanutzhen#MIT6.828-2017lab#MIT6.828-2017Lab4PartA 学习过程1

    1.实现mmio_map_region + page_init微调 2.设置每个cpu的内核堆栈 3.设置CPU的特殊寄存器值 4.设置锁 5.实现RR调度 6

    MIT 6.828 操作系统实验.zip

    MIT 6.828课程作为麻省理工学院(MIT)的高级操作系统课程,它提供了一个深入学习和实践操作系统设计与实现的平台。本文将详细介绍该课程的内容、教学方式和学习成果,帮助读者了解该课程的特色和重要性。 MIT 6....

    (源码)基于MIT 6.828课程的xv6操作系统实现.zip

    # 基于MIT 6.828课程的xv6操作系统实现 ## 项目简介 本项目是基于MIT 6.828课程的xv6操作系统实现的完整代码和实验记录。xv6是一个类Unix的教学操作系统,通过本项目,你将能够深入理解操作系统的核心概念,包括...

    MIT6.828课程实验以及源码

    《MIT6.828操作系统课程实验与源码解析》 MIT6.828是麻省理工学院(MIT)开设的一门高级操作系统课程,它深入探讨了操作系统的设计与实现,为学生提供了丰富的实践机会。这门课程的核心部分是实验,通过实际编写和...

    MIT操作系统6.828课程可执行jos实验代码(已验收+HIT)

    《MIT操作系统6.828课程可执行jos实验代码详解》 MIT的6.828操作系统课程,全称为“操作系统工程”(Operating System Engineering),是全球计算机科学领域内享有盛誉的一门课程。该课程的重点在于实际操作系统的...

    MIT6.828 JOS实验环境搭建

    ### MIT 6.828 JOS实验环境搭建详尽指南 #### 一、课程背景与目标 **MIT 6.828 Operating System Engineering** 是一项深入探索操作系统原理及其实现的技术课程,旨在帮助学生从理论到实践全方位理解操作系统的...

Global site tag (gtag.js) - Google Analytics