概述:
操作系统是软件
操作系统是管理计算机硬件的软件
操作系统是介于计算机硬件与应用程序之间的软件
根据操作系统的不同组织形式,设计各不相同
因为操作系统庞大且复杂,因此它是分模块设计的
这一部分只要粗浅地看一遍就够了。
导论
操作系统为了不同的用途,有不同的设计方式,一些是为了高效,另一些是为了方便
本文目标:
- 提供一个对操作系统主要部件的概述
- 提供基本的计算机系统体系的概述
操作系统的功能
计算机系统大致分为:
- 计算机硬件
- 操作系统
- 系统程序与应用程序
- 用户
操作系统控制和协调各个用户的应用程序对硬件的使用
它提供一个其他程序运行的环境
在使用者即用户看来,有些操作系统的性能比资源使用率来得重要——例如游戏玩家,有些操作系统的资源使用率比性能来得重要,例如一个计算机同时共享给很多用户。也有一些操作系统根本没有用户:例如各种嵌入式设备,可以自行运作。
在计算机看来,操作系统是一个硬件资源分配器,管理各种资源请求和资源分配,保证计算机的正常运行。
操作系统是一个常驻内存的程序。
计算机系统组织
打开电源后,计算机运行一个引导程序,它位于计算机的固件中,它初始化计算机系统的所有部分。
为了运行操作系统,它需要定位操作系统内核的位置并将其装进内存。
操作系统开始运行第一个进程,例如init,并等待事件发生。
所谓事件,是通过硬件或者软件的中断实现的。
硬件可以向CPU发出信号,触发中断。
软件使用特别的操作触发中断。
CPU中断时,立刻暂停手头的工作,并转到固定的位置继续执行。
中断服务程序执行完毕后,CPU接着干没做完的事情。
中断很重要。
中断会将控制转移到一个中断处理程序,例如调用一个子程序检查中断信息,然后跳转到中断处理程序。
这是一个很快速的过程,可以使用中断处理程序的指针表来进行跳转。这种指针表又叫中断向量。
被中断的指令的地址会被保存,上下文也会被保存,在重新执行前会恢复上下文,对于被中断的指令来说,中断似乎没有发生过。
计算机程序存储在内存中。
一个典型的指令执行周期是,先从内存中获取指令,然后,解码指令,执行对操作数的操作,最后,可能会将结果存回内存。
因为内存有其局限,例如
- 内存太小
- 内存断电将失去所有内容
因此,程序将程序存在辅存中,例如硬盘,用来永久存储大量数据。
根据内存的存储速度不同,可以将计算机的存储系统按层次结构组织。详见CSAPP
在计算机中,存储器只是I/O设备的一种。事实上,通过操作系统层面的文件抽象,所有的I/O设备都有一致的接口。
键盘有很多种类,例如机械键盘、普通键盘等等,它们都可以直接接入计算机,因为计算机中有类似于键盘设备控制器之类的东西,专门负责键盘的接入,甚至可以同时支持多个键盘的接入。设备控制器的作用就是负责特定类型的设备的链接。它维护一定量的本地缓冲存储和一组寄存器。
操作系统为每一个设备控制器提供一个设备驱动程序,这个设备驱动程序的主要作为是,为不同的操作系统提供一个统一一致的接口。
设备驱动器检查它所维护的寄存器来决定它所需要采取的操作,然后开始进行数据传输。它使用中断的方式通知设备驱动程序。然后,设备驱动程序返回对操作系统的控制。
数据流动的方向是:外部->CPU->内存。或者内存->CPU->外部
这种中断驱动方式只适合少量数据移动。
使用DMA进行大量数据移动。详见CSAPP
计算机系统体系结构
计算机体系结构采用通用处理器的数量进行分类,共有:
- 单处理器系统
- 多处理器系统
- 计算机集群
多处理器系统
多处理器系统的三个主要优点:
- 增加吞吐量。就像雇更多的程序员做更多的事情一样。
- 规模经济。多处理器能共享更多的资源,更节省。
- 可靠性。一个处理器坏了,电脑还能跑。
可靠性是计算机系统很重要的东西。
刚刚好能提供支持服务的硬件的能力称之为适度退化。
超出适度退化的能力称之为容错。
多处理器系统主要有两种类型:
- 非对称多处理。每个处理器都有各自的任务,使用珠处理器进行调度。称之为主从关系。
- 对称多处理。没有主从处理器之分。所有处理器对等。(SMP)
集群
集群和多处理器的区别是,它是多个独立的系统耦合的。它的定义尚未成形。
它提供高可用性服务,即使多个系统出错,服务仍然继续。
集群可以是对称的,也可以是非对称的。
非对称集群,一台处于热备份状态,监视另一台正在运行的机器。一旦另一台机器失效,热备份主机将成为现行服务器。
对称集群,多个主机互相监视,同时运行。
操作系统结构
操作系统提供了执行程序的环境。
操作系统最重要的一点是要有多道程序处理能力。
多道程序设计通过组织作业使得CPU总有一个作业可执行,提高了CPU的利用率。
作业池:所有进入系统的作业
操作系统同时将多个任务保存在内存中,选择一个位于内存中的作业并开始执行
该作业最终可能需要等待一项耗时的与CPU无关的任务的完成,例如I/O
对于非多道程序系统,CPU会空闲
对于多道程序系统,CPU会切换到另一个作业并且执行
总而言之,只要有一个任务可以执行,CPU就绝对不会空闲
多道程序系统提供给了一个可以充分使用系统资源的环境。但是它们没有提供与计算机系统直接交互的能力(这一段看不懂)(可能是说用户不能与计算机进行交互)
分时/多任务系统是多道程序设计的延伸,CPU高速在多个作业间进行切换,用户可以在程序运行期间与之交互
分时操作系统允许多用户同时共享计算机。
每个用户只需要占用少量的CPU时间(分时系统的每个操作都较短),系统在不同用户间快速切换,给用户一种独占感。
分时与多道程序设计需要同时在存储器中保存几个作业。这些作业刚开始存储在磁盘中(主存太小了),构成作业池(所有等待分配内存的作业)。
作业调度:同时有多个作业需要进入内存,但是内存大小不够,操作系统需要从中作出选择。
CPU调度:同时有多个任务需要执行,系统必须作出选择
虚拟内存的作用:将一个执行的作业的一部分放在磁盘中。将逻辑内存与物理内存分开来,能使得程序的实际内存大于物理内存。
分时操作系统必须提供文件系统,文件系统放在磁盘里,因此也必须提供磁盘管理。
操作系统操作
现代操作系统是中断驱动的
事件总是由中断或陷阱引起的
陷阱是一种软件中断,源于出错
因为操作系统和用户共享了计算机系统,因此必须设置一些措施来,来保证一个进程的错误不会影响到其他进程
双重模式
为了确保操作系统的正常执行,必须区分操作系统代码和用户代码
至少需要两种独立的操作模式:
- 用户模式
- 内核模式
当代系统使用提供硬件支持的方式区分各种操作模式。
在计算机硬件中添加模式位来表示当前的模式。
系统进行引导的时候,硬件处于内核模式。装入操作系统后,开始进入用户模式,运行用户程序。
当用户程序执行系统调用的时候,它必须从用户模式转过来执行请求。即将控制权转交给操作系统。
一旦出现陷阱或中断,硬件就会从用户模式转入到内核模式,即操作系统获得对计算机的控制。
双重模式操作将能引起损害的机器指令作为特权指令:若在用户模式下之心特权指令,硬件认为该指令非法,不执行,并以陷阱的方式通知操作系统。
系统调用是一种进程请求操作系统执行动作的方法。
系统调用被执行后,硬件将它作为软件中断,控制权通过中断向量转交给操作系统的中断处理程序,模式位设位内核模式。
缺乏硬件支持的双重模式会产生灾难性后果。
定时器
定时器的目的是,防止用户程序陷入死循环或者不调用系统服务,并且不将控制权返回到操作系统。
可以将定时器设置为在给定时间后中断计算机。
操作系统在将控制权交给用户前,应当确保设置好定时器以便产生中断,防止用户程序运行时间过长。
用于修改定时器操作的指令是特权指令。
进程管理
处于执行中的程序被称之为进程。
进程需要一定的资源来完成任务。
单线程进程具有一个程序计数器。
多线程进程具有多个程序计数器。
进程是系统工作的单元。
其中一些是操作系统进程,另一些是用户进程。
操作系统负责:
- 创建、删除用户进程、系统进程
- 挂起、重启进程
- 提供进程同步机制
- 提供进程通信机制
- 提供死锁处理机制
内存管理
内存通常是CPU所能直接寻址和访问的唯一大容量存储器。
如果一个程序要执行,那么它必须变化成绝对地址并装入内存。
为了改善CPU的利用率以及计算机响应速度,计算机必须在内存中保存多个程序。因此产生了内存管理的需要。
内存管理有多种方案。
操作系统负责:
- 记录内存的使用情况
- 决定哪些程序进入内存
- 根据需要分配/释放内存
存储管理
文件系统管理
操作系统通过管理大容量存储器来实现文件这一概念。
当多个用户访问文件时,需要控制由什么人按照什么方式来访问文件
操作系统负责:
- 文件的创建和删除
- 文件目录的创建和删除
- 提供操作文件和目录的原语(不知道什么是原语)
- 将文件映射到二级存储上
- 在稳定存储介质上备份文件
大容量存储器管理
操作系统负责:
- 空闲空间管理
- 存储空间分配
- 硬盘调度
高速缓存
信息会被临时复制到高速缓存中,当需要使用的时候,会先检查其是否在高速缓存中。
程序员使用寄存器分配和替换算法决定哪些信息应在寄存器中而哪些应当在内存中。
绝大多数系统都会将下一个要执行的指令保存在高速缓存中,避免等待多个时钟周期来从内存中获取指令。
存储层次之间的信息移动可以是显式的,也可以是隐式的。
高速缓存到CPU和寄存器之间的数据传递为硬件功能,而磁盘到内存的数据传递需要操作系统控制。
层次存储结构中,同样的数据可能出现在不同层次的存储系统中。
例如,变量A在磁盘中,拷贝一份到内存中,再保存一份到高速缓存中,最后在寄存器中执行加一的操作,只有当从寄存器回写的时候,变量A的值才会一致。
对于多线程来说,这个过程很容易出错。
对于多处理器来说,A的副本会同时出现在多个高速缓存中,当一个高速缓存中的A的值出现了更新,马上就需要更新所有的高速缓存。这是硬件层面的问题。
I/O系统
I/O系统对操作系统隐藏了I/O的特性
它包括:
- 一个包括缓冲、高速缓存、假脱机(不知道是什么)的内存管理部分
- 一个通用设备驱动器接口
- 特定硬件设备的驱动程序。
保护与安全
系统采用了各种机制确保只有从操作系统中获得了恰当授权的进程才可以操作相应的资源。
内存寻址硬件保证一个进程仅可以在它自己的地址空间内执行
定时器确保一个进程不会一直占用CPU控制权而不进行释放
保护是一种控制进程或用户对计算机系统资源的访问的机制。
通过检测组建子系统接口的潜在错误进行保护能提高可靠性。
系统能获得足够的保护,但也可能出错或者发生不合适的访问。
安全的主要工作是防止系统不受外部或者内部的攻击
保护和安全需要系统能区分它的所有用户
绝大多数系统维护一个UID链表。
有些环境中,需要区分用户集。
这可以使用组标识的方法实现。一个用户属于一个或者多个组。
用户有时候需要升级特权。操作系统提供了各种允许省级特权的方法。
分布式系统
分布式系统是将一组物理上分开的各异的的计算机系统通过网络链接在一起。
有些操作系统将网络访问简化为一种文件访问
其他系统采用用户调用网络函数的方式。
通常,系统包括两种访问模式的组合。
专用系统
有些类型的计算机,功能有限,目的在于处理有限的计算领域
例如
- 嵌入式系统
- 多媒体系统
- 手持系统
计算环境
计算机的计算环境可以分为:
- 传统计算
- 客户机-服务器计算
- 对等计算
- 基于web的计算
传统计算,顾名思义,是传统计算
客户机-服务器计算
服务器分为计算服务器与文件服务器
- 计算服务器提供一个接口,以接受请求、执行操作,然后将结果返回
- 文件服务器提供文件系统接口,以便客户机实现对文件的各种操作
对等计算(P2P)
对等计算是分布式系统的另一种结构。
该模式下,网络中的所有节点对等,每一个都可作为客户机或者服务器。
在客户机-服务器系统中,存在服务器瓶颈问题,但是在对等系统中,可以由分布在网络中的多个节点来提供服务。
小结
- 操作系统是管理计算机硬件并提供应用程序运行环境的软件
- 内存是处理器能直接访问的唯一大容量存储区域
- 根据速度和价格,可以将不同的存储系统按层次来组织
- 计算机系统的设计分为单处理器系统、多处理器系统,其中多处理器系统中的对称多处理技术(SMP)是最普遍的多处理器设计技术
- 为了最大限度利用计算机,使用多道程序设计,不让处理器闲置。
- 操作系统使用双模式来防止用户干预系统操作,许多特权指令只能在内核模式下执行
- 进程(作业)是操作系统工作的基本单元。
- 操作系统还必须考虑保护与安全问题