自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (14)
  • 收藏
  • 关注

原创 linux用户进程分析

经过实验3的介绍,我们需要来点实在的,所以将我们理解的流程用于linux系统的分析。换句话说,通过类比的方式去进行描述与理解linux相关的部分。本节的内容很详实,而且也分析了很久,所以长话短说,静静的去感受与理解linux内核代码的实现。当然,我们实验的系统代码很简单而且直接,但是linux内核经过20多年的发展,更有成千上万的开发者共同维护,所以对于代码的书写会更加精练,对于基

2016-03-31 17:57:51 1782

原创 实验3正篇——用户进程

进入实验3的实验过程了,在实验2中我们实现了操作系统基本模块的内存管理部分,然后需要实现的部分就是进程管理的部分了。而对于进程管理实验其实分为两个实验——实验3与实验4,实现集中在创建进程,而实验4则集中于调度进程。从硬件接口的观点来看,本实验是对处理器中断机制进行封装,然后以此为基础,实现用户进程的创建与操作系统的交互。    本实验的主要任务是实现一个保护模式下的用户模

2015-11-20 21:14:18 1084

原创 实验3前篇——X86的中断管理

实验3主要内容是用户进程的创建,运行,销毁;从操作系统的角度来看用户进程,可以看作是动态加载可运行的程序,然后进行不断地动态切换,这里我们当然也可以从虚拟机的角度来考察操作系统——操作系统其实是在硬件上为用户进程创建虚拟机,每个虚拟机都是单独运行在整个硬件平台上的;而从用户进程看操作系统,则是固定的程序部分,并且提供硬件接口的程序。当我们需要理解该实验的内容时,可以想象一下,程序运

2015-11-11 21:34:33 1799

原创 实验2后篇——内存管理算法

实验2介绍了操作系统的基本内存管理,或者说是系统内存管理的软件接口实现。这对于我们实际上碰到的内存管理操作有一些差距,所以我们这一节补充一些内容,来详细介绍一些内存管理技术。    这里要对实验2进行一些补充说明,实验2的代码实现主要参考源码中给的提示信息,而代码实现是否正确,这里没有老师检查也没有任何可参考的代码,而原课程设计有一个很巧妙的方法,使用assert机制来检测

2015-11-09 21:50:15 1369

原创 实验2正篇——内存管理

经过这么久的准备终于进入正题了。本实验主要介绍的是我们实现的操作系统中的内存管理。实验将以两部分内容进行讲解——内核与操作系统我们将互用,请根据实际情况理解:       第一部分是内核的物理内存分配器,内核能够分配内存并且能够释放之。分配的内存单元为4k,被称之为内存页。 我们需要实现的任务是维护数据结构用于记录那些内存被使用(分配或者释放),在此基础上实现一个内存分配器

2015-11-01 21:45:28 1507

原创 实验2前篇——X86内存管理

实验1“洋洋洒洒”的写了那么多的内容,看起来很丰富;但其实没有进入主题。然而它们却是实现与理解操作系统的必要步骤与开端。纯粹的操作系统的理论总是让人无法身临其境的去理解而且实用性不是很强 ,而且我觉得操作系统的相关理论都是经验的总结,而无其他,实际中使用的往往是实践跑在前面,然后被总结为理论,最后被无休止的进行复制。这样确实一个好的软件发展模式,不断以代码的方式沉淀,从而让软件发展

2015-10-27 21:12:04 1045

原创 实验1后篇——引导linux与uboot命令仿真

经过了实验1的“洗礼”,会让人感觉只是只是打开了一个“玩具操作系统”的模拟过程,虽然能让人由一个直观与形象的理解,但是还是没有实在的用途。当然了,可以这么说了。所以如上所调侃而言,我们为了让我们的实验进行的更有意义,进而推出后篇,主要将实验1所学到的内容与实际使用相结合,达到融会贯通的地步,进而能够更理解实验内容。        现在的开源代码有两个很有用的部分而且

2015-10-13 21:22:16 885

原创 实验1正篇——引导PC

讲了这么久,终于进入主题了。为了让读者更深入的理解整个系统,做一些必要的铺垫是必需的;这样不仅能做到有理有据,更能让人知其然,而且知其所以然。题目所谓“正”篇,就是要从正面去描述该实验的内容,当然是对其进行意译,同时根据其内容,结合源码,提出自己的理解,相当于为实验1的内容进行翻译的基础上,进行注解。实验1的主要内容是“引导PC”,主要讲述的是从PC一开机到运行内

2015-10-09 21:20:25 1484

原创 实验1前篇——BIOS编程空间

从此篇开始更多的注重技术细节了。细节决定成败的故事太多了,而且对于编程者肯定都有这样的经历——自信满满的认为自己写得程序天衣无缝,但是当运行调试之后,才发现bug无处不在,更可气的是很多的bug却是因为语法细节或者指尖上的失误导致。而且编码效率的提升,更多的是建立在已经存在的可信代码的基础上,而可信代码却是经历过无数次的折腾的结晶。       实验1的内容是“启动PC

2015-09-27 20:18:38 4465

原创 磨刀不误砍柴工——实验工具准备

写在最前面的话:       后面的一系列博客主要围绕MIT-OS的学习课程来创建;       为什么会学习mit-os?       1)对于复杂的事物,一种常见的思维就是从简单到复杂的思维。根据这种思维去学习原始的os,透过它去熟悉os的基本概念与核心构造,从而以此作为基础去学习现代os的各项技术,能够去更新创造与优化它们。       2)一种典型的西方逻辑思维——原子思想

2015-09-13 20:14:39 808

原创 万变不离其宗——程序动态分析(gdb)

    万剑归宗是无名的招数,但是它却道出一个道理。不管剑招多么花哨,多么厉害,最终还是需要回归正宗与朴实。程序也是一样,不管代码如何实现,不论语言如何,技巧如何,最终也是要能够被正确,有效,可靠的运行,才是本真。所以我们需要耐心的去了解与分析程序的运行过程,能够去调试之,验证自己程序的性能。当然有些其他的知识技巧被总结于此。以下从5个方面做出介绍(参考文档到我的资源中下载即可):

2015-09-11 13:48:21 2136

原创 百尺竿头更进一步——编译器gcc对c语言的扩展

三国杀是个很有意思的游戏,在游戏的过程中有一些封号有意思,“初尝胜果”,“旗开得胜”....都是刚开始的胜利,可圈可点;然而高手与熟手的区别在于能否对自己用的工具领悟得更多。       在这个技术知识爆炸的年代,很多人都是掌握一门基本技艺,然后重复之,如此了此一生;而学习一门技艺,却需要不断地去淬炼它,用力夯实基础,以此为基,跟进一步,集之大成。      在熟练使用gcc作为编译工具的

2014-12-24 14:02:03 1109

原创 宝剑锋从磨砺出——编译器gcc的使用

剑,是一种武器,古龙先生很喜欢论剑,对剑也有不一样的理解;对于剑,使用它的是剑客,而如果要升级则是人的升级,从而推动剑术的提高与用剑的境界的提升。 好的剑都是铸剑师倾入自己的心血浇灌而成的;而对于剑客,要想能够使用它,不仅仅是挥动它,而是用能够与之沟通,能够“心灵相通”,不断地与之磨合,达到收发自如的境界。编译器就是程序员的“剑”,而且GCC就是“剑中利器”;但是它对于所有人都

2014-12-19 11:03:42 1189

原创 千里之行始于足下——编译器助手(binutils与elf文件)

任何技艺的提升都在于积累与总结;而对工具与流程的认识,有利于我们更深入的理解系统结构与执行环境。任何东西都要硬币一样有正反两面:感谢GNU,为我们提供了一整套完整的开发工具与运行环境,让我们能够更容易地开发与理解软件系统。唾弃GNU,为我们提供了一整套完整的开发工具与执行环境,让我们在复杂的软件环境中沉重的学习,同时也丧失了自我的“创造力”。然而对于工具与环境的把控,也正是提升与提

2014-12-12 18:56:49 1406

原创 工欲善其事,必先利其器——编译开发流程

古人云,“工欲善其事,”

2014-11-12 20:38:48 542

linux用户进程分析

本资源为博客《实验3后篇》的附件内容,分析linux用户进程的相关文档,其中包含了部分linux代码,相关《深入理解linux内核》的相关文档,分析的一些流程图,进程堆栈的分析代码process_stack.c等,希望对相关需要做深入了解linux进程的人员做一个参考

2016-03-31

实验3的用户进程实现

本资源为我的博客《实验3正篇——用户进程》的附件,其中主要包含了实验3的代码实现,注意该代码可能有部分bug,但是在之后的实验中修复了,还包含了许多流程图或者逻辑图,与前篇的部分文件。希望能对感兴趣的人员,有帮助。

2015-11-21

内存管理算法

本资源为博客《实验2后篇——内存管理算法》的附件,其中主要包括莱昂氏的unix文档与源码,linux内存分析文件,博客中设计到的图,slab算法,buddy算法,malloc/free的实现源码。希望对内存管理感兴趣的人员有所帮助。

2015-11-10

博客实验2正篇——内存管理

本资源为博客《实验2正篇——内存管理》的附件资源,主要为实验2的代码,实现了内存管理,通过了实验2的检测,增加了一些博客原图。

2015-11-02

x86内存管理与内存检测

本资源为我的博客《实验2前篇——x86内存管理》的附件资源。其中主要包括了《操作系统精髓与设计原理(原书第6版)》,部分博客中的原图,实验2的部分源码——主要用于内存检测的代码:包括移植linux的部分与根据Detecting Memory (x86)的代码,Detecting Memory (x86)网页,以及相关的脚本,希望对理解内存检测代码有用。若要编译这些代码,需要在我下一篇博客的附件中,本次只是为了理解博客内容而设的资源。

2015-10-28

引导linux与uboot命令分析资源

本资源为我的博客《实验1后篇——引导linux与uboot命令分析》的资源与代码。其中主要包含了关于两个实验的源码:引导linux,uboot命令模拟的实现,另外是博客中所描述的linux启动流程与编译流程的相关源码与文档。方便理解相关流程。

2015-10-14

引导PC的附件资料

本资源为我的博客《实验1正篇——引导PC》的附件资料,其中主要包含了实验1的代码与主要参考文档——intel技术开发手册,实验1的英文,elf文档等其他一些打印。上传它主要用于资料参考,源码用于分析开机流程,更重要的是在调试PC流程时,翻阅它们可以加深理解与认识。对操作系统的理解更重要的对处理器与内存的处理,所以参考处理器的官方文档有很重要的作用。

2015-10-10

博客《实验1前篇——BIOS编程空间》的附件资源

此资源为我的博客《实验1前篇——BIOS编程空间》的附件资源,主要有实现的测试代码——利用bios提供的服务,访问各个键盘,串口,磁盘,显示器等外设;另外有《PC内幕》《IBM汇编》《gas汇编》,bios的参考资料。希望对理解bios编程有帮助

2015-09-27

MIT-OS实验环境准备

该份资料为我的博客——《磨刀不误砍柴工——实验工具与环境准备》的扩展资料。主要有qemu的详细使用说明,自动编译交叉编译工具(x86/32)与创建根文件系统的脚本,LFS的文档,《Embedded Linux Primer...》文档——关于嵌入式linux系统的详细介绍。

2015-09-13

程序动态分析-gdb

本资源为我的博客——万变不离其宗——程序动态分析(gdb)的深入理解的详细介绍。值得所有需要了解相关工具的细节与实现的人去参考。这些工具都是开发人员需要时间去磨合的东西,请多使用它们,有问题多翻翻基本文档。这对提升自己的技能有很多帮助。

2015-09-11

gnu对c语言的扩展

我的博客《百尺竿头更进一步——编译器gcc对c语言的扩展》的附件

2014-12-24

gcc使用资料

以上为我的博客“宝剑锋从磨砺出——编译器gcc的使用”的附件

2014-12-15

binutils工具文档

我的博客——千里之行始于足下——编译器助手(binutils与elf文件)的附件。由binutils源码中编译出来的html文件,详细的描述了binutils的各种用法,很值得相关技术人员参考。

2014-12-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除