一、环境配置 关于MIT课程中使用的JOS的配置教程网上已经有很多了,在这里就不做介绍,个人使用的是Ubuntu 16.04 + qemu。另注,本文章中贴出的代码均是JOS中未经修改的源代码,其中有一些细节是MIT课程中要求学生自己实现的。 二、代码分析 1.boot.S(AT&T汇编格式) / ...
分类:
其他好文 时间:
2016-10-22 14:57:57
阅读次数:
357
操作系统内核的绝佳学习材料——JOS
前言:关于JOS和一些经验之谈
这一学期的操作系统课使用的是MIT用于教学的JOS操作系统,并且StonyBrook在其基础上做了大量改动,最重要的变化就是从32位移植到了64位。因为个人之前曾系统学习过Linux 0.11内核(《操作系统内核Hack:(四)内核雏形》,实现到时钟中断部分停下了),深知自己从零开始实现内核的工作量。即便是如我个人实...
分类:
其他好文 时间:
2016-06-23 08:53:46
阅读次数:
239
Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行。你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息;创建一个单一的用户环境,并且加载一个程序运行它。你也可以让JOS内核能够完成用户环境所作出的任何系统调用 ...
分类:
其他好文 时间:
2016-05-02 00:36:20
阅读次数:
283
交代背景:老家湖南,我是农村户口我傲娇,湘潭中专毕业来广州,一边打工一边读大专,做了十年跟it擦边的工作,机缘巧合来香港定居,进入一家科技公司做现场支持,负责零售店的pos终端维修,公司上头有个搞运维开发的家伙,感觉很针对我,可能只有我一个是新移民,你知道有些老..
分类:
其他好文 时间:
2016-04-03 20:41:20
阅读次数:
179
Part 3 Kernel Address Space JOS把32位线性地址虚拟空间划分成两个部分。其中用户环境(进程运行环境)通常占据低地址的那部分,叫用户地址空间。而操作系统内核总是占据高地址的部分,叫内核地址空间。这两个部分的分界线是定义在memlayout.h文件中的一个宏 ULIM。JO ...
分类:
其他好文 时间:
2016-03-31 07:04:44
阅读次数:
394
Elixir:不老长寿药;万能药;炼金药。 Elixir-Lang, 设计者José Valim。 José Valim把一个语言起这个名字,表达了一个美好的愿望(妄想)。虽然我没有见到José Valim有明确的表达关于这个名字的含义,不过猜大概也猜得到了。 Elixir主页: http://el
分类:
其他好文 时间:
2016-03-21 01:32:24
阅读次数:
280
Lab 1 Part 3: The kernel 现在我们将开始具体讨论一下JOS内核了。就像boot loader一样,内核开始的时候也是一些汇编语句,用于设置一些东西,来保证C语言的程序能够正确的执行。 使用虚拟内存 在运行boot loader时,boot loader中的链接地址(虚拟地址)
分类:
其他好文 时间:
2016-03-08 16:12:01
阅读次数:
221
Lab 1 Part 2 The Boot Loader Loading the Kernel 我们现在可以进一步的讨论一下boot loader中的C语言的部分,即boot/main.c。但是在我们分析之前,我们应该先回顾一些关于C语言的基础知识。 Exercise 4: 阅读关于C语言的指针部分
分类:
其他好文 时间:
2016-02-26 14:02:36
阅读次数:
213
Lab 1 Exercise 4 阅读关于C语言的指针部分的知识。最好的参考书自然是"The C Programming Language"。 阅读5.1到5.5节。然后下载pointers.c的代码,并且编译运行它,确保你理解在屏幕上打印出来的所有的值是怎么来的。尤其要重点理解第1行,第6行的指针
分类:
其他好文 时间:
2016-02-26 14:00:08
阅读次数:
150
Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误。 找到这样的指令后,把boot loader的链接地址修改一下,我们要在boot/Makefrag文件中修改它
分类:
其他好文 时间:
2016-02-26 13:47:52
阅读次数:
195