操作系统(Operating System,OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是现代计算机系统中最基本和最重要的系统软件,而其它的诸如编译程序、数据库管理系统等系统软件,以及大量的应用软件,都直接依赖于操作系统的支持,取得它所提供的服务。
OS 的第一个作用是作为用户与计算机硬件系统之间的接口,从层次上看 OS 处于用户与计算机硬件系统之间,用户在OS帮助下能够方便、快捷、可靠地操纵计算机硬件和运行自己的程序。用户可以通过命令方式、系统调用方式和图标一窗口方式来实现与 OS 的通信,由于应用程序也是基于 OS 运行的,因此用户使用软件也离不开 OS。
OS 第二个作用是作为计算机系统资源的管理者,因为在一个计算机系统中通常都含有多种硬件和软件资源。归纳起来可将这些资源分为四类:处理机、存储器、I/O设备以及文件(数据和程序),OS 的主要功能也正是对这四类资源进行有效的管理。
一台完全无软件的计算机系统(即裸机)向用户提供的仅是硬件接口(物理接口),用户想要使用该系统就必须对物理接口的实现细节有充分的了解,这就致使该物理机器难于广泛使用。
为了方便用户使用 I/O设备,人们在裸机上覆盖上一层 I/O 设备管理软件,这样的软件隐藏了 I/O 设备的具体细节,向上提供了一组抽象的 I/O 设备。通常把覆盖了上述软件的机器称为扩充机器或虚机器,它向用户提供了一个对硬件操作的抽象模型。
操作系统具有并发、共享、虚拟和异步四个基本特征。
并发执行这一特征使得 OS 能有效地提高系统中的资源利用率,增加系统的吞吐量。并行性是指两个或多个事件在同一时刻发生,而并发性是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,这些可以并发执行的程序便可被分配到多个处理机上,从而实现并行执行。
实现并发的关键在于引入了进程,进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。若对内存中的多个程序都分别建立一个进程,它们就可以并发执行。
OS 环境下的资源共享(资源复用)是指:系统中的资源可供内存中多个并发执行的进程共同使用,这里在宏观上既限定了时间(进程在内存期间),也限定了地点(内存)。因为系统中的资源远少于多道程序需求的总和,会形成它们对共享资源的争夺,系统必须对资源共享进行妥善管理。由于资源属性的不同,进程对资源复用的方式也不同,目前主要实现资源共享的方式有如下两种:
并发和共享是多用户(多任务)OS 的两个最基本的特征,它们又是互为存在的条件。若系统不允许并发执行也就不存在资源共享问题,若系统不能对资源共享实施有效管理也必然会影响到诸进程间并发执行的程度。
在 OS 中把通过某种技术将一个物理实体变为若干个逻辑上的对应物的功能称为“虚拟”,这是通过时分复用和空分复用实现的。时分复用技术能实现虚拟处理机、虚拟设备等,使资源的利用率得以提高。这是因为它利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。
空分复用技术则是利用存储器的空闲空间分区域存放和运行其它的多道程序,以此来提高内存的利用率。单纯的空分复用存储器只能提高内存的利用率,并不能实现在逻辑上扩大存储器容量的功能,还必须引入虚拟存储技术才能达到此目的。
在单处理机环境下,由于系统中只有一台处理机,因而每次只允许一个进程执行,其余进程只能等待。由于资源等因素的限制,使进程的执行通常都不可能“一气呵成”,而是以“停停走走”的方式运行。只有系统具有并发性,才有可能导致异步性。
在传统的多道程序系统中,处理机的分配和运行都是以进程为基本单位的,因而对处理机的管理可归结为对进程的管理。处理机管理的主要功能有:
功能 | 说明 |
---|---|
进程控制 | 为作业创建进程、撤消(终止)已结束的进程,以及控制进程在运行过程中的状态转换 |
进程同步 | 为多个进程(含线程)的运行进行协调,常用的协调方式有进程互斥方式和进程同步方式 |
进程通信 | 实现相互合作进程之间的信息交换 |
调度 | 调度包括作业调度和进程调度两步 |
存储器管理的主要任务是为多道程序的运行提供良好的环境,提高存储器的利用率,方便用户使用并能从逻辑上扩充内存。
功能 | 说明 |
---|---|
内存分配 | 为每道程序分配内存空间,尽量减少不可用的内存空间(碎片),允许正在运行的程序申请附加的内存空间 |
内存保护 | 确保每道用户程序都仅在自己的内存空间内运行,绝不允许用户程序访问操作系统的程序和数据 |
地址映射 | 将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址 |
内存扩充 | 借助于虚拟存储技术,从逻辑上扩充内存容量 |
实现内存分配有两种方式:
对于扩充内存来说,系统具体需要实现:
设备管理需要完成用户进程提出的 I/O 请求,为用户进程分配所需的 I/O 设备,同时要提高 CPU 和 I/O 设备的利用率。
功能 | 说明 |
---|---|
缓冲管理 | 在 I/O 设备和 CPU 之间引入缓冲来缓和 CPU 和 I/O 设备速度不匹配的矛盾 |
设备分配 | 根据用户进程的 I/O 请求、系统现有资源情况以及按照某种设备分配策略来分配所需的设备 |
设备处理 | 又称设备驱动程序,用于 CPU 向设备控制器发出 I/O 命令完成指定的 I/O 操作 |
文件管理的主要任务是对用户文件和系统文件进行管理以方便用户使用,并保证文件的安全性。
功能 | 说明 |
---|---|
文件存储空间的管理 | 为每个文件分配必要的外存空间,提高外存的利用率,进而提高文件系统的存、取速度 |
目录管理 | 为每个文件建立一个目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取 |
文件的读/写管理 | 根据用户的请求从外存中读取数据,或将数据写入外存 |
文件保护 | 防止系统中的文件被非法窃取和破坏 |
其中文件保护需要实现以下 3 个目标:
为了方便用户对操作系统的使用,操作系统向用户提供了“用户与操作系统的接口”。
用户接口可以被用户直接调用,用户可通过用户接口向作业发出命令以控制作业的运行。该接口可以分为以下三种:
程序接口是为用户程序在执行中访问系统资源而设置的,允许用户通过程序间接调用,是用户程序取得操作系统服务的唯一途径。程序接口是由一组系统调用组成的,每一个系统调用都是一个能完成特定功能的子程序,也可以成系统调用为广义指令。系统中的各种共享资源都由操作系统统一管理,应用程序设计资源有关的操作都需要通过系统调用来请求服务,由操作系统代为执行可以保证安全性。
在高级语言例如 C 语言中,往往提供了与各系统调用一一对应的库函数,应用程序便可通过调用对应的库函数来使用系统调用。
内核是一个操作系统的核心,负责提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。内核就是将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存并进行保护的部分。
操作系统内核往往具有以下这些功能:
单内核是个很大的进程,它将操作系统的主要功能模块全部包括进来,因此在运行的时候单内核是个单独的二进制大映象。其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。由于不需要调用其他的程序,单内核在运行效率上具有一定的优势。
单内核代码需要包括大量的功能模块,这就导致单内核难以编写正确。因为所有的模块都在同一个内核空间上运行,因此一个很小的 bug 都会使整个系统崩溃。
微内核(MicroKernel)操作系统结构是 20 世纪 80 年代后期发展起来的,由于它能有效地支持多处理机运行,故非常适用于分布式系统环境。和单内核的不同之处在于微内核操作系统中,微内核并非是一个完整的 OS,而只是将操作系统中最基本的部分放入微内核,通常包含有:
微内核使用客户机-服务器模式工作,它将操作系统中最基本的部分放入内核,把其他的大部分功能放在内核外的一系列进程(服务器)中实现。当用户进程需要使用某些功能时,它将向内核发送请求,内核调用相应的进程(服务器)后向客户进程进行响应。
微内核是利用“机制与策略分离”的原理来构造的,机制是指实现某一功能的具体执行机构,策略则是在机制的基础上借助于某些参数和算法来实现该功能的优化。在传统的 OS 中将机制放在 OS 的内核的较低层,把策略放在内核的较高层次中。而在微内核操作系统中,通常将机制和与硬件相关的部分放在 OS 的微内核中。微内核通常具有如下几方面的功能:
对于用户进程如何分类和用户优先级、内存分配和内存回收以及具体的中断处理程序,这些都可以归纳为策略部分,可以把这些功能交给具体的进程(服务器)实现。
由于微内核 OS 结构是建立在模块化、层次化结构的基础上的,并采用了客户/服务器模式和面向对象的程序设计技术,因此微内核结构的操作系统拥有很多优点。
单内核 OS 下用户进程在请求取得 OS 服务时一般只需进行两次上下文的切换。一次是在执行系统调用后由用户态转向系统态时,另一次是在系统完成用户请求的服务后由系统态返回用户态时。
在微内核 OS 中由于客户和服务器、服务器和服务器之间的通信都需通过微内核,致使同样的服务请求至少需要进行四次上下文切换,这就带来了效率问题。
早期的操作方式是由程序员将事先已穿孔的纸带(或卡片),装入纸带输入机(或卡片输入机),再启动它们将纸带(或卡片)上的程序和数据输入计算机,然后启动计算机运行。这种人工操作方式有以下两方面的缺点,首先当用户操作计算机时这个用户占有这台计算机的全部资源,第二是在用户操作纸带时 CPU 是不工作的。
人工操作方式严重降低了计算机资源的利用率,带来了人机矛盾,直至后来引入了脱机输入/输出技术才有所改善。脱机输入/输出(Off-Line I/O)方式是事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当 CPU 需要这些程序和数据时,再从磁带上高速地调入内存。
单批处理系统需要先把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序(Monitor),使这批作业能一个接一个地连续处理。
单道批处理系统最主要的缺点是,系统中的资源得不到充分的利用。这是因为在内存中仅有一道程序,每逢该程序在运行中发出 I/O 请求后,CPU 必须在其 I/O 完成后才继续运行。
在该系统中用户所提交的作业先存放在外存上,并排成一个“后备队列”。然后由作业调度程序按一定的算法,从后备队列中选择若干个作业调入内存,使它们共享 CPU 和系统中的各种资源。
多道批处理系统的优点是资源利用率高,因为引入多道批处理能使多道程序交替运行,同时系统吞吐量大。但是由于作业要排队依次进行处理,因而平均周转时间长。同时多道批处理系统无交互能力,因为用户一旦把作业提交给系统后,用户都不能与作业进行交互。
多道批处理系统提高了资源利用率和系统吞吐量,但是用户对人一机交互的需求也需要满足,用户的需求具体表现在以下几个方面:
分时系统是指在一台主机上连接了多个配有显示器和键盘的终端并由此所组成的系统,它允许多个用户同时通过自己的终端,以交互方式共享主机中的资源。系统首先必须能提供多个终端,同时给多个用户使用。其次当用户在自己的终端上键入命令时,系统应能及时接收,并及时处理该命令,再将结果返回给用户。要做到及时接收多个用户键入的命令或数据,只需在系统中配置一个多路卡即可。要实现用户的命令及时处理,需要通过下面 2 个方式:
分时系统的优点是用户的请求可以被及时响应,解决了人机交互问题。缺点是不能够优先处理一些紧急任务,因为 OS 对各用户和作业完全公平。
“实时计算”可以定义为这样一类计算:系统的正确性,不仅由计算的逻辑结果来确定,而且还取决于产生结果的时间。实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
实时系统的任务分为硬实时任务和软实时任务,硬实时任务(Hard Real-time Task,HRT)是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的后果。软实时任务(Soft Real-time Task,SRT)对截止时间的检查并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大。
内核_百度百科