您的位置:首页 > 其它

浅析操作系统----2、操作系统概述

2016-03-13 11:56 288 查看
一、参考书籍

        《Modern Operating Systems》----Third Edition。为什么是它?理由很简单,博主手上就只有这一本介绍操作系统原理的书,当然博主也百度、知乎了一番,发现还是很多大牛推荐的,而且本人也预先看了两个章节,觉得讲的挺详细,就决定以这一本为主要教材吧。

二、操作系统概述

        对于怎么才能高效地学习这一门课,博主思考了很久,最后决定采用“问题引导学习”的方法,即先发出博主关于操作系统某个知识点的问题,然后再查阅相关书籍进行自我解答。

        1、操作系统是什么?

        对于操作系统是什么,我相信是任何一个刚开始学习这门课的学生的第一个问题,起码博主刚开始听到这门课,第一个想到的问题就是它。那对于这个问题,到底有没有一个比较权威的答案呢?换句话说到底能不能给操作系统下一个比较完整的定义呢?

        很遗憾,从博主读过的书里,并没有一个作者能够或者敢于给操作系统下一个很完整的定义。当然也有可能是读者见识太少。不过很多书里都一致认为操作系统虽然不能够准确定义,但是有很多关于操作系统的共同的特性。这里笔者就将这些共通的描述总结一下:

       1)、管理计算机硬件的软件

              这个解释性的描述说明操作系统的本质就是系统软件,它的其中一项功能就是管理计算机系统的软件。事实上,在操作系统还没有出现之前,对于计算机硬件的管理是管理员的工作,而操作计算机的每一具体步骤都需要程序员详细的思考,这就给开发复杂的程序带来了很大的不便,想想:一个很简单的读写磁盘的应用程序里涉及到了磁盘的磁柱的移动,磁盘信号的处理等等很基本的操作,这简直就是程序员的噩梦,开发的周期得多大,并且不同的磁盘信号也不同,今天给这个磁盘写了程序,明天换了另一个牌子的磁盘,代码还得重写。(这个例子在哪见过了?忘了~~~囧~~~)但是这在早期的计算机系统里就确实存在过。

              关于硬件的管理,如果没有操作系统,所有的硬件都要程序员考虑的话我想没有谁会来当程序员了~~~。随着技术的发展,人们想到了一个偷懒的办法:既然这些管理硬件的代码都很像甚至一样,那我们能不能把这些代码写封装起来,让程序员们随时随地的调用?答案是肯定的,于是操作系统的雏形出现了-----把硬件相关的操作细节抽象化。

              发展到现在,操作系统对于硬件的管理可以说是其最大的特点,当然还有其他特点,待我慢慢描述。

        2)、为应用程序提供服务

               前面说了操作系统已经把硬件的具体操作封装了起来,程序员只要需要,可以随时使用这些封装好的代码来完成对硬件的操作。当然,操作系统管理了这么多的硬件,使用这些硬件的软件又不止一个,如何能够让软件更有效、更有序地使用计算机硬件资源,也是操作系统要完成的工作。我们把这项工作叫做为应用程序提供服务。

        到这里,博主理解到的计算机操作系统无非完成了两项功能:管理硬件和为应用程序提供服务。在操作系统的所有工作中,都体现了这两点,因此这两点只是操作系统功能的一个概述,并不是真正的定义。

       2、操作系统是如何管理计算机硬件的?

        在第一个问题里,博主讲到了计算机操作系统的基本工作就是管理硬件,那么操作系统是如何完成这一工作的?

        首先要明白计算机都有哪些硬件?这些硬件都完成哪些功能?只有先回答了这些问题,才能完整地回答这个问题。

        1)、计算机硬件系统介绍

               计算机的硬件系统包括:中央处理器(也叫CPU)、内存、外存(也叫硬盘)、I/O设备、系统总线。(额,其实作者是根据自己的理解列出来的,正确与否仁者见仁,智者见智。)

              相信我们都对这些硬件很熟悉吧,起码知道它们都有啥功能。

        2)、 操作系统为管理硬件提供的抽象概念

              A、操作系统为CPU 这一硬件提供的抽象是进程/线程的概念。操作系统提供这一概念以后,就将CPU 的时间分成“片状”,每个程序开始运行以后就是一个进程,每个进程都拥有自己的时间片,在一个时间片里只有一个进程在运行。多个时间片交叉进行,也就形成了宏观上的并行运行的“错觉”。

              B、存储管理:在现代的计算机系统里,一个进程能够使用的内存理论上是非常大的(32位系统里就能够用到4G的内存),这得益于一项叫虚拟内存的技术。在CPU里有一个叫“内存管理单元”(MMU)的模块。他能够管理实际的内存单元,并将一个程序里出现的地址对应到实际的物理内存单元。这样用户操作的只是虚拟内存,物理内存是由操作系统操作的。

              C、对于硬盘的管理,操作系统提供了一个叫文件系统的概念。操作系统实际实现一个硬盘的分区、读取的操作,用户不必了解硬盘的读写时序、数据的存取位置,仅仅使用read、write等操作系统提供的命令就能完成读写。

              D、对I/O设备的管理,操作系统提供了一个叫设备驱动的概念,设备驱动就是实际操作硬件的函数,对于硬件的操作时序,全是由驱动完成的。不同的设备操作的时序一般不同,因此不同的设备其驱动也不尽相同。

        以上简单说到了操作系统提供的几个抽象概念,关于操作系统的学习其实就是按照这些抽象概念进行的。即:进程管理-->>内存管理-->>文件系统介绍与实现-->>设备驱动简介

              
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: