文章目录
- 1. 内容摘要
- 2. 实验内容
1. 内容摘要
在这里对学习内容做一个整体上的介绍,那在这里包括我们要学习的内容,实验的内容。操作系统课涉及到计算机系统当中的资源管理,所以我们围绕着操作系统的实现来介绍相关内容,那主要分成这样几个部分:
-
第一个操作系统软件的结构。任何一个软件在设计的时候和在实现的时候,它都有自己的结构特点。那对于操作系统来说,它有什么样的结构特点?是我们在这里需要来讨论的问题。
-
第二个是中断与系统调用。这说的是操作系统这个软件,它和外界打交道的这些接口。
中断是操系统和硬件打交道的接口:操作系统在服务的过程当中,外部如果有设备有请求,比如说你敲键盘,网络有数据包来了,这时候操作系统如何对它进行响应?那这是中断里要讨论的内容。硬件上已经有了一些机制,能够对外边做一些响应,但这时候它只是做了其中第一步,比如说你敲键盘的时候,那这时候的硬件机构已经能把数据存到相应的缓冲区里头,但是缓冲区如何到应用程序里,那是操作系统需要解决的问题。
而系统调用是操作系统对上层应用提供的服务接口。也就说上层应用要想利用操作系统提供的服务来实现自己功能,那就必须使用系统调用。而在这里头,系统调用如何从用户态的应用程序里头获取用户想使用服务的类型和相应的这些输入数据,都必须从系统调用接口来,在这里系统调用的介绍,如何让用户的输入能够到系统里头来。系统输处理完的结果如何能回到用户态?
而接下来的这几个部分是我们操系统要管理的资源。
-
第一个是内存资源。也就说在计算机系统当中,由内存随机访问存储器,这部分存储能力会有很多的应用程序要使用,那如何协调各个应用对内存的使用?
可能会是说有的应用,它需要大量的内存空间来存储数据,有的应用需要的不多,那这时候对于我们操性来说需要多少?要么是应程序告诉你我需要多少,要么是你在使用的过程中动态进行调节,而这种调节和分配内存的分配和回收是我们操系统要做的事情。
-
接下来一个是操作系统需要管理用户程序的执行过程。
也就是说任何一个程序在执行,它首先需要系统给它分配它执行所需要的资源,比如说 CPU、 内存和相应要访问的这些外部设备和数据资源。那有了这些资源之后,程序开始运行,在运行过程中,这些执行的状态也是在不断变化的过程当中,它可能会占用 CPU 执行指令,也可能会由于等待用户输入而进入暂停状态,这些状态的维护就是我们这里所说的进程和线程,操作系统需要维护每一个正在执行的程序它的状态。以便于在它们执行结束之后能够回收相应的资源。这是进程管理需要讨论的问题。
-
接下来一个是处理机调度。处理机调度是说我们有多个进程在计算机系统当中交替运行,那么如果说你只有一个 CPU,或者说你的应用进程数目是大于你 CPU 数目,做不到每一个进程有一个完全独占的 CPU 来使用,那么这时候大家是交替使用 CPU 来执行指令。
那这种交替就需要有一个调度,到底一个正在执行的进程到什么时候才让出 CPU 使用权?下一个选择又是谁?那这是我们调度算法要解决的问题。
-
好,接下来一个是进程间通讯,或者叫同步互斥。这里指的是我们任何一个应用进程,它在执行的过程中它都不会是自己一个在那封闭着进行执行,不会跟外界做任何交道。我们计算机上的程序它所做到的最大的好处是由于用户输入的不同,那给出不同的处理结果,而这个处理是可以重复进行的,所以我们在这里才会有计算机程序来实现自动化的处理。那为了实现这个,计算机上的各个应用进程之间,它们是需要有一些通讯交流的,那这种交流就是我们这里的同步互斥。
也就说两个进程之间要想进行通讯,那这个通讯是在操作系统的控制下完成的,操作系统控制下如何让这种进程间的信息交流做得流畅、安全?那这是这一部分要讨论的问题。
-
而下一个文件系统是说,计算机系统当中数据大到一定程度之后,那这时候就不能简单地整一张线性的表来存这些数据,那我们必须把这个数据管理起来做持久性的保存。
而这一部分大了一定程度之后,它就变成一个系统了,在这个系统当中我们如何来组织这些文件,以便于方便用户的读写和查找?那这也是操系统要解决的问题之一。
-
最后一个是 IO 子系统,计算机系统当中 CPU 、内存这两个部分的种类相对来说比较少。而对于它所能够涉及的外设会有很多种,那基于一种不完全统计,我们能够连到 PC 机上的外部设备的种类应该是上万的。
那这些差异非常大的这些外部设备对于计算机系统来说如何连上来,实际是一个很大的挑战,那对于这一部分是由操作系统里的 IO 子系统来负责管理。我们需要把这些差异非常大的这些设备连到同一个系统上来,并且都能对它们进行高效的控制。
比如说我们键盘的速度是很慢的,那这时候两只手一起敲,一秒钟也就最多敲几十个按键。而如果说我们用的网络接口是10 G 的,那这时候它的数据量在一秒钟就是10个 GBPS,这两者之间的差异是非常大的。操作系统需要在里头提供一个尽可能统一的接口来管理尽可能范围大的这些外部设备。
从这个角度来讲,操作系统涉及到内容是非常广泛的,所以操作系统课也是一种介绍性的课程,那对每一个部分深入介绍下去都会是一个非常专门的后续课程的讨论内容。
2. 实验内容
另一个内容是实验,就基本上是围绕着我们前边的学习内容形成的8个实验:
- 实验 0 是实验环境的准备。在这里不会去讲如何使用 Linux,如何使用 Windows,但是你要想在已有操系统上来做实验,那你必须知道 Windows 和 Linux 如何使用。
而下边的这8个实验基本是围绕着我们前面内容。
-
启动和中断对应着中断和系统调用;
内存管理在这分成两个实验,物理内存和虚拟存储管理。
-
物理内存管理是负责物理存储的分配和回收。
-
虚拟存储实际是相当于说我们把物理存储的这些存储能力抽象成一个虚拟的存储界面,让用户在使用的时候,一种明显特征是说我可以用到比物理内存更大的一个存储环境。
-
而对于进程和线程,在这里分成是内核线程管理 和 用户进程管理这两个部分;
-
接下来分别是处理机调度对应的实验6 CPU调度;
-
同步互斥对应 实验7 同步与互斥;
-
文件系统对应的 实验8 文件系统。
这样的话,所有的这些学习主要内容在这里都有相应的实验与它对应起来。同时我们在这里头做的实验,它是一个相互关联的整体。在一开始的时候就给大家一个实验的基础代码,然后就往上添你的功能,你每添上去一个功能的时候,那你的这个实验系统它的处理能力就比原来会强一些,那你在做后续实验的时候有可能会用到你前边实现的功能,所以在这大家在做实验的时候一定不要说我在前面做实验的时候能通过测试就做完任务。有可能你在后边做实验的时候会发现你前面的那这个实验的代码会有问题,所以你对前面的实验要认真仔细去做,可以方便你后边加快实验进度。