资源向导之 JOS 计划 MIT 6.828

Project of JOS


update: 2016.03.18 哇,JOS过去一段时间了,有一些同学可能获得JOS实验初始的源代码比较困难,原因可能是GFW也可能是JOS官方他们每学期都可能会课程更新,然后一些更新的实验源代码不会一次性 “放送”~ 

找不到实验材料的童鞋可以在下面的link中下载实验源代码,其 2014_JOS_lab_source_code.tar.gz 便是我们实验需要的源代码压缩文件。

https://github.com/jasonleaster/MIT_6_828_assignments_2012/tree/homework2


update: 2016.01.01(有同学遇到困难会发邮件给我。但是有一部分会是前面已经完成的lab没有做好,而影响了后面的lab。所以提出相关问题时,还一定要确保之前做过的lab完全正确,且透彻的理解。不然。。没法聊啊)


  上网要科学上网,做lab也要科学的做.

  之前我一上来就做实验,很多资料都不知道.现在打算重新来过


  方法:

                  0.xv6源码不要用MIT官网的那份,我的主机是Linux/Ubuntu 14.0各种编译error,我都改的想吐.后来直接用github上别人改好的,直接能跑起来没有编译错误的xv6. 

     1.按照MIT给出的课程安排表,每一次课的相关lecture必须全部过一遍.

     2.要求的课堂作业必须完成,很多时候课程要求的任务是很轻松的,只要修改部分代码就行了.这里我还是建议通读所有的代码.不要满足于"程序填空".

     3.每一个lab新增的source file必须通读.而且还要读xv6对应的代码.不要满足于只要你填空的一些代码.往往这样也很难有对OS很细致的理解.

     4.由于JOS就是从xv6直接改过来的实验用工具,xv6是有完整源码的.每次lab都尝试去建立xv6和JOS之间的对应关系.

     

下面贴出来的是转子北大未名站他们TA在11年的时候贴出来的课程实验要求
路过的可以感受一下...
默默的感叹 .... challenge啊...
1.	实现4KB~4MB可变页面大小的分配,并在Lab6的DMA中进行应用,要求能验证伙伴系统
的特性
2.	参考Linux,描述如何在不改变KERNBASE的情况下,让JOS Kernel管理超过256MB的物
理内存
3.	在JOS中做一个缓冲区溢出的实验(如何构造用户程序,考察输出)
4.	分析JOS中的各种驱动程序(磁盘、网卡、键盘、串口、并口等等)
5.	介绍如何实现快速系统调用(lab3的一个challenge)
6.	针对lab4的倒数第2,3个challenge,介绍如何在JOS里用IPC实现一些有趣的应用
7.	如何在JOS中实现简单的用户态调试器(Breakpoint、Watchpoint)
8.	实现在内核态对指令进行反汇编(Lab3的一个challenge)
9.	参考Linux的实现,在JOS中实现类似syscall table的系统调用分发机制
10.	考虑在JOS中实现动态链接的机制。
11.	调研系统时钟保存了哪些信息,并输出当前日期和时间
12.	介绍Linux中的CFS调度算法,并考虑如何在JOS中实现
13.	(Lab6) 介绍一下LWIP协议栈
14.	(Lab6) 结合Lab6介绍一下PCI总线
15.	(Lab6) 实现一个更高效的malloc
16.	(Lab7) 从Lab7de topic中任选一个进行介绍,能实现最好

B 这部分题目与JOS不直接相关
1.	介绍GCC内联汇编
2.	介绍Qemu的工作原理
3.	介绍Linux的内存管理(包括物理内存和虚拟内存),并和JOS做比较
4.	介绍Linux的进程管理(包括进程描述符、进程调度),并和JOS做比较
5.	介绍Linux启动的过程
6.	介绍常用的Linux的Bootloader——Grub
7.	介绍Makefile
8.	介绍链接脚本的写法(参考kern/kernel.ld,user/user.ld)
9.	介绍Git的使用
10.	介绍Ext2文件系统,并和JOS中实现的文件系统做比较
11.	介绍Linux中的随机数生成算法,并考虑:JOS中是否可以实现类似的算法?
12.	标准库对strcpy的实现,并和JOS作比较,说明为什么标准库的实现效率更高



         关于实验用的材料:

     由于MIT每年都会对JOS稍作调整(可能是处于防止学生参考以前学生的成果,不自己思考解答的原因吧.),那么每年的JOS可能都多多少少有些不一样.这就可能给了解JOS,时间跨度大的人聚在一起讨论造成了一些障碍.为了一致性,最好大家统一使用同一种版本的JOS.

     这里我已知最新的版本是2014年的,而且github上有很多人已经吧解答代码贡献出来了,这就是很好的环境了.



OK: 一下会统一按照这种格式,记录每一次lecture的完成情况.

比较长的lab report会以链接的形式给出,比较短的homework就直接写在下面了

LEC :  Lecture Name
Preparation: To do
Assignment: To do


----------------------------------------------这可能是一场旷日持久的战争------------------------------------------------------------


LEC 1: Operating system
PreparationUnix intro
AssignmentHW: shell 
AssignmentLab 1: C, Assembly, Tools, and Bootstrapping

下面是我个人的lab 1实验解答分析:: http://blog.csdn.net/cinmyheart/article/details/39754269


LEC 2: PC hardware and x86 programming slides notes
Preparation: Read Bootstrap/PC hardware appendices and the related xv6 source files
AssignmentHW: Boot xv6


再说一次,不要用MIT官网的source file,去下面的link里下载一份.

https://github.com/penguiner/xv6




LEC 3: C and gdb (pointers example)
Homework 1 due: Boot xv6
Preparation: Read 2.9 (Bitwise operators), 5.1 (Pointers and Addresses) through 5.5(Character Pointers and Functions) and 6.4 (pointers to structures) in K&R
AssignmentLab 2: Memory management

下面是我个人的lab 2实验解答分析:

http://blog.csdn.net/cinmyheart/article/details/39827321


LEC 4: Shell & OS organization
PreparationRead chapter 0 of the xv6 book
Homework 2 due: shell

看书就是了, xv6第0章 就是对操作系统进行介绍,有一个概括.


LEC 5: Isolation mechanisms 
Preparation: Read "Chapter 1: The first process" and the related xv6 source files
AssignmentHW: system calls

这个HW后面补,折腾了一个小时,还是没加进去...简直智商捉急...


LEC 6: Virtual memory (handouts: page table translation and registers)
Preparation: Read "Chapter 2: Page Tables"
Homework 3 due: systems calls
AssignmentHW lazy page allocation




LEC 7: Using virtual memory (handout: JOS virtual memory layout)
Homework 4 due: HW lazy page allocation
AssignmentLab 3: User-Level Environments

下面是我个人的lab 3实验解答分析:

http://blog.csdn.net/cinmyheart/article/details/40023965


LEC 8: System calls, interrupts, exceptions (handouts: IDT)
Preparation: Read "Traps, interrupts, and drivers" and the related xv6 source files
AssignmentHW xv6 CPU alarm


LEC 9: Multiprocessors and locking
Preparation: Read "Locking" with spinlock.c and skim mp.c
Homework 6 due: HW multithreaded programming
AssignmentHW xv6 locks
AssignmentLab 4: Preemptive Multitasking


下面是我个人的lab 4实验解答分析:

http://blog.csdn.net/cinmyheart/article/details/43875961



oct 29
Hacking day
AssignmentLab 5: File system, spawn, and sh

http://blog.csdn.net/cinmyheart/article/details/45150615







  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值