程序员人生 网站导航

为什么计算机的学生要学习 Linux 开源技术

栏目:综合技术时间:2015-05-28 09:15:00

by falcon of TinyLab.org
2013/08/25

Linux开源相干技术对学生来讲,特别是计算机专业的学生来讲,非常重要,下面就几个方面进行讨论:

研究平台

由于开源的优势,有非常多的开放的文案可以参考,有很多有趣的点子可以拿来做深入的研究。任何1个点挖进去都是1片天地。

专业视野

通过那些开放的项目,你可以通过邮件列表、Linkedin、Google Group接触到来自全球各地的天才,不但可以提升英文读写能力,认识国际友人,还可以掌控领域前沿,乃至还有机会得到大佬们的指导迷津。

工作机会

就像2004年左右,自己在学校决然而然地选择转到Linux平台1样,现在有一样的预见,Linux和相干的开源技术由于它包括人类双赢(Open, Free, Share)的”大同”理念,融会了全球众多企业和天才的智慧,和它不断更新换代地自我革新,她将延续繁华下去。

目前的Linux人材看似很多,刚从学校毕业没甚么编码经验的学生也能够很快写个小驱动,看似门坎很低,但是真正能够从系统层面解决问题,做了工作不用他人搽屁股的高端人材很少。如果从大学开始抓取,毕业的时候就比其他同学多了4年的使用经验和思惟培养。对后续的研究和工作来讲,都会是非常重要的竞争力。

课程实践

几近从硬件到软件,Linux平台能够提供从下而上的所有触及“灵魂”的学习案例,让所有课程从纸上谈兵转变成疆场实战,会极大地提升工程实践的效力和技能。

硬件方面

硬件摹拟已是趋势,不可阻挡。包括处理器摹拟、系统摹拟,大名鼎鼎的Qemu,和它的伟大的派生者:Android emulator提供了易用的案例,支持4大,不是律师事务所,是ARM, X86, PPC和MIPS。这东西不但能够摹拟处理器指令,还支持系统级(各种外设)的摹拟,还支持直接在1个架构上履行另外一个架构的可履行文件(通过qemu-user-static翻译)。有了它,你不用花钱买开发板,有了它,你可以研究如何摹拟设计和实现1个硬件系统,1套处理器指令,还可以研究虚拟化技术,虚拟化集群。

跟GNU序列工具的首创者Stallman和Linux的首创者Linus1样,Qemu的首创者也是1个伟大的先驱,看看他的简介和个人主页吧:http://bellard.org/,和那个用Javascript写的可以直接通过阅读器跑Linux的摹拟器吧:http://bellard.org/jslinux/

法布里斯・贝拉 是1位法国著名的计算机程序员,因FFmpeg、QEMU等项目而闻名业内。他也是最快圆周率算法贝拉公式、TCCBOOT和TCC等项目的作者。 1972年生于法国Grenoble。在高中就读期间开发了著名的可履行紧缩程序LZEXE,这是当年DOS上第1个广泛使用的文件紧缩程序。

接触开源,让我们有机会了解和认识这些疯狂的先辈,这无疑是1件非常励志和让人血脉贲张的趣事。

引导程序/BIOS

我们大学的时候学习了BIOS,基本输入输出系统,是个啥玩意,感觉得到,看得到面纱,看不到她真实的模样。但是有了Uboot:http://www.denx.de/wiki/U-Boot,你可以。

可以直接在Qemu里头做Uboot的实验:Using QEMU for Embedded Systems Development, Part 3 或 使用Qemu摹拟Cortex-A9运行U-boot和Linux

操作系统

Linux本身绝大部份都是Open的,操作系统课程如果在上课的同时能够读1读Linux 0.11的源代码:http://oldlinux.org/,你会发现操作系统不是干巴巴的电梯调度算法之类算法描写。你可以看到实实在在的活生生的场景,可以说话的场景。

甚么调度算法,甚么同步机制,甚么中断管理,甚么文件系统,甚么各类外设的驱动等等,统统可以看到源代码实现并允许亲身去修改,调试和完善,乃至可以通过邮件列表提交Patch到官方Linux社区,然后有机会接触Linux社区的那些印象中“神1般”现实里“平易近人”的大佬们。

你还可以自己制作1个完全的操作系统。看看Building Embedded Linux System这本书, 从Linux官方社区: http://www.kernel.org下载1份源代码,编译1下,然后用Busybox,Buildroot、LFS或Openembedded制作自己的文件系统,然后就是1个完全的操作系统。然后你会知道甚么是1个完全的操作系统,甚么仅仅是1个操作系统Kernel。然后你会了解,用户交互的界面,除GUI,其实它最最本质的东西还是Shell Terminator,GUI只是换上了1袭花衣裳。你会真正地理解,当按下1个键盘上的按键的时候,这个背后产生了甚么样的故事和演化。作为计算机的学生,我们不应当被这些蒙在鼓里,应当掀开那袭花衣裳,刺探背后的细枝末节,然后,等到哪1天,闭上眼睛,当全部故事情节在脑海里像放电影1样清晰不再模糊的时候,你就如偿所愿了,那种美好的滋味在出现Bug需要解决的时候会得到印证。

做这些实验,根本不需要买开发板,Qemu就绰绰有余了,可以参考:

Using QEMU for Embedded Systems Development, Part 1

Using QEMU for Embedded Systems Development, Part 2

如果想看Linux 0.11的源代码,可以到http://oldlinux.org/下载开放的书籍和源代码,在Ubuntu下用Qemu做实验就行了。记得下载可以在Ubuntu下用最新编译器编译的Linux 0.11代码: https://gitlab.com/tinylab/tinylinux.git

另外,这里有1份比较详细的文章,介绍了相干用法:可供GDB源码调试的用GCC 4.X编译的Linux 0.11实验环境

汇编语言

估计学校还在用王老师的书吧,这个是我大2的时候有写的《汇编语言 王爽著》课后实验参考答案。

Share在这里是非常想强调实践的重要性,不知道有几个同学认真地做完了所有或绝大部份大学计算机课程课后的实验,实验真地非常重要。另外1个缘由是,真地希望大家能够在Linux平台下学X86的汇编,用gas汇编器,用AT&T的语法,用gcc看C语言写的东西是怎样用汇编语言实现的。非常美好的事情。固然,还可以用qemu-user-static跑1个debootstrap制作的Debian for ARM, MIPS or PPC,学习ARM,MIPS和PPC汇编。特别推荐学习MIPS汇编,精简指令集,最优美的纯天然的汇编语言。

结合上面的操作系统课程,特别推荐1个国外的貌似是旧金山东大学学的课程,叫CS630,本来这个老师(Allan B. Cruse)是在I386真机上做实验的,我完善了他的Makefile,然后直接在Qemu上做实验。分享1个趣事:我给那个老师分享了在Qemu上做实验的方法,人家说这个学生不错,可以直接给个A了,呵呵。具体用法和源代码请参考:Learn CS630 on Qemu in Ubuntu。

BTW:上面Linux 0.11的课程,为了可以直接用现在流行的标准gas和gcc,那个boot引导的16bit汇编代码我有用AT&T重写。

如果想学ARM汇编:推荐《ARM System Developers’ Guide: Designing and Optimizing System Software》,如果想学MIPS汇编: 推荐《See MIPS Run Linux》

如果想学X86汇编,不要错过那个CS630课程和Allan B. Cruse的个人主页,有蛮多相干的资料。

C语言

就语言本身来讲,她太有生命力了,而且现在和可以预知的未来,她还会保持她独有的生命力。

语言本身我们是否是还在学谭老师的课程呢?建议还是要自学C语言作者的书:

The C programming Language

然后,不要忘记把基础打扎实1下,下面几个内容基本可以作为往后学习和工作的持久参考书,最好是在大学阶段系统地全部浏览和实践1遍,你会收获颇丰的:

C Traps and Pitfalls

C FAQ: http://c-faq.com/

Advanced Unix Programming

特别推荐Jserv黄的大作《深入

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐