介绍一下有关操作系统的一个基本的一个概述:
- 比如说什么是操作系统?
- 为什么要学习操作系统,以及如何学好操作系统?
- 然后接下来会介绍一下,当前操作系统一些实例以及操作系统的历史,它的演变的一个过程。最后会给大家再把操作系统的结构给总结一下。
这是我们这章的内容,也希望通过第一节的介绍能够对操作系统有一个大致的了解,那随着我们进一步的讲解,大家会对操作系统有更深入的一个展开的一个全面的一个理解。
这门课实际上是操作系统的一个基本原理,会涉及到一些基本的概念。这里面主要会讲到操作系统的一些最主要的内容,比如说中断、系统调用、内存管理、进程及线程管理、还有就是调度(就是进程线程调度、CPU 调度)、还有就是结合的这个进程管理所带来的同步互斥的一问题。最后还有一部分是跟文件系统 IO 相关的一些知识,给大家做一个全面的展开,那这上面都是涉及到基本的一些概念以及原理。
那我们都知道操作系统其实它是一个很复杂的一个系统软件,所以我们希望能够把这些原理能和我们的这个具体的代码能够对应起来,所以我们还有一些是关于这个实际操作系统的一些练习。
- 那这个操作系统不是用我们现在常见的 Windows 或 Linux 这种很复杂的操作系统,而是基于一个我们教学用的一个小型的一个操作系统,叫 uCore。在这个操作系统之上我们会做一些实验,当然这些实验也不是说是大家都必须要去完成,而是说希望大家能够通过对这个 uCore 操作系统的理解,能够让原理和我们这个实际的 OS 能够建立一个联系,从而可以看到原来这些概念其实在我们操作系统里面是这么设计和实现的。从而可以让大家对这个知识理解更加透彻,这是我们一个目标。
- 同时在这里面会涉及到一些基本的一些概念或者一些故事等等,也会做一些讲解,这是操作系统课的一些情况。
在实验环节我们会围绕着操作系统是怎么构成的。
- 从最开始的准备,就是说我们怎么能够在某一个实验环境中能够把这个操系统给搭建起来,然后建立好它的这个开发环境,这是一个准备的过程。
- 第二过程就是说操作系统启动,启动完之后,对我们的计算机系统的物理内存进行管理。
- 以及进一步会去对它的这个内存作为虚拟化的管理,使得我们的程序可以有更大、更丰富的资源去利用。
- 再接下来就是怎么考虑在我们这个计算机系统里面同时可以跑多个不同的程序,当然这些程序是以线程或者是进程的形式存在。
- 有了这些进程和线程之后,我们怎么考虑能够让这些不同的这些程序能够占用 CPU 去执行,这涉及到所谓的 CPU 调度问题。
- 同时在这个调度过程中有可能多个程序或多个进程线程,它们之间访问共同的资源,就涉及到一个怎么地去协调它们,使它们能够同步互斥地来访问资源,从而可以使整个系统的正确性,或者是利用率,得到很大的一个提高或者保障,这是涉及到我们的同步互斥的一些知识。
- 最后会涉及到文件系统,其实现在用计算机的很多了,都知道要把我们的文档和我们的数据以文件的形式,甚至把我们执行程序是以文件形式,存在这个文件系统之上。那我们怎么设计文件系统,这实际是我们这个实验环节会涉及的一些内容。
这些内容是和我们的前面介绍原理都是匹配的,所以说我们这门课可以看到,分了两部分和我们通常的这个操作会有点不太一样。一部分是基本的概念原理,一部分是实验。同时希望大家能够在实验和原理概念之间搭一个桥,两个把二者有机的结合起来,从而知道为什么要这么做,以怎么这么做,这是一个学习操作系统要去学习和掌握的一个主要工作。
好,那在学习操作系统之前,我们其实还需要一些前面的知识点,有必要去了解计算机体系结构和计算机组成原理,知道这一块是怎么回事。
- 当然,你有可能是对一些抽象的CPU 有一定了解,那也可能是对具体的 CPU,比如说8086、80386、arm 等等,这些 CPU 有一定了解。那么在这门课里面我们的原理部分不会涉及具体的 CPU,但是咱们的实验环节我们是用的是一个就基于80386这么一个 CPU 来设计这个具体的操作系统的实现,这是一块内容。
- 第二部分需要去了解数据结构,因为这里面会涉及到一系列的算法,一系列数据怎么去组织管理。这一块都和我们之前的课《数据结构》有紧密的联系,如果大家对数据结构有一个比较清楚理解,那对理解操作系统在设计实验中用到的一些方法技巧会有更深刻的一个掌握。
- 第三个:既然操作系统是个软件,它必然会涉及到怎么用相应的语言来编写。就目前的操作系统来说,主要还是 c 语言和汇编语言,在这个实际的操作系统 uCore 里面主要是 c 语言,有一小部分是汇编语言,所以大家对 C 和 X86 的汇编要一定了解就 OK 了。当然在实验部分的环节会给大家就这部分内容做一部分的讲解,便于大家能够更好地去理解我们这个实验用到的这个操作系统。