<操作系统>OS1 概述
本文最后更新于:2023年6月27日 上午
OS1 概述
操作系统(OS,Operating System)是控制和管理整个计算机系统的硬件和软件资源。其负责合理阻止调度计算机的工作和资源的分配,是计算机系统中最基本的系统软件。
进程:一个程序的执行过程。执行进程时,将程序载入内存,才能被 CPU 处理。
OS1.1 操作系统的作用
操作系统的作用:
-
管理资源:提供处理机管理、存储器管理、文件管理、设备管理的功能
-
给出用户和计算机间的接口:提供命令接口、程序接口、图形用户界面。
-
命令接口:允许用户直接使用
分为联机命令接口(交互式命令接口,如控制台)和脱机命令接口(批处理命令接口,如
.bat
文件) -
程序接口:由一组系统调用组成,用户只能通过程序间接使用
-
图形用户界面:简称 GUI(Graphical User Interface),又称图形用户接口
-
-
实现对硬件机器的拓展。
没有任何软件支持的计算机称为裸机。覆盖了软件的机器称为扩充机器(虚拟机)
操作系统结构研究的目标是:系统模块化、模块标准化、通信规范化
OS1.2 操作系统的特征
操作系统有几个特征:
-
并发:两个或多个事件在同一时间间隔内发生。这些事件在宏观上是同时发生的,但在微观上是交替发生的。
操作系统的并发性是指系统内同时存在多个运行的程序。操作系统与程序并发是一起诞生的。
-
共享:系统中的资源可供内存中多个并发执行的进程共同使用。
共享方式分为:互斥共享(同一时刻仅允许一个进程访问)、同时共享(同一时刻允许多个进程访问)
上面的 “同一时刻” 是宏观上的。微观上,这些进程可能是交替对该资源进行访问的(分时共享)。
-
虚拟:把一个物理上的实体变为若干逻辑上的对应物。
物理实体是实际存在的。而逻辑上的对应物是用户感受到的。
虚拟技术有两种:空分复用技术(如虚拟存储器技术)、时分复用技术(如虚拟处理器技术)
-
异步:多道程序环境下,允许多个程序并发。但进程的执行是以不可预知的速度推进的。
-
随机:操作系统在随机的环境下运行。其运行的程序的行为、硬件设备情况是不可预知的。
并发与共享互为存在条件,是操作系统的两个最基本特征。
OS1.3 操作系统的发展与分类
目前流行的操作系统有 Windows、UNIX、Linux、Android 等
-
Windows 的体系结构是分层的模块系统。主要层次有
- 内核。内核执行 Windows 系统中最基本的操作,始终运行在核心态。
- 硬件抽象层(HAL)。HAL 是一个可加载的核心态模块,为硬件平台提供低级接口,实现其可移植性
- 执行体。其从用户态导出并能调用函数
- 子系统。
-
UNIX 的系统结构从内层到外层是
-
内核层。操作系统管理和控制中心,常驻内存。具有与硬件的接口和与 Shell(命令语言解释程序)的接口。
内核本身分为 进程控制子系统 和 文件子系统 两大部分
-
系统调用层。介于内核层与应用层间,供程序员设计、开发应用程序时调用。
-
应用层。所有应用层程序都是在 Shell 管控下为用户服务的,是面向用户操作的界面
-
-
Linux 系统有四个主要部分:
- Linux 内核。操作系统的核心。由系统调用、内存管理、进程管理、设备驱动、文件系统、网络管理等组成
- Linux Shell。系统的用户界面。提供用户与内核进行交互操作的接口。
- Linux 文件系统。Linux 系统支持多种目前流行的文件系统,如 EXT2、EXT3、FAT、FAT32、VFAT、ISO9660
- Linux 用户应用程序。包括文本编辑器、编程语言、X Window、办公套件、Internet 工具、数据库等
-
Android 系统从高到低是:
- Android 应用程序。所有应用程序都由 Java 编写
- Android 应用框架。为开发者提供了用以访问核心功能的 API 框架
- C++ 本地库和 Android 运行环境
- Linux 内核
根据操作系统的发展过程,将其分为几个阶段:
-
手工操作阶段(手工打印纸带等):输入、输出的速度很慢
-
批处理阶段:出现了 单道批处理系统 和 多道批处理系统。
单道批处理系统:引入了脱机输入输出技术。一定程度上缓解了人机速度矛盾。
多道批处理系统:开始出现操作系统。能使程序并发执行,但不提供人机交互功能。
-
分时操作系统:提供了人机交互的功能,但不能优先处理紧急任务
-
实时操作系统:分为 硬实时系统 和 软实时系统。能优先处理紧急任务
硬实时系统:必须在严格地规定时间内完成处理
软实时系统:能接受偶尔违反时间规定
-
网络操作系统、分布式操作系统、个人计算机系统等
OS1.4 操作系统的内核
计算机的 CPU 分为两种状态:
- 用户态(目态):运行在用户态的程序称为 应用程序。用户态只能执行 非特权指令
- 核心态(管态):运行在核心态的程序称为 内核程序。核心态能执行包括 特权指令 在内的所有指令
计算机上配置的底层软件称为计算机 内核,是计算机最基本、最核心的部分。
实现操作系统内核功能的程序就是内核程序。有:
-
时钟管理:实现计时功能
-
中断管理:负责实现中断机制
-
原语:原语是一种特殊的程序,其位于操作系统最底层。
其运行具有原子性(运行必须连贯完成,不能中断。若不能完成,则撤销操作,返回先前状态)。
原语运行时间较短,通常被调用频繁。
-
系统资源管理:进程管理、存储器管理、设备管理
根据操作系统内核功能,又把操作系统分为两类:
- 大内核:将操作系统主要功能模块都作为系统内核。性能高,但内核代码庞大,难以维护。
- 微内核:只把基本功能保留在内核。方便维护,但要频繁在核心态和用户态间切换,性能低。
OS1.5 系统中断和异常
为提高系统资源利用率,人们发明了操作系统,并引入 中断机制,实现了程序的并发并行。
中断的本质是要求操作系统介入,并开展管理工作。当中断发生时,CPU 立即进入核心态。当前运行中的进程暂停运行,由操作系统根据中断信号的不同,对中断进行不同处理。
只有通过中断,才能完成由用户态向核心态的转换。
在核心态下,执行一条特定的特权指令,就能转换为用户态。
中断分为两种:
-
内中断(同步中断、异常、例外、陷入):中断信号的来源是 CPU 的内部,与当前执行的指令有关
内中断分为 自愿中断(指令中断)和强迫中断(硬件故障 或 软件中断)
也能被分为 陷入(trap,有意为之的异常)、故障(falut,错误条件引起的异常)、中止(abort,不可修复的致命错误)
-
外中断(异步中断。狭义的中断):中断信号的来源是 CPU 的外部,与当前执行的指令无关
外中断的处理过程:
- 执行完每个指令后,CPU 会检查当前是否有中断信号
- 检测到中断信号的场合,保护被中断进程的 CPU 环境(如程序状态字 PSW、程序计数器 PC、通用寄存器)
- 根据中断信号类型转入相应中断处理程序
- 恢复原进程的 CPU 环境并退出中断,返回原进程并继续执行
OS1.6 系统调用
系统调用 是操作系统提供给程序使用的接口。应用程序通过系统调用请求操作系统的服务。
系统中的各种共享资源由操作系统统一掌管,因此应用程序中涉及资源有关的操作都要由操作系统代为完成。这样能保证系统的 稳定性 和 安全性,防止用户进行非法操作。系统调用涉及的一些功能要进行 特权指令 才能完成,因此系统调用的处理要在 核心态 下进行。
系统调用可以按功能分为几类:设备管理、文件管理、进程控制、进程通信、内存管理
系统调用的流程:
- 在用户态发出 系统调用请求,传递系统调用参数。之后执行 陷入指令,引发 内中断,从而进入核心态。
- 在核心态 处理系统调用,执行相应服务程序。
- 返回用户程序。
系统调用中,实现用户程序与系统程序间参数传递的方法有:
- 由陷入指令自带参数
- 通过有关的通用寄存器传递参数
- 在内存中开辟专用堆栈区传递参数
#系统调用、库函数、原语、陷入指令、访管指令、特权指令间的区别与联系
特权指令:CPU 的执行状态分为目态和管态。只能在管态执行的指令称为特权指令,此外的指令称为非特权指令。
陷入指令:即访管指令,也称自陷指令、trap 指令。是非特权指令,且只能在目态下调用。执行陷入指令会引发中断,从而使程序由用户程序切换到操作系统,CPU 状态也从目态转变为管态。陷入指令是实现系统调用的重要手段。
系统调用:是操作系统提供的,用户与硬件间的接口。系统调用发生在目态,被调用程序运行在管态。系统调用的流程是,先执行陷入指令引发中断进入管态,之后在管态处理相应系统调用,最后返回。
库函数:是将函数封装入库,供用户使用的一种方式。库函数是语言或应用程序的一部分,可以运行在目态。库函数可能封装了部分系统调用,也可能不含系统调用。
原语:是若干条指令组成的程序段,在执行过程中不可被中断。原语是操作系统内核的一部分。对操作系统内核的各种功能调用通过执行原语操作来实现。原语和系统调用命令都是操作系统中的功能程序,有的系统调用是以原语的形式出现的(如创建进程),有的系统调用不是原语。