漫谈如何学习操作系统原理

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

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

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

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

时间: 2024-10-25 13:11:08

漫谈如何学习操作系统原理的相关文章

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

本人学习计算机技术至今,对于怎样学习操作系统原理有一点自己的看法,如今写出来,希望对大家能有所助! 操作系统怎么学.首先要想操作系统是怎么来的,在没有操作系统的年代里,人们是怎么编程的. 这是首要的问 题.不知道有没有人看过INTEL官方的CPU文档,总是分为应用级编程.系统级编程.指令集这三块.当中系统级编 程这一块最复杂,我不说内容,就单从文件的大小来看,IA-64编程手冊的应用级编程卷是2MB,系统卷却有6MB.就 连IA-32编程手冊上的系统卷部分也远比应用卷的要多.当然这些内容我还没有

学习操作系统原理和实战挺不错的资料,不喜勿喷

原文地址:https://blog.51cto.com/2853725/2369112

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

一步步学习操作系统(2)——在STM32上实现一个可动态加载kernel的"my-boot"

如果要做嵌入式Linux,我们首先要在板子上烧写的往往不是kernel,而是u-boot,这时需要烧写工具帮忙.当u-boot烧写成功后,我们就可以用u-boot附带的网络功能来烧写kernel了.每当板子上电时,u-boot一般会被加载到内存的前半段,如果我们的kernel之前就已经被烧写到开发板了,那么u-boot会加载kernel到内存的后半段并跳转到kernel的起始地址处执行(或者直接跳转到kernel的起始地址处执行,如果kernel可以直接在flash上执行的话.) 如上图所示,绿

操作系统原理2——OS结构

操作系统原理2——OS结构 计算机系统是由硬件系统和软件系统两部分组成, 操作系统是软件系统的一个组成部分,它是直接在硬件系统的基础上工作的,所以在研究操作系统之前,先必须对计算机系统的结构有一个基本的了解,本章就是讲述计算机系统结构的基本知识. 本章的考核 知识点 是: 1.计算机系统的层次结构 2.硬件环境 3.操作系统结构 学习本章要求:了解计算机系统的结构,有关硬件的I/O中断和存储结构,硬件的保护措施:有关操作系统的结构,操作系统提供的使用接口. 重点 是:硬件环境和操作系统的结构 一

0909入门学习操作系统

从网上了解到操作系统的主要功能是资源管理,程序控制和人机交互等.计算机系统的资源可分为设备资源和信息资源两大类.设备资源指的是组成计算机的硬件设备,如中央处理器,主存储器,打印机和鼠标等.信息资源指的是存放于计算机内的各种数据,如文件,程序库,知识库,系统软件和应用软件等.然而操作系统位于底层硬件与用户之间,是两者沟通的桥梁.用户可以通过操作系统的用户界面,输入命令,操作系统则对命令进行解释,驱动硬件设备,实现用户要求.一台计算机在没有安装任何软件的时候我们称它为“裸机”,这样的计算机是什么也做

如何学习编译原理

1.什么是编译原理? 答: 编译原理是计算机专业的一门重要专业课,    旨在介绍编译程序构造的一般原理和基本方法.    内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成.     编译原理是计算机专业设置的一门重要的专业课程.    虽然只有少数人从事编译方面的工作,    但是这门课在理论.技术.方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力. 2.学习编译原理有什么好处    答:    学习编译原理大的好处有很多

0909 学习操作系统

在步入大三的学习中 这学期我要学习一门叫操作系统的科目.操作系统是一个非常重要的东西,因为每一个电子设备都需要有一个操作系统才能正常运行.根据我的了解操作系统是管理计算机系统的全部硬件资源包括软件资源及数据资源,控制程序运行,为其它软件提供支持,有着是计算机发挥最大作用的功能,为用户提供方便有效的体验.所以操作系统是电子产品运行的基本要求,要搞懂电子产品,就要学会操作系统. 在学习操作系统方面我认为学习操作系统应该多看操作系统概念的书,例如linux方向的书.在课上多跟老师交流,有不懂的及时问老

iOS学习--UIScrollView 原理详解

iOS学习--UIScrollView 原理详解 http://blog.csdn.net/yanfangjin/article/details/7898189 ScrollView UIScrollView UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容. Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).