目录
操作系统功能
操作系统的发展与分类
操作系统的运行环境
操作系统的体系结构
王道考研操作系统-1.计算机系统概述
操作系统
是指控制和管理整个计算机系统的硬件和软件资源,合理地组织调度计算机的工作和资源的分配;提供给用户和软件方便的接口和环境;是计算机系统中最基本的系统软件。
应包括:
1)能有效地组织和管理四大资源的软件
2)合理地对各类作业进行调度和控制它们运行的软件
3)方便用户使用计算机的软件
计算机系统自上而下大致可以分为4部分:用户、应用程序、操作系统和硬件。如下图:
-
操作系统的基本特征
-
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。操作系统的并发性是通过分时得以实现的。在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而微观上这些程序仍是分时交替执行的。操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的。在内存中的多个程序都分别建立一个进程,它们就可以并发执行,这样提高系统资源的利用率和系统的吞吐量。
并行是指两个或多个事件在同一时刻同时发生。并行性需要有相关硬件的支持,如多流水线或多处理机硬件环境。
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行 -
共享:指系统中的资源可供内存中多个并发执行的进程共同使用。(调入内存的进程是当前执行的进程,它们共享系统资源)
互斥共享:当进程A要访问某资源时,必须先提出请求。若此时该资源空闲,系统便可将之分配给请求进程A使用。此后若再有其他进程也要访问该资源,只要A未用完就必须等待。仅当A进程访问完并释放系统资源后,才允许另一进程对该资源进行访问。这种资源共享方式称为互斥式共享。
把这种在一段时间内只允许一个进程访问的资源,成为临界资源(或独占资源)。同时访问:允许在一段时间内由多个进程“同时”对它们进行访问。“同时”是宏观意义上,微观上进程对该资源的访问是交替进行的。“同时”访问的典型资源是磁盘设备(访问文件等),一些用重入码编写的文件也可被“同时”共享,即允许若干个用户同时访问该文件。
-
并发和共享的关系:
并发性指计算机系统中同时存在着多个运行着的程序。
共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。并发和共享是多用户(多任务)OS的两个最基本的特征。它们是互为存在的条件
-
虚拟:是指把一个物理上的实体变为若干个逻辑上的对应物。前者是实际存在的,后者是用户感受到的。
时分复用技术,虚拟处理机技术,是通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器的。利用多道程序设计技术把一个物理上的CPU虚拟为多个逻辑上的CPU。它利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。提高了处理机的效率。
空分复用技术,虚拟存储器技术。将一台机器的物理存储器变为虚拟存储器,从逻辑上扩充存储器的容量。是利用存储器的空闲空间分区域存放和运行其他的多道程序,以此来提高内存的利用率。提高内存的利用率。
-
异步:是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是以不可预知的速度向前推进。如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。
-
操作系统功能
-
操作系统作为计算机系统资源的管理者
在一个计算机系统中,通常都含有多种硬件和软件资源。归纳起来可将这些资源分为四类:
1)处理机管理
2)存储器管理
3)文件管理
4)设备管理 -
操作系统作为用户与计算机硬件系统之间的接口
用户可通过三种方式使用计算机,即通过命令方式、系统调用方式和图标——窗口方式来实现与操作系统的通信,并取得它的服务。
1)命令接口分为联机命令接口和脱机命令接口。- 联机命令接口又称交互式命令接口,适用于分时或实时系统的接口。可以理解为“用户说一句(命令),系统做一句(命令)”,强调了交互性。cmd,shell。
- 脱机命令接口又称批处理命令接口,适用于批处理系统,由一组作业控制命令组成。可以理解为“用户说一堆(命令),系统做一堆(命令)”,用户不能直接干预作业运行。bat文件。
2)程序接口(广义指令)
可以在程序中进行系统调用来使用程序接口。用户间接使用使用程序接口(系统调用)来请求OS中的服务。用户程序非系统调用。系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在核心态。
3)图标——窗口
一般是图形用户界面(GUI),如Windows、安卓等的图形化操作界面 -
补充
操作系统作为最接近硬件的层次
没有任何软件支持的计算机成为裸机。覆盖了软件的机器称为扩充机器,又称之为虚拟机。操作系统为编程人员提供的接口是程序接口,即系统调用。
用户程序只能通过系统调用的方式来请求内核为其服务,间接地使用各种资源。
系统缓存由操作系统管理,操作系统不提供管理系统缓存的系统调用。
系统开机后,操作系统的程序会被自动加载到内存中的系统区,这段区域是RAM。
库函数是高级语言中提供的与系统调用对应的函数(也有些库函数与系统调用无关),库函数属于用户程序而非系统调用,是语言或应用程序的一部分,可以运行在用户态。系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在核心态。未使用系统调用的库函数,其执行效率通常要比系统调用的高。使用系统调用时,需要上下文的切换及状态的转换(用户态->核心态)
操作系统的发展与分类
-
手工操作阶段(此阶段无操作系统)
-
批处理阶段(操作系统开始出现)
为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统。-
单道批处理系统(一个接一个地处理,减少机器空闲等待时间)
主要特征:单道性。内存中仅有一道监督程序,每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换入其后继程序进入内存运行。
自动性。在顺利的情况下,作业能自动地逐个运行,而无须人工干预。
顺序性。先调入内存的作业先完成。
缺点:系统中的资源得不到充分的利用。是因为在内存中仅有一道程序,程序在发出I/O请求后,CPU便处于等待状态使CPU的利用率显著降低。
-
多道批处理系统(操作系统正式诞生)
为了进一步提高资源的利用率和系统吞吐量,引入了多道程序设计技术,形成了多道批处理系统。
允许多个程序同时进入内存并允许它们在CPU中交替地运行,程序共享系统中的各种硬/软件资源。
中断技术使得多道批处理系统和I/O设备可与CPU并行工作,提高了多道程序运行环境中CPU的利用率。
特点:
①多道。计算机内存中同时存放多道互相独立的程序。
②宏观上并行。同时进入系统的多道程序都处于运行过程中,即它们先后开始各自的运行,但都未运行完毕。
③微观上串行。内存中的多道程序轮流占有CPU,交替执行。
优点:
①资源利用率高。引入多道批处理能使多道程序交替运行,CPU处于忙碌状态;在内存中装入多道程序可提高内存的利用率,提高I/O设备的利用率。
②系统吞吐量高。系统开销小。
缺点:
①平均周转时间长。作业要排队依次进行处理,而作业的周转时间较长,通常需几个小时,甚至几天。
②无交互能力。用户不能进行交互。
与单道程序系统相比,多道程序系统的优点是CPU利用率高、系统吞吐量大以及I/O设备利用率高。
-
-
分时操作系统(解决了人机交互问题)
分时技术,是指把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。一个时间片就是一段很短的时间。
分时操作系统是指多个用户通过自己的终端同时共享一台主机,用户可以同时与主机进行交互操作而互不干扰,用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回用户。多路卡功能:及时接收多个用户键入的命令或数据。多路卡的作用是实现分时多路复用。
实现及时处理则需要采用两种方式:
作业直接进入内存。因为作业在磁盘上是不能运行的,所以作业应直接进入内存。
采用轮转运行方式。系统规定每个作业每次只能运行一个时间片,然后就暂停该作业的运行,并立即调度下一个作业运行。分时系统的特征:
①多路性(同时性)。指允许多个终端用户同时使用一台计算机。
②独立性。指每个用户在各自的终端上进行操作,彼此之间互不干扰,给用户的感觉就像是他一人独占主机进行操作。
③及时性。指用户的请求在很短时间内获得响应。
④交互性。用户通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互。优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。 -
实时操作系统(有优先级)
时操作系统最主要的特征是将时间作为关键参数。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,要在严格的时限内处理完事件。资源利用率不是实时操作系统主要追求的目标,资源利用率低。实时系统的进程调度,通常采用抢占式的优先级高者优先算法。特点:及时性、可靠性
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
-
实时任务的类型:
周期性实时任务和非周期性实时任务周期性实时任务:外部设备周期性地发出激励信号给计算机,要求它按指定周期循环执行,以便周期性地控制某外部设备。
非周期性实时任务:并无明显的周期性,但都必须联系着一个截止时间(最后期限)。它又分为:①开始截止时间,指某任务在某时间以前必须开始执行。②完成截止时间,指某任务在某时间以前必须完成。 -
硬实时任务和软实时任务
硬实时任务(HRT)是指必须满足任务对截止时间的要求,否则可能出现难以预测的后果。如导弹控制系统等。
软实时任务(SRT)是指能接受偶尔违法时间规定的事情发生。如信息查询系统。
-
-
网络操作系统和分布式计算机系统
网络操作系统是网络中各个计算机有机地结合起来,实现数据传送,资源共享和相互通信。
分布式操作系统:主要特点是分布性和并行性。系统中各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
操作系统的运行环境
-
计算机系统中,通常CPU执行两种不同性质程序:一种是操作系统内核程序;另一种是用户自编程序(即系统外层的应用程序,或简称“应用程序”)。内核是操作系统最重要最核心的部分,也是最接近硬件的部分,操作系统的功能未必都在内核中,如图形化用户界面 GUI。甚至可以说,一个操作系统只要有内核就够了(eg:Docker—>仅需Linux内核)
-
CPU有两种状态,核心态(又称核心态、内核态)和用户态(目态)
处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令和非特权指令。
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。 -
特权指令,是指计算机中不允许用户直接使用的指令,如I/O指令、置中断指令、内存清零指令、存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令。
拓展:CPU 中有一个寄存器叫 程序状态字寄存器(PSW),其中有个二进制位,1表示“核心态”,0表示“用户态”。-
内核态->用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
用户态->内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。 -
注意:
操作系统内核需要运行在内核态。
操作系统的非内核功能运行在用户态。
所以采用微内核的话,需要频繁地在核心态和用户态之间切换。区分执行态(核心态和用户态)的主要目的是保护系统程序。
-
-
中断和异常的概念
-
中断也称外中断,指来自CPU执行指令以外事件的发生,与当前执行的指令无关,时钟中断表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。
“中断”是让操作系统内核夺回CPU使用权的唯一途径。有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引发一个内部中断信号。执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。“系统调用”就是通过陷入指令完成的。
-
异常(内中断、例外、陷入(trap)),指源自CPU执行指令内部的事件,与当前执行的指令有关,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页及专门的陷入指令等引起的事件。对异常的处理一般要依赖于当前程序的运行现场,异常不能被屏蔽,一旦出现应立即处理。
-
-
中断机制的基本原理:
不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
-
程序接口(广义指令)
可以在程序中进行系统调用来使用程序接口。用户间接使用使用程序接口(系统调用)来请求OS中的服务(应用程序可以通过系统调用来请求获得操作系统内核的服务),用户程序非系统调用。-
库函数是高级语言中提供的与系统调用对应的函数(也有些库函数与系统调用无关),库函数属于用户程序而非系统调用,是语言或应用程序的一部分,可以运行在用户态。
-
系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在核心态。未使用系统调用的库函数,其执行效率通常要比系统调用的高。使用系统调用时,需要上下文的切换及状态的转换(用户态->核心态)
凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
操作系统不同,系统调用接口也不同。
-
-
系统调用的过程
传递系统调用参数 -> 执行陷入指令(用户态)->执行相应的请求内核程序处理系统调用(核心态)->返回应用程序
整个过程是用户程序调用陷入指令(trap指令或访管指令)CPU先从用户态(目态)进入核心态(管态),执行系统调用的程序后返回用户程序,CPU再从核心态(管态)转换为用户态(目态)。
-
注意:
先传参再执行陷入指令
陷入指令(访管指令)是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态。
发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。当CPU检测到中断信号后,由硬件自动保存被中断程序的断点(即程序计数器PC),之后硬件找到该中断信号对应的中断向量,中断向量指明中断服务程序入口地址(各中断向量统一存放在中断向量表中,该表由操作系统初始化),接下来开始执行中断服务程序,保存PSW、保存中断屏蔽字、保存各通用寄存器的值,并提供与中断信号对应的中断服务。
处理外部中断过程中,(程序计数器)PC值由中断隐指令自动保存,而通用寄存器内容由操作系统保存,由操作系统完成的是提供中断服务和初始化中断向量表。
中断处理是操作系统必须提供的功能。
进程调度可以不需要硬件的支持。它是操作系统内核进程,在核心态执行。要区分“在用户态执行”和“在用户态发生”两个概念,
命令解释程序属于命令接口,在用户态下执行;中断,进程调度在核心态下执行,输入/输出在核心态下执行,因为涉及中断操作。
系统调用、外部中断和缺页都发生在用户态,处理在核心态;进程切换属于系统调用执行过程的事件,发生在核心态。
中断处理和子程序调用都需要压栈以保护现场,中断处理会保存而子程序调用不保存内容的是程序状态字寄存器(PSW)。子程序调用只需要保存程序断点,即该指令下一条指令的地址。内部异常是指来自CPU内部产生的中断,内部异常的检测是由CPU自身完成的,一旦出现就应立即处理。对于非法指令、除数为零等异常,无法通过异常处理程序恢复故障,不能回到原断点执行,必须终止进程的执行。
操作系统中,通道技术是一种硬件技术。I/O通道实际上是一种特殊的处理器,它具有执行I/O指令的能力,通过执行通道程序来控制I/O操作。
sin()函数调用是在用户态下进行的。
操作系统的体系结构
-
把早期的无结构的OS(第一代)、模块化结构的OS(第二代)和分层式结构的OS(第三代),都统称为传统结构的OS,而把微内核结构的OS称为现代结构的OS。
典型的大内核/宏内核/单内核 操作系统: Linux、UNIX
典型的 微内核 操作系统: Windows NT
一些与硬件关联较紧密的模块,(如时钟管理、中断管理、设备驱动等处于操作系统的最底层);其次是运行频率较高的程序,(如进程管理、存储器管理和设备管理等);这两部分内容构成了操作系统的内核。这部分内容的指令操作工作在核心态。
-
内核是计算机上配置的底层软件,是计算机功能的延伸。主要包括四个方面。
- 时钟管理:在计算机的各种部件中,时钟是最关键的设备。时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,实现进程的切换。
- 中断机制:中断机制是操作系统各项操作的基础。现代操作系统是靠中断驱动的软件。中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。
- 原语:处于操作系统的最底层,是最接近硬件的部分;这些程序的运行具有原子性,其操作只能一气呵成;这些程序的运行时间较短,调用频繁。在核心态下执行,常驻内存。定义原语的直接方法就是关闭中断(关中断),让其所有动作不可分割地完成后再打开中断(开中断)。
- 对系统资源进行管理(系统控制的数据结构及处理):进程管理、存储器管理和设备管理。系统中用来登记状态信息的数据结构很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。
-
微内核操作系统的基本概念
在单计算机环境下,大多也采用基于客户/服务器模式的微内核结构,将操作系统划分为两大部分:微内核和多个服务器。
基本概念:
1)足够小的内核
2)基于客户/服务器模式
3)应用“机制与策略分离”原理
机制是指实现某一功能的具体执行机构。策略是在机制的基础上借助于某些参数和算法来实现该功能的优化或达到不同的功能目标。通常将机制放在OS的微内核中。
现在一般都采用“机制与策略分离”原理,将机制部分以及与硬件紧密相关的部分放入微内核中。 -
微内核的基本功能
1)进程(线程)管理
确定进程优先级,切换调度进程之间的通信。
2)低级存储器管理
逻辑地址转换为物理地址。
3)中断和陷入处理
捕获发送消息给服务器。4)采用面向对象技术
面向对象技术可以用来编写操作系统 -
微内核操作系统的优点
1)提高了系统的可扩展性,各服务器彼此独立
2)增强了系统的可靠性
当某个服务器出现错误时,不会影响内核,也不会影响其他服务器。
3)可移植性
把操作系统移植到另一个计算机硬件平台上所需作的修改是比较小的。(内核小,修改内核工作量小)
4)支持分布式系统
由于在微内核OS中,客户和服务器之间、服务器和服务器之间的通信采用消息传递通信机制,致使微内核OS能很好地支持分布式系统和网络系统。
5)融入了面向对象技术。 -
微内核操作系统存在的问题
运行效率低。主要原因是,在完成一次客户对操作系统提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式与上下文的多次切换(进程切换)。微内核的服务比较少,所以它较大内核比较稳定,为了改善运行效率,可以重新把一些常用的操作系统基本功能由服务器移入微内核中。
-
操作系统引导(Boot)
-
虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine, VM),每个虚拟机器都可以独立运行一个操作系统。