学习指南
《操作系统》是一门计算机专业基础课,它的先导课程有:《程序设计基础》、《计算机原理》(或《微机原理》)、《数据结构》等课程。它的主要内容是讲操作系统的构造原理、每个模块应完成的功能,以及实现这些功能常用的方法。学完这门课程可以使本专业的学生能够更清楚的了解到计算机内部如何将用户的作业输入到计算机,计算机又是如何在内部存储、管理以及运行(处理)这些作业,直到输出结果为止。这就涉及到了处理机如何管理、内存如何管理、I/O设备如何管理以及文件系统如何管理的问题。
由于操作系统是一个十分复杂的系统,在某种意义上,它可能是计算机当中最为复杂,也最为重要的一个软件系统,加之它是加在硬件系统上的第一层软件,所以它的编写通常是十分庞大的。与此同时,由于不同的操作系统追求的目标不同,以及为实现其目标功能所采用的方法不同,我们很难就其源代码进行分析,而只能就其共性以及原理进行定性分析,这是学习这门课程和学习计算机专业其它课程显著不同的特点之一。
正是由于这一特点,学习这门课程时,要求大家:
1、注重原理,忽略细节
操作系统虽随版本差异、功能差异、目标差异,可能不同,但每一个模块根据其近似的目标、其实现方法,还是有规律可循。学习时抓住这些方法的本质,搞清它的原理、方法的特点,而不必去细究它是如何编程实现的,具体实现的方法则应该是程序设计中的内容。
2、注重概念之间的差异
操作系统是同学们接触的计算机理论课程中概念较为多的课程之一,有相当一部分概念还是十分抽象的,例如进程、原语、事物处理、P.V操作、管程等等,学习这些概念时,先要弄清它是在什么背景下提出来的,它和其它相关概念之间的差异是什么,它的实质又是什么,不能靠死记硬背,这是学习操作系统最忌讳的,一定要在理解的基础上用自己的语言表达出来。
3、注重某些经典的算法的实现
在操作系统中,我们虽然强调了其原理和概念,但同时也存在着一些比较重要的算法设计和编程实现的问题。具体的讲,有:
⑴用P.V操作实现进程间的同步与互斥问题;
⑵用银行家算法怎样避免死锁的问题;
⑶如何检测系统发生了死锁;
⑷发送原语和接受原语的算法设计问题;
⑸如何计算某种调度算法的平均周转时间和平均带权周转时间问题;
⑹如何实现LRU(或LFU)淘汰算法;
⑺如何实现分区管理中的最先适应算法;
⑻如何实现事务管理中redo()过程和undo()过程等等。
上述这些算法,有条件的同学必须要上机编程模拟实现,否则大家的理解就不可能深刻,也无法体会这些算法的本质。
4、要善于总结归类
由于不同的操作系统很多,每种系统都有不同的特色,而我们不可能对每种操作系统都做具体的分析,所以这就要求我们在学习中对每种操作系统在某一部分实现的特色加以总结,它和其它系统的共性是什么,这一部分的特点是什么,如何实现等等,这都是学习中必须要自己下功夫总结的,只有这样,我们才能对所学的东西加深理解和记忆,考试时才能灵活作答。
5、切记不可死记硬背
前面我们已经说过,操作系统注重的是基本原理和概念,但这里的概念好多是人为总结的,并没有十分严格的定义,而我们也没有必要去追究一个定义的严密性。正因为如此,希望大家学习时,应更多的去理解,而不是死记硬背,否则把学习操作系统看成你们学习文科的某些课程的话,就大错特错了。