本文章以《操作系统概念(第9版)》为依据。
一.操作系统的功能
1.用户视角2.系统视角3.操作系统的定义 二.计算机系统的组成
1.计算机系统的运行2.存储结构3.I/O结构 三.计算机系统的体系结构
1.单处理器系统2.多处理器系统3.集群系统 四.操作系统的结构五.操作系统的执行
1.双重模式与多重模式的执行2.定时器 六.进程管理七.内存管理八.存储管理
1.文件系统管理2.大容量存储器管理3.高速缓存4.I/O系统 九.保护与安全十.内核数据结构十一.计算环境十二.开源操作系统
①操作系统是管理计算机硬件的软件,它还应为程序提供基础,并且充当计算机用户和计算机硬件的中介。
②操作系统位于计算机用户与计算机硬件之间。
③操作系统的目的是提供环境,以便用户能够便捷而且高效地执行程序。
④操作系统庞大而复杂,应分块构造,且每块都应具有描述明确的系统部分,并且具有严格定义的输入、输出和功能。 一.操作系统的功能
操作系统可粗分为四个组件:
①硬件(hardware):如中央处理器(CPU)、内存(memory)、输入/输出设备(I/O device),为系统提供基本的计算资源。
②应用程序(application program):如字处理程序、电子制表软件、编译器、网络浏览器,规定了用户为解决计算问题而使用这些资源的方式。
③操作系统(OS):控制硬件,并协调各个用户应用程序的硬件使用。
④用户。
计算机的用户视角因使用界面不同而不同。
①单个用户单独使用资源:
目的是优化用户进行的工作(或游戏);
操作系统设计的主要目的是用户使用方便,次要的是性能,不在乎的是资源利用。
②一个用户坐在与大型机或小型机相连的终端前,其他用户通过其他终端访问同一台计算机:
这些用户可以共享资源并且可以交换信息;
操作系统设计的主要目的是优化资源利用率,确保所有的CPU时间、内存和I/O都能得到有效使用,并且确保没有用户使用超过限额以外的资源。
③用户坐在**工作站(workstation)**前,这类工作站与其他工作站和服务器(server)相连:
这类用户不但可以使用专用资源,而且可以使用网络和服务器的共享资源,包括文件、计算和打印服务器等;
操作系统设计需要兼顾使用方便性和资源利用率。
可将操作系统看做资源分配器(resource allocator)。
①面对许多甚至冲突的资源请求,操作系统应考虑如何为各个程序和用户分配资源,以便计算机系统能有效且公平地运行。
一个较为公认的定义:
操作系统是一直运行在计算机上的程序(通常称为内核(kernel)),除了内核外,还有其他两类程序:系统程序(system program)和应用程序。前者是与系统运行有关的程序,但不是内核的一部分,后者是与系统运行无关的所有其他程序。
①现代计算机系统
现代通用计算机系统包括一个或多个CPU和若干设备控制器,通过公用总线相连而成。
CPU与设备控制器可以并发执行,并且竞争访问内存。
为确保有序访问共享内存,需要内存控制器来协调访问内存。
②初始程序或引导程序(bootstrap program):一般位于计算机的固件(firmware),如只读内存(ROM)或电可擦可编程只读内存(EEPROM),他初始化系统的各个组件,从CPU寄存器、设备控制器到内存内容。
引导程序必须直到如何加载操作系统并且开始执行系统。为完成这一目标,引导程序必须定位操作系统内核并且加到内存。
除内核外,系统程序也提供一些服务,他们在启动时加到内存而成为系统进程(system program)或系统后台程序(system daemon),其生命周期与内核一样。
③事件发生通过硬件或软件的中断(interrupt)来通知。
硬件可以随时通过系统总线发送信号到CPU,以触发中断;
软件也可以通过执行特别操作即系统调用(system call)(也称为监督程序调用),以触发中断。
当CPU被中断时:
它停止正在做的事情,并立即转到固定位置再继续执行。
该固定位置通常包含中断服务程序的开始地址。
中断服务程序开始执行。
在执行完后,CPU重新执行被中断的计算。
④中断应将控制转移到合适的中断服务程序。
处理这一转移的直接方法:调用一个通用程序以检查中断信息;接着,该程序会调用特定的中断处理程序。
可用中断处理程序的指针表来提高速度,这样通过指针表可以间接调用中断处理程序,而无需通过其他中介程序。
通常,指针表位于低地址内存(前100左右的位置),这些位置包含各种设备的中断处理程序的地址。
这种地址的数组或中断向量,对于任一给定的中断请求,可通过唯一的设备号来索引,进而提供设备的中断处理程序的地址。
CPU只能从内存中加载指令,因此执行程序必须位于内存。
①内存,也称随机访问内存(RAM):通用计算机运行的大多数程序通常位于该可读写内存。
②内存通常为动态随机访问内存(DRAM),它采用半导体技术来实现。
③在冯·诺依曼体系结构上执行时,一个典型的指令周期是:
首先,从内存中获取指令,并存到指令寄存器;
接着,该指令被解码,也可能会从内存中获取操作数据并且存到内部寄存器;
在指令完成对操作数据的执行后,结果也可存到内存。
注意:内存单元只能看到内存地址的流,而并不知道它们如何产生或它们是什么样的地址。
④程序和数据不可能永久驻留在内存中
a.内存通常太少,不能永久保存所有需要的程序和数据;
b.内存是易失性的(volatile)存储设备,掉电时就会失去所有内容。
因此,需要外存(secondary storage)来扩充内存,永久存储大量数据。
最为常用的外存设备为磁盘或硬盘(magnetic disk)。
⑤存储设备的层次
①I/O对系统的可靠性和性能至关重要。
②同步I/O设备:CPU等待I/O返回后再处理其他进程;
异步I/O设备:CPU不等待,当I/O返回后再回来处理。
③I/O中断驱动:
在开始I/O时,设备驱动程序加载设备控制器的适当寄存器;
相应地,设备控制器检查这些寄存器内容,以便决定采取什么操作;
控制器开始从设备向本地缓冲区传输数据;
一旦完成数据传输,设备控制器就会通过中断通知设备驱动程序,它已完成了操作;
然后,设备驱动程序返回控制到操作系统。
对于读操作,数据或数据指针也会返回;而对于其他操作,设备驱动程序返回状态信息。
通常,操作系统为每个设备控制器提供一个设备驱动程序,该设备驱动程序负责设备控制器,并且为操作系统的其他部分提供统一的设备访问接口。
这种I/O中断驱动适合移动少量数据。
④对于大量数据的移动,可以采用直接内存访问(DMA)
在为这种I/O设备设置好缓冲、指针和计数器之后,设备控制器可在本地缓冲和内存之间传送整块的数据,而无需CPU的干预。当设备控制器执行这些操作时,CPU可以进行其他工作。
⑤现代计算机系统的工作原理
①单处理器系统只有一个主CPU,以便执行一个通用指令集,该指令集包括执行用户进程的指令。
且带有其他专用处理器,所有这些专用处理器执行有限指令集,而并不执行用户进程。
操作系统不能与这些专用处理器通信,但是它们可以自主完成任务。
②如果系统只有一个通用CPU,那么就为单处理器系统。
①也称并行系统或多核系统。
②由两个或多个紧密通信的CPU,它们共享计算机总线,有时还共享时钟、内存和外设等。
③三个主要优点:
a.增加吞吐量:通过增加处理器的数量,以期能在更短的时间内完成更多工作。
b.规模经济:多处理器系统的价格要低于相同功能的多个单处理器系统的价格,因为前者可以共享外设、大容量存储和电池供给。
c.增加可靠性:若将功能分布在多个处理器上,那么单个处理器的失灵不会使整个系统停止,而只会使它变慢。
④适度退化:根据剩余有效硬件的级别按比例继续提供服务的能力。
超过适度退化,称为容错:它们能够容忍单个部件错误,并且仍然继续运行。
⑤现在的多处理器系统有两种类型:
a.非对称处理:每个处理器都有各自特定的任务。
一个主处理器控制系统,调度从处理器,并安排工作;其它处理器或者向主处理器要任务或做预先规定的任务。
这种方案称为主从关系。
b.对称处理:(SMP):每个处理器都参与完成操作系统的所有任务。处理器间没有主从关系。
每个处理器都有自己的寄存器集,也有私有或本地缓存;不过,所有处理器都共享物理内存。
⑥多处理可使系统的内存访问模型,从均匀内存访问(UMA)改成非均匀内存访问(NUMA)。
对UMA:CPU访问RAM的所需时间相同;
对NUMA:有的内存访问的所需时间更多,这会降低性能。
⑦多核系统:集成多个计算核到单个芯片。
多核系统为多处理器系统,但不是所有多处理器系统都是多核系统
⑧刀片服务器:将多处理器板、I/O板和网络板全部置于同一机箱。
它和传统多处理器系统的不同在于:每个刀片处理器可以独立启动,并且运行各自的操作系统。
①将多个CPU结合在一起,由两个或多个独立系统(或节点)组成。
②这样的系统称为松耦合的。
③每个节点可为单处理器系统或多核系统。
④较为公认的定义:集群计算机共享存储,并且采用LAN(局域网)连接或更快的内部连接。
⑤集群用于提供高可用性服务,这意味着即是集群中的一个或多个系统出错,仍可继续提供服务。
一般,通过在系统中增加一定的冗余,可获取高可用性。
⑥集群可以是对称的,也可以是非对称的。
对于非对称集群:一台机器处于热备份模式,而另一台运行应用程序。热备份主机只监视活动服务器,如果活动服务器失效,那么热备份主机变成活动服务器。
对于对称集群:两个或多个主机都运行应用程序,并互相监视。由于充分使用现有硬件,当有多个应用程序可供执行时,这种结构更为高效。
⑦每个集群由通过网络相连的多个计算机系统组成,也可提供高性能计算环境。
并行计算:将一个程序分成多个部分,而每个部分可以并行运行在计算机或集群计算机的各个核上。
⑧通用集群结构
①多道程序设计:通过安排作业(编码与数据)使得CPU总有一个在执行作业,从而提高CPU利用率。
作业首先保存在磁盘的作业池上,该作业池包括磁盘上的、等待分配内存的所有进程。
内存的作业集为作业池的作业集的一个子集。
从内存的作业集中,操作系统可以选择执行一个作业。
最终,该作业可能需要等待某个任务,如I/O操作的完成。
对于多道程序系统,CPU会简单切换到另一个作业,以便执行。
②分时系统(或多任务):CPU还是通过切换作业来执行多个作业,但由于切换频率很高,用户可以在程序运行时与其交互。
分时系统允许许多用户同时共享一台计算机。
分时系统采用CPU调度和多道程序设计,为每个用户提供一小部分的分时计算机资源。
每个用户至少有一个程序在内存中,加载到内存并执行的程序,通常称为进程。
在用户进行交互输入时,操作系统为了不让CPU空闲,会将CPU切换到其他用户程序。
③对于分时系统,操作系统必须确保合理的响应时间,这有时可以通过交换来得到,交换可将进程从磁盘调入内存,也可将进程从内存调到磁盘。
不过,虚拟内存是实现合理响应时间的更为常用的方法,它允许一个执行作业不必完全在内存中。
虚拟内存的主要优点是,用户可执行比物理内存大的程序。
事件总是由中断或者陷阱引起的。
陷阱(或异常)是一种软件生成的中断,或源于出错,或源于用户程序的特定请求。
操作系统的正确设计必须确保错误程序(或恶意程序)不会造成其他程序的错误执行。
①两种单独运行模式:用户模式和内核模式(也称监督模式、系统模式、特权模式)。
②计算机硬件通过一个模式位来表示当前模式:内核模式(0)和用户模式(1)。
一旦有陷阱或中断,硬件会从用户模式切换到内核模式。
③双重模式执行提供保护手段,这种防护实现为:将可能引起损害的机器指令作为特权指令,并且硬件只有在内核模式下才允许执行特权指令。如果在用户模式下试图执行特权指令,那么硬件并不执行该指令,而是认为该指令非法,并将其以陷阱形式通知操作系统。
①作用:防止用户程序陷入死循环,或不调用系统服务并且不将控制返给操作系统。
②定时器可设置为在指定周期后中断计算机,指定周期可以是固定的或可变的。
③可变定时器:一般通过一个固定速率的时钟和计数器来实现。
④每次时钟滴答时,计数器都要递减,当计数器的值为0时,就会产生中断。
⑤当定时器中断时,控制自动转到操作系统,而操作系统可以将中断作为致命错误来处理,也可以给予用户程序更多时间。
⑥定时器可以防止用户程序运行过长。
一种简单办法是,采用程序允许执行的时间来初始化计数器;定时器每秒产生一次中断,计数器相应递减1;只要计数器的值为正,控制就返回到用户程序,当计数器的值为负时,操作系统就会中止程序执行,因为它超过了设置的时间。
①程序本身不是进程,程序是个被动实体,如同存储在磁盘上的文件内容,而进程是个主动实体。
②单线程进程有一个程序计数器,指定了下一个所要执行的指令。这样一个进程的执行应该是顺序的。
③多线程进程有多个程序计数器,每一个指向下一个给定线程需要执行的指令。
④操作系统负责进程管理的一下活动:
七.内存管理a.在CPU上调度进程和线程;
b.创建和删除用户进程和系统进程;
c.挂起和重启进程;
d.提供进程同步机制;
e.提供进程通信机制。
①内存是一个大的字节数组,大小从数十万到数十亿。每个字节都有地址。
②内存是个快速访问的数据仓库,并为CPU和I/O设备所共享。
③内存一般是CPU所能直接寻址和访问的、唯一的、大容量的存储器。
④如果一个程序需要执行,那么它必须映射到绝对地址,并且加载到内存。随着程序执行,进程可以通过产生绝对地址来访问内存的程序指令和数据。最后,程序终止,它的内存空间得以释放,这样下一个程序可以加载并得以执行。
⑤操作系统负责内存管理的以下活动:
八.存储管理a.记录内存的哪部分在被使用以及被谁使用;
b.决定哪些进程(或其部分)会调入或调出内存;
c.根据需要分配和释放内存空间。
操作系统对存储设备的物理属性进行了抽象,并定义了逻辑存储单元,即文件。
1.文件系统管理 ①通常,文件内容为程序(源程序和目标程序)和数据。
②操作系统负责文件管理的以下活动:
2.大容量存储器管理a.创建和删除文件;
b.创建和删除目录,以便组织文件;
c.提供文件和目录的操作原语;
d.映射文件到外存;
e.备份文件到稳定(非易失的)存储介质。
①操作系统负责有关硬盘管理的以下活动:
3.高速缓存a.空闲空间管理;
b.存储空间分配;
c.硬盘调度。
①工作原理:
信息通常保存在一个存储系统中,使用时,它会被临时复制到更快存储系统,即高速缓存;
当需要特定信息时,首先检查它是否处于高速缓存,若是,可以直接使用高速缓存的信息;
若不是,就使用位于源地的信息,同时将其复制到高速缓存以便下次再用。
②内存可以看做外存的高速缓存。
4.I/O系统①I/O子系统包括以下几个组件:
九.保护与安全a.包括缓冲、高速缓存和假脱机的内存管理组件;
b.设备驱动器的通用接口;
c.特定硬件设备的驱动程序。
①保护是一种机制,用于控制进程或用户访问计算机系统的资源。
②通过检测组件子系统之间接口的差错隐患,保护可以提高可靠性。
③防止系统不受外部或内部的攻击是安全的工作。
④保护和安全要求系统能够区分所有用户。
⑤大多数的操作系统采用一个列表,以便维护用户名称及其关联用户标识(UID),按照Windows的说法,这称为安全ID(SID)。
⑥有些环境希望区分用户集合而非单个用户。为此,需定义一个组名称以及属于该组的用户集。组功能的实现可以采用一个系统级的列表,以维护组名称和组标识。
①链表。
②树。
③哈希函数和哈希表。
④位图:n个二进制位的串,用于表示n项的状态。
①传统计算:
门户网站:提供内部服务器的Web访问。
网络计算机或瘦客户端:可以实现Web计算,当要求更高安全和更便捷维护时,可以用于取代传统的工作站。
移动计算机也可连到无线网络和蜂窝数据网络,以便使用公司的门户网站。
防火墙:保护家庭内部环境以便避免破坏。
②移动计算:
移动计算就是智能手机或平板电脑的计算。
移动计算现有两个主要的操作系统:苹果iOS和谷歌安卓。
③分布计算:
分布式系统是物理上分开的、可能异构的、通过网络相连的一组计算机系统,可供用户访问系统维护的各个资源。
网络是两个或多个系统之间的通信路径。
传输控制协议/网间协议(TCP/IP)是最为常用的网络协议,为因特网提供了基础架构。
网络可以根据节点之间的距离来划分。
局域网(LAN):唯一一个房间、一栋大楼或一所学校。
广域网(WAN):通常用于联接楼宇、城市或国家。
城域网(MAN):可以将一个城市内的楼宇连接起来。
个人局域网(PAN):连接电话和耳机或连接智能手机和桌面计算机。
网络的连接媒介也有很多:铜线、光纤、卫星之间的无线传输、微波和无线电波。
网络操作系统提供跨网络的文件共享、不同计算机进程的消息交换等功能。
④客户机-服务器计算:
许多现代系统可作为服务器系统,以满足客户机系统的请求,这种形式的专用分布式系统称为客户机-服务器系统。
服务器系统可分为计算服务器和文件服务器。
计算服务器:提供接口,以便用户发送请求以执行操作。服务器执行操作,并发送结果到客户机。
文件服务器:提供文件系统接口,以便客户机可以创建、更新、访问和删除文件。
⑤对等计算:
分布式系统的另一结构是对等(P2P)系统模型。
这个模型不区分客户机与服务器,所有节点都是对等的,每个节点都可以作为客户机或服务器,这取决于它是请求还是提供服务。
一个节点在加入对等系统时,就应首先加入对等网络。
判断哪些服务可用包括两种基本方法:
a.当一个节点加入网络时,他通过网络集中查询服务来注册服务。
b.没有使用集中查询服务。
⑥虚拟化:
通过虚拟化技术,操作系统可以在其他操作系统上运行应用程序。
虚拟化是一种软件技术,用于实现模拟。
当原有CPU与现有CPU类型不同时,就可采用模拟。
模拟的一个常见例子:一种计算机语言不能编译成原机代码,而是要转化成中间形式或按高级形式来执行,这称为解释。
通过虚拟化,为某一CPU而编译的操作系统可以运行在为另一相同CPU而编译的操作系统上。
在数据中心,虚拟化技术常常用于运行和管理计算环境。
⑦云计算:
云计算可以通过网络提供计算、存储甚至应用程序等服务。它是虚拟化技术的延伸,以虚拟化技术为基础来实现功能。
云计算有许多类型:
a.公云:只要愿意为服务付费就可以使用的云。
b.私云:公司自己使用自己的云。
c.混合云:有公云部分也有私云部分的云。
d.软件即服务(SaaS):可通过Internet使用的应用程序。
e.平台即服务(PaaS):可通过Internet而为应用程序使用的软件堆栈。
f.基础设施即服务(IaaS):可通过Internet使用的服务器或存储。
⑧实时嵌入式系统:
十二.开源操作系统嵌入式计算机是目前最为普遍的计算机。
它们往往具有特定任务,运行系统通常很简单,因此操作系统提供了有限的功能。
它们很少有甚至没有用户界面,主要关注监视和管理硬件设备。
有些硬件设备,不采用操作系统,而是采用专用集成电路(ASIC)来执行任务。
嵌入式系统总是采用实时操作系统。
实时系统具有明确的、固定的时间约束。处理必须在固定时间约束内完成,否则系统就会出错。
分时系统只是要(而不一定)响应快,而批处理系统则没有任何时间约束。
①开源操作系统具有源码,而非只有编译过的二进制码。
②为反对限制软件使用与再发布,Richard Stallman于1983年设立了GNU项目,以创建一个免费的、开源的、兼容UNIX的操作系统。
③自由软件基金会(FSF)对软件施加著佐权,鼓励共享和改进。
GNU通用公共许可证(GPL)为著佐权的条文,这是一个发行软件的公共许可证。
GPL规定:软件源代码应与二进制一起发布,软件源代码的任何修改应按同样的GPL许可来发布。
④常见开源操作系统:GNU/Linux,BSD UNIX,Solaris。
⑤免费和开源的优点:提高了开源项目的数量和质量,使用这些项目的个人和公司也增加了。