第一章 计算机系统概述
1.1 操作系统的基本概念
1.1.1 操作系统的概念
操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件。
Tips:
OS 的主要功能:
1. 系统资源的管理者
2. 向上层提供服务
3. 最接近硬件的软件
1.1.2 操作系统的特征
并发:并发是指两个或多个事件在同一时间间隔内发生。
并发性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作。宏观上有多道程序在同时执行,微观上这些程序仍是分时交替执行。
并发是同一时间间隔;
并行是同一时刻。
Tips:
1. 单核 CPU 同一时刻内只能执行一个程序,各个程序只能并发地执行
2. 多核 CPU 同一时刻可以同时执行多个程序,多个程序可以并行地执行
共享:资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
互斥共享方式:一段时间内只允许一个进城访问该资源。
同时访问方式:允许在一段时间内由多个进程“同时”访问。(微观上实际是交替使用)
互斥共享要求一种资源在一段时间内只能满足一个请求。
并发和共享是操作系统两个最基本的特征。并发和共享互为存在条件。资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题;若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行。
虚拟(前提是并发):虚拟是指将一个物理上的实体变为若干逻辑上的对应物。操作系统的虚拟技术可以归纳为:时分复用技术,空分复用技术。
虚拟处理器:利用多道程序设计技术将一个物理上的 CPU 虚拟为多个逻辑上的 CPU。
虚拟存储器:将物理机上的物理存储器变为虚拟存储器,从逻辑上扩充存储器的容量。
异步(前提是并发):多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,它以不可预知的速度向前推进,这就是进程的异步性。
1.1.3 操作系统的目标与功能
操作系统应具有:处理剂管理、存储器管理、设备管理和文件管理。
1. 操作系统作为计算机系统资源的管理者
处理机管理:在多道程序环境下,处理机的分配和运行都以进程(线程)为基本单位,因而对处理机的管理可归结为对进程的管理。并发是指在计算机内同时运行多个进程,因此进程何时创建、何时撤销、如何管理、如何避免冲突、合理共享就是进程管理的最主要任务。
存储器管理:内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
文件管理:操作系统中负责文件管理的部分称为文件系统,文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
设备管理:设备管理的主要任务是完成用户 I/O 请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。
2. 操作系统作为用户与计算机硬件系统之间的接口
操作系统提供的接口氛围两类,一类是命令接口(用户使用),另一类是程序接口(程序员用)。
命令接口:使用命令接口进行作业控制的主要方式分为两种,联机控制方式和脱机控制方式。
(1)联机控制方式又称交互式命令接口,适用于分时或实时系统的接口。
简单来说就是用户写一条指令,系统执行一条指令。
(2)脱机控制方式又称批处理命令接口,适用于批处理系统,由一组作业控制命令组成。
换言之,用户写一堆指令,然后系统一次性全部执行完。
程序接口:由一组系统调用(也称广义指令)组成
3. 操作系统实现了对计算机资源的扩充
没有任何软件支持的计算机成为裸机,将覆盖了软件的机器称为扩充机器或虚拟机。
1.2 操作系统发展历程
1.2.1 手工操作阶段(此阶段无操作系统)
缺点:
1. 用户独占全机,不会出现资源被占用的情况,但资源利用率低;
2.CPU 等待手工操作,CPU 利用不充分。
1.2.2 批处理阶段(操作系统开始出现)
单道批处理系统
引入脱机输入 / 输出技术,并由监督程序负责控制作业的输入、输出。
优点:
1. 自动性:作业能自动地逐个运行;
2. 顺序性:先调入先完成;
3. 单道性:内存中仅有一道程序运行。
缺点:
1. 每次主机内存中仅存放一道作业;
2. 每当它在运行期间发出输入 / 输出请求后,CPU 处于等待低速 I/O 完成的状态。
多道批处理系统
用户提交的所有作业都会在外存上排成队列,作业调度程序按照一定的算法从后备队列中选择作业调入内存,作业会在管理程序控制下相互穿插运行,共享系统中的各种硬件软件资源。可以实现系统各部件间的并行工作,使其在单位时间内效率翻倍。
特点:
1. 多道:内存中同时存放多道相互独立的程序;
2. 宏观上并行:进入多道的程序都处于运行过程,但都未运行完毕;
3. 微观上串行:内存中的多道程序轮流占有 CPU,交替执行。
优点:
1. 资源利用率高,多道程序共享计算机资源;
2. 系统吞吐量大。
缺点:
1. 用户响应时间长;
2. 不提供人机交互能力,用户不能了解程序的运行情况又不能控制计算机。
Tips:多任务操作系统可视为具有交互性的多道批处理系统。
1.2.3 分时操作系统
将处理器的运行时间分成很短的时间片,按照时间片轮流将处理器分配给各联机作业使用。
特征:
1. 同时性:允许多个终端用户同时使用一台计算机;
2. 交互性:用户通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互;
3. 独立性:系统中多个用户可以彼此独立地进行操作,互不干扰;
4. 及时性:用户请求能够在很短时间内获得响应。
缺点:无法对高响应需求的场景进行处理,例如订票系统和导弹制导系统。
1.2.4 实时操作系统
根据时间限制分为两种,一种是若某个动作必须绝对地在规定的时刻(或规定的时间范围)发生,则称为硬实时系统;另一种是若能接受偶尔违反时间规定且不会引起任何永久性的损害,则称为软实时系统。
实时操作系统的特点主要是及时性和可靠性。
*1.2.5 网络操作系统和分布式计算机系统
网络操作系统:通过网络将网络下的计算机进行有机结合,主要特点是网络中各种资源的共享和各台计算机之间的通信。
分布式计算机系统:系统中的每个计算机都具有同等地位,每台计算机的资源由所有用户共享,特点是分布式和并行性。
*1.2.6 个人计算机操作系统
Linux、Windows、MacOS etc.
1.3 操作系统的运行环境
1.3.1 处理器运行模式
通常 CPU 执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序(系统外层的应用程序,简称应用程序)。
特权指令:不允许用户直接使用的指令。
非特权指令:是指允许用户直接使用的指令,他不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间。
Tips:但凡需要操作系统介入都会触发中断。
将 CPU 呃运行模式划分为用户态(目态)和核心态(管态、内核态)。应用程序运行在用户态,操作系统的内核程序运行在核心态。应用程序向操作系统请求服务时通过访管指令,访管指令是在用户态执行的,因此是非特权指令。
内核是计算机上配置的底层软件,他管理着系统的各种资源,可以看作是连接应用程序和硬件的一座桥梁,大多数操作系统的内核包括 4 方面的内容。
时钟管理
时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间,通过时钟中断的管理,可以实现进程的切换。
中断机制
中断机制中只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。
原语
按层次设计的操作系统,底层必然是一些可被调用的公共小程序,通常将具有这些特点的程序称为原语。
特点:
1. 处于操作系统的底层,最接近硬件的部分;
2. 具有原子性,操作只能一气呵成;
3. 运行时间较短且调用频繁。
定义原语的之间方法是关中断,让其所有动作不可分割地完成后再打开中断。
系统控制的数据结构及处理
1. 进程管理:进程状态管理、进程调度和分派、创建与撤销进程控制块等;
2. 存储器管理:存储器的空间分配和回收、内存信息保护程序、代码对换程序等;
3. 设备管理:缓冲区管理、设备分配和回收等。
核心态指令实际包括系统调用类指令和一些针对时钟、中断和原语的操作指令。
1.3.2 中断和异常的概念
内核态—> 用户态:执行一条特权指令,修改 PSW,标志为‘用户态’。
用户态—> 内核态:由‘中断’引发,硬件自动完成变态过程。
中断是让操作系统内核夺回 CPU 的唯一途径。
中断和异常的定义
中断也称外中断,是指来自 CPU 执行指令外部的事件,通常用于信息输入 / 输出。
异常也称内中断,是指来自 CPU 执行指令内部的事件。
中断和异常的分类
可屏蔽中断是指通过 INTR 线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活。
不可屏蔽中断是指通过 NMI 线发出的中断请求,通常是紧急的硬件故障。
故障通常是由指令执行引起的异常。
自陷是一种事先安排的‘异常’事件,用于在用户态下调用操作系统内核程序。
终止是指出现了使得 CPU 无法继续执行的硬件故障。
故障异常和自陷异常属于软件中断(程序性异常);
终止异常和外部中断属于硬件中断。
中断和异常的处理过程
1.3.3 系统调用
系统调用是指用户在程序中调用操作系统所提供的一些子功能。
设备管理:完成设备的请求和释放以及设备启动等功能;
文件管理:完成文件的读、写、创建及删除等功能;
进程控制:完成进程的创建、撤销、阻塞及唤醒等功能;
进程通信:完成进程之间的消息传递或信号传递等功能;
内存管理:完成内存的分配、回收以及获取作业占用内存区大小和起始地址等功能。
Tips:涉及共享资源时使用系统调用。