操作系统导论
导论
操作系统做什么
操作系统是作为计算机和计算机用户之间的中介的程序。操作系统的目的是为用户提供方便且有效地执行程序的环境。
计算机系统可以大致分为4个组成部分:计算机硬件,操作系统,系统程序与应用程序和用户。
硬件,如中央处理单元(central processing unit,CPU)、内存(memory)、输入输出设备(input/output devices,I/O devices),为系统提供基本的计算资源。应用程序规定了用户按何种方式使用这些资源。操作系统控制和协调各用户的应用程序对硬件的使用。
计算机系统组织
计算机系统操作
现在通用计算机系统由一个或多个CPU和若干设备控制器通过共同的总线相连而成,该总线提供了对共享内存的访问。
每个设备控制器负责一种特定类型的设备(如磁盘驱动器,音频设备,视频显示器)。CPU与设备控制器可以并发工作,并竞争内存周期。为了确保对共享内存的有序访问,需要内存控制器来协调对内存的访问。
当打开电源或重启时,计算机开始运行,它需要运行一个初始化程序。该初始化程序或引导程序(bootstrap program)比较简单,通常位于ROM或EEPROM中,称为计算机硬件中的固件。它初始化系统中的所有部分,包括CPU寄存器,设备控制器和内存内容。引导程序必须知道如何装入操作系统并开始执行系统。为了完成这一目标,引导程序必须定位操作系统内核并把它装入内存。接着,操作系统开始执行第一个进程如init,并等待事件的发生。
事件的发生通常通过硬件或软件中断(interrupt)来表示。硬件可随时通过系统总线向CPU发出信号,以触发中断。软件通过执行特别操作如系统调用(system call)也称为监视器调用(monitor call)也能触发中断。
当CPU中断时,它暂停正在做的事并立即转到固定的位置上继续执行。该固定位置通常是中断服务程序开始位置的地址。中断服务程序开始执行,在执行完后,CPU重新执行被中断的计算。时间线路如下:
中断时计算机结构的重要部分。每个计算机设计都有自己的中断机制,但是有些功能是共同的。中断必须将控制转移到合适的中断处理程序。处理转移的简单方法是调用一个通用子程序以检查中断信息。接着,该子程序会调用相应的中断处理程序。
处理中断要快,由于只有少量的预定义的中断,所以可使用中断处理子程序的指针表。这样通过指针表可间接调用中断处理子程序,而不需要通过其他中间子程序。通常,指针位于低地址内存(前100左右的位置)。这些位置包含各种设备的中断处理子程序的地址。这种地址的数组或中断向量(interrupt vector)可通关过唯一设备号来索引(对于给定的中断请求),以提供设备的中断处理子程序的地址。
中断体系结构也保存被中断指令的地址。许多旧的设计简单在固定位置中(或在可用设备号来索引的地址中)保存中断地址。更为现代化的结构将返回系统堆栈中的地址。如果中断处理程序需要修改处理器状态,如修改寄存器的值,它必须明确地保存当前状态并在返回之前恢复该状态。在处理中断之后,保存的返回地址会装入程序计数器,被中断的计算可以重新开始,就好像中断没有发生一样的。
存储结构
计算机程序必须在内存(或随机访问内存(random access memory,RAM)中以便于运行。内存是处理器可以直接访问的唯一大容量存储区域(数兆到数千兆)。它通常是用被称为动态随机访问内存(dynamic random access meimory,DRAM)的半导体技术来实现的,是一组内存字的数组,每个字都有其地址。通过对特定内存地址执行一系列load或store指令实现交互。指令load能将内存中的字移到CPU的寄存器中,而指令store能将寄存器的内容移到内存。除了显示使用load和store外,CPU可自动从内存中装入指令来执行。
一个典型指令执行周期(如冯诺依曼体系结构上执行时)首先从内存中获取指令,并保存在指令寄存器(instruction register)中。接着指令被解码,并可能导致从内存中获取操作数或将操作数保存在内部寄存器中。在指令完成对操作数的执行后,其结果可以存回到内存。注意内存单元只看见内存地址流,它并不知道它们是如何产生的(通过指令计数器、索引、间接、常量地址等),或它们是什么地址(指令或数据)。相应地,可忽视程序如何产生内存地址,只对程序运行所生成的地址序列感兴趣。
存储设备的层次结构如下:
I/O结构
通用计算机系统由一个CPU和多个设备控制器组成,它们通过共同的总线连接起来。每个设备控制器负责特定类型的设备,可有多个设备与其相连。例如,SCSI(small computer system interface)控制器可有7个或更多的设备与之相连。设备控制器维护一定量的本地缓冲存储和一组特定用途的寄存器。设备控制器负责在其所控制的外部设备与本地缓冲存储之间进行数据传递。通常,操作系统为每个设备提供一个设备驱动程序。这些设备驱动程序理解设备控制器,并提供一个设备与其余操作系统的统一接口。
DMA(direct memory access,直接内存访问)是为了解决大块的数据移动,在为这种I/O设备设置好缓冲、指针和计数器后,设备控制器能在本地缓冲和内存之间传送一整块数据,而无需CPU的干预。每块只产生一个中断,来告知设备驱动程序操作已完成,而不是像低速设备那样每个字节产生一个中断。当设备控制器在执行这些操作的时候,CPU可以去完成其他工作。
一些高端的系统采用交换而不是总线结构。在这些系统中,多个部件可以与其他部件并发对话,而不是在公共总线上争夺周期,此时DMA更为有效。
计算机系统体系结构
单处理器系统
多处理器系统
多处理器系统(也称为并行系统parallel system)或紧耦合系统(tightly coupled system)。这类系统有多个紧密通信的CPU,它们共享计算机总线,有时还有时钟,内存和外设等。
多处理器有三个主要优点:增加吞吐量、规模经济、增加可靠性
现在使用的多处理系统主要有两种类型。非对称处理和对称处理
非对称处理(asymmetric multiprocessing):即每个处理器多有各自特定的任务。一个主处理器控制系统,其他处理器或者向主处理器要任务或做预先定义的任务。这种方案称为主-从关系。主处理器调度从处理器并安排工作。
对称多处理(symmetric mutiprocessing,SMP):每个处理器都要完成操作系统的所有任务。SMP意味着处理器对等,处理器之间没有主-从关系。
刀片服务器(blade server):将多处理器版,I/O板和网络板全部置于同一底板上。它和传统多处理器系统的不同在于,每个刀片处理器独立启动并运行各自的操作系统。
集群系统
多CPU系统的另一种类型是集群系统(clustered system)。与多处理系统一样,集群系统将多个CPU集中起来完成计算任务。然而,集群系统与多处理器系统不同,它是有两个或多个独立的系统耦合起来的。集群计算机共享存储并通过局域网络连接或更快的内部连接。
操作系统结构
多道程序设计:多道程序设计通过组织作业(编码或数据)使CPU总有一个作业可执行,从而提高CPU的利用率。操作系统同时将多个任务保存在内存中。
该作业集可以是作业池中作业集的子集(作业池中包括所有进入系统的作业),这是因为可同时保存在内存中的作业数要比可在作业数少。操作系统选择一个位于内存中的作业并开始执行。最终,该作业可能必须等待另一个任务如I/O操作的完成。对于非多道程序系统,CPU就会空闲;对于多道程序系统,CPU会简单地切换到另一个作业并执行。当该作业需要等待时,CPU会切换到另一个作业。
操作系统操作
现代操作系统是由中断驱动的,如果没有进程要执行,没有I/O设备要服务,也没有用户请求要响应,操作系统会静静地等待某件事件的发生。事件总是由中断或陷阱引起的。陷阱(或异常)是一种软件中断,源于出错(如除数为零或无效的存储访问),或源于用户程序的一个特别请求(完成操作系统服务)。这种操作系统的中断性定义了系统的通用结构。对每一种中断,操作系统中不同的代码决定了将要采取的动作。中断服务程序被用来处理中断。
双重模式操作
操作系统至少需要两种独立的操作模式:用户模式(user mode)和监督程序模式(monitor mode)(也称为管理模式(supervisor mode)、系统模式(system mode)或特权模式(privileged mode))。在计算机硬件中增加一个称为模式位(mode bit)的位以表示当前模式:监督程序模式(0)和用户模式(1)。有了模式位,就可区分为操作系统所执行的任务和用户所执行的任务。当计算机系统表示用户应用程序正在执行,系统处于用户模式。然而,当用户应用程序需要操作系统的服务(通过系统调用),它必须从用户模式转换过来执行请求
系
系统引导时,硬件开始处于内核模式。接着,装入操作系统,开始在用户模式下执行用户进程。一旦出现陷阱或中断,硬件会从用户模式切换到内核模式(即模式位设为0)。因此,只要操作系统获得了对计算机的控制,它就处于内核模式。系统在将控制交还给用户进程时会切换到用户模式(将模式位设为1)。
双重模式操作提供了保护操作系统和用户不受错误用户程序影响的手段。其实现方式为:将能引起损害的机器指令作为特权指令(privileged instruction)。如果在用户模式下试图执行特权指令,那么硬件并不执行指令,而是认为该指令非法,并将其以陷阱的方式通知操作系统。
转换到用户模式就是一个特权指令,其他的例子包括I/O控制、定时器管理和中断管理。
最初的控制发生在操作系统中,在此指令以内核模式来执行。当控制权转到一个用户应用程序后,模式变为用户模式。最后,通过中断、陷阱或系统调用将控制权返回给操作系统。
系统调用为用户程序请求操作系统代表用户程序完成预留给操作系统的任务提供了方法。系统调用可以采用多种途径,具体采用哪种途径取决于由下层处理提供的功能。不管哪种途径,它都是一种进程请求操作系统执行动作的方法。系统调用通常采用陷阱到中断向量中的一个指定位置的方式。该陷阱可以由普通trap指令来执行。
当系统调用被执行时,硬件会将它作为软件中断。控制权会通过中断向量转交到操作系统的中断处理程序,模式位设置成内核模式。系统调用服务程序是操作系统的一部分。内核检查中断指令以确定发生了什么系统调用:参数表示用户程序请求什么类型的服务。请求所需的其他信息可通过寄存器、堆栈或内存(内存的指针柯传递给寄存器)来传递。内核检查参数是否正确和合法,再执行请求,然后将控制返回到系统调用之后的指令。
定时器
必须确保操作系统能维持对CPU的控制,也必须防止用户程序陷入死循环或不调用系统服务,并且不将控制权返回到操作系统。为了实现这一目标,可使用定时器(timer)。可将定时器设置为给定时间后中断计算机,时间段可以是固定(例如1/60s)或可变的(例如,1ms-1s)。可变定时器(variable timer)一般通过一个固定速率的时钟和计数器来实现。操作系统设置计数器,每经过一个时间周期,计数器都要递减,当计数器的值为0时,产生中断。例如,对于10位的计数器和1ms精度的时钟,可允许在1-1024ms的时间间隔内产生中断,时间步长为1ms。
操作系统在将控制权交给用户前,应确保设置好定时器以便产生中断。如果定时器产生中断,那么控制权会自动交给操作系统,而操作系统可以将中断作为致命错误来处理,也可以给予用户更多的时间,显然,用于修改定时器的指令时特权指令。
因此,可以使用定时器来防止用户程序运行时间过长。一种简单技术是程序所允许执行的时间来初始化计数器。定时器每秒产生一次中断,计数器相应减1.只要计数器的值为正,控制就返回到用户程序。当计数器的值为负时,操作系统会中止程序执行,因为它超过了所赋予时间的限制。
进程管理
程序在未被CPU执行之前不会做任何事。如前面提到过的,处于执行中的程序称为进程。
进程需要一定的资源(包括CPU时间,内存,文件,I/O设备)以完成其任务。这些资源可以在进程创建时分配给进程,也可以在执行进程时分配给进程。除了在创建时得到各种物理和逻辑资源外,进程还可以接受传输过来的各种初始化数据(输入)。当进程中止时,操作系统将收回所有可再用的资源。
程序本身并不是进程,程序是被动的实体,如同存储在磁盘上的文件内容,而进程是一个活动的实体。单线程进程具有一个程序计数器来明确下一个执行的指令。这样一个进程的执行必须是连续的。CPU一个接着一个地执行进程的指令,直至进程终止。再者,在任何时候,最多只有一个指令代表进程被执行。因此,尽管两个进程可能与同一个程序相关联,然而这两个进程都有其各自的执行顺序。多线程程序具有多个程序计数器,每一个指向下一个给定线程要执行的指令。
进程是系统工作的单元。系统由多个进程组成,其中一些是操作系统进程(执行系统代码),其余的是用户进程(执行用户代码)。所有这些进程可以潜在地并发执行,如通过在单CPU上采用CPU复用来实现。
操作系统负责下述与进程管理相关的活动:
创建和删除用户进程和系统进程
挂起和重启进程
提供进程同步机制
提供进程通信机制
提供死锁处理机制
内存管理
内存是现代计算机系统操作的中心。内存是一个大的字节或字的数组,其大小从数十万到数十亿。每个字节或字都有其自己的地址。内存是可以被CPU和I/O设备共同快速访问的数仓库。中央处理器在获取指令周期时从内存中读取指令,而在获取数据周期时对内存的数据进行读出或写入。内存通常是CPU所能直接寻址和访问的唯一大容量存储器。
如果一个程序要执行,那么它必须先变换成绝对地址并装入内存。随着程序的执行,进程可以通过产生绝对地址来访问内存中的程序指令和数据。最后,程序终止,其内存空间得以释放,并且下一个程序可以装入并得以执行。
为了改善CPU的利用率和计算机对用户的相响应速度,通用计算机必须在内存中保留多个程序,从而产生对内存管理的需要。内存管理有多种不同的方案。这些方案反映出各种各样的方法,所有特定算法的有效率取决于特定环境。对于某一特定系统的内存管理方法的选择,必须考虑许多因素—尤其是系统的硬件设计。每个算法都要求特定的硬件支持。
操作系统负责下列有关内存管理的活动:
记录内存的哪部分正在被使用及被谁使用
当有内存空间时,决定哪些进程可以转入内存
根据需要分配和释放内存空间
存储管理
为了便于使用计算机系统,操作提供了统一的逻辑信息存储观点。操作系统对存储设备的物理属性进行了抽象,定义了逻辑存储单元,即文件。操作系统将文件映射到物理介质上,并通过这些存储介质访问这些文件。
文件系统管理
文件管理是操作系统最为常见的组成部分。计算机可以在多种类型的物理介质上存储信息。磁带,磁盘和光盘是最常用的介质。这些介质都有自己的特点和物理组织。每种介质通过一个设备来控制,如磁盘驱动器或磁带驱动器等,它们都有自己的特点。这些属性包括速度,容量,数据传输率和访问方法(顺序或随机)。
文件是由创建者定义的一组相关信息的集合。通常,文件表示程序(源程序和目标程序)和数据。数据文件可以是数值的,字符的,字符数值或二进制的。文件可以没有格式,也可以有严格格式。
操作系统通过管理大容量存储器,如磁盘和磁带及控制它们的设备,来实现文件这一抽象概念。而且,文件通常组成目录以方便使用。最后,当多个用户可以访问文件时,需要控制由什么人及按什么方式(例如,读,写,附加)来访问文件。
操作系统负责下列有关文件管理的活动:
创建和删除文件
创建和删除目录来组织文件
提供操作文件和目录的原语
将文件映射到二级存储上
在稳定存储介质上备份文件
大容量存储器管理
由于内存太小不能容纳所有数据和程序,再加上掉电会失去所有数据,计算机系统必须提供二级存储器(secondary storage)以备份内存。绝大多数现代计算机系统都采用硬盘作为主要在线存储介质来存储程序和数据。操作系统负责下列有关硬盘管理的活动:
空闲空间管理
存储空间分配
银盘调度
高速缓存
高速缓存是计算机系统的重要概念之一。信息通常保存在一个存储系统中(如内存)。当使用它时,它会被临时地复制到更快的存储系统—高速缓存中。当需要特定信息时,首先检查它是否在高速缓存中。如果是,可直接使用高速缓存中的信息。否则,使用位于内存中的信息,同时将其复制到告诉缓存中以便下次再用。
另外,内部可编程寄存器(如索引寄存器)为内存提供了高速缓存。程序员(或编译程序)使用寄存器分配和替换算法以决定哪些信息应在寄存器中而那些应在内存中。有的高速缓存完全是由硬件实现的。绝大多数系统都有指令高速缓存以保存下一个要执行的指令。没有这一高速缓存,CPU将会等待多个时钟周期以便从内存中获取指令。基于类似原因,绝大多数系统在其存储层次结构中有一个或多个高速缓存。
由于高速缓存大小有限,所以高速缓存管理(cache management)的设计很重要。对高速缓存大小和置换策略的仔细选择可以极大地提高性能。
内存可用做外存的告诉缓存,因为外存数据必须先复制到内存才可使用,数据在移至外外存保存前也必须保存在内存中。永久地驻留在外存上的文件系统数据,可以出现在存储系统的许多层次上。
存储层次之间的信息移动可以是显式的,也可以是隐式的,这取决于硬件设计和所控制的操作系统软件。例如,高速缓存到CPU和寄存器之间的数据传递通常为硬件功能,无需操作系统的干预。另一方面,磁盘到内存的数据传递通常是由操作系统控制的。
对于层次存储结构,同样的数据可能出现在不同层次的存储系统上。例如,整数A位于文件B中且需要加1,而文件B位于磁盘上。加1操作这样进行:先发出I/O操作以将A所在的磁盘块调入内存。之后,A被复制到告诉缓存和硬件寄存器。这样A的副本出现在许多地方:磁盘上,内存中,高速缓存中,硬件寄存器中。一旦加法在内部寄存器中执行后,A的值在不同存储系统中会不同。只有在A的新值从内部寄存器写回磁盘时,A的值才会一样。
对于同时只有一个进程执行的计算环境,这种安排没有困难,因为对A的访问总是在层次结构的最高层进行。不过,对于多任务环境,CPU会在进程之间来回切换,所以需要十分谨慎以确保当多个进程访问A时,每个进程都得到最近更新的A值。
对于多处理器环境,这种情况变得更为复杂,因为每个CPU不但有自己的内部寄存器,还有本地高速缓存。对于这种环境,A的副本会同时出现在多个高速缓存中。由于多个CPU可并发执行,必须确保在一个高速缓存中对A值得更新马上反映在所有其他A所在的高速缓存中。这称为高速缓存一致性(cache coherency),这通常是硬件问题(在操作系统级别之下处理)。
对于分布式环境,这种情况变得异常复杂。在这种情况下,同一文件的多个副本会出现在多个分布在不同场所的计算机上。由于各个副本可能会被并发访问和更新,所以必须确保当一处的副本被更新时,所有其他副本应尽可能快地加以更新。
I/O系统
操作系统的目的之一在于对用户隐藏具体硬件设备的特性。例如,在UNIX系统中,I/O子系统对操作系统本身隐藏了I/O设备的特性。I/O子系统包括如下几个部分:
一个包括缓冲,告诉缓存和假脱机的内存管理部分
通用设备驱动接口
特定硬件设备的驱动程序
只有设备驱动程序知道它被赋给的特定设备的特性。
保护和安全
如果计算机系统有多个用户,并允许多个进程并发执行,那么必须系统地管理对数据的访问。为此,系统采用了各种机制确保只有从操作系统中获得恰当授权的进程才可以操作相应的文件,内存段,CPU和其他的资源。例如,内存寻址硬件确保一个进程仅可以在它自己的地址空间内执行,定时器确保没有进程能一直占有CPU控制权而不释放它,用户不能访问设备控制寄存器,因而保护了各种外部设备的完整性。
保护是一种控制进程或用户对计算机系统资源的访问的机制。这个机制必须为强加控制提供一种规格说明方法和一种强制执行方法。
通过检测组件子系统接口的潜在错误进行保护能够提高可靠性。早期检测接口错误通常能防止已经发生故障的子系统影响其他健康的子系统。一个未受保护的资源无法抵御未授权或不合格用户的访问(或误用)。面向保护的系统会提供辨别授权使用和未授权使用的方法。
系统可以获得足够的保护,但也会出错和发生不适合的访问。考虑一个授权信息被偷窃的用户(向系统标识自己的方法),其数据可能被复制或删除,但文件和内存保护仍在运行。安全(security)的主要工作是防止系统不受外部或内部攻击。这些攻击范围很广,包括病毒和蠕虫、拒绝服务攻击(使用所有的系统资源以致合法的用户不能使用)、身份偷窃、服务偷窃(未授权的系统使用)。在有些系统中,阻止这些攻击需要考虑操作系统的功能,而另外一些系统则采用策略或者软件阻止方法。由于安全事件急剧增长,操作系统的安全问题成了快速增长的研究和实现的领域。
保护和安全需要系统能区分它的所有用户。绝大多数操作系统维护一个用户和相关用户标识(user ID,UID)的链表。在Windows NT中,这称为安全ID(Secure ID,SID)。这些数值对每个用户来说是唯一的。当用户登录到系统,鉴别步骤会确定用户的合适ID。
有些环境中,需要区分用户集而不是单个用户。例如,UNIX系统上一个文件的拥有者可能被允许对文件进行所有操作,而有些选定的用户只能读文件。为此,需要定义一个组名以及属于该组的用户集。组功能可用系统范围内的组名列表和组标识(group idendity)来实现。一个用户可以属于一个或多个组,这取决于操作系统设计方法。用户的组ID也包括在每一个相关的进程和线程中。
在一般的系统使用中,用户ID和组ID就足够了。但用户有时需要升级特权(escalate privilege)来获取对一个活动的额外特权。例如,该用户可能需要访问受限的设备。操作系统提供了各种允许升级特权的方法。例如,在UNIX系统中,程序的setuid属性使得程序以文件所属用户的ID来运行,而不是当前的用户ID。进程用此有效UID(effective UID)运行,直至它关掉特权或终止。
计算环境
随着PC变得更快、更强大和更便宜,设计者开始抛弃中心系统结构。与中心系统相连的终端开始被PC所取代。相应地,过去为中心系统所处理的用户接口功能也被PC所取代。因此,今天中心系统成为服务器系统(server system)以满足客户机系统(client system)的请求。这种称为客户机-服务器(client-server)系统的专有分布式系统
服务器系统可大致分为计算服务器和文件服务器:
计算服务器系统提供了一个接口,以接收用户所发送的执行操作的请求(如读数据),执行操作,并将操作结构返回给客户机。运行响应客户机数据请求的数据库的服务器就是一个这样的例子。
文件服务器系统提供文件系统接口,以便客户机能创建、更新、访问和删除文件。Web服务器就是该系统的一个例子,它将文件传送到正在运行Web浏览器的客户机。
分布式系统的另一种结构是对等(p2p)系统模式。采用该模式,客户机和服务器彼此并不区别,而是系统中的所有节点都是对等的,每一个都可作为客户机或服务器,这取决于它是请求还是提供服务。对等系统对于传统的客户机-服务器系统提供了更好的性能。在客户机-服务器系统中,存在服务器瓶颈问题;但在对等系统中,可以由分布在网络中的多个节点来提供服务。
为了加入对等系统,节点必须先加入对等网络。一旦节点加入对等网络,它就可以开始向网络中的其他节点提供服务或请求服务。
当一个结点加入网络时,它用网络集中查询服务来注册它的服务。任何需要某种服务的节点首先与此集中查询服务联系,以决定哪个节点能提供此服务。剩下的通信就在客户机和服务者之间进行。
作为客户机的对等行动必须首先通过向所有网络中的其他节点广播服务请求,以发现哪个节点提供所需的服务。提供该服务的节点(或多个节点)响应发出此请求的对等节点。为了支持该方法,必须提供一种发现协议(discovery protocol),以允许网络上的对等节点能被发现服务。
Web计算的实现也导致了新一类设备的出现,如负载平衡器(load balancer),它能在一组相似的服务器之间实现负荷分配。操作系统过去只能作为Web客户机,现在也发展成为即可做Web服务器,又可作为客户机,通常因为用户需要支持Web驱动,所以增加了设备的复杂性。
分布式系统
分布式系统是将一组物理上分开来的,各种可能异构的计算机系统通过网络连接在一起,为用户提供系统所维护的各种资源的计算机集合。访问共享资源增加了计算速度、功能、数据可用性及可靠性。有些操作系统将网络访问简化为一种文件访问,网络细节包含在网络接口驱动程序中,而其他的系统采用用户调用网络函数的方式。通常,系统包含两种模式组合—–如FTP和NFS。生成分布式系统的协议通常会影响系统的效用和普及程序。
网络,简单来说,就是两个或多个系统之间的通信路径。分布式系统通过网络提供功能。网络随所使用的协议,节点距离,传输介质的变换而不同。TCP/IP是最常用的网络协议,ATM和其他协议也有所应用。同样,操作系统对协议的支持也不同。绝大数操作系统(如Windows和UNIX操作系统)支持TCP/IP。有的系统只支持专用协议以满足其需求。对于操作系统而言,一个网络协议只简单地需要一个接口设备,如网络适配器,加上管理它的驱动程序以及按网络协议处理数据的软件。
网络可根据节点间的距离来划分。局域网(local-area network,LAN)位于一个房间、一楼层或一栋楼内。广域网(wide-area network,WAN)通常位于楼群之间、城市之间或国家之间。
有些操作系统采用了比只提供网络连接更进一步的网络和分布式系统的概念。网络操作系统(network operating system)就是这样一种操作系统。
小结
操作系统是管理计算机硬件并提供应用程序运行环境的软件。也许操作系统最为直观之处在于它提供了人与计算机系统的接口
为了让计算机执行程序,程序必须位于内存中。内存是处理器能直接访问的唯一的大容量存储区域。内存为字节或字的数组,容量为数百KB到数百MB。每个字都有其地址。内存是易失性存储器,当没有电源时会失去其内容。绝大多数计算机系统都提供了外村以扩充内存。二级存储器提供了一个非易失存储,它可以长久地存储大量数据。最常用的二级存储器是磁盘,它提供对数据和程序的存储。
根据速度和价格,可以将计算机系统的不同存储系统按层次来组织。最高层最为昂贵但也最快。随着向层次结构下面移动,每一个位的存储价格通常降低,而访问时间通常增加。
计算机系统的设计有多种不同的方法。单处理器系统只有一个处理器,而多处理器系统包含两个或更多的处理器来共享物理存储及外设。对称多处理技术(SMP)是最为普通的多处理器设计技术,其中所有的处理器被视为对等的,且彼此独立地运行。集群系统是一种特殊的多处理器系统,它由通过局域网连接的多个计算机系统组成。
为了最好地利用CPU,现代操作系统采用允许多个作业同时位于内存的多道程序设计,以保证CPU中总有一个作业在执行。分时系统是多道程序系统的扩展,它采用调度算法实现作业之间快速的切换,好像每个作业在同时进行一样。
操作系统必须确保计算机系统的正确操作。为了防止用户干预系统的正常操作,硬件有两种模式:用户模式和内核模式。许多指令(如I/O指令和停机指令)是特权的,只能在内核模式下执行。操作系统所驻留的内存也必须加以保护以防止用户程序修改。定时器防止无穷循环。这些工具(如双模式,特权指令,内存保护,定时器中断)是操作系统所使用的基本单元,用以实现正确操作。
进程(或作业)是操作系统工作的基本单元。进程管理包括创建和删除进程,为进程提供与其他进程通信和同步的机制。操作系统通过跟踪内存的哪部分被使用及被谁使用来管理内存。操作系统还负责动态地分配和释放内存空间,同时还管理存储空间,包括为描述文件提供文件系统和目录,以及管理大存储器设备的空间。
操作系统必须考虑到它与用户的保护和安全问题。保护是提供控制进程或用户访问计算机系统资源的机制。安全措施用来抵御计算机系统所受到的外部或内部的攻击。
分布式系统允许用户共享通过网络连接的,在地理位置上分散的计算机的资源。可以通过客户机-服务器模式或对等模式来提供服务。在集群系统中,多个机器可以完成驻留在共享存储器上的数据的计算,即便某些集群的子集出错,计算仍可以继续。
局域网和广域网是两种基本的网络类型。局域网允许分布在较小地理区域内的处理器进行通信,而广域网允许分布在较大地理区域内的处理器进行通信。局域网通常比广域网更快。
计算机系统具有一些特殊的服务目的,包括为嵌入式环境设计的实时操作系统,如消费设备,汽车和机器人。实时操作系统具有已定义的,固定的时间约束。进程必须在定义的约束内执行,否则系统将出错。多媒体系统涉及多媒体数据传送,常常有显示或使用音频、视频或者同步的音频和视频流的特别要求。
近来,由于Internet和WWW的影响,现代操作系统也集成了WWW浏览器、网络和通信软件。