本文章是学习《操作系统》慕课版 和 王道《2024年 操作系统 考研复习指导》后所做的笔记,其中一些图片来源于学习资料。
目录
裸机 + I/O 软件 + 用于管理文件的软件 + 面向用户的窗口软件
概念(定义)
- 控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配 —— OS 是系统资源的管理者 —— 资源管理
- 提供给用户和其他软件方便的接口和环境 —— 向上层提供方便易用的服务 —— 人机交互
- 计算机系统中最基本的系统软件 —— 最接近硬件的一层软件 —— 资源抽象
-
目标
OS 的目标与应用环境有关
主要目标:方便性、有效性、可扩充性和开放性
方便性和有效性是设计 OS 时最重要的两个目标
方便性
- 系统可以使用编译命令将用户采用高级语言书写的程序翻译成机器代码
- 用户可以直接通过 OS 所提供的各种命令操纵计算机系统
有效性
- 提高系统资源的利用率
- 提高系统的吞吐量
可扩充性
可扩充性的好坏与 OS 的结构有着十分紧密的联系
无结构 —> 模块化结构 —> 分层式结构 —> 微内核结构
微内核结构:方便地添加新的功能和模块,对原有的功能和模块进行修改,具有良好的可扩充性
开放性
计算机 OS 的应用环境:单机环境 —> 网络环境
开放性指系统能遵循世界标准规范,特别是能遵循开放系统互连 OSI 国际标准
凡遵循国际标准所开发的硬件和软件,都能彼此兼容,方便地实现互连
作用
OS 作为用户与计算机硬件系统之间的接口 — 人机交互
含义:OS 处于用户与计算机硬件系统之间,用户通过 OS 使用计算机系统;或者说,用户在 OS 的帮助下能够方便、快捷、可靠地操纵计算机硬件和运行自己的程序
用户使用计算机的方式:
- 命令方式
- 系统调用方式
- 图形 / 窗口方式
接口:
- GUI 图形化用户接口:用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数
- 命令接口
-
- 联机命令接口:联机命令接口 = 交互式命令接口 ,用户说一句,系统跟着做一句
- 脱机命令接口:脱机命令接口 = 批处理命令接口 ,用户说一堆,系统跟着做一堆
- 程序接口:可以在程序中进行系统调用使用程序接口,普通用户不能直接使用程序接口,只能通过程序代码间接使用
PS:命令接口和程序接口有时统称为用户接口
总结:
OS 作为计算机系统资源的管理者 — 资源管理
一个计算机系统中,通常含有多种硬件和软件资源
OS 必须对共享资源的使用请求进行授权,已协调诸多用户对共享资源的使用
补充知识:执行一个程序前需要将该程序放到内存中,才能被 CPU 处理
例子:使用 QQ 与朋友视频聊天的过程
- 在各个文件夹中找到 QQ 安装的位置 逐层打开文件夹,找到 QQ.exe 存放的位置 —— 文件管理
- 双击打开 QQ.exe 把该程序相关数据放入内存 —— 存储器管理
- QQ 程序正常运行 对应的进程被处理机(CPU)处理 —— 处理机管理
- 开始和朋友视频聊天 需要将摄像头设备分配给进程 —— 设备管理
总结:
OS 实现了对计算机资源的抽象 — 资源抽象
裸机
一个完全无软件的计算机系统
裸机 + I/O 设备管理软件(I/O 软件)
隐藏了 I/O 设备操作的细节,并可向上将 I/O 设备抽象为一组数据结构以及一组 I/O 操作命令【在裸机上铺设的 I/O 软件,隐藏了 I/O 设备的具体细节,向上提供了一组抽象的 I/O 设备】
把覆盖了上述软件的 I/O 设备称为扩充机器或虚机器,向用户提供了一个可以对硬件进行操作的抽象模型
I/O 软件实现了对计算机硬件操作的第一个层次的抽象
裸机 + I/O 软件 + 用于管理文件的软件
实现对文件操作的细节,并向上层提供一组实现对文件进行存取操作的数据结构及命令,用户可利用该软件提供的数据结构及命令对文件进行存取,用户看到的是一台功能更强、使用更方便的虚机器
文件管理软件实现了对硬件资源操作的第二个层次的抽象
裸机 + I/O 软件 + 用于管理文件的软件 + 面向用户的窗口软件
用户可在窗口环境下方便地使用计算机,从而形成一台功能更强的虚拟机
总结
OS 是铺设在计算机硬件上的多层软件的集合,不仅增强了系统的功能,还隐藏了对硬件操作的具体细节,实现了对计算机硬件操作的多个层次的抽象模型
一个硬件不仅可在低层加以抽象,还可在高层对该资源低层已抽象的模型进行再次抽象,从而形成更高层的抽象模型。抽象层次越高,抽象接口所提供的功能越强,用户使用起来越方便
推动操作系统发展的主要动力
OS:简单 —> 复杂、低级 —> 高级
不断提高计算机系统资源的利用率
单道批处理系统 —> 多道批处理系统,通过减少计算机的空闲时间提高 CPU 的 I/O 设备的利用率
出现支持多个用户使用一台计算机的分时系统,使系统资源利用率得到极大提高
改善 I/O 设备和 CPU 利用率的假脱机系统
提出能够有效提高存储器系统利用率并能从逻辑上扩大内存的虚拟存储器技术
在网络环境下,通过在服务器上配置网络文件系统和数据库系统,将资源提供给全网用户共享,进一步提高资源的利用率
方便用户
当资源利用率不高的问题得到基本解决后,用户在使用计算机和调试程序时的不方便性成为主要矛盾
分时系统:提高了系统资源的利用率,实现人机交互,使用户能像早期使用计算机时一样感觉自己独占全机资源,对其进行直接操控,同时极大地方便程序员对程序进行调试和修改
图形用户界面:进一步方便用户对计算机的使用
器件不断更新换代
信息技术、微机芯片、外部设备
计算机体系结构不断发展
计算机:单处理机系统 —> 多处理机系统 OS:单处理机 OS —> 多处理机 OS
计算机网络出现 网络OS(不仅能有效管理好网络中的共享资源,还能向用户提供许多网络服务)
不断提出新的应用需求
发展过程
简单的批处理系统 —> 多道批处理系统 —> 分时系统 —> 实时系统 —> 微机 OS、多处理机 OS、网络 OS、分布式 OS
未配置操作系统的计算机系统
人工操作方式
- 用户独占全机:一台计算机的全部资源由上机用户独占
- CPU 等待人工操作
脱机 I/O 方式
事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带上的程序和数据输入磁带。当 CPU 需要这些程序和数据时,再从磁带上将它们高速地调入内存
优点:
- 减少了 CPU 的空闲时间
- 提高了 I/O 速度
单道批处理系统
处理过程
首先由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业;当该作业处理完成时,又把运行控制权交还给监督程序,再由监督程序把磁带上的第二个作业调入内存
内存中始终只保持一道作业
单道批处理系统是在解决人机矛盾和 CPU 与 I/O 设备速度不匹配矛盾的过程中形成的
单道批处理系统旨在提高系统资源的利用率和系统吞吐量
这种单道批处理仍然不能充分利用系统资源
缺点
- 系统中的资源得不到充分利用
- I/O 设备的低速性使 CPU 的利用率显著降低
多道批处理系统
目的
进一步提高资源的利用率和系统吞吐量
处理过程
用户所提交的作业会被先存放在外存上,并排成一个队列,称为“后备队列”。然后由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享 CPU 和系统中的各种资源。由于在内存中同时装有若干道程序,便可在运行程序 A 时,利用其因 I/O 操作而暂停执行时的 CPU 空挡时间,再调度另一道程序 B 运行。同样可以利用程序 B 在 I/O 操作时的 CPU 空挡时间,再调度程序 C 运行,进而实现多道程序交替运行,便可保持 CPU 处于忙碌状态
优点
- 资源利用率高:使多道程序交替运行,以保证 CPU 一直处于忙碌状态;在内存中装入多道程序,不仅可以提高内存的利用率,还可以提高 I/O 设备的利用率
- 系统吞吐量大:CPU 和其他资源保持“忙碌”状态;仅当作业完成时或运行不下去时才进行切换,系统开销小
缺点
- 平均周转时间长
- 无交互能力:用户一旦把作业提交给系统,那么直至作业完成。用户都不能与自己的作业进行交互。对用户修改和调试程序极不方便
需要解决的问题
- 争用处理机问题:系统既要满足各道程序运行的需要,又要能提高处理机的利用率
- 内存分配与保护问题:系统应能为每道程序分配必要的内存空间,以使其“各得其所”,且不会因某道程序出现异常情况而破坏其他程序
- I/O 设备分配问题:系统应采取适当的策略来分配系统中的 I/O 设备,以达到既能方便用户对设备的使用,又能提高设备利用率的目的
- 文件的组织与管理问题:系统应能有效地组织存放在系统中的大量程序和数据,以使它们既便于用户使用,又能保证数据的安全性
- 作业管理问题:系统中存在着各种作业(应用程序),系统应能对系统中所有的作业进行合理的组织,以满足这些作业对应用户的不同要求
- 用户与系统的接口问题:为使用户能方便地使用 OS,OS 还应提供用户与 OS 之间的接口
因此,应在计算机系统中增加一组软件,此软件应包括:能够有效组织和管理四大资源的软件,合理地对各类作业进行调度并控制它们所运行的软件,以及方便用户使用计算机的软件
OS:一组能有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合
分时系统
引入
推动多道批处理系统形成和发展的主要动力:提高资源利用率和系统吞吐量
推动分时系统形成和发展的主要动力:为了满足用户对人机交互的需求
用户需求的具体表现
- 人机交互:用户希望可以独占全机并对它进行直接控制,以便能方便地对程序中的错误进行修改
- 共享主机:用户们在共享一台计算机时,每个用户都希望能像独占全机一样,不仅可以随时与计算机进行交互,而且不会感觉到其他用户的存在
分时系统:在一台主机上连接多个配有显示器和键盘的终端所形成的系统,该系统允许多个用户同时通过自己的终端以交互方式使用计算机,并共享主机中的资源
实现 —— 如何使用户能与自己的作业进行交互
- 系统必须能提供多个终端同时给多个用户使用
- 当用户在自己的终端上键入命令时,系统应能及时接收并处理该命令,然后将处理结果返回给用户
- 用户可根据系统的响应情况,再继续键入下一条命令
允许有多个用户同时通过自己的键盘键入命令,系统也应能将全部命令及时接收并处理
及时接收
及时接收多个用户键入的命令或数据,只须在系统中配置一个多路卡即可
及时处理
用户键入命令后,能对自己的作业及其运行及时地实施控制,或进行修改
用户的作业都必须驻留在内存中
实现人机交互采用的方式
- 采用作业直接进入内存的方式:因为作业在磁盘上是不能运行的,所以应直接进入内存
- 采用轮转运行的方式:为避免一个作业长期独占处理机,引入时间片的概念;一个时间片就是一段很短的时间;系统规定每个作业每次只能运行一个时间片,然后就暂停该作业的运行,并立即调度下一个作业运行
特征
多路性
含义:指系统允许将多台终端同时联接到一台主机上,并按分时原则为每个用户服务
优点:允许多个用户共享一台计算机,显著地提高了资源利用率,降低了使用费用,从而促进计算机更广泛的应用
独立性
含义:指系统提供了一种用机环境,即每个用户在各自的终端上进行操作,彼此之间互不干扰,给用户的感觉就像是他一人独占主机
及时性
含义:指用户的请求能在很短的时间内获得响应,这一时间间隔是根据人们所能接受的等待时间确定的,通常仅为1~3 s
交互性
含义:指用户可以通过终端与系统进行广泛的人机对话
广泛性表现在:用户可以请求系统提供多方面的服务
优点
- 用户请求可以被即时响应,解决了人机交互问题
- 允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人存在
缺点
不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性
实时系统
含义:指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行
类型
工业控制系统
功能
实时采集现场数据,并对所采集的数据进行及时处理,进而能够自动控制相应的执行机构,使之具有按预定的规律变化的功能
应用
用于对武器的控制
信息查询系统
接收用户从远程终端上发来的服务请求,根据用户发来的请求对信息进行检索和处理,并能及时对用户做出正确的回答
多媒体系统
文本、图像、音频和视频等信息已能被集成在一个文件中,进而形成一个多媒体文件
为了保证好的视觉和听觉感受,用于播放视频和音频的多媒体系统必须是实时信息处理系统
嵌入式系统
芯片+仪器 / 设备 —> 智能仪器 / 智能设备
智能仪器 / 智能设备 + OS —> 具有实时控制或处理功能
实时任务的类型
周期性实时任务和非周期性实时任务
周期性实时任务:外部设备周期性地发出激励信号给计算机,要求它按制定周期循环执行,以便周期性地控制某外部设备
非周期性实时任务:无明显地周期性,但都必须联系着一个截至时间,或称为最后期限
- 开始截止时间:指某任务在某时刻以前必须开始执行
- 完成截至时间:指某任务在某时刻以前必须执行完成
硬实时任务和软实时任务
硬实时任务 HRT:系统必须满足任务对截至时间的要求,否则可能出现难以预测地结果 工业控制和武器控制的实时系统
软实时任务 SRT:联系着一个截至时间,但并不严格,若偶尔错过了任务的截至时间,则对系统产生的影响不会太大 信息查询系统和多媒体系统
特征
多路线
信息查询系统:系统按分时原则为多个终端用户服务
实时控制系统:系统周期性地对多路现场信息进行采集,并对多个对象或多个执行机构进行控制
独立性
信息查询系统:每个终端用户在与系统进行交互时,彼此相互独立、互不干扰
实时控制系统:对信息的采集和对对象的控制彼此互不干扰
及时性
信息查询系统:依据人所能接受的等待时间确定
多媒体系统:播放出来的音频和视频能令人满意
实时控制系统:以控制对象所要求的截至时间确定,一般为秒级到毫秒级
交互性
信息查询系统:人与系统的交互性仅限于访问系统中某些特定的专用服务程序
多媒体系统:用户发出某些特定的命令,然后由系统立即响应
可靠性
实时系统:要求系统高度可靠,因为任何差错都可能会带来无法预料的灾难性后果;采取多级容错措施,以保障系统及数据的安全性
微机操作系统
定义
配置在微机上的操作系统
分类
嵌入式操作系统
嵌入式系统
定义:为了完成某个特定功能而设计的系统,或是具有附加机制的系统,或是其他部分的计算机硬件与软件的结合体
许多情况下,嵌入式系统是一个大系统或产品中的一部分
嵌入式系统的数量远超过普通的 OS,而且应用广泛
嵌入式系统的需求和限制有很大的不同
嵌入式系统通常与其所处的环境紧密联系
由于与环境交互的需要,从而产生实时限制,这类限制决定软件操作的时限;若多个活动必须进行同步管理,则需要更复杂的实时限制
嵌入式 OS
定义
应用于嵌入式系统的 OS
一种用途广泛的系统软件,包括与硬件相关的低层驱动软件、系统内核、设备驱动接口、通信协议、图形用户界面、标准化浏览器……
作用
负责嵌入式系统的全部软硬件资源的分配、任务的调度以及并发活动的协调……
必须体现其所在系统的特征,必须能够通过装卸某些模块实现系统所要求的功能
特点
- 系统内核小:一般应用于小型电子装置,系统资源相对有限
- 系统精简:一般没有系统软件和应用软件的明显区分,不要求功能设计与实现过于复杂,既可以控制系统成本,又有利于系统安全
- 实时性高:是嵌入式软件的基本要求,软件要求固态存储以提高速度,软件代码要求高质量和高可靠性
- 具有可配置性:由于嵌入式系统的多样性,一个嵌入式 OS 若想应用在不同的嵌入式系统中,就必须可以灵活配置,以便为特定的应用和硬件系统提供所需的功能
网络操作系统
定义
用于在计算机网络环境下对网络资源进行管理和控制,实现数据通信及对网络资源的共享,为用户提供网络资源接口的一组软件和规程的集合
网络 OS 建立在网络中的计算机各自不同的单处理机 OS 之上,为用户提供使用网络资源的桥梁
特征
- 硬件独立性:系统可以运行于各种硬件平台之上,也可以运行于面向精简指令集计算机的系统
- 接口一致性:系统为网络中的共享资源提供一致性的接口,即针对同一性质的资源,采用统一的访问方式和接口
- 资源透明性:系统能对网络中的资源进行统一管理,能够根据用户的要求对资源进行自动选择和分配
- 系统可靠性:系统利用资源在地理上分散的优点,通过统一的管理、分配和调度手段,确保了整个网络的安全可靠。如果一个节点和通信链路出现故障,则可屏蔽该节点或重新定义新的通信链路,以保证网络的正常运行
- 执行并行性:系统不仅实现了在每个节点计算机中各道进程的并发执行,而且实现了网络中多个节点计算机上进程的并行执行
功能
网络 OS 不仅涵盖了单处理机 OS 的全部功能,还具有支持数据通信、应用互操作【以实现“信息互通性”及“信息互用性”】、网络管理【确保最大限度地增加网络的可用时间、提高网络设备的利用率、改善网络的服务质量以及保障网络的安全性】等功能
为了实现网络中计算机之间的数据通信,网络 OS 应具有如下基本功能:
- 连接的建立与拆除
- 报文的分解与组装
- 传输控制
- 流量控制
- 差错的检测与纠正
分布式操作系统
分布式系统
定义
基于软件实现的一种多处理机系统,是多个处理机通过通信线路互联而构成的松散耦合系统,系统的处理和控制功能分布在各个处理机上
分布式系统是利用软件系统方式构建在计算机网络上的一种多处理机系统
分布式系统与传统的多处理机系统的比较
- 分布式系统中的每个节点都是一台独立的计算机,并配置有完整的外部设备
- 分布式系统中节点的耦合程度更低,地理分布区域更加广阔
- 分布式系统中的每个节点均可以运行不同的 OS,每个节点均拥有自己的文件系统,除了本节点的管理外,还有其他多个机构会对其实施管理
特征
分布性
分布式系统由多台计算机组成
- 地理位置的分布性:从位置和地域范围来看,是分散的和广阔的
- 功能的分布性:从系统的功能来看,功能分散在系统的各个节点计算机上
- 资源的分布性:从系统的资源来看,资源也分散配置在各节点计算机上
- 控制的分布性:从系统的控制来看,在一般的分布式系统中,计算机没有主从之分
资源和控制的分布性也称为自治性
透明性
分布式系统的系统资源被所有计算机共享,每台计算机的用户不仅可以使用本机的资源,还可以使用分布式系统中其他计算机的资源
同一性
分布式系统中的若干台计算机可以通过相互协作来完成同一任务,或者说一个程序可以分布在几台计算机上并行地运行
全局性
系统具备一个全局性的进程通信机制,系统中的任意两台计算机都可以通过该机制实现信息交换
分布式 OS
定义
配置在分布式系统上的公用 OS
以全局的方式对分布式系统中的所有资源进行统一管理,可以直接对系统中地理位置分散的各种物理和逻辑资源进行动态分配和调度,有效地协调和控制各个任务的并行执行,协调和保持系统内的各个计算机间的信息传输与协作运行,并向用户提供一个统一的、方便的、透明的使用系统界面和标准接口
功能
涵盖单处理机 OS 的主要功能
- 通信管理功能:提供某种通信机制和方法,使不同节点上的用户或进程能方便地进行信息交换
- 资源管理功能:对系统中的所有资源实施统一管理、统一分配和统一调度,以提高资源利用率,方便用户共享和使用
- 进程管理功能:为平衡各节点负载,加速计算速度,分布式 OS 应提供进程或计算迁移功能;为协调进程对资源的共享和竞争,提高进程的并行程度,分布式 OS 还应提供分布式的同步和互斥机制以及应对死锁的措施
基本特性
并发
系统中的程序能并发执行,使得 OS 能有效地提高系统中资源的利用率,增加系统的吞吐量
并行:指两个或多个事件在同一时刻发生
并发:指两个或多个事件在同一时间间隔内发生
- 宏观:在多道程序环境下,指在一段时间内宏观上有多个程序在同时运行
- 微观:在单处理机系统中,每一时刻仅能有一道程序执行,故在微观上这些程序只能分时交替执行
若在计算机系统中有多个处理机,则这些能并发执行的程序便可被分配到多个处理机上实现并行执行,即利用每个处理机处理一个可并发执行的程序,多个程序便可同时执行
PS:
- 单核 CPU:同一时刻只能执行一个程序,各程序只能并发地执行
- 多核 CPU:同一时刻可以同时执行多个程序,多个程序可以并行地执行
进程
未引入进程:同属于一个应用程序的计算程序和 I/O 程序只能顺序执行
引入进程:为计算程序和 I/O 程序分别建立一个进程后,这两个进程便可并发执行
若对内存中的多个程序都分别建立一个进程,则其可以并发执行,能极大限度地提高系统资源的利用率、增加系统的吞吐量
进程的定义:指在系统中能独立运行并能作为资源分配对象的基本单位,是一个能独立运行的活动实体
进程的组成:一组机器指令、数据、堆栈……
PS:多个进程之间可以并发执行和交换信息
共享
资源共享:某种资源能被大家使用
OS 环境下的资源共享 / 资源复用:指系统中的资源可供内存中多个并发执行的进程共同使用【时间:进程在内存中时;地点:内存】
实现资源共享的方式
互斥共享方式
定义:当进程 A 要访问某资源时,必须提出请求。若此时该资源空闲,系统便可将其分配给进程 A 使用。此后若再有其他进程也要访问该资源,则只要进程 A 未用完,其他进程就必须等待。仅当进程 A 访问完并释放后,才允许另一进程对该资源进行访问
临界资源 / 独占资源:在一段时间内只允许一个进程访问的资源,系统中的大多数物理设备、栈、变量、表格……
同时共享方式
定义:允许在一段时间内由多个进程“同时”(宏观)访问的资源
微观:进程对该资源的访问是交替进行的(分时共享)
PS
并发和共享是多用户(多任务)OS 的两个最基本的特征
并发和共享互为对方存在的条件,即:
- 资源共享是以进程的并发执行为条件的,若系统不允许并发执行,也就不存在资源共享问题
- 若系统不能对资源共享实施有效的管理,以协调好各进程对共享资源的访问,则必然会影响各进程间并发执行的程度,甚至会使它们根本无法并发执行
虚拟
定义:在 OS 中,把通过某种技术将一个物理实体【实的,实际存在】变为若干个逻辑上的对应物【虚的,用户感觉存在】的功能
虚拟技术:用于实现虚拟的技术
实现:在 OS 中利用时分复用和空分复用技术实现“虚拟”
PS:虚拟的实现,若采用分时复用技术,即对某一物理设备进行分时复用,设 N 是某物理设备所对应的虚拟的逻辑设备数,则每台虚拟设备的平均速度必然等于或小于物理设备速度的 1/N;若采用空分复用技术,则此时一台虚拟设备平均占用的空间必然等于或小于物理设备所拥有空间的 1/N
时分复用技术
利用处理机的空闲时间来运行其他程序以提高处理机的利用率
目的:提高资源的利用率
时分复用技术能提高资源利用率的根本原因:令某设备在为一个用户服务的空闲时间转去为其他用户服务,进而使设备得到最充分的利用
微观:处理机在各个微小地时间段内交替着为各个进程服务
PS:若失去了并发性,则一个时间段内系统只需运行一道程序,失去实现虚拟性的意义,故,没有并发性就谈不上虚拟性
虚拟处理机技术
利用多道程序设计技术,为每道程序建立至少一个进程,使多道程序并发执行
虽然系统中只有一台处理机,但通过时分复用技术能实现(宏观上)同时为多个用户服务,使每个终端用户都认为有一个处理机在专门为他服务。即,利用多道程序设计技术,可将一台物理上的处理机虚拟为多台逻辑上的处理机,然后可在每台逻辑处理机上运行一道程序
虚拟处理机:用户所感觉到的处理机
虚拟设备技术
利用时分复用技术,将一台物理上的 I/O 设备虚拟为多台逻辑上的 I/O 设备,并允许每个用户占用一台逻辑上的 I/O 设备,并允许每个用户占用一台逻辑上的 I/O 设备
使原来仅允许在一段时间内由一个用户访问的设备(即临界资源)变为允许多个用户“同时”访问的共享设备,即其在宏观上能“同时”为多个用户服务
空分复用技术
利用存储器的空闲时间来存放其他程序以提高内存的利用率
单纯的空分复用存储器只能提高内存的利用率,并不能实现在逻辑上扩大存储器容量
空分复用存储器+虚拟存储技术:逻辑上扩大存储容量
虚拟存储技术本质上是实现内存的时分复用,即可以通过时分复用内存的方式使一道程序仅在远小于它的内存空间中运行
异步
进程的异步性:进程以人们不可预知的速度向前推进
PS:若失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有了并发性,才有可能导致异步性
运行环境
硬件支持
引导程序
位置:位于计算机的固件中
要求:初始化系统的各个组件以及内存内容;知道如何加载 OS 并开始执行系统
作用:定位 OS 内核并将其加载到内存中
事件
硬件中断或软件中断引起
指令
CPU 执行
执行程序
位于内存
程序
位于外存
操作系统内核
定义:指 OS 一直运行在计算机上的程序【与硬件紧密相关的模块、各种常用设备的驱动程序、运行频率较高的模块、许多模块所公用的一些基本操作,安排在紧靠硬件的软件层次中,常驻内存】
程序:内核、系统程序(与系统运行有关的程序,但不是内核)、应用程序(与系统运行无关的其他程序)
内核程序:实现操作系统的程序
目的:
- 便于对这些软件进行保护,防止其遭受其他应用程序的破坏
- 提供 OS 的运行效率
支撑功能
支撑功能主要实现提供给 OS 其他众多模块所需要的一些基本功能
中断处理
地位:内核最基本的功能,整个 OS 赖以活动的基础
为减少处理中断的时间,提高程序执行的并发性,内核在对中断进行“有限处理”后便会转入相关的进程,由这些进程继续完成后续的处理工作
时钟管理
地位:内核的一项基本功能,在 OS 中的许多活动都需要得到它的支撑
原语操作
原语:由若干条指令组成的,用于完成一定功能的一个过程
原语与一般过程的区别:原语是原子操作
原子操作:指一个操作中的所有动作,要么全做,要么全不做,即原子性,是一个不可分割的基本单位。原子操作在内核态下执行,常驻内存
PS:原语在执行过程中不允许被中断
资源管理功能
进程管理
在进程管理中,或者由于各个功能模块的运行频率较高,或者由于它们为多种原语操作所需要,通常放在内核中,以提高 OS 的性能
存储器管理
存储器管理软件的运行频率比较高,通常放在内核中,以保证存储器管理具有较高的运行速度
设备管理
由于设备管理与硬件紧密相关,因此其中很大部分设置在内核中
处理机的双重工作模式
目的:双重模式执行提供了保护手段,以防止 OS 和用户程序受到错误用户程序的影响
保护的实现方式
特权指令
定义:可能引起损害的机器指令
具体说明:
- 指在内核态下运行的指令
- 对内存空间的访问范围基本不受限制,不仅能访问用户空间,还能访问系统空间
- 切换到用户态的指令也是特权指令
- 操作系统内核有时会让 CPU 执行一些“特权指令”
非特权指令
定义:不可能引起损害的机器指令
具体说明:
- 指在用户态下运行的指令
- 仅能访问用户空间
- 应用程序所使用的都是非特权指令,只能完成一般性的操作和任务,不能对系统中的硬件和软件进行直接访问,对内存的访问范围也局限于用户空间,可以防止应用程序的运行异常对系统造成破坏
实现:应用程序所使用的都是非特权指令的限制由硬件实现,如果在应用程序中使用了特权指令,则硬件不会执行该指令,而是认为该指令非法,并发出权限出错信号,OS 捕获到这个信号后,将会转入相应的错误处理程序,以停止该应用程序的运行,并重新进行程序调度
处理机运行模式
程序运行的过程其实就是 CPU 执行一条一条的机器指令的过程
在 CPU 设计和生产时就划分了特权指令和非特权指令,故 CPU 执行一条指令前就能判断出其类型
处理机至少需要两种单独运行模式:用户态(又称目态)和内核态(又称管态、系统态、核心态)
- 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
- 处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
表示方式:计算机硬件可以通过一个模式位(状态位)来表示当前模式,内核态(0)和用户态(1)
模式位的作用:区分为 OS 所执行的任务和为用户所执行的任务
用户态到内核态的切换:
- 当计算机系统执行用户程序时,系统处于用户态
- 当用户程序通过系统调用请求 OS 服务时,系统必须从用户态切换到内核态以满足请求
- 当中断或错误出现,硬件切换至内核态
- 内核态 —> 用户态:执行一条特权指令 —— 修改 PSW 的标志位为“用户态”,意味着操作系统将主动让出 CPU 使用权
- 用户态 —> 内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回 CPU 的使用权
PS:除了非法使用特权指令之外,很多事件会触发中断信号,一个共性是,但凡需要操作系统介入的地方,都会触发中断信号
用户程序需要使用特权指令怎么办?
解决方法:系统调用,视为软中断
例子:
- 该开机时,CPU 为“内核态”,操作系统内核程序先上 CPU 运行
- 开机完成后,用户可以启动某个应用程序
- 操作系统内核程序在合适的时候主动让出 CPU,让该应用程序上 CPU 运行 操作系统内核在让出 CPU 之前,会用一条特权指令把 PSW 的标志位设置为“用户态”
- 应用程序运行在“用户态”
- 此时,一个黑客在应用程序中植入一条特权指令,企图破坏系统……
- CPU 发现接下来要执行的指令是特权指令,但是自己又处于“用户态”
- 这个非法事件引发一个中断信号 CPU 检测到中断信号后,会立即变为“内核态”,并停止运行当前的应用程序,转而运行处理中断信号的内核程序
- “中断”使操作系统再次夺回 CPU 的控制权
- 操作系统会对引发中断的事件进行处理,处理完了再把 CPU 使用权交给别的应用程序
中断(广义的中断)
触发方式:硬件通过系统总线发送信号到 CPU 触发的
地位:中断是计算机体系结构的重要组成部分
作用
操作系统内核夺回 CPU 使用权的唯一途径
若没有“中断”机制,那么一旦应用程序上 CPU 运行,那么 CPU 会一直运行这个应用程序
类型
内中断(异常、例外)
与当前执行的指令有关,中断信号来源于 CPU 内部
定义:一种由软件引起的中断,或源于出错,或源于用户程序的特定请求,OS 的这种中断特性规定了系统的通用结构
检查中断信号:CPU 在执行指令时会检查是否有异常发生
处理:对于每一种中断,OS 都会通过不同的代码处理它,中断处理程序应用于处理中断
类型:
- 陷阱、陷入:由陷入指令引发,是应用程序故意引发的的
- 故障:由错误条件引起,可能被内核程序修复。内核程序修复故障后会把 CPU 使用权还给应用程序,让其继续执行下去,如缺页故障
- 终止:由致命错误引起,内核程序无法修复该错误,一般不再将 CPU 使用权还给引发终止的应用程序,而是直接终止该应用程序,如整数除0、非法使用特权指令
例子:
- 当前执行的指令本身是非法的
- 指令的某些参数是非法的
- 有时应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令(执行陷入指令,意味着应用程序主动将 CPU 控制权还给操作系统内核,系统调用是通过陷入指令完成的),指该指令会引发一个内部中断信号
外中断(中断——狭义的中断)
与当前执行的指令无关,中断信号来源于 CPU 外部
检查中断信号:每个指令周期末尾,CPU 都会检查是否有外中断信号需要处理
类型:
- 时钟中断:由时钟部件发出中断信号,时钟部件每隔一个时间片会给 CPU 发送一个时钟中断信号
- I/O 中断:由输入/输出设备发出中断信号
中断机制的基本原理
不同的中断信号,需要用不同的中断处理程序处理。当 CPU 检测到中断信号后,会根据中断信号的类型查询“中断向量表”,以此找到相应的中断处理程序在内存中的存放位置
中断处理程序一定是内核程序,需要运行在“内核态”
总结
主要功能 5+1
引入 OS 的主要目的:为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊地、高效地运行,并能最大限度地提高系统中各种资源的利用率和方便用户的使用
处理机管理功能
处理机管理的主要功能:创建和撤销进程,对进程的运行进行协调,实现进程之间的信息交换,按照一定的算法把处理机分配给进程
进程控制
主要功能:为作业创建进程,撤销(终止)已结束的进程,控制进程在运行过程中的状态转换
进程同步
进程同步机制的主要任务:对多个进程(含线程)的运行进行协调,协调方式有进程互斥方式和进程同步方式
进程同步最常用的机制:信号量机制
进程通信
直接通信
由源进程利用发生命令,直接将信息挂到目标进程的消息队列上,以后由目标进程利用接收命令从其消息队列中取出消息
间接通信
调度
作业调度
基本任务:按照一定的算法,从后备队列中选出若干个作业,并为它们分配运行所需的资源;在将这些作业调入内存后,分别为它们建立进程,以使它们都成为可能会获得处理机的就绪进程,并将这些进程插入就绪队列
进程调度
任务:按照一定的算法,从进程的就绪队列中选出一个进程,将处理机分配给它,并为它设置运行现场,使其投入执行
存储器管理功能
存储器管理的主要任务:为多道程序的运行提供良好的环境、提高存储器的利用率、方便用户使用,并能从逻辑上扩大内存
内存分配和回收
内存分配
主要任务:
- 为每道程序分配内存空间,使它们“各得其所”
- 提高存储器的利用率,尽量减少不可用的内存空间(内存碎片)
- 允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要
分配方式:
- 静态分配方式:每个作业的内存空间是在作业装入时确定的,在作业装入后的整个运行期间,不允许该作业再申请新的内存空间,也不允许该作业在内存中“移动”
- 动态分配方式:每个作业所要求的基本内存空间虽然也是在装入时确定的,但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动”
内存回收
内存属于有限资源,随着系统的运行,内存会被逐渐消耗
当程序执行完毕后,需要将其所占用的内存及时回收再分配,以提高系统内存资源的利用率
任务:回收程序所占用的资源,并根据当前的内存管理算法将回收的内存经过处理放入对应的管理数据结构中,供下次分配时使用
内存保护
主要任务:
- 确保每道用户程序都仅在自己的内存空间中运行,彼此互不干扰
- 绝不允许用户程序访问 OS 的程序和数据,也不允许其转移到非共享的其他用户程序中去执行
一种比较简单的内存保护机制:设置两个界限寄存器,分别用于存放正在执行程序的上界和下界。在程序运行时,系统须对每条指令所要访问的地址进行检查,如果发生越界,则发出越界中断请求,以停止该程序的执行
地址映射
逻辑地址:可装入程序的地址从 0 开始
物理地址:不可能从内存的“0”地址开始装入
各程序段的地址空间内的逻辑地址与其在内存空间中的物理地址并不一致,为保证程序能正确运行,存储器管理必须提供地址映射功能,即能够将地址空间中的逻辑地址变换为内存空间中与之对应的物理地址
实现:在硬件的支持下实现
内存扩充
借助虚拟存储技术,从逻辑上去扩大内存容量,使用户感觉到内存容量比实际内存容量大得多,以便让更多的用户程序能并发运行。既满足了用户的需要,又改善了系统的性能
为了能在逻辑上扩大内存,系统必须设置内存扩充机制,用于实现以下功能:
- 请求调入功能:系统允许在仅装入部分用户程序和数据的情况下,便能启动该程序运行;在程序运行过程中,若发现继续运行所需的程序和数据尚未装入内存,则可向 OS 发出请求,由 OS 从磁盘中将所需部分调入内存,以使程序能够继续运行
- 置换功能:若发现在内存中已无足够的空间来装入需要调入的程序和数据时,则系统应将其内存中的一部分暂时不用的程序和数据调入盘上,以腾出内存空间,然后再将所须调入的部分装入内存
设备管理功能
设备管理的主要任务:
- 完成用户进程提出的 I/O 请求,为用户进程分配所需的 I/O 设备,并完成指定的 I/O 操作
- 提高 CPU 和 I/O 设备的利用率,提高 I/O 速度,方便用户使用 I/O 设备
缓冲管理
作用:在 I/O 设备和 CPU 之间引入缓冲,可有效地缓和 CPU 与 I/O 设备速度不匹配的矛盾,提高 CPU 的利用率,进而提高系统吞吐量
缓冲区机制:
- 单缓冲区机制
- 能实现双向同时传送数据的双缓冲区机制
- 能供多个设备同时使用的公用缓冲池机制
设备分配
基本任务:根据用户进程的 I/O 请求与系统现有资源情况,按照某种设备分配策略,为之分配其所需的设备
设备处理
设备处理程序:又称设备驱动程序,基本任务是实现 CPU 和设备控制器之间的通信,即由 CPU 向设备控制器发出 I/O 命令,要求其完成指定的 I/O 操作;以及有 CPU 接收从设备控制器发出来的中断请求,并给予迅速的响应和响应的处理
设备处理过程:
- 检查 I/O 请求的合法性,了解设备是否处于空闲状态,读取相关的传递参数并设置设备的工作方式
- 向设备控制器发出 I/O 命令,启动 I/O 设备去完成指定的 I/O 操作
- 此外,设备驱动程序还应能及时响应由设备控制器发出来的中断请求,并根据该中断请求的类型,调用相应的中断处理程序进行处理。对于设置了通道的计算机系统,设备处理程序应能根据用户的 I/O 请求自动地构成通道程序
文件管理功能
文件管理的主要任务:对用户文件和系统文件进行管理以方便用户使用,并保证文件的安全性
实现:系统中设置相应的数据结构,用于记录文件存储空间的使用情况,以分配存储空间时参考;系统还应具有对存储空间进行分配和回收的功能
文件存储空间管理
主要任务:为每个文件分配必要的外存空间、提高外存的利用率,有助于提高文件系统的存取速度
目录管理
主要任务:为每个文件建立一个目录项,目录项包括文件名、文件属性、文件在磁盘上的物理位置等,并对众多的目录项加以有效的组织,以实现方便的按名存取(用户只须提供文件名,即可对该文件进行存取)
其他作用:
- 实现文件共享,且在实现时,只须在外存上保留一份该文件的副本即可
- 提供快速的目录查询手段,以提高对文件的检索速度
文件的读/写管理和保护
文件的读/写管理
根据用户的请求从外存中读取数据,或将数据写入外存
文件读(写)操作:在进行文件读(写)时,系统先根据用户给出的文件名去检索文件目录,从中获得文件在外存中的位置;然后,利用文件读(写)指针对文件进行读(写)操作,一旦读(写)完成,便修改读(写)指针,为下一次读(写)做好准备
由于读操作和写操作不会同时进行,故可合用一个读/写指针
文件保护
为防止系统中的文件被非法窃取和破坏,在文件系统中必须提供有效的存取控制功能,以实现:
- 防止未经核准的用户存取文件
- 防止冒名顶替存取文件
- 防止以不正确的方式使用文件
接口管理功能
用户接口
用户可通过该接口向作业发出命令以控制作业的运行
联机用户接口(命令行方式,CLI)
服务对象:联机用户
组成:由一组键盘操作命令及命令解释程序组成
操作:当用户在终端或控制台上键入一条命令后,系统立即转入命令解释程序,对该命令加以解释并执行。完成指定操作后,“控制”又返回到终端或控制台上,等待用户键入下一条命令。这样,用户可以通过先后键入不同命令的方式实现对作业的控制,直至作业完成
脱机用户接口(批命令方式)
服务对象:批处理作业的用户
操作:用户使用作业控制语言把需要对作业进行的控制和干预的命令,事先写在作业说明书上,然后将它与作业连在一起提供给系统。当系统调度到该作业运行时,通过调用命令解释程序对作业说明书上的命令逐条进行解释执行,直到遇到作业结束语句,系统停止该作业的运行
图形用户接口(GUI)
采用图形化的操作界面,采用非常容易识别的各种图标将系统的各项功能、各种应用程序和文件直观、逼真地表示出来。用户可以通过菜单(和对话框),用移动鼠标选择菜单项的方式取代命令的键入,方便、快捷地完成对应用程序和文件地操作在,从而把用户从烦琐且单调地操作中解脱出来
程序接口
程序接口为用户程序在执行中访问系统资源而设置的,是用户程序取得 OS 服务的唯一途径
组成:由一组系统调用组成,每个系统调用都是一个能完成特定功能地子程序
操作:每当应用程序要求 OS 提供某种服务(功能)时,便调用具有相应功能的系统调用
现代操作系统的新功能
保障系统安全
认证技术
一个用来确认被认证对象是否名副其实的过程,即确定对象的真实性,以防止入侵者进行假冒与篡改等
密码技术
对系统中所须存储和传输的数据进行加密,使之成为密文
有效地保护了系统中信息资源的安全性
访问控制技术
可通过两种途径保障系统中资源的安全性:一是通过对用户存取权限的设置,可以限定用户只能访问被允许访问的资源,即限定用户对系统资源的访问范围;二是通过对文件属性的设置,可以保障指定文件的安全性
反病毒技术
对硬盘上所有的可执行文件进行扫描,以检查硬盘上所有可执行文件,若发现有病毒,则立即将其清除
支持用户通过联网获取服务
网络通信
在源主机和目标主机之间实现无差错的数据传输
资源管理
对网络中的共享资源(硬件和软件)实施有效的管理,以协调各用户对共享资源的使用,保证数据的安全性和一致性
应用互操作
在一个由若干个不同网络互联所构成的互联网络中,必须提供应用互操作功能,以实现信息的互通性(指在处于不同网络中的用户之间能实现信息的互通)和信息的互用性(指用户可以访问不同网络中的文件系统和数据库系统中的信息)
可处理多媒体信息
接纳控制功能
实时调度
存储多媒体文件
结构
简单结构(整体系统结构)
OS 是无结构的,是为数众多的一组过程的集合,每个过程均可任意地调用其他过程,内部复杂、混乱
例子:MS-DOS、早期的 UNIX
模块化结构
模块-接口法
定义:将 OS 按其功能划分为若干个具有一定独立性和大小的模块,并规定好各模块间的接口,使各模块之间能通过该接口实现交互;然后进一步将各模块细分为若干个具有一定功能的子模块,规定好各子模块之间的接口;若子模块较大,可将其进一步细分
模块-接口法设计 OS 结构的关键问题:模块的划分和规定好模块之间的接口
优点
- 提高了 OS 设计的正确性、可理解性和易维护性
- 增强了 OS 的可适应性
- 加速了 OS 的开发过程
缺点
- 设计 OS 时,对各模块间接口的规定很难满足划分完成后模块对接口的实际需求
- 在 OS 设计阶段,设计者必须做出一系列的决定(决策),每个决定必须建立在上一个决定的基础上,但在模块化结构设计中,无法寻找一个可靠的决定顺序,造成各种决定的“无序性”,使程序员很难做到“设计中的每一步决定”都建立在可靠的基础上,因此模块-接口法又称为“无序模块法”
模块独立性
模块独立性越高,各模块间的交互越少,系统的结构越清晰
衡量模块独立性的标准:
- 内聚性:指模块内部各部分间联系的紧密程度,内聚性越高,模块独立性越强
- 耦合度:指模块间相互联系和相互影响的程度,耦合度月低,模块独立性越强
可加载的内核模块
设计思想:内核有一组核心组件,提供核心服务,其他服务在内核运行时动态实现(动态链接)
动态链接服务优于直接添加新功能到内核,因为对于每次更改,后者都需重新编译内核
每个组件在需要时被加载到内核
例子:现代 UNIX 系统(Solaris、Linux、Mac OS X……)、Windows 系统
分层式结构
OS 分为若干个层次,每层由若干个模块组成,每层之间只存在单向的依赖关系,即高层仅依赖于紧邻它的低层
自底向上分层设计法的基本原则:每一步设计都建立在可靠的基础上
底层(0 层):硬件
最高层(N 层):用户层
例子:THE、Multics
优点
- 易保证系统的正确性:自下而上的设计方法,使所有设计中的决定都是有序的,或者是建立在较为可靠基础上的,容易保证整个系统的正确性
- 可保证系统的易维护性和可扩充性:若在系统中增加、修改或替换一个层次中的模块或整个层次,只要不改变相应层次间的接口,就不会影响其他层次,使系统维护和扩充变得更加容易
缺点
系统效率较低:由于分层式结构是分层单向依赖的,必须在各层之间都建立层间的通信机制,OS 每执行一个功能,通常要自上而下穿越多个层次,增加系统的通信开销,导致系统效率降低
微内核结构
基本概念
OS 划分为两大部分:微内核、多个服务器
足够小的内核
内核
定义:指精心设计的、能实现现代 OS 最基本核心功能的小型内核;是 OS 最基本、最核心的部分
微内核
微内核不是一个完整的 OS,只是 OS 中最基本的部分
微内核包含:
- 用于处理与硬件紧密相关的部分
- 一些最基本的功能
- 客户和服务器之间的通信
基于客户/服务器模式
单处理机微内核结构的 OS 都采用了客户/服务器模式
客户与服务器之间借助微内核提供的消息传递机制实现信息交互
采用策略与机制分离原则
机制:实现某一功能的具体执行机构,处于系统的基层,放在 OS 的微内核中
策略:在机制的基础上,借助于某些参数和算法实现该功能的优化或达到不同的功能目标,处于系统的高层
采用面向对象技术
结构设计:降低 OS 的复杂度
面向对象技术的“抽象”和“隐蔽”原则:控制系统的复杂性
面向对象技术的“对象”、“封装”、“继承”:确保 OS 的“正确性”、“可靠性”、“易修改性”、“易扩展性”……提高 OS 的设计速度
基本功能
进程(线程)管理
大多数的微内核 OS,对于进程管理功能的实现,都采用策略与机制分离的原则
微内核中存在的功能:进程(线程)之间的通信功能、进程的切换、线程的调度、处理机之间的同步……
低级存储器管理
在微内核中,只配置最基本的低级存储器管理机制
微内核中存在的机制:将用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制……
中断和陷入处理
大多数微内核 OS 都将与硬件紧密相关的一小部分放入微内核中进行处理,此时微内核的主要功能是捕获所发生的中断和陷入事件,并进行相应的前期处理,然后将有关事件的信息转换成消息,并把它发送给相关的服务器;由服务器根据中断或陷入事件的类型,调用相应的处理程序进行后期处理
优点
- 提高了系统可扩展性:因为微内核 OS 的许多功能由相对独立的服务器软件实现,开发了新的软件和硬件时,微内核 OS 只须在相应的服务器中增加新的功能,或再增加一个专门的服务器。微内核结构也会改善系统的灵活性,因为不仅可以在 OS 中增加新的功能,还可以修改原有功能,以及删除已过时的老功能,进而形成一个更为精干的、有效的 OS
- 增强了系统的可靠性:微内核是经过精心设计和严格测试的,保证其正确性;微内核提供了规范而精简的应用程序接口,为微内核外部编写高质量的程序创造了条件。所有服务器都运行在用户态,服务器与服务器之间采用的是消息传递通信机制,所以某个服务器出现错误不会影响微内核,也不会影响其他服务器
- 增强了系统的可移植性:OS 具备可移植性使自身能够较容易地运行在不同的计算机硬件平台上。在微内核结构的 OS 中,所有与特定 CPU 和 I/O 设备有关的代码,放在微内核和微内核下面的硬件隐藏层中,其他组件(各种服务器)与硬件平台无关,因而,把 OS 从一个计算机硬件平台移植到另一个计算机硬件平台上所须做的修改是较小的
- 提供了对分布式系统的支持:客户与服务器之间、服务器与服务器之间的通信,均采用信息传递通信机制实现,因此微内核 OS 能支持分布式系统和网络系统
- 融入了面向对象技术:采用面向对象技术,封装、继承、对象类、多态性、在对象之间采用消息传递机制……有利于提高系统的正确性、可靠性、易修改性、易扩展性……显著减少开发系统的开销
存在的问题
运行效率有所降低
主要原因:在完成一次客户对 OS 提出的服务请求时,需要利用消息实现多次交互,进行用户/内核模型与上下文的多次切换
总结
PS:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能
外核结构
外核或外内核 OS 的基本思想:在完成一次客户对操作系统提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模型与上下文的多次切换
- 内核非常小,负责保护系统资源
- 应用程序管理硬件资源
例子:Aegis 系统
库 OS 的实现思想:基于应用程序的需求定制 OS 内核,将原本属于 OS 内核的功能以库的形式提供给用户
总结
操作系统结构 | |||
特性、思想 | 优点 | 缺点 | |
分层结构 | 内核分多层,每层可单向调用更低一层提供的接口 | 1.便于调试和验证,自底向上逐层调试验证 2.易扩充和易维护,各层之间调用接口清晰固定 | 1.仅可调用相邻低层,难以合理定义各层的边界 2.效率低,不可跨层调用,系统调用执行时间长 |
模块化 | 将内核划分为多个模块,各模块之间相互协作 内核=主模块+可加载内核模块 主模块:只负责核心功能,如进程调度、内存管理 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核 | 1.模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发 2.支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强 OS 适应性 3.任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高 | 1.模块间的接口定义未必合理、实用 2.模块间相互依赖,更难调试和验证 |
宏内核 (大内核) | 所有的系统功能都放在内核里(大内核结构的 OS 通常也采用了“模块化”的设计思想) | 性能高,内核内部各种功能都可以直接相互调用 | 1.内核庞大功能复杂,难以维护 2.大内核中某个功能模块出错,就可能导致整个系统崩溃 |
微内核 | 只把中断、原语、进程通信等最核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态 | 1.内核小功能少、易于维护,内核可靠性高 2.内核外的某个功能模块出错不会导致整个系统崩溃 | 1.性能低,需要频繁的切换 用户态/内核态。用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信 2.用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信 |
外核 | 内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全 | 1.外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源 2.减少了虚拟硬件资源的“映射层”,提升销量 | 1.降低了系统的一致性 2.使系统变得更复杂 |
系统调用
系统调用不仅可供所有的应用程序使用,还可供 OS 自身使用
每一个系统调用都是一个能完成特定功能的子程序
基本概念
概念:是 OS 提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用请求获得操作系统内核的服务
目的:使应用程序可以通过系统调用间接调用 OS 中的相关过程,进而取得相应的服务
本质:应用程序请求 OS 内核完成某功能时的一种过程调用,但是是一种特殊的过程调用
一般的过程调用与系统调用的区别:
一般的过程调用 | 系统调用 | |
运行在不同的系统状态 | 调用程序和被调程序运行在相同的状态——内核态或用户态 | 调用程序运行在用户态,被调程序运行在内核态 |
状态的转换 | 不涉及系统状态的转换,可直接由调用过程转向被调用过程 | 调用过程和被调用过程工作处于不同的系统状态,不允许由调用过程直接转向被调用过程,需要通过软中断机制先由用户态转换为内核态,经内核分析后转向相应的系统调用处理子程序 |
返回问题 | 采用抢占式(剥夺)调度方式的系统,在被调用过程执行完成后,要对系统中所有要求运行的进程做优先级分析,当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将重新调度,以便让优先级最高的进程优先执行。此时,将把调用进程放入就绪队列 | |
嵌套调用 | 对嵌套调用的深度没有限制 | 对嵌套调用的深度有一定的限制 |
实现:系统调用通过中断机制实现,一个 OS 的所有系统调用都通过同一个中断入口实现;对于拥有保护机制的 OS 来说,中断机制本身是受保护的
系统调用与库函数的区别:
普通应用程序 | 可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及 |
编程语言 | 向上提供库函数,有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便 |
操作系统 | 向上提供系统调用,使得上层程序能请求内核的服务 |
裸机 |
应用:凡是与共享资源有关的操作、会直接影响到其他进程的操作,就一定需要 OS 介入,都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成
类型
进程控制类系统调用
- 创建和终止进程的系统调用
- 获得和设置进程属性的系统调用
- 等待某事件出现的系统调用:进程在执行过程中,假设需要等待某事件(条件)出现后方可继续执行,此时,进程可利用等待某事件出现的系统调用使自己处于等待状态,一旦等待的事件出现,便可将自己唤醒
文件操纵类系统调用
- 创建和删除文件的系统调用
- 打开和关闭文件的系统调用
- 读和写文件的系统调用:文件操纵类中使用最频繁的系统调用
进程通信类系统调用
- 信息传递方式:通信前先打开一个连接。源进程发出一条打开连接的系统调用,目标进程利用接受连接的系统调用表示同意进行通信,然后在源进程和目的进程间便可开始通信。可以利用发送信息的系统调用和接受信息的系统调用交换信息。通信结束后,须利用关闭连接的系统调用结束通信
- 共享存储区方式:通信前先利用建立共享存储区的系统调用建立一个共享存储区,再利用建立连接的系统调用将该共享存储区连接到进程自身的虚地址空间上,然后可利用读和写共享存储区的系统调用实现相互通信
设备管理类系统调用
作用:
- 申请设备
- 释放设备
- 设备 I/O 重定向
- 获得和设置设备属性
信息维护类系统调用
获得有关系统和文件的时间信息、OS 版本、当前用户以及有关空闲内存和磁盘空间大小等多方面的信息
过程
- 传递系统调用参数
- 执行陷入指令(用户态)
- 执行相应的内核程序处理系统调用(内核态)
- 返回应用程序
陷入指令 = trap 指令 = 访管指令
PS:
- 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使 CPU 进入内核态
- 发出系统调用请求是在用户态,而对系统调用的额相应处理在内核态下进行