源代码参见我的github: https://github.com/YaoZengzeng/jos 在这个实验中将实现一个基于Intel 82540M(又称E1000)的网卡驱动.不过,一个网卡驱动还不足以让我们的操作系统连上互联网.在lab6新增加的代码中,已经包含了一个network stack和network server的代码,存放在net/和kern/目录下. 除了需要写一个driver,我们还需要写一个系统调用接口去访问它.我们需要补全network server的代码,从而能在ne…
源代码参见我的github: https://github.com/YaoZengzeng/jos Part A: Multiprocessor Support and Cooperative Multitasking Multiprocessor Support: 1.SMP(symmetric multiprocessing)是这样一种多处理器模型:每个CPU对于系统资源例如内存和IO总线都有平等的访问权限 2.在启动期间,处理器可以被分为两类,一个叫BSP(the bootstrap pr…
注: 源代码参见我的github:https://github.com/YaoZengzeng/jos Part1 : Physical Page Management mem_init函数: /*该函数主要用于建立一个二级页表:kern_pgdir是该页表的虚拟地址 该函数只用于内核地址空间的内存管理(address >= UTOP),用户地址空间部分会在之后进行处理 从UTOP到ULIM的区域用户可以读取但不能写,高于ULIM的区域,用户既不能读也不能写*/ 主执行流程: (1)i386_d…
注: 源代码参见我的github:https://github.com/YaoZengzeng/jos Part 1: PC Bootstrap +------------------+ <- 0xFFFFFFFF (4GB) 最高位的一部分内存被BIOS保留,用于一些32位设备的使用 | 32-bit | 当内存大于4GB的时候,这一部分内存就会成为另一个hole | memory mapped | | devices | | | /\/\/\/\/\/\/\/\/\/\ /\/\/\/\/\…
源代码参见我的github: https://github.com/YaoZengzeng/jos File system perliminaries 我们开发的是一个单用户的操作系统,只提供了足够的保护用于发现bug,但是并没有对恶意的用户之间进行隔离.因此我们的文件系统不支持UNIX中文件所有者或者权限这样的概念.同样,我们的文件系统也不支持一般UNIX文件系统中有的例如硬链接,软链接,特殊的设备文件这样的概念. On-Disk File System Structure 大多数UNIX操作…
注:源代码参见我的github: https://github.com/YaoZengzeng/jos Part A : User Environments and Exception Handling User Exception: 1.kernel维护了以下三个全局变量和environment有关的全局变量 struct Env *envs = NULL; // All environments struct Env *curenv = NULL; // The current env --…
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以…
前队名太过晦气,故启用最大牛 我们的组队大概就是18年初,组队阵容是17级生詹志龙.陶源和16级的黄睿博. 三人大学前均无接触过此类竞赛,队伍十分年轻.我可能是我们队最菜的,我只是知道的内容最多,靠我躺赢的比赛基本没有(其实好几场我力揽狂澜的hhhh). 本博客有我的训练记录,他们的可以去这里 陶源(图论选手+数据结构) 詹志龙(DP+各种思维) 刚开始主要是一些水题,省赛前进行了比较多的组队训练 训练场次(TOJ的训练就不一一枚举了,个人感觉没太大提升) 浙南联合训练赛20180318 htt…
JOS lab1 首先向MIT还有K&R致敬! 没有非常好的开源环境我不可能拿到这么好的东西. 向每个与我一起交流讨论的programmer致谢!没有道友一起死磕.我也可能会中途放弃. 跟丫死磕究竟.(事实上这个过程会学到非常多东西,非常好玩非常好玩,不要被panic吓到,等你都能定位panic,并修复触发panic的bug的时候.我相信大家debug的能力会上升一个水平,互勉-) ---------------------------------------------------------…
未经许可谢绝以任何形式对本文内容进行转载! 本篇接着上一篇对kernel的分析. (5)pte_t * pgdir_walk(pde_t *pgdir, const void *va, int create) 这个函数是整个JOS操作系统页式内存管理最重要的函数.在这个函数中,JOS的设计者要求我们对于给定的一个页目录"pgdir",返回线性地址(这是虚拟地址)"va"对应的页表入口地址.先用MIT自己的一张图来解释下整个地址转换的过程: 在本函数中,返回值就是上图…