说起操作系统,我想在坐的各位同学都不会陌生。因为无论我们想用计算机干什么,首先要做的就是启动操作系统,任何软件的运行都离不开操作系统的支持。

比如大家最熟悉的就是Windows操作系统。

除了Windows操作系统,还有什么其它的操作系统?

可能有的同学还接触过Linux操作系统,Apple公司的Macintosh系统。(关于Macintosh操作系统还有一个有趣的小故事,现在我先不讲,一会儿我再讲)。

我们都知道操作系统是非常重要的, 《操作系统概念》这门课也是非常重要的。

《操作系统概念》是计算机专业的主干课,同时也是一门必修课,所以我们应该认真学习这门课。现在操作系统已经成为了一门考研统考课,所以有志于考研的同学就更应该认真学习了。 在正式开始学习这门课程之前,首先让我们针对这门课程思考3个问题。

学习本门课的三个问题

  • 这门课的主要内容是什么?
  • 为什么要学习这门课?
  • 如何学习这门课?

多年的学习经验让我养成了一个习惯,就是无论学什么课之前,都要先问自己3个W问题:What, Why, How。

What就是这门课的主要内容是什么?它是讲什么的?你能不能用一两句话,简明扼要地说清楚?

清楚了这门课的主要内容之后,接下来就要思考Why,就是为什么要学这门课。我记得有一句名言叫“兴趣是最好的老师”,如果连为什么要学这门课都搞不清楚,恐怕你很难对这门课发生兴趣,那么学习起来就会非常的痛苦。

当我们为学习一门课程找到了原因之后,剩下的就是问问自已HOW了,也就是如何学习这门课。学习是一项讲究方法的工作,如果掌握了正确的学习方法,你就会事半功倍,否则可能就会落个费力不讨好。

下面,我们就针对操作系统这门课,一起思考一下这3个问题。

这门课的主要内容是什么?

操作系统的基本原理、组成结构、设计方法和实现技术。

  • 进程管理
  • 内存管理
  • 存储管理
  • I/O设备
  • 文件管理
  • 磁盘管理

操作系统概念是一门涉及较多硬件知识的计算机系统软件课程,在计算机的软、硬件课程设置上,起着承上启下的作用。这门课不是给大家讲解操作系统如何使用的一门课,而是一门关于如何设计和实现操作系统的课程。从这门课,我们可以学到操作系统的基本原理、组成结构、设计方法和实现技术。具体包括进程管理、内存管理、磁盘管理和输入输出设备的管理。

  • Process:过程,进程,对CPU的调度和分配
  • Memory:记忆,内存
  • I/O:输入输出

为什么要学习这门课?

设计操作系统或者修改现有的系统

加深对使用的操作系统的理解,有利于深入编程

用户为了开发应用程序必须与操作系统打交道。

编程时借鉴操作系统的设计思想和算法

操作系统中所用的许多概念和技巧可以推广应用到其他领域。

选择购买操作系统

无论将来是否从事操作系统的开发工作,都可以从操作系统这门课中受益匪浅!

下面,分析一下,同学们学习操作系统的现实意义。

设计操作系统或者修改现有的系统

现有的操作系统,例如微软的Windows还有待于进一步完善,通过微软不断发布的补丁就可以看到这点。其实unix和linux也是在不断地修正自身的缺陷,或者为了满足新的需求而进行升级。北京时间7月8日,Google正式宣布将开发操作系统Chrome,这意味着Google与微软之间的竞争已升级到了白热化阶段。因此,设计一个新的操作系统或者修改现有的操作系统就要求大量的,不仅掌握基本编程技术,还要精通操作系统原理的高级工程师来完成这项工作。

加深对使用的OS的理解,有利于深入编程

那么有的同学可能会问了,如果自己毕业后并不是进入微软或google这样的操作系统开发公司,那么学习操作系统对自己今后的工作是不是就没有用处呢?的确,很多同学毕业后,主要从事的工作还是在操作系统的基础上开发应用软件系统,而不是直接修改操作系统本身。但是开发应用软件系统,也有一个层次之分。深入地编程,往往是要与操作系统直接打交道的,也就是利用操作系统提供的API,调用计算机的底层功能,实现高级的软件功能。  举例:陈亮,月薪13K,赛门铁克 11K(Nod)

编程时借鉴操作系统的设计思想和算法

另外,我们知道,现在的集成开发环境已经将底层的编程技术封装得很好了。即使不是计算机科班出身的同学,只要是对软件编程感兴趣的,也可以编写出自己需要的应用程序。那么,我们这些科班出身的同学的优势在哪儿呢?如果,对于同样的一个软件功能,我们能用更短的程序实现,或者我们的程序所采用的算法复杂度更低,或者具有更好的可扩展性,那么我们就更有竞争力,就更有可能在将来的工作竞聘中胜出!操作系统实际上也是一个软件系统,只是这个软件系统特别的复杂,所以在开发过程中隔入很多经典的设计思想和算法,如果能在我们编程时借鉴这些经典的思想和算法,就能编写出比别人优秀的程序。

因此,无论你将来是否从事操作系统的开发工作,都可以从操作系统这门课中受益匪浅。

学习目标

基本目标

1、对操作系统的基本概念、基本结构及运行环境有深入的认识;

2、深入到操作系统的内部,理解并掌握操作系统的基本原理、设计方法及实现技术;

高级目标

3、系统级编程能力的提高;

4、思维方式的学习,权衡思想;

5、了解操作系统的演化过程、发展研究动向。

当我们知道了为什么要学习这门课之后呢,就应该明确自己的学习目标。

我给大家设立了两个级别的目标:基本目标和高级目标。

基本目标包括两条:

1、对操作系统的基本概念、基本结构及运行环境有深入的认识;

2、深入到操作系统的内部,理解并掌握操作系统的基本原理、设计方法及实现技术;

实际上,这两条基本目标就是要求我们对课程的主要内容熟练掌握。当然这也是我们最后考试的主要考查内容。

除了这两条基本目标以外,同学们还应该给自己设立更高级的学习目标。

一个是提高系统级编程能力。前面我们已经讲过了什么叫“系统级编程能力”,就是深入编程的能力。

与计算机领域的其他发展(如硬件系统、其他软件)一样,操作系统的每一步发展都是权衡的结果:

  • 可能性与必要性的权衡
  • 性能与代价的权衡
  • 安全与效率的权衡

如果有的同学通过本课的学习,对操作系统的研究产生了兴趣,立志于从事操作系统的研发工作,还应该通过本课程的学习了解操作系统的演化过程和发展研究动向。如果谁能达到这个目标,高老师就很欣慰了。

操作系统课程的特点:

  • 实践性强(从实践总结出原理);
  • 抽象层次高;
  • 概念多、涉及面广:涉及到计算机科学的很多领域(计算机体系结构/硬件、软件设计、程序设计语言、数据结构 算法、网络)。

当我们明确这门课的主要内容,以及为什么要学习这门课之后,接下来就要针对操作系统概念这门课,采用正确的学习方法。那么,这门课程有什么特点呢?

1、实践性强。因为操作系统的基本原理都是从实践中总结出来的,所以呢,操作系统是一门实践性很强的课程,它不仅要求学生掌握操作系统的理论知识,也要求培养学生实际动手能力。

2、抽象层次高。和编程语言的学习相比,操作系统概念具有较高的抽象层次。我们学习C语言时,几乎每学一条语句就能够在计算机上验证,如果只学一条Print语句,也能实现HelloWorld的功能。但是操作系统中的很多概念和原理就很难进行直观的验证了。

3、概念多、涉及面广:涉及到计算机科学的很多领域(计算机体系结构/硬件、软件设计、程序设计语言、数据结构、算法、网络)。

因此,学好操作系统概念并不是一件轻松的事。

如何学习这门课?那么我们应该如何把它学好呢?

  • 按时上课,认真听讲,理解原理;
  • 阅读参考书,扩展视野;
  • 阅读代码,分析实例;
  • 上机实践;
  • 记笔记,思考,讨论,提问;
  • 通过编程学习操作系统。

教材

《计算机操作系统》 汤小丹等,西安电子科技大学出版社,2014年11月;

参考书目

  • 《操作系统概念》(影印版)Operating System Concepts,Abraham SilberschatZ etc.编著,高等教育出版社,2007年3月
  • 《操作系统—内核与设计原理》 William Stallings,电子工业出版社,2003年3月;
  • 《现代操作系统》 Andrew S.Tanenbaum,机械工业出版社,1999年11月;
  • 《操作系统教程》 孟静,高等教育出版社,2001年5月;

第1章 操作系统引论

什么是操作系统?

操作系统是什么?它具体做什么?

也许你说不出操作系统是什么,但是你肯定用过操作系统。那么我们先把“什么是操作系统”这个问题放一放,看一看你用过哪个操作系统。

下面软件哪些是操作系统?

DOS、Windows、Turbo-C、Word、PPLive、UNIX、自己编写的一个C语言源程序、QQ、Linux

我们已经学过一些计算机课程,用过或听说过一些软件。下面这些软件中,哪些是操作系统呢?

虽然你不能概括的说出操作系统的定义,但是你知道上述软件中,只有Dos,Windows, Unix和linux是操作系统,其它的都是用户程序和应用软件。

实际存在的操作系统有很多种,如果包括过去的,有几百种,其中最常用的就是这4种。

操作系统举例

  • MS OS: MS DOS, MS Windows 3.x, Windows 95, Windows NT, Windows 2000,Windows XP
  • UNIX: BSD, SRV4, OSF1, SCO UNIX, AIX, Solaris, Linux
  • Novell公司:NetWare网络操作系统
  • Apple公司:Macintosh

Macintosh 是第一个商业的图形操作系统,但它的思想来自于施乐公司的思想库(Xerox, Thought Lib)。

第1章 操作系统引论

  1. 操作系统的目标和作用
  2. 操作系统的发展过程
  3. 操作系统的基本特性
  4. 操作系统的主要功能
  5. 操作系统结构设计

OS能干什么?

  • 创建目录、copy文件、format磁盘(格式化磁盘)。在DOS系统中通过DOS命令实现,在Windows中,通过鼠标来实现。
  • 可以运行某个程序或命令。在DOS系统中,运行程序的最典型的方法是在DOS命令提示符后打入程序名,Windows中则是通过双击鼠标来完成。
  • 在Windows中,可以同时运行多个程序(即多任务),比如我们在等一个文件打印完成的同时,可以编辑另一个文件,这就提高了用户效率和机器利用率。

到这里,你可能已经有了一个印象:操作系统的功能很多,很杂、很散,也很难概括。好像什么事都能做,但操作系统又不可能什么事都做,否则还要那么多应用软件干什么?操作系统不做什么事?你能列举出来吗?

OS不干什么?

  • 操作系统不做天气预报,这是由专门的天气预报软件来做的;
  • 操作系统不做房屋设计,这是由专门的建筑CAD软件来做的;
  • 操作系统不是编译程序,你用什么语言编的源程序就用相应的什么语言的编译程序;
  • ...

1.1.1 操作系统的作用

①作为用户与计算机硬件系统之间的接口。

②作为计算机系统资源的管理者。

③实现对计算机资源的抽象。

操作系统为你完成所有与硬件相关、与应用无关的工作,以给你方便、效率和安全!

硬件相关的工作是指该工作的实现代码中包含内外存及设备的物理地址,包含对设备接口寄存器和设备接口缓冲区的读写。硬件相关的代码必然随硬件的变化而变化。这样的硬件变化包括内外存物理空间大小的变化,程序和数据在内外存物理存储空间中存放位置的变化,设备数量和类型的变化,等等。但不包括CPU指令集的变化,否则所有的程序就都是硬件相关的了。我们说操作系统承担硬件相关工作,使其上的程序都是硬件无关的,是指当程序所使用的硬件发生变化(除CPU指令集以外)时,程序不必改变,人的操作更不必改变,即使CPU指令集发生改变时,代码的改变也是最小的。

一个工作是应用无关的,是指不管用计算机来做什么,不管在计算机上运行什么程序,只要使用相应硬件或相应信息就要涉及到的工作,是用户共同需要的,且工作过程是相同的,是有共性可循,却又与应用本身的问题没有直接关系的。

操作系统为用户操作和用户程序完成所有硬件相关和应用无关的工作,目的和益处是什么呢?硬件相关,必然意味着复杂繁琐、代码量很大(大到经常占代码比例分量的大部分)、代码不通用和变化大,需要用户投入大量的精力设计实现和维护修改,以及了解相应的大量硬件细节知识,因此有必要统一管理,使用户摆脱负担。应用无关,就意味着更有必要统一管理(因为普遍和频繁涉及,以及与具体应用无直接关系)和能够统一管理(因为工作过程都是相同的)。越是对计算机硬件和信息的使用中的底层的、基本的使用工作,越具有硬件相关和应用无关的特点,对用户的系统的方便、效率、安全影响越大,越需要并可能由操作系统来完成,并解决其中的效率和安全问题。

例子:软盘I/O操作

1、控制芯片NEC PD765有16条命令。

2、每一条命令向一个设备寄存器装入长度从1到9字节的特定数据(读写数据、移动磁头臂、格式化磁道、初始化、检测状态、复位、校准控制器及设备等)。

3、以READ为例:13个参数:

(1)要读取的磁盘块地址、磁道的扇区数、物理介质的记录格式、扇区间隙、 对已删除地址标识的处理方法。

(2)操作结束时,控制器芯片在7个字节中返回23个状态及出错字段。

4、软盘程序员还要注意保持步进电机的开关状态。

对多数计算机而言,在机器语言一级的体系结构上编程是很困难的,尤其是输入输出操作。例如,使用多数PC机采用的NEC PD765控制器芯片来进行软盘I/O操作。

否则就会损坏软盘。

操作系统定义

《计算机操作系统》课程学习(1)——第1章 操作系统引论相关推荐

  1. java-php-python-ssm计算机公共课程学习资源管理系统计算机毕业设计

    java-php-python-ssm计算机公共课程学习资源管理系统计算机毕业设计 java-php-python-ssm计算机公共课程学习资源管理系统计算机毕业设计 本源码技术栈: 项目架构:B/S ...

  2. java计算机毕业设计计算机实验课程学习系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计计算机实验课程学习系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计计算机实验课程学习系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目 ...

  3. java计算机毕业设计计算机公共课程学习资源管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计计算机公共课程学习资源管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计计算机公共课程学习资源管理系统源码+mysql数据库+系统+lw文档+部署 本源 ...

  4. 计算机专业课程学习顺序

    计算专业课程学习顺序                 --答同学问题 导语:下面是一个学生的私信留言. 天之骄子呃:"老师 计算机专业应该按什么顺序来学习专业知识呢 我是大一的 学了一年语言 ...

  5. 《大学计算机基础》课程学习(1)——第1章 计算机基础知识

  6. 北邮计算机学院课程学习资源汇总

    北邮计算机学院学习资源汇总 高数 [视频]bilibili宋浩(可爱又闷骚的老师,视频整体比较长,高数上.下的都是全的,讲的也很细,课的话看着一个就够了) [资料]吉米多维奇(yyds的习题书,我高数 ...

  7. 计算机操作系统(汤子瀛)习题答案 第一章操作系统导论

    第1章.操作系统导论 1.设计现代 OS 的主要目标是什么? 方便性,有效性,可扩充性和开放性. 2.OS 的作用可表现为哪几个方面? A.OS 作为用户与计算机硬件系统之间的接口: B.OS 作为计 ...

  8. 《Visual C# 程序设计》课程学习(10)——第10章 Windows 窗体应用程序开发

    10.1 Windows窗体编程基础 10.1.1 WinForms概述 #region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法 - 不 ...

  9. 操作系统学习笔记: 第二章 操作系统逻辑结构

    目录 2.1 操作系统逻辑结构 1.逻辑结构 2.逻辑结构的种类 2.2 CPU的态 1.态的分类 2.用户态和核态之间的转换 3.硬件和OS对CPU的观察 4.存储程序和数据的部件 分类 存储体系 ...

最新文章

  1. 为开发可穿戴设备 索尼收购了以色列芯片制造商
  2. 面试官:说说什么是Java内存模型?
  3. SAP MM Movement Type 503的使用
  4. FreeMarker简介及其语法
  5. export linux命令_linux 初级3 环境变量命令env、set、export、declare的区别
  6. Android 通用流行框架大全
  7. 超图三维服务学习摘要1
  8. EF 执行存储过程方法
  9. python定时爬取数据_python实现scrapy爬虫每天定时抓取数据的示例代码
  10. QTcpSocket使用QDataStream发送和保存图片文件
  11. error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
  12. java中连接字符串_Java中几种方式连接字符串的方法
  13. Hibernate【缓存】知识要点
  14. 国内主机备案是干嘛的? 国内免备案主机是真的吗?
  15. Fedora 安装 QQ音乐
  16. python把英语句子成分字母_如何标注英语句子成分?
  17. MapReduce 的基本原理
  18. only女装2011春款 only2011新款春装 only女装官网专卖
  19. 大学计算机应用基础及上机实验指导,计算机应用基础上机实验指导
  20. 网易云信携手神州信息,共同打造广东华兴银行线上视频平台

热门文章

  1. 在线升级版本:ESXI6.5升级7.0
  2. 网络基础入门之从两台电脑连接说起
  3. Android.mk文件添加调试打印信息
  4. 【SLAM十四讲--第一讲、第二讲】什么是SLAM?
  5. 7-21 部落(25 分)
  6. 获取中国各省份的名称以及该省份中的市及该市中的区
  7. 金蝶云星空常用控件 函数,SQL
  8. HDU 5775 (树状数组)
  9. 【计算机组成原理】如何理解计算机系统的层次结构?
  10. 300套商务ppt下载模板