第一章 介绍
第1章 介绍
学习目标:
- 计算机系统有哪些常见组织形式?
- 在计算机系统中,中断interrupt的角色是什么?
- 现代的多处理器计算机系统中有哪些组件?
- 从用户模式到内核模式是如何切换的?
- 在不同的计算环境中如何使用操作系统?
- 操作系统有哪些免费开源的案例?
操作系统充当是计算机用户和计算机硬件之间的中介
- 操作系统是管理计算机硬件的软件。
- 操作系统为应用程序提供了基础。
操作系统的一个令人惊奇的方面就是如何在不同的计算环境里,实现前述两个功能。
操作系统无处不在,从包含物联网的汽车和家用电器,到智能手机、个人电脑、企业用计算机、云计算等。
为了研究操作系统在现代计算环境里的角色,首先要了解计算机硬件的组织和架构,包括CPU、内存、I/O设备、存储等。
操作系统的一个基本职责就是分配这些资源给程序。
由于操作系统大且复杂,所以必须逐个创建。
每个部分都必须是定义明确的,具有仔细定义的输入、输出和功能。
在这一章里,我们概述一个当代计算机系统的主要组成部分,及操作系统提供的功能。
除此之外,为了帮助建立本书剩余部分的基础,我们还覆盖了几个主题:在操作系统中使用的数据结构、计算环境以及开源和免费的操作系统等。
1.1节 操作系统做了什么?
从研究操作系统在整个计算机系统中的角色开始。
一个计算机系统粗略地分成四个部分:
- 硬件
硬件为整个系统提供基本的计算资源;
这里讲的硬件包括CPU、内存、输入/输出设备等; - 操作系统
操作系统控制硬件,并协调不同应用程序对硬件资源的使用; - 应用程序
应用程序定义了使用这些计算资源来解决用户的计算问题的方式;
比如文字处理器、表格、编译器、web浏览器等; - 用户
一个计算机系统是由硬件、软件和数据组成的。
在计算机系统的运行的过程中,操作系统提供了合理使用硬件资源的方式。
操作系统跟政府一样,本身不执行任何有用的功能,只是提供一个环境,其他程序可以在其中做有用的工作。
为了更全面地了解操作系统的角色,我们接下来从两个角度来研究操作系统:
- 用户角度
- 系统角度
1.1.1 用户视角
用户对计算机的看法因所使用的界面而异。
许多计算机用户坐在笔记本电脑前,或者坐在由显示器、键盘、鼠标组成的PC前。设计这样的系统要为了单个用户独占资源。目标是为了最大化用户正在执行的作业的数量。在这种情况下,设计操作系统主要是为了容易使用,顺带要考虑一下性能和安全,不考虑资源的利用率(如何共享各种硬件和软件资源等)。
随着越来越多的用户跟诸如智能手机、平板电脑等移动设备交互,这些移动设备正在取代一些台式机和笔记本电脑。这些移动设备通常是通过蜂窝或者其他无线技术连接到网络。移动计算机的用户界面通常都有一个触摸屏,用户通过按压和滑动手指来跟系统交互。许多移动设备还允许用户通过一个声音识别界面(比如Apple的Siri、小米的小爱等)跟系统交互。
还有一些计算机几乎没有用户界面,比如虽然家用设备和汽车中的嵌入式设备可能会有数字小键盘,可能会通过打开或者关闭指示灯来显示状态,但是这些嵌入式设备及其操作系统的设计主要是为了在没有用户干预的情况下运行。
1.1.2 系统视角
从计算机的角度来看,操作系统是一个跟硬件紧密关联的程序,是一个资源分配器。
计算机系统拥有许多资源,可用来解决问题,比如CPU时间、内存空间、存储空间、I/O设备等。
操作系统充当的是这些资源的管理器。面对众多甚至可能彼此冲突的资源请求,操作系统必须决定如何将这些资源分配给特定的程序和用户,以便它可以高效、公平地操作计算机系统。
从操作系统的视角来看,操作系统是一个控制各种I/O设备和用户的程序,即是一个控制程序。
操作系统要管理用户程序的执行,以防止对计算机的错误和不当使用。
操作系统特别关心对I/O设备的控制和操作。
1.1.3 操作系统的定义
我们对操作系统没有完整且合适的定义。
我们对什么是操作系统的一部分没有普遍接受的定义。
操作系统解决的问题是如何创建一个可用的计算系统。
从组成的角度来看,操作系统由内核、系统程序、中间件框架组成。
从诞生过程来看,操作系统诞生于早期用途固定的军方和政府向通用的大型功能机转变的过程中。
由于裸露的计算机硬件很难使用,因此有必要开发应用程序。但是应用程序都需要一些公共操作,比如I/O操作等。然后将控制和分配资源等公共操作整合到一起就形成了一个软件:操作系统。
为什么有各种各样的操作系统?
- 计算机由早期的军用和政府用途演变成通用的多功能大型机,催生了操作系统;
- 计算机的功能的增加以及尺寸的变小,催生了各种各样的操作系统;
截止现在,你可能已经看到:操作系统这个术语包含了很多角色和功能。造成这种情形的部分原因是计算机的用途很广,计算机的设计有很多。比如,在微波炉、汽车、轮船、飞船、家里、商业等场合中都有计算机。计算机是游戏机、有线电视调频器、工业控制系统的基础。
早期的计算机
计算机从一项确定计算机能做什么的实验开始,然后迅速转移到军事用途的固定用途系统中,比如代码破解、弹道轨迹计算等;以及政府用途,比如人口普查等;
通用的多功能大型机
当早期的计算机演变成通用的多功能大型机时,就诞生了操作系统。
在20世纪60年代,摩尔定律预测:每隔18个月,集成电路中的晶体管的数量就会翻倍。
计算机功能的增多及尺寸的缩小,导致了计算机广泛的用途和各种各样的操作系统。
计算机系统的基本目标是执行程序,使得更容易地解决用户问题。
构建计算机硬件是为了执行程序,并使得解决用户问题更容易些。
由于裸露硬件很难使用,所以需要开发应用程序。
而应用程序需要一些通用操作,比如控制I/O设备等。
将控制和分配资源等通用操作整合到一个软件中,就形成了操作系统。
我们对什么是操作系统的一部分没有普遍接受的定义。
简单点看,操作系统包括您在订购操作系统时,供应商提供给您的所有产品。
操作系统包含的特征在系统之间差异很大。比如,一些系统占用的空间不到1M,甚至没有全屏的编辑器。而其他系统则需要几G的空间和完全基于图形窗口系统。
1.2 计算机组成原理
现代的通用计算机系统由一个或多个CPU和通过公用总线连接的多个设备控制器组成,该公用总线提供组件和共享内存之间的访问(图1.2)。
每个设备控制器负责特定类型的设备(例如,磁盘驱动器,音频设备或图形显示器)。
根据控制器的不同,可能会连接多个设备。例如,一个系统USB端口可以连接到USB集线器,多个设备可以连接到该USB集线器。
设备控制器维护一些本地缓冲区存储和一组专用寄存器。设备控制器负责在其控制的外围设备与其本地缓冲区存储之间移动数据。
通常,每个设备控制器会在操作系统里有一个对应的设备驱动程序。
设备驱动程序了解设备控制器,为操作系统的其余部分提供了一致的操作设备的接口。
CPU和设备控制器可并行执行,竞争内存周期。
为了保证对共享内存的有序访问,需要一个内存控制器来同步对内存的访问。
接下来,我们将描述这样一个计算机系统的运行基础知识,重点介绍3个核心方面:依次是中断、存储结构、I/O结构。
我们从中断开始,然后讨论存储结构和I/O结构。
### 1.2.1 中断
中断为设备控制器提供了一种方式来通知设备驱动程序它已经完成了操作。
考虑一个典型的计算机操作:程序执行I/O操作。
步骤1,设备驱动程序将适当的寄存器值加载到设备控制器中。
步骤2,设备控制器检查这些寄存器的值,来确定该采取什么操作(比如,从键盘上读取一个字符)。
步骤3,设备控制器将数据从设备转移到本地缓冲区。一旦数据传输完成,设备控制器就触发一个**中断**来通知设备驱动程序:它完成了操作。
步骤4,设备驱动程序将控制权交给操作系统的其他部分:如果是读操作,则可能返回数据或者指向数据的指针。如果是其他操作,设备驱动程序返回的是状态信息,比如写操作成功完成或者设备繁忙。
#### 1.2.1.1 中断总览
中断是操作系统和硬件之间交互的关键部分,硬件通常是通过系统总线向CPU发送信号来随时出发中断。
当CPU中断时,CPU停止正在执行的操作,立即将执行转移到固定地址。
该固定地址通常包含中断服务程序所在的开始地址。
执行中断服务程序,完成后,CPU恢复被中断的计算。
中断是计算机体系中的重要组成部分。虽然每种计算机设计都有自己的中断机制,但是它们存在一些共有的功能。
1. 中断必须将控制权交给合适的中断处理程序。
实现1:调用通用例程来检查中断信息。然后例程调用特定的中断的处理程序。问题是中断发生的频率比较高,必须加速整个过程。
实现2:不使用中间的例程,间接通过指向中断服务程序的指针表来调用中断处理程序。
该指针表存储在低位内存,比如前100个位置。这些位置保存着各种设备的中断处理程序的地址。
给定中断请求,中断向量或者数组以唯一的编号为索引,来为中断设备提供中断处理程序的地址。
跟Windows和UNIX不同的操作系统是以这种方式来分发中断的。
2. 中断必须保存被中断被中断的状态信息,以便能在中断处理完成后恢复该信息。
如果中断处理程序需需要修改处理器状态,比如修改寄存器的值,则它必须显式地保存当前状态,然后在返回前恢复该状态。在处理完中断后,将保存的返回地址加载到程序计数器中,继续执行中断的计算。
中断的基本机制:
1. 设备控制器通过在中断请求线上声明一个信号来触发一个中断;
2. CPU捕获该中断,并将该中断分派给中断处理器;
3. 中断处理器通过为设备提供服务来清除中断;
需求增加:
1. 在关键处理期间能延后中断处理;
2. 有效地为设备分配合适的中断处理程序;
3. 多级中断,以便操作系统能区分高优先级和低优先级的中断,根据紧急程序来进行处理;
设备控制器使用可屏蔽中断来请求服务。
现代操作系统使用中断来处理异步事件。
设备控制器和硬件故障可触发中断。
为了使最紧急的作业能优先被处理,大部分计算机使用了中断优先级系统。
因为中断被大量用于时间敏感处理,所以有效率的中断处理才能获得良好的系统性能。
### 1.2.2 存储结构
分层存储结构
一级存储:寄存器、缓存、主内存
二级存储:非易失内存、硬盘驱动器
三级存储:光盘、磁带
两类存储
易失存储:断电内容丢失;
非易失存储:断电内容不丢失;
不同存储系统之间的主要区别是速度、大小、易失性。
计算机组成的3个关键之处:
- 中断
- 存储结构
- I/O结构
现代通用的计算机系统有什么组成?
- CPU
- 设备控制器
- 总线
中断
关键词 中断向量 中断处理程序
中断是操作系统和硬件之间交互的关键部分,硬件通常是通过系统总线向CPU发送信号来随时出发中断。
- 当CPU中断时,CPU停止正在执行的操作,立即将执行转移到固定地址。
- 该固定地址通常包含中断服务程序所在的开始地址。
- 执行中断服务程序,完成后,CPU恢复被中断的计算。
中断必须要做哪些事?
- 将控制权交给合适的中断处理程序;
- 保存被中断的状态信息;
设备控制器
关键词 组成 功能
- 设备控制器是计算机系统里的组件,是一类硬件设备。
- 每个设备控制器负责一种特定类型的设备,比如磁盘驱动、音频设备、图形显示器等。
- 设备控制器之间通过总线连接。
- 根据控制器的不同,可能会连接不同的设备,比如一个系统USB端口连接到一个USB集线器,多个设备连接到该USB集线器。
- 每个设备控制器维护一些本地缓冲区存储,及一组专用寄存器。
- 设备控制器负责在其控制的外围设备和本地缓冲区存储之间移动数据。
- 每个设备控制器会在操作系统里有一个对应的设备驱动程序。
设备驱动程序了解设备控制器,为操作系统的其余部分提供了一致的操作设备的接口。
I/O结构
I/O结构.png- 中断驱动I/O
适合少量数据传输; - DMA
适合批量数据传输; - switch