- 博客(15)
- 资源 (14)
- 收藏
- 关注
原创 linux用户进程分析
经过实验3的介绍,我们需要来点实在的,所以将我们理解的流程用于linux系统的分析。换句话说,通过类比的方式去进行描述与理解linux相关的部分。本节的内容很详实,而且也分析了很久,所以长话短说,静静的去感受与理解linux内核代码的实现。当然,我们实验的系统代码很简单而且直接,但是linux内核经过20多年的发展,更有成千上万的开发者共同维护,所以对于代码的书写会更加精练,对于基
2016-03-31 17:57:51
1845
原创 实验3正篇——用户进程
进入实验3的实验过程了,在实验2中我们实现了操作系统基本模块的内存管理部分,然后需要实现的部分就是进程管理的部分了。而对于进程管理实验其实分为两个实验——实验3与实验4,实现集中在创建进程,而实验4则集中于调度进程。从硬件接口的观点来看,本实验是对处理器中断机制进行封装,然后以此为基础,实现用户进程的创建与操作系统的交互。 本实验的主要任务是实现一个保护模式下的用户模
2015-11-20 21:14:18
1152
原创 实验3前篇——X86的中断管理
实验3主要内容是用户进程的创建,运行,销毁;从操作系统的角度来看用户进程,可以看作是动态加载可运行的程序,然后进行不断地动态切换,这里我们当然也可以从虚拟机的角度来考察操作系统——操作系统其实是在硬件上为用户进程创建虚拟机,每个虚拟机都是单独运行在整个硬件平台上的;而从用户进程看操作系统,则是固定的程序部分,并且提供硬件接口的程序。当我们需要理解该实验的内容时,可以想象一下,程序运
2015-11-11 21:34:33
1891
原创 实验2后篇——内存管理算法
实验2介绍了操作系统的基本内存管理,或者说是系统内存管理的软件接口实现。这对于我们实际上碰到的内存管理操作有一些差距,所以我们这一节补充一些内容,来详细介绍一些内存管理技术。 这里要对实验2进行一些补充说明,实验2的代码实现主要参考源码中给的提示信息,而代码实现是否正确,这里没有老师检查也没有任何可参考的代码,而原课程设计有一个很巧妙的方法,使用assert机制来检测
2015-11-09 21:50:15
1458
原创 实验2正篇——内存管理
经过这么久的准备终于进入正题了。本实验主要介绍的是我们实现的操作系统中的内存管理。实验将以两部分内容进行讲解——内核与操作系统我们将互用,请根据实际情况理解: 第一部分是内核的物理内存分配器,内核能够分配内存并且能够释放之。分配的内存单元为4k,被称之为内存页。 我们需要实现的任务是维护数据结构用于记录那些内存被使用(分配或者释放),在此基础上实现一个内存分配器
2015-11-01 21:45:28
1609
原创 实验2前篇——X86内存管理
实验1“洋洋洒洒”的写了那么多的内容,看起来很丰富;但其实没有进入主题。然而它们却是实现与理解操作系统的必要步骤与开端。纯粹的操作系统的理论总是让人无法身临其境的去理解而且实用性不是很强 ,而且我觉得操作系统的相关理论都是经验的总结,而无其他,实际中使用的往往是实践跑在前面,然后被总结为理论,最后被无休止的进行复制。这样确实一个好的软件发展模式,不断以代码的方式沉淀,从而让软件发展
2015-10-27 21:12:04
1247
原创 实验1后篇——引导linux与uboot命令仿真
经过了实验1的“洗礼”,会让人感觉只是只是打开了一个“玩具操作系统”的模拟过程,虽然能让人由一个直观与形象的理解,但是还是没有实在的用途。当然了,可以这么说了。所以如上所调侃而言,我们为了让我们的实验进行的更有意义,进而推出后篇,主要将实验1所学到的内容与实际使用相结合,达到融会贯通的地步,进而能够更理解实验内容。 现在的开源代码有两个很有用的部分而且
2015-10-13 21:22:16
961
原创 实验1正篇——引导PC
讲了这么久,终于进入主题了。为了让读者更深入的理解整个系统,做一些必要的铺垫是必需的;这样不仅能做到有理有据,更能让人知其然,而且知其所以然。题目所谓“正”篇,就是要从正面去描述该实验的内容,当然是对其进行意译,同时根据其内容,结合源码,提出自己的理解,相当于为实验1的内容进行翻译的基础上,进行注解。实验1的主要内容是“引导PC”,主要讲述的是从PC一开机到运行内
2015-10-09 21:20:25
1573
原创 实验1前篇——BIOS编程空间
从此篇开始更多的注重技术细节了。细节决定成败的故事太多了,而且对于编程者肯定都有这样的经历——自信满满的认为自己写得程序天衣无缝,但是当运行调试之后,才发现bug无处不在,更可气的是很多的bug却是因为语法细节或者指尖上的失误导致。而且编码效率的提升,更多的是建立在已经存在的可信代码的基础上,而可信代码却是经历过无数次的折腾的结晶。 实验1的内容是“启动PC
2015-09-27 20:18:38
4556
原创 磨刀不误砍柴工——实验工具准备
写在最前面的话: 后面的一系列博客主要围绕MIT-OS的学习课程来创建; 为什么会学习mit-os? 1)对于复杂的事物,一种常见的思维就是从简单到复杂的思维。根据这种思维去学习原始的os,透过它去熟悉os的基本概念与核心构造,从而以此作为基础去学习现代os的各项技术,能够去更新创造与优化它们。 2)一种典型的西方逻辑思维——原子思想
2015-09-13 20:14:39
911
原创 万变不离其宗——程序动态分析(gdb)
万剑归宗是无名的招数,但是它却道出一个道理。不管剑招多么花哨,多么厉害,最终还是需要回归正宗与朴实。程序也是一样,不管代码如何实现,不论语言如何,技巧如何,最终也是要能够被正确,有效,可靠的运行,才是本真。所以我们需要耐心的去了解与分析程序的运行过程,能够去调试之,验证自己程序的性能。当然有些其他的知识技巧被总结于此。以下从5个方面做出介绍(参考文档到我的资源中下载即可):
2015-09-11 13:48:21
2246
原创 百尺竿头更进一步——编译器gcc对c语言的扩展
三国杀是个很有意思的游戏,在游戏的过程中有一些封号有意思,“初尝胜果”,“旗开得胜”....都是刚开始的胜利,可圈可点;然而高手与熟手的区别在于能否对自己用的工具领悟得更多。 在这个技术知识爆炸的年代,很多人都是掌握一门基本技艺,然后重复之,如此了此一生;而学习一门技艺,却需要不断地去淬炼它,用力夯实基础,以此为基,跟进一步,集之大成。 在熟练使用gcc作为编译工具的
2014-12-24 14:02:03
1188
原创 宝剑锋从磨砺出——编译器gcc的使用
剑,是一种武器,古龙先生很喜欢论剑,对剑也有不一样的理解;对于剑,使用它的是剑客,而如果要升级则是人的升级,从而推动剑术的提高与用剑的境界的提升。 好的剑都是铸剑师倾入自己的心血浇灌而成的;而对于剑客,要想能够使用它,不仅仅是挥动它,而是用能够与之沟通,能够“心灵相通”,不断地与之磨合,达到收发自如的境界。编译器就是程序员的“剑”,而且GCC就是“剑中利器”;但是它对于所有人都
2014-12-19 11:03:42
1248
原创 千里之行始于足下——编译器助手(binutils与elf文件)
任何技艺的提升都在于积累与总结;而对工具与流程的认识,有利于我们更深入的理解系统结构与执行环境。任何东西都要硬币一样有正反两面:感谢GNU,为我们提供了一整套完整的开发工具与运行环境,让我们能够更容易地开发与理解软件系统。唾弃GNU,为我们提供了一整套完整的开发工具与执行环境,让我们在复杂的软件环境中沉重的学习,同时也丧失了自我的“创造力”。然而对于工具与环境的把控,也正是提升与提
2014-12-12 18:56:49
1489
linux用户进程分析
2016-03-31
实验3的用户进程实现
2015-11-21
内存管理算法
2015-11-10
x86内存管理与内存检测
2015-10-28
引导linux与uboot命令分析资源
2015-10-14
引导PC的附件资料
2015-10-10
博客《实验1前篇——BIOS编程空间》的附件资源
2015-09-27
MIT-OS实验环境准备
2015-09-13
程序动态分析-gdb
2015-09-11
binutils工具文档
2014-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人