我觉得学习某样知识的最大原动力在于,当你觉得现有知识不足以解决当前问题的时候的求知欲。为了彻底与系统底层做个了断。今天开始全面复习系统底层知识,从操作系统开始吧,到UNIX,再到虚拟机。我希望自己能把一件事情的本质,用自己的话讲出来。
一、操作系统是什么
计算机是什么?说白了,硬件加软件的集合。操作系统是什么?是操作最底层硬件的那层软件。有了操作系统,我们就无需外部输入1010这样的二进制信息让计算机处理了,这么说吧,计算机硬件是一组资源,操作系统把这些资源都封装了,让你可以更方便的使用它。
对于计算机的资源,可以分为4类,按照教科书上的说法,就是处理器、存储器、I/O设备以及信息(数据和程序),说白了,指的就是CPU、内存、输入输出设备(鼠标、键盘、显示器等等)、硬盘和硬盘上的软件。操作系统封装了计算机硬件系统,并且管理计算机的4种资源,这就是操作系统的功能。很容易理解吧。
二、操作系统发展历程
操作系统的发展历程很重要,它可以让我们意识到,技术改进最重要的作用,就是改变目前最迫切需要改变的东西。
这里三言两语介绍一下操作系统的发展历程。
(1) 人工操作方式。
传说中的纸带操作。把程序和数据用最简单的纸带记录下来,然后通过纸带输入(I/O)进计算机(内存),然后计算机运行。这时候我们可以看到,计算机I/O和信息(硬盘程序、数据)都是通过简单的纸带来存储并传送的。速度当然慢。
(2) 脱机输入/输出方式。
这个跟纸带也脱不了关系,不过是将纸带信息预先装进磁带上,然后计算机运行的时候,程序和信息从磁带调入内存。这样的速度当然大大提升了。我们可以看到,这种方式,说白了就是给计算机增加了一个简单的硬盘,程序和数据放在硬盘上,而不是纸带上。
(3) 单批道处理系统。
这是最早的操作系统了。CPU控制“监督程序”将磁带上的一个作业(程序和数据)调入内存,然后运行它,然后调用下一个作业入内存,再运行它。这样依次运行完磁带上的所有作业。系统内存中一个时刻只有一道程序在运行,CPU也只是单线程的处理完IO再处理程序这样循环。
(4) 多道批处理系统。
这是效率非常高的一种操作系统。用户提交的作业在硬盘上并排成一个队列,然后调度程序把若干作业放进内存。某个作业执行的时候,遇到IO请求,不阻塞,不让CPU空闲,而是让CPU去执行内存中的另一个作业。这样各个作业轮流执行,CPU等系统资源尽可能的保持占用。
(5) 分时系统。
这是一种多用户系统,主要特点就是多用户同时使用,每个用户都有自己的终端对计算机进行操作。分时系统采用了非常经典的时间片,即每个用户、每个作业在一个时间片内,都依次运行,并只运行一个很短的时间,这样看上去好像每个用户都独占了整个计算机一样。分时系统主要用于查询系统。
(6)实时系统。
实时系统可以看作是一种面向内部的要求更高更精确的分时系统。不过这种“分时”不一定通过时间片来控制,也可能是通过一个设定的截止时间来控制。系统内部是对多项实时任务的采集和控制。说白了,就是一种精确的多任务系统。
(7)微机操作系统。
这个就很简单啦,分别有单用户单任务操作系统(CP/M、MS-DOS等)、单用户多任务操作系统(Windows95、XP等)、多用户多任务操作系统(UNIX OS等)。
三、操作系统的结构
(1)无结构OS(第一代)
这是最早期的操作系统,仅仅追求功能和实现,无需深究。
(2)模块化结构的OS(第二代)
将OS划分为若干各自独立的模块,如进程管理模块、存储器管理模块、文件管理模块等,并将各模块划分为各自的子模块,这样不断细分,系统就有比较清晰的模块化结构。不过由于模块化结构设计中,各个模块的设计齐头并进,没有可靠的“决定顺序”,这种设计又被称为“无序模块法”。这一代OS在第一代的基础上加上了模块的划分,便前进了一大步。
(3)分层式结构的OS(第三代)
自底向上的分层设计,最底层只面向硬件,功能单一而正确,此后每层看待下层都是透明的,功能不断丰富、往高层不断抽象,高层只依赖于它的底层。这也是面向对象思想的体现。这种结构与我们熟知的网络协议体系结构非常类似。这种结构在软件设计上是非常常见的。简单说就是按层划分、不断抽象,每层只操作下一层。
(4)微内核结构的OS(现代结构OS)
微内核结构的OS将系统划分为两大部分:微内核和多个系统服务器。微内核指的是足够小的、能实现现代OS最基本功能的部分。它负责于硬件最基本的联系、与外层系统服务器通信这两大基本功能。外层系统服务器指的是操作系统内部的,将各种系统服务都抽象为一种模块化的服务器结构,用一个进程来表示,如文件服务器、进程服务器等。我们都知道,服务器的本质就是对消息的请求和响应,这十分适用于当今系统所要求的分布式处理。用一个足够简单和高效率的微内核来对各个服务器进行实际的处理,各个服务器是总体而言是模块化的,而服务器本身是建立在分层次的OS上的,这种设计模式不但可靠,而且扩展性和性能都非常优越。这种设计实在是优雅。