1.计算机系统概述

操作系统的基本概念

操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件

  • 操作系统是系统资源的管理者,提供个功能:

    • 处理机管理;
    • 存储器管理;
    • 文件管理;
    • 设备管理;
  • 向上层提供方便易用的服务。封装思想:操作系统把一些硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。操作系统提供的接口主要分为两类:

    • 命令接口:用户利用这些操作命令来组织和控制作业的执行。

      • 联机命令接口交互式命令接口,适用于分时或实时系统的接口。用户每输入一条命令,操作系统的命令解释程序就解释并执行该命令。
      • 脱机命令接口批处理命令接口,适用于批处理系统。将命令全都交给操作系统,系统的命令解释程序逐条解释执行命令。
    • 程序接口:由一组系统调用组成,用户通过在程序中使用这些系统调用来请求操作系统为其提供服务。普通用户不能直接使用程序接口,只能通过程序代码间接使用。

      如图形用户界面(GUI)就是通过调用程序接口实现的;

    有时狭义上把命令接口和程序接口统称为用户接口,用户接口不包括GUI。

  • 是最接近硬件的一层软件。操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机(没有任何软件支持的计算机)改造成功能更强、使用更方便的机器。通常把覆盖了软件的机器称为扩充机器,又称之为虚拟机


操作系统的特征:

  • 并发性:指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。在操作系统中,引入进程的目的是使程序能并发执行。

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

    并行:指两个或多个事件在同一时刻同时发生。

    单核同一时刻只能执行一个程序,各个程序只能并发地执行;

    多核同一时刻可以同时执行多个程序,多个程序可以并行地执行。

  • 共享:共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。共享可分为两种资源共享方式:

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

    并发和共享是操作系统两个最基本的特征,两者之间互为存在的条件

  • 虚拟:虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。用于实现虚拟的技术,称为虚拟技术。虚拟技术可归纳为:时分复用技术,空分复用技术。

  • 异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

操作系统的发展与分类

  1. 手工操作阶段(无操作系统):主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低。

  2. 批处理阶段:

    • 单道批处理系统:引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。

      主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。

      主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。有大量的时间是在空闲等待完成。资源利用率依然很低。

      主要特征:自动性、顺序性、单道性。

    • 多道批处理系统:操作系统正式诞生,用于支持多道程序并发运行。

      主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,和其他资源更能保持“忙碌”状态,系统吞吐量增大。

      主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)

      主要特征:多道、宏观上并行、微观上串行。

  3. 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。

    主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。

    主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。

    主要特征:同时性(多路性)、交互性、独立性、及时性。

  4. 实时操作系统:在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。根据时间限制可分为:

    • 硬实时系统:必须在绝对严格的规定时间内完成处理。
    • 软实时系统:能接受偶尔违反时间规定且不会引起任何永久性的损害。

    主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。

    主要特点:及时性、可靠性。

  5. 网络操作系统:把计算机网络中的各台计算机有机的结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各台计算机之间数据的互相传送。

    主要特点:网络中各种资源的共享、各台计算机之间的通信。

  6. 分布式计算机系统:由多台计算机组成满足以下条件的系统:

    • 任意两台计算机通过通信方式交换信息;
    • 每台计算机都具有同等的地位,即没有主从;
    • 资源为所有用户共享;
    • 任意台计算机都可以构成一个子系统;
    • 任何工作都可以分布在几台计算机上,由它们并行工作、协同完成;

    主要特点:分布性、并行性。

    与网络操作系统本质不同是,分布式计算机系统中的若干计算机相互协同完成同一任务。

  7. 个人计算机操作系统:目前使用最广泛的操作系统,常见的有等。

    此外还有:嵌入式操作系统、服务器操作系统、智能手机操作系统等。

操作系统的运行环境

操作系统的运行机制

“指令”就是处理器()能识别、执行的最基本命令(二进制机器指令)。程序运行的过程就是执行指令的过程。

两种程序:

  • 操作系统内核程序:由很多内核程序组成了“操作系统内核”,或简称“内核()”。内核是操作系统最重要最核心的部分,也是最接近硬件的部分。甚至可以说,一个操作系统只要有内核就够了。操作系统内核程序运行在核心态(管态、内核态),能够执行特权指令和非特权指令。在设计和生产的时候就划分了特权指令和非特权指令。
  • 用户自编程序:即系统外层的应用程序,简称应用程序。应用程序运行在用户态(目态),只能够使用非特权指令。

中有一个寄存器叫程序状态字寄存器(),其中有个二进制位,表示“内核态”,表示“用户态”。

特权指令有:清内存、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。

内核态→用户态:操作系统程序执行一条特权指令――修改的标志位为“用户态”,这个动作意味着操作系统将主动让出使用权。

用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回的使用权。

中断和异常

中断是让操作系统内核夺回使用权的唯一途径,“中断”会使由用户态变为内核态,使操作系统重新夺回对的控制权。中断的类型:

  • 内中断(异常、例外、陷入):与当前执行的指令有关,中断信号来源于内部。异常的分类:

    • 终止:由致命错误引起,内核程序无法修复该错误,因此一般不再将使用权还给引发终止的应用程序,而是直接终止该应用程序。如用户态下执行特权指令;当前执行的指令是非法的(如除法指令的除数为0);
    • 故障:由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把使用权还给应用程序,让它继续执行下去。如缺页故障;
    • 陷入:由陷入指令(特殊的非特权指令,又称指令访管指令)引发,应用程序主动将控制权还给操作系统内核。在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件,将操作系统转换为核心态,称为访管中断。访管中断处理程序将按系统调用的操作数和参数转到相应的例行子程序。
  • 外中断(中断):(狭义的中断)与当前执行的指令无关,中断信号来源于外部。例子:

    • 时钟中断:由时钟部件发来的中断信号。主要工作是处理和时间有关的信息及决定是否执行调度程序。和时间有关的所有信息包括系统时间、进程的时间片、延时、使用的时间、各种定时器。
    • 中断:由输入输出设备发来的中断信号。

    处理外部中断时,值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。

不同的中断信号,需要用不同的中断处理程序来处理。当检测到中断信号后,由硬件自动保存被中断程序的断点(程序计数器),会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。正常情况下每执行完一条指令都会例行检查是否有中断信号需要处理,如果有,则暂停运行当前这段程序,转而执行相应的中断处理程序。执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查。

系统调用

广义指令就是系统调用指令。广义指令的调用可能发生在用户态,但执行广义指令一定在内核态。

系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。操作系统内核对共享资源进行统一的管理,并向上提供系统调用,因此凡是与共享资源有关的操作,只能通过系统调用向操作系统内核发出请求,并由操作系统代为完成,内核会对各个请求进行协调处理。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

系统调用按照功能可大致分为类:

  • 设备管理:完成设备的请求/释放/启动等功能。
  • 文件管理:完成文件的读/写/创建/删除等功能。
  • 进程控制:完成进程的创建/撤销/阻塞/唤醒等功能。
  • 进程通信:完成进程之间的消息传递/信号传递等功能。
  • 内存管理:完成内存的分配/回收等功能。

系统调用的过程:传递系统调用参数(存入通用寄存器中) → 执行陷入指令(用户态)→ 执行相应的请求内核程序处理系统调用(核心态)→ 返回应用程序

操作系统的体系结构

内核是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。大多数操作系统的内核包括方面的内容:

  • 时钟管理:时钟是最关键的设备,为系统管理提供计时功能
  • 中断机制。
  • 原语:原语是一种特殊的程序,其处于操作系统最低层,是最接近硬件的部分;这些程序的运行具有原子性,其操作只能一气呵成,不能被中断;运行时间都较短,调用频繁。可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性。
  • 对系统资源进行管理的功能:这些管理工作更多的是对数据结构的操作,不会直接涉及硬件。常见的操作有种:进程管理、存储器管理、设备管理。

XurWUU.md.png

 

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

操作系统引导

操作系统是一种程序,程序以数据的形式存放在硬盘中,而硬盘通常分为多个区,一台计算机中又有多个或多种外部存储设备。操作系统引导是指计算机利用CPU运行特定程序,通过程序识别硬盘,识别硬盘分区,识别硬盘分区上的操作系统,最后通过程序启动操作系统,一环扣一环地完成上述过程。

常见操作系统的引导过程如下:

  1. 激活CPU。激活的CPU读取ROM中的boot程序,将指令寄存器置为BIOS(基本输入/输出系统)的第一条指令,即开始执行BIOS的指令。
  2. 硬件自检。启动BIOS程序后,先进行硬件自检,检查硬件是否出现故障。如有故障,主板会发出不同含义的蜂鸣,启动中止;如无故障,屏幕会显示CPU、内存、硬盘等信息。
  3. 加载带有操作系统的硬盘。硬件自检后,BIOS开始读取Boot Sequence(通过CMOS里保存的启动顺序,或者通过与用户交互的方式),把控制权交给启动顺序排在第一位的存储设备,然后CPU将该存储设备引导扇区的内容加载到内存中。
  4. 加载主引导记录MBR。硬盘以特定的标识符区分引导硬盘和非引导硬盘。如果发现一个存储设备不是可引导盘,就检查下一个存储设备。如无其他启动设备,就会死机。主引导记录MBR的作用是告诉CPU去硬盘的哪个主分区去找操作系统。
  5. 扫描硬盘分区表,并加载硬盘活动分区。MBR包含硬盘分区表,硬盘分区表以特定的标识符区分活动分区和非活动分区。主引导记录扫描硬盘分区表,进而识别含有操作系统的硬盘分区(活动分区)。找到硬盘活动分区后,开始加载硬盘活动分区,将控制权交给活动分区。
  6. 加载分区引导记录PBR。读取活动分区的第一个扇区,这个扇区称为分区引导记录(PBR),其作用是寻找并激活分区根目录下用于引导操作系统的程序(启动管理器)。
  7. 加载启动管理器。分区引导记录搜索活动分区中的启动管理器,加载启动管理器。
  8. 加载操作系统。

j8TezR.png

虚拟机

传统计算机:一台物理机器上只能运行一个操作系统。用户进程在同一个操作系统上运行。

虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(),每个虚拟机器都可以独立运行一个操作系统。同义术语:虚拟机管理程序/虚拟机监控程序/ /

Oo2pV0.md.png

两类虚拟机管理程序()的对比:

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

最高权限的一些指令

最低权限的一些指令

Last modification:May 26, 2023
希望能帮到你(^-^)V