操做系统如何学

以前逼逼了那么多,都是口水,如今来电干货。其实也不是我原创的,我只是知识的搬运工和一个不合格的消化者,可是是一个好的传播者。html

书,教材linux

前人经验git

操做系统实验程序员

学习目标github

简单操做系统的代码阅读web

30天自制操做系统算法

文献shell

课外阅读数据库

各个大学的实验,讲义等编程

 

推荐《Linux内核彻底剖析》,书的内容以Linux0.11为基础,嗯,对,你没看错,是long long ago的版本,这个版本的代码是至关于目前较新Linux的精简版本,麻雀虽小,五脏俱全啊,比较适合接触Linux不久的。不少操做系统概念的具体实现你均可以在书中找到源码,并且代码不是很长,在真刀真枪的实践中比较能体会到操做系统的真正精髓所在。所以建议先看完这本书后再去看较新版本的(Linux2.6千万级的代码量啊)。

当你看完此书,而且能在此版本中可以很轻松的添加个系统调用,记录下系统进程的切换日志,实现下内核级线程神马的,甚至实现网络功能还有新的文件系统的话,LZ的操做系统课程就彻底能够打满分了,并且是当之无愧的满分,完爆那些靠背诵得高分的。

而且,之后LZ逢人即可说,哥当年也是搞过Linux内核的!

image

UNIX操做系统设计

The Design of the UNIX Operating System [Prentice-Hall Software Series]: Maurice J. Bach: 9780132017992: Amazon.com: Books

Linus Torvalds 看了这本书以后写出了最初的Linux:

Inventor of the Week: Archive

 

操做系统概念,已经到第七版了。Abraham Silberschatz等著。不过如书名同样,这本只是一本操做系统入门级的教材,介绍通常性的概念,范围比较全面。这本里Windows,Linux,Solaris都会举例到。

 

 

我的推荐《操做系统真象还原》,从零实现一个操做系统,讲解至关精彩。

 

 

莱昂氏unix源码分析是经典之做,MIT如今也出了一本小册子,相似与莱昂氏的书籍,做为课程教学使用。

mit的操做系统源码分析中文翻译地址:deyuhua/xv6-book

 

相似涉嫌被抄袭的教材还有:

WilliamStalling的《操做系统内核与设计原理》(清华大社学出版1998年版)、

Peterson的 《操做系统概念》(高等教育出版社2003年版)、

Solomon 的《Windows2000 技术内幕》(北京大学出版社2000年版)、

屠立德等编写的《操做系统基础》(清华大学出版社2000年版)、

王素华《操做系统教程》(人民邮电出版社 1995年版)、

谭耀铭《操做系统》(中国人民大学出版社1999年版)、

冯耀霖《操做系统》(西安电子科技大学出版社1989年版)等。

 

孟女士原是一名大学教师,如今以自由撰稿人身份从事计算机教材写做。1997年11月,她根据本身的备课笔记,编著完成《计算机操做系统》一书(如下简称“孟书”),由中国人民大学出版社出版发行。

 

Tanenbaum的《现代操做系统》、

Peterson的《操做系统概念》、

William Stalling的《操做系统——精髓与设计原理》。

 

csapp不用说了,读过的都知道

 

 

光看书不动手很容易出现这种状况...
我推荐 6.828 / Fall 2014,往年的视频也很容易找到。这门课会接触到两个小的操做系统: xv6 和 jOS。课堂上主要讲xv6, 一个小的unix操做系统;而课程Lab分6~7个阶段让你填写jOS的关键代码。
这门课的好处就是理论加实践,并且课程节奏很好。
好比讲完系统调用,你就能够试着给xv6加个timer调用;讲完threads,你就能够试着给xv6加个系统调用,而后让这个系统支持线程...
Lab实现的jOS和xv6有不少设计决策不一样,对比它们你能够更好的理解什么是操做系统;固然能本身亲手写一些代码感受会很不同(理论怎么转换到实践)

几点体会:

  • homework也许比Lab更有启发性(我是这么认为的);
  • 若是看过CSAPP就最好了,汇编都不用学了,shell也会写了,memory也了解了。
  • 6.828有个做业提交系统,只要邮箱就能注册了,而后能够互评Lab...

有了一些本身的体验后,而后结合书看也许就彻底不同了。

 

做者:gashero
连接:https://www.zhihu.com/question/27871198/answer/38460394
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

书籍上讲的可能是理论,能够本身再去找个开源的嵌入式OS,一块儿看着代码实现,就会好的多了。好比FreeRTOS,能够也买本书,学会编译,并在电脑里当成个应用跑起来,学会本身建立进程、协程后,进入对应的API实现看看。内核的调度、优先级、内存管理、资源管理、抢占式任务切换等等。

选择嵌入式OS是由于足够小,毕竟要为这个事情读Linux源码就是个大坑。FreeRTOS拥有大部分现代OS的各类核心功能,用来学习真是个好的例子。我也是学了FreeRTOS后,才逐渐让数年前操做系统的知识变得灵活起来了。

举几个例子,在FreeRTOS中的实现:

1. 线程管理:
给每一个线程创建个私有的堆栈,每次在线程里调用任何的函数,所需的参数传递、本地变量等都是放在线程私有堆栈里的。这样各个线程之间不会发生混乱。该堆栈的创建通常还有个最大长度值,以避免浪费内存过多,同时也限制了递归过深的状况。须要OS应用一开始就进行一个估算,调用栈会有多深。

2. 内存管理:
通常是先从物理内存里申请一大块内存,创建针对这块内存的分配表,每当有申请内存就记录一条,释放内存就选择时机将剩余内存合并。分配策略有多种,好比按照顺序,或者优先选择符合条件的最小空闲段。每一个线程都创建本身的堆,有助于提升内存分配效率。

3. 进程/线程切换:
使用系统硬件上的定时器,每隔必定时间就发生一次硬件中断,此时当前进程/线程被中止,全部寄存器被保存到进程私有栈里。两次中断之间实际执行任务代码的部分,就叫作一个时间片。而后调用中断处理函数。这个中断处理函数就是OS内核里的任务切换功能,会从新选择处于就绪(ready)状态的各个任务中优先级最高的那个来运行。因此,理解并实现这个中断处理函数,就是理解任务切换的关键。放心代码不长。

4. OS内核调用:
现代的CPU,包括一些嵌入式MCU,都会严格区分user space和kernel space。二者的各类资源相对独立,甚至堆栈都不一样。当user application须要调用内核提供的服务时,每每是将本身要调用的内核调用符号、参数、返回值放到内存中指定位置,而后触发一个软件中断。好比Cortex-M系列的SVCall,或者DOS的80中断。此时就切换到了kernel mode。此模式下的中断处理函数会根据系统调用内容分发调用请求,执行结束后,再根据返回地址跳转回去。

 

6.828 / Fall 2014
xv6的连接。Learn by doing。

 

Synchronization (Windows)

先看这个

 

编码 (豆瓣)

 

看了不少回答,感受有些同窗的建议简直太离谱了。
先说鸟哥linux私房菜,楼主能够到鸟哥网站上先看看。他的风格是告诉你怎么作,不告诉你为何,很杂很乱。
还有Linux系统编程手册这种手册书都拿出来,不是误人子弟吗?
再说深刻理解计算机系统,这本书是好书,须要耐心和精力,不过不推荐初学者学习。由于你会由于里面复杂的细节丧失不少兴趣。
最后有推荐6.828这个网络课程,有些靠谱,我先去看看而后回头补充答案。

 

视频:推荐北京大学操做系统原理公开课(2015年)(free,需注册帐号)
Coursera - Free Online Courses From Top Universities
书籍:赵迥的《linux内核彻底剖析》

这两个讲得都是很实际的操做系统知识,不会给你一种空中楼阁的感受。

 

1.于渊的《本身动手写操做系统》,这本书从零开始实现一个小的操做系统内核,看完以后能够对操做系统最基本的原理有比较好的理解。

2.网易云课堂李治军老师的操做系统课程,讲的通俗易懂,用的是linux0.11的源码,真的很好。

3.Linux内核彻底剖析(linux0.12),很全面。

 

 

深度探索嵌入式操做系统:从零开始设计、架构和开发

 

为何没人推荐这个 Operating Systems: Three Easy Pieces

 

骚年,来一条龙啊
xv6+深刻理解操做系统+unix环境高级编程+c程序设计语言

 

推荐两本适合入门和创建基本概念的书,都是以linux0.1x版本为范例来说解的:
<linux内核设计的艺术>,书中有很是多的图解,比起单纯的文字描述更容易接受和理解;
<linux内核彻底剖析>,还有赵炯的其它几本书;

上面两本看完了能够看下面这本:
<深刻理解Linux内核>,对应的英文版"Understanding The Linux Kernel",中文版的翻译不是很使人满意,不少专业名词一旦翻译成中文反而更难理解,建议直接看英文版.

 

 

《Freebsd操做系统设计与实现》《深刻Linux内核架构》。前者纯理论,后者偏实现,有中文版,翻译的也不错。

 

如果想写个操做系统的话 推荐你看《操做系统真象还原》

 

 

目前能够公开的情报:须要动手作实验。一学期写几千行弄个完整的mini OS大概比较困难,可是能够阅读相似的mini OS源代码(好比MIT的xv6,6.828 / Fall 2014),本身架设虚拟机和编译/调试用的工具链,改一改,调一调。有的OS课程实验设计就是给一个mini OS,而后从其中抠掉一些代码,要求学生在掌握OS知识和熟悉mini OS架构的基础上,本身补完代码,且能经过测试。

有两门近期将开课/已经开课的国内OS公开课能够关注一下:
Coursera - Free Online Courses From Top Universities,北京大学《操做系统原理》
操做系统-学堂在线慕课(MOOC)平台,清华大学《操做系统》

 

e8cb064173f134a0e1a1947a8ac9abcc_b

0dea4f66bbf1a5b1bb27e5e260c4402e_b

做为CS三剑课(数据结构,算法,操做系统)中的capstone和终极大Boss,OS的独特魅力在于:你不但能学到全部你想知道的,并且还被迫着去了解全部你不想知道的(夸张了点,但就那意思…

因此,学好这门课无非就两点:
1. 熟练掌握你想知道的
2. 适度理解你不想知道的

 

 

OSTEP

假如你是本身认真看书,而后独立完成大二小学期用 VHDL 模拟后刻在板子上的 CPU,大三上继续认真看书,搞清楚那些点,独立完成那8个实验。

 

若是学好的标准是考试拿高分,那死记硬背就行了,操做系统比文科还须要死记硬背。

可是若是你想真正弄懂,那须要看的东西太多了

我我的感受,搞清楚计算机启动的整个过程,好比加电置全1,扇区引导,实模式进入保护模式....

操做系统就已经能明白一半了

 

 

操做系统怎么学,首先要想操做系统是怎么来的,在没有操做系统的年代里,人们是怎么编程的。这是首要的问题。不知道有没有人看过INTEL官方的CPU文档,老是分为应用级编程、系统级编程、指令集这三块。其中系统级编程这一块最复杂,我不说内容,就单从文件的大小来看,IA-64编程手册的应用级编程卷是2MB,系统卷却有6MB。就连IA-32编程手册上的系统卷部分也远比应用卷的要多。固然这些内容我尚未看,不过从目录当中,以为有不少类似的地方,好比CPU内存寻址、虚拟存储器管理、中断与保护等等,能够从INTEL的CPU文档上看出,各类CPU或机器虽然各有各的不一样,各有各的特色,可是目前的CPU要解决的核心问题就是那么几块,要解决的就是象如何寻址内存,如何管理虚拟存储,如何实现中断,如何保护资源等等。

各位编程的同仁想必都很清楚,计算机的操做系统就是在为应用级编程提供服务,提供什么服务,就是提供象诸如如何内存寻址,如何管理虚拟存储器、如何进行中断,如何管理磁盘,如何。。。。等等。操做系统为咱们作掉了系统级编程中最繁重的一块,因此咱们在用应用级编程好比用C++编程的时候才会那么舒服,用int分配一个变量这内存地址就来了,某个函数要调用另外一个函数执行的时候这执行行程就能跳到那个函数,内存不够了,没有关系,操做系统自动启动虚拟存储器(只不过慢了些),因此应用级编程是最舒服的,操做系统级编程比较难,而直接作单片机可能就是最难的了。由于即便就是操做系统级编程,可能不少有关CPU底层的东西也已经作掉了,你要作的可能就是要了解的你的操做系统作掉了哪些功能,如何调用。而单片机就没有那么好玩了,单片机我没有作过,我想可能就是直接对着一个CPU用汇编来编程,并且极可能是在没有操做系统的状况下,这样一来,操做系统要承担的诸如内存管理,中断,过程跳转等这些复杂繁重的工做就得程序员本身来承担,那程序员的负担就比目前应用级编程大得多了。

我猜测,可能在没有操做系统的时候,每一个计算机程序员的日子可不会象如今的那么好过,由于作每一个程序,都须要你本身去分配管理内存,你不但要考虑如何高效的管理内存,还要知道如何进行过程跳转等等这一大堆的的细活,而这些细活在不一样的CPU上的实现方式也是不一样的,直到把这些问题都解决了之后,你才开始真正考虑你的应用方面的程序逻辑如何去编的问题。固然了,虽然有关CPU底层的系统级实现细节不同,可是大至CPU系统级这一部分要解决哪几块问题这是同样的,因此在INTEL的官方文档上,不管是IA-32仍是IA-64这两个编程手册的系统卷上,都是那么几块内容。

既然系统级要解决的几个任务都是相同的,每一个程序员在编程的时候都要考虑这几方面的内容,那么可能就会想,为何不把这些程序要解决的相同的任务给提取出来呢,这就造成了操做系统,操做系统的内核的任务,就是专门负责解决早期计算机程序员每次编程都必需要解决的几项系统级任务,这样一来,留给应用级的担子就很是的轻了,忘记在哪里看过,好像之前的数据库系统是属于应用软件的,可能一样是由于每一个应用软件连同操做系统都须要一个数据库,因此就把数据库系统给单独提了出来作为系统软件了。有一点不明白为何目前的操做系统要用文件系统,直接用数据库系统不更好些吗,既对用户服务,又为系统服务!

我以为,若是你们有要学操做系统原理的,根本就没必要要去看所谓什么操做系统原理这一类的书,连外文的书籍也没有必要去看,由于目前国际CPU制造商提供的CPU文档的系统级编程卷才是真正的,原汁原味最好的教材,你要编写的操做系统从大部分任务就是解决系统卷里的任务的。有一次在QQ上和一个作单片机的家伙聊天,那人比我小一点,我当时说目前操做系统底层好难,他就说这有什么难的,他立刻就能作一个操做系统,就连编译器也能作,我当时被吓了一大跳,小小年纪就这么厉害,如今我懂了,作单片机的,大概都会作操做系统,由于单片机的每次编程就是和系统底层打交道的,因此作单片机程序的天然对一个操做系统内核会比较了解了。

在此建议和我同样的对操做系统原理感兴趣,对系统底层的感兴趣的人,直接去看INTEL的官方材料吧,操做系统原理有哪几条,要解决哪些任务,经过查看不一样CPU的系统卷编程手册,找出其中相同的任务和逻辑去本身总结操做系统是如何作,无疑这种方法学到会是最多的了,并且理解起来可能会比通常的学习方法来得更深入。

学习应用软件的朋友,我也劝大家看看操做系统,内核等这些系统底层的东西。看过了之后,你会以为看应用级编程会更流畅,学起来也会更简单。我就是这样学的,学MFC,后来开始学INTEL CPU的应用级编程,如今我决定开始从系统级学起。目前我也会上MSDN英文网站看看有关MFC的东西,但我看MFC倒不是主要由于去编写MFC应用程序,而是想看看微软是用系统为全部的应用级编程提供服务的,这整个一套结构是如何构造出来的,ORACLE数据库是我继INTEL文档的下一波目标,我也是想看看,一个数据库体系结构是什么样的,可不能够嵌到操做系统里去。

 

操做系统是一个庞大的软件,涉及到方方面面,若是你想透彻了解操做系统,那么你必需要写一个操做系统,并不须要写个windos or linux那样的操做系统,写个几千行的到1万多行的玩具就能够了。

独立写一个操做系统须要很广的知识面, 《深刻理解计算机系统》着本书你总得看吧,怎么也得稍微有一点系统开发的经验吧(windos or linux都行),推荐看《UNIX环境高级编程》,固然这都不是必须的.

一、随便看一本关于操做系统理论的书,国内国外教材均可,推荐《操做系统:精髓与设计原理》
二、看《x86汇编语言:从实模式到保护模式》,动手照着书上写代码
三、跟着MIT 的操做系统的实验 6.828 / Fall 2014,全程把这个实验作完

完成以上三点,你基本就能够写出一个完整的、可在真机上运行的操做系统了,在这期间你须要很强的毅力,善于本身解决问题。

四、看《深刻理解Linux内核》与《x86/x64体系探索及编程》,对照着《深刻理解Linux内核》上讲的Linux内核的各类系统(eg. 虚拟文件系统、slub内存分配系统、伙伴系统),再看看Linux内核的源码,再与本身的思惟融合一下下,就能够开始动手写一个本身的操做系统了。

我就是按照以上四个步骤写了一个操做系统 GitHub - Zhang626/fuckOS

在这期间须要查阅很是很是多的资料,大部分资料都列在MIT 6.828 的实验上了。

推荐一个外国的关于开发操做系统的论坛,上面有不少牛人OSDev.org • Index pageExpanded Main Page

 

 

4d1195695f3aff28036ccaa7c70579f0_b


20a9b1c1dc6d736ef75b603d4ab219d9_b

44884527ce5638119269d2adce720940_b

142d6acc9d94ec7efead433f54b9c157_b

还有一本很屌的书叫:《Linux From Scratch

 

在本地用virtualbox架设一个汇编环境,用来作开发测试的沙盒

 

选书如 Operating System Concepts
汇编的教程网上与不少,能够本身找。

 

uc/os给个人感受不错。虽然说这是个嵌入式系统,可是用来了解任务调度和进程同步的细节仍是很是好的,结构设计也很是有层次感。做为一个RTOS,它每个函数都能设计好有一个肯定的执行时间,感受仍是很神奇的。
最重要的是,它是免费的!免费获取源码,注释也很清晰。除了缺乏系统的内存管理和文件系统以外,仍是很是不错的一个用来学习的系统。

 

 

推荐MIT-6.828 :6.828 / Fall 2014
这是他们的schedule,按照上面的课程好好上完,把pre的paper好好读读,lab所有作完,基本你就对操做系统有了全新的认识了。
要是嫌mit的英文看的太累的话,也能够试试清华的,lab都差很少,不过清华的pre paper好像没有。

 

 

玩具仍是不要搞了吧。能够看xv6,或者看赵炯博士的0.12版linux分析,或者读freebsd或者illumos这种注释很清楚的源代码

 

我给出的建议是:莫要贪心,想要一口吃个胖子。OS是个工程性很强的技术活儿,初学者最好不要把目标定为“深刻学习”(在我看来深刻学习的意思有两种可能:读源码分析其实现,或者学习分布式系统),“了解原理”应该是更切实的目标。
若是你仍是在校学生,只看现代操做系统那本书就够了,多读几遍,一遍确定不少地方读不懂,这基本上就会用掉半年的时间。若是读完以后还有很浓厚的兴趣想了解OS的实现,那就读读xv6(xv6有本xv6-book的电子书,必读,读完它再去看源代码),或者赵炯博士那本。上学期间读这些就够了,花更多时间学学web开发技术更有钱途。

若是已经工做,那只能读Linux或者FreeBSD、illumos这种久经考验的操做系统。FreeBSD和illumos的优势是代码结构清晰,有前面那些基础很容易读进去,读完能学到不少知识;缺点是用户群小(和Linux相比)。Linux代码虽然乱些,但分析源码的书更多,遇到难点也许更容易克服。
长远看,将来是属于Linux,因此建议先从Linux学起,我我的推崇的linux的入门书是robert love的linux kernel development。我对Linux没有深刻了解,惟一认真度过的是linux device driver,但这本书比较难啃,但值得推荐。

 

我上操做系统课的时候用的是Nachos,能够看一下Nachos

 

我在读大学的时候是努力试图学习过linux源码的,在机房里打印出厚厚一叠纸,闷在计算机旁边猛看了好几天,饭也没好好吃,那些纸的质量不太好,有股怪味,空着肚子钻研,到后来闻那股味道,差点呕吐,因而放弃,出去大吃了一顿。
这是上世纪末的事情了,那时其实水平还没到,内心好奇,彻底是赖蛤蟆想吃天鹅肉。学习这个事情,仍是得按部就班的。
要想学深刻学习操做系统,推荐从这本书开始: Operatiing Systmes, Design and Implementation (by Tanenbaum, Woodhull),里面有个用于教学的操做系统Minix。Linux的某些方面,如今还能够找到Minix的影子。
我手里的这本书,是第二版,如今书最新版是第三版。Minix 3.0,也已经有点难度了, X Window System都有了。http://www.minix3.org/
要是以为仍是太复杂,还有个更简单的GeekOS,http://geekos.sourceforge.net/
OS的设计是受限于硬件的,尤为是CPU。当代OS的不一样进程之间的内存保护,虚拟地址,都要经过硬件。因此对一个CPU的深入了解,必不可少。对于Intel的CPU,应该读下面三本:
1. Intel Architecture Software Developer's Manual, Volume 1: Basic Architecture http://www.intel.com/design/PentiumII/manuals/243190.htm
2. Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual http://www.intel.com/design/PentiumII/manuals/243191.htm
3. Intel Architecture Software Developer’s Manual Volume 3: System Programming http://www.intel.com/design/PentiumII/manuals/243192.htm
尤为是第三本,编OS必看,虚拟内存,内存保护的东西全在里面。
操做系统里面代码最多的,实际是IO部分,理论很少,可事关重要。Mindshare出了一系列书,写的很是深刻详细。http://www.mindshare.com/
学汇编开始直接学CISC的指令集太费劲了,推荐先从RISC汇编开始,西方大学计算机专业走的也是这条路。能够看的一本书是Introduction to RISC Assembly Language Programming,by John Waldron。里面用的处理器MIPS,能够下载个SPIM Simulator,在PC上跑。http://www.cs.wisc.edu/~larus/spim.html
Knuth老先生在The Art of Computer Programming一书里的例子,都是汇编,如今用的虚拟机是访RISC设计的,叫作MMIX,Knuth写了本书,叫作MMIXware, A RISC Computer for the Third Millennium, 呵呵,口气好大啊。
讲计算机架构的两本计算机学科经典书,是Patterson和Hennessy合写的两本:Computer Organization and Design: The Hardware/Software Interface 3rd edition,以及Computer Architecture, Fourth Edition: A Quantitative Approach
学汇编要注意一点,每一个汇编器,其语法都不同。在Windows下面写汇编,微软的Macro Assembler不是很合适,里面的Macro太多,都遇上高级语言了。有个开源的Netwide Assembler, http://sourceforge.net/projects/nasm, 却是挺不错,推荐使用。
关于学习操做系统内核,若是不是非抱着Linux的话,BSD是个挺好的选择。代码的结构可能还清晰些。我有一台FreeBSD服务器,基本很是满意,有两点不足,MySQL是针对Linux优化的,在FreeBSD下性能不够好,可是根据Yahoo的人说(Yahoo用FreeBSD),FreeBSD最新版下用MySQL threading library从新编译性能能够接受了。Java也不尽如意,Sun 如今提供Java 5的binary给FreeBSD。但我在FreeBSD若是启动Tomcat开的内存太大,启动会失败。
想看看FreeBSD的源码,能够看看这里:http://www.leidinger.net/FreeBSD/src_docs/,里面列的都是内核各个部分的Code Reference Manual。里面那个讲kernel的文件有23M,共2205页,可见钻研这些是件极为费时费力的事情。
http://www.chinaunix.net/也有不少BSD的资料。如今主流操做系统,就两你们了,一边是微软的以NT为内核的Win2k/XP/2003/Vista,另外一边是以UNIX为根基的Linux/BSD/Solaris等等.Tanenbaum说过这么一句话,操做系统是什么呢,就是操做系统定义的API。学习Windows下的API,容易许多,资料全,另外Jeffrey Richter的Programming Application for MS Windows那本书写的太好了,Process, Job, Thread, Fiber, Critical Section, Event, Waitable Timer, Semaphore, Mutex,Virtual Memory, IO,写的很是详尽清楚。要是Linux/BSD下面也有这么一本书,该有多好啊。Linux, BSD里面的线程,家家各有不一样,把人搞得糊里糊涂。若是从研究操做系统是怎么实现的,那么正好反过来,Linxu/BSD/Solaris简单明了多了.除了代码公开,他们内部结构没有Windows那么复杂。Windows的源码,要是成为微软的MVP,也是能够看到的。Windows 2000的大部分源码,还泄露出来了,在网上流传了一阵子。我我的以为搞应用的去学习编译器回报可能更大,首先就是对语言了解很深刻,写码,读码容易。若是会了编译器前台技术,能够本身写个分析代码的程序啊,那么读别人的码不久容易不少。如今虽然有现成的源码分析器,可是想一想你有个数据库,一种是只能使用别人写好的界面,一种是能够用SQL自由查找,哪一个好?若是学会了编译器后台技术,恭喜你,写任何一行代码都知道在计算机里怎么执行的,这是一种多么自由自在的境界啊。

相关文章
相关标签/搜索