本人学习计算机技术至今,对于怎样学习操作系统原理有一点自己的看法,如今写出来,希望对大家能有所助!
操作系统怎么学。首先要想操作系统是怎么来的,在没有操作系统的年代里,人们是怎么编程的。
这是首要的问
题。不知道有没有人看过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文档的下一波目标,我也是想看看,一个数据库体系结构是什么样的。可不能够嵌到操作系统里去。
就写到这里。希望有志同道合的朋友和我一起前行,最后祝大家编程愉快。工作愉快。
呵呵!