自学内容网 自学内容网

【操作系统】第一章:操作系统概述

本篇笔记课程来源:王道计算机考研 操作系统

一、操作系统的概念

  • 操作系统(Operating System,OS)是指控制和管理整个计算机系统 硬件和软件 资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件更加方便的接口和环境 ;它是计算机系统中最基本的系统软件
  • 概念中所提到的分别是:
    1. 负责管理协调硬件、软件等计算机资源的工作
    2. 为上层用户、应用程序提供简单易用的服务
    3. 是一种系统软件

二、操作系统的功能和目标

功能简记:处(处理机管理)存(存储器管理)备(设备管理)文(文件管理)用(用户接口)

1. 作为系统资源的管理者

  • 需要提供的功能有:
    1. 处理机(CPU)管理:例如程序运行的进程
    2. 存储器(存储)管理:例如程序运行时的数据
    3. 文件管理:例如文件存放
    4. 设备管理:例如键盘鼠标摄像头

2. 向上层提供服务

  • 可以理解为:操作系统把一些难以理解的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。
  • 提供的功能:
    • 图形化界面(GUI):用户可以使用形象的图形界面进行操作,而不需要记忆复杂的命令、参数。
    • 用户接口:命令接口、程序接口
接口类型特点
命令接口联机命令接口 / 交互式命令接口说一句做一句,类似于终端命令行
脱机命令接口 / 批处理命令接口说一堆做一堆,类似于 .bat 批处理文件
程序接口可以在程序中进行系统调用来使用程序的接口,类似于函数调用
  • 在提供的功能中,GUI 和 命令接口用户可以直接使用;程序接口只能通过程序间接使用。

3. 对硬件的拓展

  • 操作系统需要实现对硬件机器的拓展。
  • 没有任何软件支持的计算机称为裸机
  • 经过操作系统的包装,裸机便以虚拟机的形式呈现给用户。与裸机相比,虚拟机更易于理解和使用。通常把覆盖了软件的机器称为扩充机器,也称之为虚拟机。

三、操作系统的四个特征

  • 四个特征分别是:并发性、共享性、虚拟性、异步性。其中:
    • 并发性和共享性是 最基本的特征,且 互为存在条件
    • 没有并发和共享,就谈不上虚拟和异步

1. 并发性

  • 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
  • 另一个概念——并行:指两个或多个事件在同一时刻同时发生

  • 所以操作系统的并发性,是指计算机系统中 “同时” 运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
  • 操作系统就是伴随着 “多道程序技术” 而出现的。因此,操作系统和程序并发是一起诞生的

  • 需要注意⚠️⚠️⚠️重要

    • 单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
    • 多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
  • 如果一个四核CPU需要 “同时” 运行四个以上的程序(核处理不过来),那么并发性依然是必不可少的,因此并发性是操作系统一个最基本的特性

2. 共享性

  • 共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
  • 两种资源共享方式:
    • 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
    • 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程 “同时” 访问该资源
  • 所谓的 “同时” 往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问(即分时共享)

  • 并发和共享的关系‼️:互为存在条件
    • 并发性,指计算机系统中 “同时” 存在着多个运行着的程序。
    • 共享性,指系统中的资源可供内存中多个并发执行的进程共同使用。
    • 如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义;
    • 如果失去共享性,则多个进程不能同时访问硬盘资源,就无法实现并发。

3. 虚拟性

  • 虚拟是指把一个物理上的实体变成若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上对应物是用户感受到的。
  • 比如日常使用计算机,一个程序需要放入内存并给它分配CPU才能执行
    • 虚拟存储器技术——空分复用技术:实际只有4GB的内存,在用户看来似乎远远大于4GB
    • 虚拟处理器技术——时分复用技术:实际只有一个单核CPU,在用户看来似乎有多个CPU在同时运行。
    • 上面的有个印象即可,后面会说。
  • 如果失去并发性,则一个时间段内系统只需运行一道程序,那么就失去了实现虚拟性的意义。因此,没有并发性,就谈不上虚拟性

4. 异步性

  • 异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限(进程会争取使用系统资源),进程的执行不是一贯到底的,而是走走停停。
  • 以不可预知的速度向前推进,就是进程的异步性。
  • 如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。因此,只有系统拥有并发性,才有可能导致异步性

四、操作系统的发展与分类

1. 手工操作阶段

  • 主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低。
    • 人机操作和机器速度之间的矛盾
    • CPU和IO设备之间速度不匹配的矛盾

2. 单道批处理系统

  • 为了解决人机矛盾和CPU与IO设备之间速度不匹配的矛盾,出现了单道批处理系统。
  • 单道批处理系统,引入 脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。

  • 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
  • 主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待 I/O 完成,资源利用率依然很低。

3. 多道批处理系统

  • 为了进一步提高计算机系统的利用率,出现了多道程序设计的思想。把批处理系统和多道程序系统相结合,就形成了多道批处理系统。
  • 多道程序设计思想:在内存中同时存放若干道用户作业,这些作业交替地运行。

  • 主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
  • 主要缺点:用户响应时间长,没有人机交互功能(无法调试程序/无法在程序运行过程中输入一些参数)。

4. 分时操作系统

  • 在多道批处理系统中,作业运行时用户无法干预,交互能力很弱,由此出现了分时系统。
  • 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。

  • 主要优点:用户请求可以被及时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。(例如 UNIX)
  • 主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。

5. 实时操作系统

  • 主要特点:及时性、可靠性。
  • 主要优点:能够优先响应一些紧急任务,某些紧急任务不需要时间片排队。
  • 在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件
分类特点案例
硬实时系统必须在绝对严格的规定时间内完成处理导弹控制系统、自动驾驶系统
软实时系统能接受偶尔违反时间规定12306火车订票系统

6. 其他操作系统

  • 网络操作系统(Windows NT):伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信
  • 分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由他们并行、协同完成这个任务。
  • 个人计算机操作系统:如 Windows XP、Mac OS,方便个人使用。

五、操作系统的运行机制

  • 程序运行的过程实际上是CPU执行一条一条(二进制)机器指令的过程。
  • 指令:是处理器(CPU)能识别、执行的最基本命令。

1. 两类程序

  • 程序可以分为应用程序内核程序
    1. 应用程序:普通程序员写的大多是应用程序
    2. 内核程序:很多内核程序组成了 “操作系统内核”,或简称 ”内核“。内核是操作系统最重要最核心的部分,也是最接近硬件的部分
  • 操作系统的功能未必都在内核中。因此:操作系统 > 内核。

2. 两类指令

  • 指令可以分为特权指令非特权指令
    1. 特权指令:只允许 “管理者” (内核)使用,影响重大。
    2. 非特权指令:应用程序只能使用非特权指令,如加法指令。
  • CPU在设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。

3. 两种处理器状态

  • CPU有两种状态:内核态用户态
    1. 内核态:也称为 核心态、管态。处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
    2. 用户态:也称为目态。处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。
  • CPU中有一个寄存器叫 程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”

4. 内核态和用户态的切换

  • 刚开机时,CPU为 内核态,操作系统内核程序先上CPU运行
  1. 内核态转用户态:执行一条特权指令——修改PSW的标志位为用户态,这个动作意味着操作系统将主动让出CPU使用权。
  2. 用户态转内核态:由“中断”引发,硬件自动完成变态过程,触发终端信号意味着操作系统将强行夺回CPU的使用权。
    • CPU检测到中断信号后,会立即变为核心态;
    • 停止运行当前的应用程序,转而运行处理终端信号的内核程序;
    • 处理完引发中断的事件后,再把CPU使用权交给别的应用程序。
    • 但凡需要操作系统介入的地方,都会触发终端信号。

六、中断和异常

1. 中断的作用

  • 中断是让操作系统内核夺回CPU使用权的唯一途径
  • 使CPU从用户态转为内核态
  • 如果没有中断机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。

2. 中断的类型

  1. 内中断:与当前执行的指令有关,中断信号来源于CPU内部

    • 常被称为 异常、例外。

    • 陷入(trap):应用程序 主动 将CPU控制权还给操作系统内核,会执行陷入指令,该指令会引发一个中断信号。

    • 故障(fault):由错误条件引起的,可能被内核程序修复。修复后 会归还 CPU使用权。

    • 终止(abort):由致命错误引起,内核程序无法修复该错误。不会归还 CPU使用权。若当前执行的指令是非法的(用户态执行特权指令、除数为0),则会引发一个中断信号。

    • 检查中断信号:CPU在执行指令时会检查是否有异常发生。

  2. 外中断:与当前执行的指令无关,中断信号来源于CPU外部

    • 常被称为 中断(狭义)
    • 时钟中断:实现多道程序并发,时钟部件每隔一个时间片会给CPU发送一个时钟中断信号。
    • I/O中断:当 IO 任务完成时,向CPU发送中断信号。
    • 检查中断信号:每一条指令执行结束后,CPU都会例行检查是否有外中断信号需要处理

3. 中断机制的基本原理

  • 不同的中断信号,需要用不同的中断处理程序来处理。
  • 当CPU检测到中断信号后,会根据中断信号的类型去查询 中断向量表,以此来找到相应的中断处理程序在内存中的存放位置。
  • 中断处理程序一定是内核程序,需要运行在内核态。

七、系统调用

1. 系统调用概念

  • 在 2-2 (操作系统的功能——向上层提供服务)中说到:程序接口只能通过程序间接使用。程序就是系统调用。
  • 系统调用,是操作系统提供给应用程序(编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

2. 系统调用的作用

  • 当同一资源被不同进程访问时,进程需要通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理
  • 系统中的各种共享资源都由操作系统内核统一管理,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。
  • 保证系统的稳定性安全性,防止用户进行非法操作。

3. 系统调用和库函数的区别

  • 在使用C语言时,会使用一些库函数,例如 math、stdio 中的库函数。

由下向上:

  1. 裸机
  2. 操作系统:向上提供系统调用,使上层程序能请求内核的服务
  3. 编程语言:向上提过库函数。会将系统调用封装成库函数。
  4. 普通应用程序:可直接进行系统调用,也可使用库函数。

由此可见,有的库函数设计系统调用,有的不涉及。因此,库函数 > 系统调用。

  • 设计系统调用的库函数:创建一个新文件 fopen
  • 不涉及系统调用的库函数:取绝对值 abs

4. 系统调用的分类

  • 系统调用按功能分类
功能说明
设备管理完成 设备请求、释放、启动 等功能
文件管理完成 文件读写、创建、删除 等功能
进程管理完成 进程创建、撤销、阻塞、唤醒 等功能
进程通信完成 进程之间信息传递、信号传递 等功能
内存管理完成 内存分配、回收 等功能

5. 系统调用的过程

  • 过程:
    1. 应用程序调用库函数(封装了系统调用的库函数)
    2. 传递系统调用参数
    3. 执行陷入指令,引发中断信号(用户态)
    4. 操作系统内核处理中断事件,执行相应的请求内核程序处理系统调用(核心态)
    5. 返回应用程序

在这里插入图片描述
截图来源于 P7 1.3_3_系统调用 09:52

  • 陷入指令,也称之为 trap指令、访管指令。

注意⚠️⚠️

  • 陷入指令是在用户态执行的,执行陷入指令后立即引发一个内中断,使CPU进入核心态
  • 发出系统调用请求是在用户态,而对系统调用的相应处理核心态下进行。

八、操作系统体系结构

1. 操作系统的内核

  • 内核是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。
  • 操作系统内核与硬件关联较紧密的模块:时钟管理、中断处理、原语。
  • 不直接涉及硬件、更多的是对数据结构的操作:进程管理、存储器管理、设备管理等。

在这里插入图片描述
截图来源于 P8 1.4_1_操作系统体系结构(上) 02:11

  • 内核设计方法有大内核、微内核等。
  • 变态(CPU状态的转换)的过程是有成本的,要消耗不好时间,频繁地转换会降低系统性能。

2. 大内核

  • 大内核,也叫宏内核、单内核。
  • 大内核将操作系统的主要功能模块(上图中内核所示的两层)都作为系统内核,运行在核心层。
  • 优点:高性能;
  • 缺点:内核代码庞大、结构混乱、难以维护;
  • 常见的大内核操作系统有 Linux、UNIX。

在这里插入图片描述
截图来源于 P8 1.4_1_操作系统体系结构(上) 06:18

3. 微内核

  • 只把最基本的功能(与硬件关联较紧密的模块)保留在内核。
  • 优点:内核功能少、结构清晰、方便维护;
  • 缺点:需要频繁地在核心态和用户态之间切换,性能低。
  • 常见的微内核操作系统有 Windows NT。

在这里插入图片描述
截图来源于 P8 1.4_1_操作系统体系结构(上) 06:18

4. 分层结构

  • 最底层是硬件,最高层是用户接口
  • 每层只能调用更低一层

在这里插入图片描述
截图来源于 P8 1.4_1_操作系统体系结构(下) 01:09

5. 模块化

  • 模块化设计方法也称为 模块-接口法。
  • 模块化是操作系统按功能划分为若干个具有一定独立性的模块。
  • 每个模块具有某方面的管理功能,并规定好各模块之间能通过接口进行通信。
  • 还可以进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口。

在这里插入图片描述
截图来源于 P8 1.4_1_操作系统体系结构(下) 06:55

6. 外核

  • 内核负责进程调度、进程通信等功能;外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。

在这里插入图片描述
截图来源于 P8 1.4_1_操作系统体系结构(下) 14:00

7. 六种体系结构总结

体系结构特性、思想优点缺点
大(宏)内核所有的系统功能都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想) 性能高,内核内部各种功能都可以直接相互调用 内核庞大,功能复杂,难以维护
大内核中某个功能模块出错,就可能导致整个系统崩溃
微内核只把中断、原语、进程通信等核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态 内核小,功能少,易于维护,内核可靠性高 性能低,需要频繁地切换用户态/核心态。
内核外的某个功能模块出错不会导致整个系统崩溃 用户态下的各功能不可以直接相互调用,只能通过内核的“消息传递”来间接通信
分层结构内核分多层,每层可单向调用更低一层提供的接口 便于调试和验证,自底向上逐层调试验证仅可调用相邻低层,难以合理定义各层的边界
易扩充和易维护,各层之间调用接口清晰固定 效率低,不可跨层调用,系统调用执行时间长
模块化
将内核划分为多个模块,各模块之间相互协作。
内核=主模块+可加载内核模块
主模块:只负责核心功能,如进程调度、内存管理;
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核
模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发模块间的接口定义未必合理、实用
支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
模块间相互依赖,更难调试和验证
任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
外核 内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全 外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源降低了系统的一致性
减少了虚拟硬件资源的“映射层”,提升效率使系统变得更复杂

九、操作系统引导(Boot)

  • 操作系统引导:开机的时候,让操作系统在电脑上运行起来。

  • 一个磁盘包含:

    1. 主引导记录(MBR):包含磁盘引导程序、分区表
    2. C、D、E、F等盘
  • 一般情况下,C盘是这个磁盘的活动分区,安装了操作系统。C盘包含:

    1. 引导记录(PBR):负责找到“启动管理器”
    2. 根目录
    3. 其他
  • 完整的操作系统初始化程序(即 启动管理器)可在根目录下找到;

    • Windows操作系统完整的开机初始化程序在 “根目录/Windows/Boot” 下
  • 操作系统引导步骤:

    1. CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,在开机)
    2. 将磁盘的第一块(主引导记录)读入内存,执行磁盘引导程序,扫描分区表
    3. 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
    4. 从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作

十、虚拟机

  • 传统的计算机,一台物理机器上只能运行一个操作系统。

  • 虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机起(Virtual Machine,VM),每个虚拟机都可以独立运行一个操作系统。

  • 同义术语:虚拟机管理程序 / 虚拟机监控程序 / Virtual Machine Monitor / Hypervisor。

  • 虚拟机分类:

    1. 直接运行在硬件上
      在这里插入图片描述

    2. 运行在宿主机操作系统上
      在这里插入图片描述

  • 两类虚拟机管理程序(VMM)对比

    • Host OS:宿主操作系统;Guest OS:客户操作系统。
    • 支持虚拟化的CPU通常分更多指令等级:Ring 0 表示 0环。

在这里插入图片描述
截图来源于 P11 1.6_虚拟机 16:15

对比项第一类VMM第二类VMM
对物理资源的控制权直接运行在硬件之上,能直接控制和分配物理资源运行在 Host OS 之上,依赖于 Host OS 为期分配物理资源
资源分配方式在安装 Guest OS 时,VMM 要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件Guest OS 拥有自己的虚拟硬盘,该盘实际上是 Host OS 文件系统中的一个大文件。Guest OS 分配到的内存是虚拟内存
性能性能更好性能更差,需要 Host OS 作为“中介”
可支持的虚拟机数量更多,不需要和 Host OS 竞争资源,相同的硬件资源可以支持更多的虚拟机更少,Host OS 本身需要使用物理资源,Host OS 上运行的其他进程也需要物理资源
虚拟机的可迁移性更差更好,只需导出虚拟机镜像文件即可迁移到另一台 Host OS 上,商业化应用更广泛
运行模式运行在最高特权级(Ring 0),可以执行最高特权的指令部分运行在用户态,部分运行在内核态。Guest OS 发出的系统调用会被 VMM 截获,并转化为 VMM 对 Host OS 的系统调用

原文地址:https://blog.csdn.net/realoser/article/details/142601685

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!