漫谈怎样学习操作系统原理

摘要:
到目前为止,我已经学会了计算机技术,我对如何学习操作系统原理有自己的看法。现在我把它写出来,希望它能帮助每个人!而且很可能没有操作系统。操作系统必须承担内存管理和中断等任务。在我看来,如果你想学习操作系统的原理,就没有必要阅读关于所谓操作系统原理的书籍。我建议你和我一样对操作系统原理感兴趣。通过查看不同CPU的系统卷编程手册,找出相同的任务和逻辑,总结操作系统的工作原理。

       本人学习计算机技术至今,对于怎样学习操作系统原理有一点自己的看法,如今写出来,希望对大家能有所助!


       操作系统怎么学。首先要想操作系统是怎么来的,在没有操作系统的年代里,人们是怎么编程的。

这是首要的问

题。不知道有没有人看过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文档的下一波目标,我也是想看看,一个数据库体系结构是什么样的。可不能够嵌到操作系统里去。



        就写到这里。希望有志同道合的朋友和我一起前行,最后祝大家编程愉快。工作愉快。

呵呵!

免责声明:文章转载自《漫谈怎样学习操作系统原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇分享10款激发灵感的最新HTML5/CSS3应用ORA-01940:无法删除当前已链接的用户下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

全面聊聊JavaScript的浅拷贝和深拷贝

一、背景      首先我们可以看下面这段简单的代码: var obj = {name:'程序猿',sex:'男'}; var arr = ['程序猿','程序媛']; var copyobj = obj copyobj .name = '设计...

AVR单片机教程——示波器

本文隶属于AVR单片机教程系列。   在用DAC做了一个稍大的项目之后,我们来拿ADC开开刀。在本讲中,我们将了解0.96寸OLED屏,移植著名的U8g2库到我们的开发板上,学习在屏幕上画直线的算法,编写一个示波器程序,使用EEPROM加入人性化功能,最后利用示波器观察555定时器、放大电路、波形变换电路的各种波形。 本讲所需的资料可以在这里下载:提取码6...

PIC中档单片机汇编指令详解(7)完

GOTO 程序无条件跳转到指定的地址 语法形式:GOTO m 操作数:m为11位立即数指定的目标地址 执行时间:2个指令周期 执行过程: m→PC【10:0】 PCLATH【4:3】→PC【12:11】 状态标志影响:无 说明:程序无条件立即强行跳转到目的地址处继续执行。目的地址由本指令内含的11位地址码和特殊寄存器PCLATH中的【4:3】一起构成完整的...

SmartTimer——一种基于STM32的轻量级时钟调度器

一直以来,都渴望为开源世界贡献自己的作品,但总是心有顾虑。首先是之前一直忙碌于公司的项目,没有时间做自己的东西,公司利益为先,确实也没法开源;二是总觉得自己的代码丑陋,不够优雅、简洁。怕贴出来后贻笑大方。 最近一段时间没有那么忙了,于是有时间把以前的积累沉淀一下。对之前做过的项目会有更多的反思。比如, 怎么做才能把业务逻辑和工具组件分开,使工具组件可以...

【单片机】【PIC16F1937】之定时器

这篇文章是谈谈关于1937的定时器的,刚开始被晶振频率、时钟频率、振荡周期、振荡频率、指令周期、指令频率等等的名词绕晕了。先来解决这个问题。 晶振频率是代表振荡器的频率,说的是晶振这个器件的频率,因为一个单片机有内部外部晶振,比如你选择了内部晶振,那么这个晶振的频率就是你单片机的时钟频率, 振荡频率和晶振频率说的是一回事。振荡周期是1/(晶振频率),T =...

Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合

场景 Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/122143275 上面实现缩放地图时元素在指定距离内实现聚合效果。 实际场景中点位是变化的,不是静态的点位,当多个点位在动态更新的过程中如果出现了重合则自动...