说起操作系统,我想在坐的各位同学都不会陌生。因为无论我们想用计算机干什么,首先要做的就是启动操作系统,任何软件的运行都离不开操作系统的支持。
比如大家最熟悉的就是Windows操作系统。
除了Windows操作系统,还有什么其它的操作系统?
可能有的同学还接触过Linux操作系统,Apple公司的Macintosh系统。(关于Macintosh操作系统还有一个有趣的小故事,现在我先不讲,一会儿我再讲)。
我们都知道操作系统是非常重要的, 《操作系统概念》这门课也是非常重要的。
《操作系统概念》是计算机专业的主干课,同时也是一门必修课,所以我们应该认真学习这门课。现在操作系统已经成为了一门考研统考课,所以有志于考研的同学就更应该认真学习了。 在正式开始学习这门课程之前,首先让我们针对这门课程思考3个问题。
多年的学习经验让我养成了一个习惯,就是无论学什么课之前,都要先问自己3个W问题:What, Why, How。
What就是这门课的主要内容是什么?它是讲什么的?你能不能用一两句话,简明扼要地说清楚?
清楚了这门课的主要内容之后,接下来就要思考Why,就是为什么要学这门课。我记得有一句名言叫“兴趣是最好的老师”,如果连为什么要学这门课都搞不清楚,恐怕你很难对这门课发生兴趣,那么学习起来就会非常的痛苦。
当我们为学习一门课程找到了原因之后,剩下的就是问问自已HOW了,也就是如何学习这门课。学习是一项讲究方法的工作,如果掌握了正确的学习方法,你就会事半功倍,否则可能就会落个费力不讨好。
下面,我们就针对操作系统这门课,一起思考一下这3个问题。
操作系统的基本原理、组成结构、设计方法和实现技术。
操作系统概念是一门涉及较多硬件知识的计算机系统软件课程,在计算机的软、硬件课程设置上,起着承上启下的作用。这门课不是给大家讲解操作系统如何使用的一门课,而是一门关于如何设计和实现操作系统的课程。从这门课,我们可以学到操作系统的基本原理、组成结构、设计方法和实现技术。具体包括进程管理、内存管理、磁盘管理和输入输出设备的管理。
用户为了开发应用程序必须与操作系统打交道。
操作系统中所用的许多概念和技巧可以推广应用到其他领域。
无论将来是否从事操作系统的开发工作,都可以从操作系统这门课中受益匪浅!
下面,分析一下,同学们学习操作系统的现实意义。
现有的操作系统,例如微软的Windows还有待于进一步完善,通过微软不断发布的补丁就可以看到这点。其实unix和linux也是在不断地修正自身的缺陷,或者为了满足新的需求而进行升级。北京时间7月8日,Google正式宣布将开发操作系统Chrome,这意味着Google与微软之间的竞争已升级到了白热化阶段。因此,设计一个新的操作系统或者修改现有的操作系统就要求大量的,不仅掌握基本编程技术,还要精通操作系统原理的高级工程师来完成这项工作。
那么有的同学可能会问了,如果自己毕业后并不是进入微软或google这样的操作系统开发公司,那么学习操作系统对自己今后的工作是不是就没有用处呢?的确,很多同学毕业后,主要从事的工作还是在操作系统的基础上开发应用软件系统,而不是直接修改操作系统本身。但是开发应用软件系统,也有一个层次之分。深入地编程,往往是要与操作系统直接打交道的,也就是利用操作系统提供的API,调用计算机的底层功能,实现高级的软件功能。 举例:陈亮,月薪13K,赛门铁克 11K(Nod)
另外,我们知道,现在的集成开发环境已经将底层的编程技术封装得很好了。即使不是计算机科班出身的同学,只要是对软件编程感兴趣的,也可以编写出自己需要的应用程序。那么,我们这些科班出身的同学的优势在哪儿呢?如果,对于同样的一个软件功能,我们能用更短的程序实现,或者我们的程序所采用的算法复杂度更低,或者具有更好的可扩展性,那么我们就更有竞争力,就更有可能在将来的工作竞聘中胜出!操作系统实际上也是一个软件系统,只是这个软件系统特别的复杂,所以在开发过程中隔入很多经典的设计思想和算法,如果能在我们编程时借鉴这些经典的思想和算法,就能编写出比别人优秀的程序。
因此,无论你将来是否从事操作系统的开发工作,都可以从操作系统这门课中受益匪浅。
1、对操作系统的基本概念、基本结构及运行环境有深入的认识;
2、深入到操作系统的内部,理解并掌握操作系统的基本原理、设计方法及实现技术;
3、系统级编程能力的提高;
4、思维方式的学习,权衡思想;
5、了解操作系统的演化过程、发展研究动向。
当我们知道了为什么要学习这门课之后呢,就应该明确自己的学习目标。
我给大家设立了两个级别的目标:基本目标和高级目标。
1、对操作系统的基本概念、基本结构及运行环境有深入的认识;
2、深入到操作系统的内部,理解并掌握操作系统的基本原理、设计方法及实现技术;
实际上,这两条基本目标就是要求我们对课程的主要内容熟练掌握。当然这也是我们最后考试的主要考查内容。
除了这两条基本目标以外,同学们还应该给自己设立更高级的学习目标。
一个是提高系统级编程能力。前面我们已经讲过了什么叫“系统级编程能力”,就是深入编程的能力。
与计算机领域的其他发展(如硬件系统、其他软件)一样,操作系统的每一步发展都是权衡的结果:
如果有的同学通过本课的学习,对操作系统的研究产生了兴趣,立志于从事操作系统的研发工作,还应该通过本课程的学习了解操作系统的演化过程和发展研究动向。如果谁能达到这个目标,高老师就很欣慰了。
当我们明确这门课的主要内容,以及为什么要学习这门课之后,接下来就要针对操作系统概念这门课,采用正确的学习方法。那么,这门课程有什么特点呢?
1、实践性强。因为操作系统的基本原理都是从实践中总结出来的,所以呢,操作系统是一门实践性很强的课程,它不仅要求学生掌握操作系统的理论知识,也要求培养学生实际动手能力。
2、抽象层次高。和编程语言的学习相比,操作系统概念具有较高的抽象层次。我们学习C语言时,几乎每学一条语句就能够在计算机上验证,如果只学一条Print语句,也能实现HelloWorld的功能。但是操作系统中的很多概念和原理就很难进行直观的验证了。
3、概念多、涉及面广:涉及到计算机科学的很多领域(计算机体系结构/硬件、软件设计、程序设计语言、数据结构、算法、网络)。
因此,学好操作系统概念并不是一件轻松的事。
《计算机操作系统》 汤小丹等,西安电子科技大学出版社,2014年11月;
操作系统是什么?它具体做什么?
也许你说不出操作系统是什么,但是你肯定用过操作系统。那么我们先把“什么是操作系统”这个问题放一放,看一看你用过哪个操作系统。
DOS、Windows、Turbo-C、Word、PPLive、UNIX、自己编写的一个C语言源程序、QQ、Linux
我们已经学过一些计算机课程,用过或听说过一些软件。下面这些软件中,哪些是操作系统呢?
虽然你不能概括的说出操作系统的定义,但是你知道上述软件中,只有Dos,Windows, Unix和linux是操作系统,其它的都是用户程序和应用软件。
实际存在的操作系统有很多种,如果包括过去的,有几百种,其中最常用的就是这4种。
Macintosh 是第一个商业的图形操作系统,但它的思想来自于施乐公司的思想库(Xerox, Thought Lib)。
到这里,你可能已经有了一个印象:操作系统的功能很多,很杂、很散,也很难概括。好像什么事都能做,但操作系统又不可能什么事都做,否则还要那么多应用软件干什么?操作系统不做什么事?你能列举出来吗?
硬件相关的工作是指该工作的实现代码中包含内外存及设备的物理地址,包含对设备接口寄存器和设备接口缓冲区的读写。硬件相关的代码必然随硬件的变化而变化。这样的硬件变化包括内外存物理空间大小的变化,程序和数据在内外存物理存储空间中存放位置的变化,设备数量和类型的变化,等等。但不包括CPU指令集的变化,否则所有的程序就都是硬件相关的了。我们说操作系统承担硬件相关工作,使其上的程序都是硬件无关的,是指当程序所使用的硬件发生变化(除CPU指令集以外)时,程序不必改变,人的操作更不必改变,即使CPU指令集发生改变时,代码的改变也是最小的。
一个工作是应用无关的,是指不管用计算机来做什么,不管在计算机上运行什么程序,只要使用相应硬件或相应信息就要涉及到的工作,是用户共同需要的,且工作过程是相同的,是有共性可循,却又与应用本身的问题没有直接关系的。
操作系统为用户操作和用户程序完成所有硬件相关和应用无关的工作,目的和益处是什么呢?硬件相关,必然意味着复杂繁琐、代码量很大(大到经常占代码比例分量的大部分)、代码不通用和变化大,需要用户投入大量的精力设计实现和维护修改,以及了解相应的大量硬件细节知识,因此有必要统一管理,使用户摆脱负担。应用无关,就意味着更有必要统一管理(因为普遍和频繁涉及,以及与具体应用无直接关系)和能够统一管理(因为工作过程都是相同的)。越是对计算机硬件和信息的使用中的底层的、基本的使用工作,越具有硬件相关和应用无关的特点,对用户的系统的方便、效率、安全影响越大,越需要并可能由操作系统来完成,并解决其中的效率和安全问题。
1、控制芯片NEC PD765有16条命令。
2、每一条命令向一个设备寄存器装入长度从1到9字节的特定数据(读写数据、移动磁头臂、格式化磁道、初始化、检测状态、复位、校准控制器及设备等)。
3、以READ为例:13个参数:
(1)要读取的磁盘块地址、磁道的扇区数、物理介质的记录格式、扇区间隙、 对已删除地址标识的处理方法。
(2)操作结束时,控制器芯片在7个字节中返回23个状态及出错字段。
4、软盘程序员还要注意保持步进电机的开关状态。
对多数计算机而言,在机器语言一级的体系结构上编程是很困难的,尤其是输入输出操作。例如,使用多数PC机采用的NEC PD765控制器芯片来进行软盘I/O操作。
否则就会损坏软盘。
操作系统定义