第一篇 基础原理篇

1. 操作系统导论

1.1 引言

操作系统是一种软件,它运行在硬件上,又为更高层的应用软件提供服务。因此,对底层硬件的了解有助于我们更深入的掌握操作系统。

1.2 计算机硬件

如果单纯从概念上理解计算机结构,可以大致理解为通过一根总线,然后将各种硬件设备挂在总线上。所有的这些设备都有一个控制器,外部设备都由这些控制器与CPU进行通信。而所有设备之间的通信均需通过总线,如下图所示:

   1.2.1 单流水线

为了提高计算机的效率,人们又设计了流水线结构(即仿照工业流水装配线),将计算机的功能部件分为多个梯级,并将计算机的每条指令拆分为同样多个步骤,使得每条指令在流水线上流动,到流水线最后一个梯级时指令执行完毕。流水线的每个梯级都可以容纳一条指令并同时执行,如下图所示:

    1.2.2 多流水线

为了进一步的提高计算机的效率,在单流水线的基础上,人们又发明了多流水线、超标量计算和超长指令

字等多指令发射机制。这些机制的发明主要是提升计算机效率(吞吐量)的同时,也极大增加了计算机的结构的复杂度,并对操作系统和编译器提出了更高的要求。

下图是一个超标量发射体系结构。这个结构有两队指令读取和编译码单元,以及三个执行单元。通过一个指令缓冲区,就可以实现多路复用(Multiplex)和反路复用(de-Multiplex),从而提高系统每个功能单元的利用率和整个系统的吞吐量。

除了指令执行单元外,计算机的另外一个重要部件是指令的存放单元,称为存储架构。存储架构包括缓存、主存、磁盘、磁带等。

1.3 计算机的根本特征

万物可以划分为两类:

原本就存在于自然界中,人类所做的只不过是发现。

本来就不存在,人类所做的是发明。

前者是称为神造事物或者自然存在的事物,后者称为人造事物。计算机学科是一个人造学科。

人造学科的4大特点:

不准确、具有相对性

从对人类活动的观察中导出

依赖于人的主观判断能力

通常符合人的直觉

1.4 程序是如何运行的?

对于绝大多数人编写程序的人来说,使用编程语言称为高级程序设计语言,如C、C++、Java等。但由于计算机并不认识高级语言编写的程序,编好的程序需要进行编译变成计算机能够识别的机器语言程序,而这需要编译器和汇编器的帮助。其次,机器语言程序需要加载到内存,形成一个运动中的程序,即进程,而这需要操作系统的帮助。进程需要在计算机芯片CPU上执行的机器语言指令需要变成能够一个个时钟脉冲里执行的基本操作,这需要指令集结构和计算机硬件的支持,而整个程序的执行过程还需要操作系统提供服务和程序语言提供的执行环境(runtime environment)。这样,一个从程序到微指令执行的过程就完成了。

所以,从上面的描述中我们可以看出:程序的运行至少需要如下4个因素:

(1)程序设计语言(C、C++、Java)

(2)编译系统(gcc,g++)

(3)操作系统(Unix,Linux,Windows)

(4)指令集结构(计算机硬件系统)

需要注意的是,程序执行过程是从高级语言编写的程序开始的。而实际并非这样。事实上,程序可能直接使用机器语言或汇编语言进行编写。用这种称为"低级"的语言编写出来的机器语言无需经过编译器的翻译就可以在计算机指令集上执行。如果在汇编语言上编写的汇编程序,则只需要经过汇编器的翻译即可加载执行。

1.5 什么是操作系统?

总的来说操作是掌控计算机局势的一个系统。具体来说操作系统是介于计算机和应用软件之间的一个软件系统,位于操作系统的下面是硬件平台,上面则是应用软件,如下图所示:


因此,当我们理解了操作系统代表的是掌控事情的系统,但是究竟掌控什么事情呢?当然是计算机上或计算机里发生的一切事情。最原始的计算机并没有操作系统,而是直接由人来掌握事情,即所谓的单一控制终端、单一操作员模式。但是随着计算机复杂性的增长,人已经不能胜任直接掌控计算机了。于是我们编写出操作系统这个“软件”来掌控计算机,将人类从日益复杂的掌控任务中解脱出来。这个掌握有着多层深远的意义。

首先,由于计算机的功能和复杂性不断的发生变化(趋向更加复杂),操作系统所掌控的事情也就越来越多,越来越复杂。同时,操作系统本身能够使用的资源也不断增加(如内存容量)。这就是早期操作系统不断改善的根本原因。

其次,既然操作系统是专门掌控计算机的,那么计算机上发生的所有事情自然需要操作系统的知晓和许可,未经操作系统同意的任何事情均可视为非法的,也就是病毒和入侵攻击所试图动作的事情。作为操作系统的设计人员,我们当然需要确保计算机不发生任何我们不知情或不同意的事情。但是人的能力是有限的,人的思维也是有缺陷的,我们设计出的系统自然不会十全十美,也会有缺陷,这就给了攻击者可乘神之机。操作系统设计人员和攻击者之间的博弈是当前驱动操作系统改善的一个重要动力。

基于上面的分析我们大体可以将操作系统下如下定义:

(1)操作系统是一个软件系统

(2)操作系统使用计算机变得更加容易使用(将人类从繁锁、复杂的对机器掌控的任务中解放出来)

(3)操作系统使计算机运作变得有序(操作系统掌控计算机上的任何事情)

总结起来就是:操作系统是掌控计算机上所有事情的软件系统

从上面的定义可以引申出操作系统的功能:

(1)替用户及其应用管理计算机上的软硬件资源。

(2)保证计算机资源的公平竟争和使用。

(3)防止对计算机资源的非法侵占和使用。

(4)保证操作系统自身正常运转。

1.6 操作系统的魔术与管理角色

1.6.1 魔术角色

魔术家的目标就是把差的东西变好,把少的东西变多,把复杂变得简单。同样对于操作系统来说也是将计算机以一个更加容易、更加方便、更加强大的方式呈现给用户。

操作系统通过进程抽象让每一个用户感觉自已有一台独立的CPU,通过虚拟内存抽象,让用户感觉物理内存空间具有无限扩展性,这就是由少变多。当然操作系统的把少变多不是无中生有,变多也不是无限多,只是针对磁盘容量的大小。

1.6.2 管理角色

操作系统是管理计算机上软硬件资源。例如,操作系统对CPU、内存、磁盘等的管理。使得不同用户之间或同一用户的不同程序之间可以安全有序的共享这些硬件资源。那怎么让用户很好地利用这些硬件资源呢?就是分块(parcel out),把硬件分块给应用程序使用。当然必须有两个关键的原则就是有效和公平,因为这是管理者的必备素质。

有效指的是不能浪费资源,公平指的是每个人拿到的资源必须相对公平。

根据管理资源的不同,操作系统具体功能如果下:

(1)CPU管理:如何分配CPU给不同应用和用户

(2)内存管理:如何分配内存给不同应用和用户

(3)外存管理:如何分配外存(磁盘)给不同应用和用户

(4)I/O管理:如何分配输入/输出设备给不同应用和用户

 除了上述资源进行管理和抽象外,操作系统作为掌控一切的软件系统,其自身必须是稳定和安全的,即操作系统自已不能出现故障。因此操作系统的设计还需包括如下两项:

(1)健壮性管理:如何保证操作系统自身的正常运作。

(2)安全性管理:如何防止非法操作和入侵。

1.7 用户程序与操作系统

 操作系统是一个程序,而用户程序也是程序,程序与程序之间有什么关系呢?无法是调用与被调用之间的关系。

那操作系统和用户程序之间到底谁是调用者,谁又是被调用者呢?答案似乎很清楚:操作系统通过虚拟机器界面为用户程序提供各种服务,用户程序在运行过程中不断的使用操作系统提供的服务来完成自已的任务。例如:

用户程序在运行过程中需要读写磁盘,这个时候就需要调用操作系统的服务来完成磁盘的读写操作;如果需要收发数据包,也需要调用操作系统的服务来完成。当调用这些服务时,控制从用户程序转移到操作系统,而操作系统在完成这些服务将控制返回给用户程序。在这种思维模式下,用户程序是主程序,而操作系统是子程序,如下图所示:

1.7 操作系统的管理范畴

  操作系统主要有两个角色:魔术师和管理者。这两者之间既有区别又有内在的联系。为了完成不同的任务,操作系统有时需要扮演魔术师,有时需要扮演管理者的角色,有时同时扮演两种角色。那么操作系统要完成的任务具体包括哪些呢?

(1)CPU管理:如何分配CPU给不同应用和用户

(2)内存管理:如何分配内存给不同应用和用户

(3)外存管理:如何分配外存(磁盘)给不同应用和用户

(4)I/O管理:如何分配输入/输出设备给不同应用和用户

1.7.1 CPU管理

 其实CPU管理就是对进程的管理。进程管理主要的目的有3个:

(1)公平:即每个程序都有机会使用CPU。

(2)非阻塞:即任何应用程序不能无休止地阻扰其它程序的正常推进。

(3)优先级:就像人类生活中的地位高低一样,地位高的比地位低的优先级高,即某些程序比另外一些程序优先级高。如果优先级高的程序开始运行,则优先级低的程序就要让出资源。

1.7.2 内存管理

 内存管理主要是管理缓存、主存、磁盘等存储介质所形成的内存架构。为了此目的,操作系统的设计人员发明了如下两个概念:

(1)虚拟地址空间:即将物理内存(缓存 和主存)扩充到外部存储介质(磁盘、光盘、磁带)上。这样内存的空间就大大地增加了,能够运行的程序的大小也大大地增加了。

(2)共享物理内存:即让很多程序共享同一个物理内存,当然这需要对物理内存进行分割和保护,不让一个程序访问另一个程序所占的内存空间,也就是常说的不能越界。

1.7.3 外存管理

外存管理通常也称为存储管理,也就是众所周知的文件系统,文件系统的主要目的将磁盘变成一个很容易使用的存储媒介以提供给用户使用。这样在访问磁盘时无须了解磁盘的属性或数据在磁盘上的精准位置,诸如:磁道、磁柱、扇面等信息。当然文件系统还可以建立在光盘和磁带上,只是使用最为频繁的文件系统以磁盘为介质。

1.7.4 I/O管理

I/O管理通常也称为设备管理,也就是输入和输出的设备。I/O管理的目的有两个:

(1)屏蔽差异性:用户以同样的方式访问不同的设备,从而降低编程的难度。

(2)提供并发访问:即将那些看上去并不具备共享特性的设备(如:打印机)变得可以共享。

1.7.5 批处理任务

所谓批处理就是提供一种无需人机交互的程序运行模式。有时候我们不需要人来交互,就交给计算机批处理。其主要的目的是达到吞吐量最大化,单位时间内完成的任务最多。

综合上述的分析,我们可以将操作系统的核心功能主要包含5个方面,如下图所示:

当然,在真实的操作系统里,上述5个核心部件不一定界限分明,甚至它们可能不在同一个态势下运行。下图是参考Windows操作系统简化了的结构:


2. 操作系统历史

2.1 第一阶段:状态机操作系统(1940年以前)

       所谓状态机操作系统实际算不上是我们现在通常所定义的操作系统,而是一种简单的状态转换程序:根据特定的输入和现在特定状态进行状态转换而已。这种操作系统运行在英国人巴贝斯(Babbes)想象中的自动机中,这是计算机处在萌芽时期出现的操作系统。

2.2 第二阶段:单一操作员单一控制端操作系统(20世纪40年代)

SOSC(Single Operator,Single Console)操作系统设计的目的是满足基本功能,并提供人机交互。这种操作系统下,任何时候只能做一件事情,即不支持并发和多道程序运行。操作系统本身是一组标准库函数而已。操作系统本身并不自我运行,而是等待操作员输入命令再运行。用户想要什么服务,就直接在命令行键入代表该服务的对应操作系统库函数名(文件名)即可。这种操作系统的资源利用率很低:你输入一个命令就执行一个库函数,拔一下就动一下。当操作员在思考或进行输入时,计算机则安静地等待。当然,从人的角度来看,效率并不低,你键入什么,计算机就立即执行什么。但从机器的角度考虑,因为时刻都等着人相对较慢的动作,效率显然就太低了。

这个时候的代表机型为美国宾夕法尼亚大学与其它机构合作制作的ENIAC计算机。刚制造出来的时候,谁都不知道计算机是怎么回事,所以没有操作系统的整体概念,唯一想到的就是提供一些标准命令供用户使用,这些标准命令集合就构成了我们原始操作系统SOSC。

由于这个时代的计算机很稀少,整个世界也就几台,而人却不是,提高计算机的效率就变得非常的重要了。

2.3 第三阶段:批处理操作系统(20世纪50年代)

为了提高SOSC的操作效率,在仔细考察了SOSC后,人们发现,SOSC之所以低下,是因为计算机总是在等待人的下一步动作,而人的动作总是很慢。因此,人们觉得如果去掉等待人的时间,即让所有的人先想好自已要运行的命令,列成一个清单,打印在纸带上,然后交给一个工作人员来一批一批的处理,效率不就提高了吗?所以就这样形成了批处理操作系统。

批处理操作系统的代表主要有:IBM的1401和7094,通过减少人机交互的时间达到CPU和输入输出利用率的改善。其过程是:

1)用户将自已的程序编在卡片或纸带上,交给计算机管理员处理。

2)管理员在收到一定数量的用户程序后,将卡片和纸带上的程序和数据通过IBM1401机器读入,并写到磁带上,这样每个盘磁带通常会含有多个用户的程序。

3)计算机操作将磁带加载到IBM 7094上,一个一个地运行用户的程序,运行的结果写到另外一个磁盘上。

4)所有的用户程序运行结束后,将存在结果的磁盘取下来,连到IBM 1401机器上打印结果,然后将打印结果交给各个用户。

2.4 第四阶段:多道批处理操作系统(20世纪60年代)

2.5 第五代之一:分时操作系统(20世纪60年)

2.6 第五代之二:实时操作系统(1980年以后)

2.7 第六代:现代操作系统(1980年以后)

在20世纪80的代年期,计算机工业获得了井喷式的发展。计算机和操作系统领域均进入了一个百花争鸣的时代。工作站和个人机的出现,使得计算机大为普极。这个时候的操作系统代表主要有:DOS,Windows,Unix,Linux和各种操作系统,如VM,MVS,VMS等。

2.8 操作系统的演变过程

2.9 操作系统的未来发展趋势

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容