推荐一个操作系统的lab

我推荐的这个lab,名字叫做ucore,这个lab来自清华大学的操作系统课程,首先要说明一下,这确实是非常好的一个lab,想入门linux内核的同学可以读一读这个lab所涉及的ucore的源码。

书籍推荐

其实只要大家认认真真做下去,收获肯定会非常的大。虽然这么说,但是,这个lab 对大家的基础要求稍微有一点高,你至少要懂一点汇编,懂一点C。代码里面很多都是汇编,C交替着写,我推荐几本书,给大家补一下基础,大家可以参考一下。

第一本是王爽的汇编语言,这本书适合入门,但是只涉及到了8086的一点东西。书讲的浅显易懂。

汇编语言
汇编语言

另外一本书是《x86汇编语言--从实模式到保护模式》,这本书算是一本进阶的书籍,同时也是80386汇编入门的书籍。这本书里大部分的知识,这个lab都用得到,所以强烈推荐大家阅读。

x86汇编语言--从实模式到保护模式
x86汇编语言--从实模式到保护模式

还有一本需要参考一下的是《程序员的自我修养--链接、装载与库》,因为这个lab还涉及到了elf格式的可执行程序.

程序员的自我修养--链接、装载与库
程序员的自我修养--链接、装载与库

当然,最好的话,能附带这么一本《orange's 一个操作系统的实现》,作为参考是最好不过啦。这本书的话,汇编有点多,其实很多汇编都可以用C来代替。不过里面有一些点,这个lab也涉及到了,所以推荐读一下。

orange's 一个操作系统的实现
orange's 一个操作系统的实现

上面的几本书里应该涉及到了这个lab所需要的大部分的硬件以及汇编的知识,其余的,你可以去google或者baidu。做这个lab,你可能会遇到非常多的困难,比如说,调试异常困难,代码半天读不懂,没事,这都是很正常的情况。要是觉得困难实在太大,我建议你从这个玩具内核入手 -- hurley,这个内核非常简单,适合积累一些最基本的知识。

关于代码的阅读

linux上面读ucore将近1 M的源文件真心费力,生活其实可以简单一点,你可以使用宇宙最强的ide--visual stdio来进行代码的阅读,像我这样:

代码演示

是不是很爽,告诉你,爽翻了。特别是遇到一堆不知从哪里冒出来的宏,一堆不知名的函数的时候,VS可以实现十万分方便的跳转。

我推荐两个插件,一个叫做visual assistant,这个用来增强自动补全以及跳转操作,一个叫做visualGDB,是一个帮助你在window上面写linux程序的插件。自己去搜索安装吧,网上教程一大堆。我就懒得写了。当然,你不可能用vs来编译代码,但是,vs会给你阅读代码,修改代码带来非常大的方便性。

收获

实在做不出也没有什么关系,因为很少有人会真正去做一个操作系统吧。但是读懂源码,我觉得还是非常有必要的,我稍微讲一下,我个人读完了这个lab源码之后的感受吧。

  • 以前学c的时候,我总是很好奇,printf之类的函数究竟是如何实现在屏幕上打印出字符的,从来没有老师讲过这些东西,现在,我懂了,原来我们只要将字符写在内存中的某个区域,然后驱动程序会自动帮我们实现字符在屏幕上的输出。

  • 为什么cpu可以实现进程的切换?一切都是因为中断,一旦发生中断,计算机要立马切换到中断处理程序中去,利用这个特性,操作系统设定好时钟频率,让时钟每多少毫秒触发中断,内核就可以获得控制权,从而实现进程的切换。

  • 一切的进程,只是一堆数据而已,只要你保存好这段数据,cpu先去干点别的事情,一段时间后再恢复这些数据,进程又活了。由于cpu的速度太快了,所以你会一直觉得进程还活着,其实它已经切换了几十次了。- 内存的分段,分页机制真是漂亮的抽象,逻辑上连续的页,实际在内存中可能相隔十万八千里,可是这并没有关系。因为我们已经 屏蔽了它,上层的应用是永远也感觉不到差别的。

  • 所谓的程序文件,加载到内存里,操作系统要对其进行重定向处理,在每个用户进程的眼里,它自己是独一无二的,分段分页机制完美地实现了进程的隔离。

  • ... ...

对于我来说,收获特别大。我懂了很多以前我自认为懂了的东西,当然至于这些东西我是不是真的懂了,我也不知道,因为人的认知总是在向前推进的嘛。但是说实话,我对写一个内核什么的,没有多么大的兴趣,所以,我不会继续钻研地太深。所以,对于这个lab,我也只是玩一下的。不过,读完这个lab,实验完这个lab,加上我以前学的编译器,硬件,汇编等一系列的东西,从硬件到软件这个层次发生的事情,我现在算是比较清楚了。

至少在现在,写一个玩具性质的操作系统并不是一件很难的事情,关键是你不熟练,写操作系统也没有很高深的技巧,它也不需要你有很高的智慧,它的理论基础在几十年前就已经成熟了,已经有无数人写了无数的操作系统,就如同编译器一样,我相信,只要你足够熟练的话,花点时间,参照各式各样的教程,你也能够写出一个操作系统,对于社会,这可能没什么卵用,但是对于你自己,你可以从中掌握到很多底层的细节.当然,这也可能没有什么卵用.

如果你要问,学这些玩意对你找工作有什么益处的话,我可以说,短时间内可能还真没有什么益处,不过这些玩意,算得上是一个编程爱好者的基本修养吧。就这样吧!如果感到代码层层叠叠,数据结构花样翻新的话,可以参考一下我的注释版lab:cs-ucore

学了这么久的计算机,我突然感觉学海无涯,每一个点扩展出去,都是无穷无尽的,真心有点累,不行了,我要休息一段时间了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,774评论 0 27
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,088评论 0 23
  • vue的脚手架总是会出现一些错误,需要很规范,可以配置一下文件 在文件目录下的.eslintrc.js最后面加入 ...
    阿力阿狸123阅读 212评论 0 0
  • 前些天有空闲时,无意中看到了《天龙八部》中的这一段: 虚竹低头道:“说也惭愧,尊师中毒之初,脸上现出古怪笑容,我以...
    伪君子_阅读 12,361评论 4 9
  • “我给我妈打了个电话。” 这句话听起来很普通,几乎是在外上学或工作的人挂在嘴边的话。不过当我跟朝阳说我给我妈打了个...
    曼妮姑娘阅读 274评论 0 2