二 操作系统的运行机制

author: spongehah from:hut

作者个人博客:https://blog.hahhome.top/

参考视频: B站王道考研计算机操作系统

[TOC]

1 预备知识

1.1 内核程序和应用程序

image-20230907172246660

1.2 程序是如何运行的

image-20230907172311101

1.3 特权指令与非特权指令

image-20230912102719566

只有内核程序才能调用特权指令,而应用程序只能调用非特权指令

1.4 内核态和用户态

image-20230912102907514

★内核态和用户态的切换

image-20230912103041451

刚开机,CPU为内核态,想要切换为用户态,执行内核程序中的一条特权指令,将CPU切换为用户态,才能运行应用程序

当应用程序被篡改含有特权指令时怎么办?

image-20230912103340929

image-20230912103555422

应用程序含有假特权指令时,CPU识别出该指令为特权指令,但是又判断自己处于用户态,于是会发出一个中断信号强制将状态变回核心态夺回CPU控制权,然后终止该应用程序的运行,将CPU分配给其它程序

image-20230912103810181

1.5 小总结

image-20230912103847538

2 中断和异常

2.1 中断的作用

image-20230912103925873

作用:“中断”是让操作系统内核夺回CPU使用权的唯一途径
如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序(实现并发

2.2 中断的分类

image-20230912104431034

  1. 内中断 也叫异常
  2. 外中断 俗称中断,狭义上的中断

1)内中断(异常)

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

image-20230912104539168

image-20230912104858792

例1:即预备知识中 ★内核态和用户态的切换 部分的举例

例2:非法的

例3:陷入指令(也叫Trap指令访管指令)是非特权指令,是实现系统调用的途径(后面会讲)

时刻记住“中断”是让操作系统内核夺回CPU使用权的唯一途径

2)外中断(中断)

狭义上的中断

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

image-20230912105047012

例1:实现并发运行;在时钟部件每隔一个固定时间片,就会发出一个外部中断信号,让CPU执行处理时钟中断的内核程序后执行另一个应用程序

例2:设备的中断信号,告诉CPU任务完成

2.3 中断机制的基本原理

image-20230912105631376

中断向量表

2.4 中断的处理过程

image-20230922214149984

  1. 关中断(硬件完成):CPU响应中断后,应该拒绝响应更高级的中断源的中断请求
  2. 保存断点(硬件完成):为了之后能重新恢复执行这个程序,需要将原来的程序的断点(即程序计数器C)保存起来
  3. 中断服务程序寻址(硬件完成):取出中断服务程序的入口地钟址送到程序计数器PC
  4. 保存现场和屏蔽字(中断程序完成):进入程序中断服务程序后,首先要保护现场,现场信息一般是指程序状态字寄存器PSW和某些通用寄存器的内容
  5. 开中断(中断程序完成):允许更高级中断请求得到响应,想象一下多道程序设计的并发执行,CPU交替执行内存里面的各个程序
  6. 执行中断服务程序(中断程序完成):这是中断请求的目的,完成某些中断后的操作
  7. 关中断(中断程序完成):保证在恢复现场和屏蔽字时不被中断,完成中断后的提作之后,需要恢复现场,不希望被打扰
  8. 恢复现场和屏蔽字(中断程序完成):将现场和屏蔽字恢复到原来的状态
  9. 开中断->中断返回(中断程序完成):中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序

2.5 小总结

image-20230912105403852

image-20230912105648040

3 系统调用

3.1 什么是系统调用

image-20230912105821467

程序接口,即系统调用,用户通过程序间接调用,应用程序可以通过系统调用来请求获得操作系统内核的服务

image-20230912110121045

3.2 系统调用的用途

image-20230912110142500

image-20230912110155343

要实现系统调用需要通过陷入指令

image-20230912110443242

3.3 系统调用的过程

image-20230912110630738

image-20230912110707898

image-20230912110719905

系统调用的过程:

1 应用程序会先进行传参(系统调用时会使用到的参数)

2 应用程序执行陷入指令(也叫Trap指令访管指令),主动将CPU控制权还给操作系统,并执行系统调用的入口程序

3 根据参数处理系统调用的内核程序(发生在内核态

3.4 小总结

image-20230912111316379

4 操作系统的体系结构

image-20230912111740511

4.1 操作系统的内核

image-20230912111828141

image-20230912112036495

4.2 大内核与微内核

image-20230912112427551

大内核即包含了进程管理、存储器管理、设备管理等不会直接涉及硬件的功能

微内核只包含与硬件关联较紧密的模块

大内核与微内核的对比(优缺点)

image-20230912112448352

大内核:性能高但是结构混乱,难以维护

微内核:性能低但是结构清晰,方便维护

image-20230912112658413

4.3 其它体系结构

image-20230912112908379

带黄色星号代表旧重点,红色星号表示新重点

1)分层结构

image-20230912113044333

优点:

  • ★1.便于调试和验证,自底向上逐层调试验证
  • 2.易扩充和易维护,各层之间调用接口清晰因定

缺点:

  • 1.仅可调用相邻低层,难以合理定义各层的边界
  • ★2.效率低,不可跨层调用,系统调用执行时间长

2)模块化

image-20230912113247246

优点:

  • 1模块间逻辑清涵易于维护,确定模块偏接口后即可多模块同时开发
  • ★2.支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
  • ★3.任何模块都可以直接调用其他模块,无需深用消息传递进行通信,效事高

缺点:

  • 1.模块间的接口定义未必合理、实用
  • 2.模块间相互依懒,更难调试和验证

3)外核

image-20230912113434145

image-20230912113442486image-20230912113503391

优点:

  • ★1.外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵话的使用硬件资源
    • 应用程序可以向外核申请连续的存储空间(就不用再寻址进行随机访问),并维护这个空间
  • ★2.减少了虚拟硬件资源的“映射层”,提升效率
    • 就不用再寻址进行随机访问

缺点:

  • 1.降低了系统的一致性
  • 2.使系统变得更复余
    • 维护连续空间有额外开销,需要不允许该程序访问分配空间外的地址,也不允许其它程序访问分配空间内的地址

5 操作系统引导

  • 什么是操作系统引导
  • 磁盘里边有哪些相关数据?
  • 操作系统引导的过程

操作系统引导(boot)一一开机的时候,怎么让操作系统运行起来?

5.1 开机的时候,怎么让操作系统运行起来?

安装操作系统之后:

image-20230912121927889

image-20230912121937886

image-20230912121948183

安装好操作系统分好区后,磁盘表现为以上形式

5.2 开机过程

image-20230912122008985

image-20230912122017445

image-20230912122024893

1 ROM中的记录是永久的,不会随着断电消失,开机时首先取指令,执行BIOS中的ROM引导程序

2 将磁盘主引导记录MBR读到内存RAM,执行磁盘引导程序,扫描分区表

3 从活动分区(又称主分区,即安装了操作系统的分区,即C盘)读入分区引导记录,执行其中的程序

4 从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作

Windows举例:

image-20230912122033457

6 虚拟机

传统计算机:

image-20230912123036771

6.1 两类虚拟机

image-20230912123047759

两类虚拟机:

  • 直接运行在硬件上
  • 运行在宿主操作系统上

image-20230914163958865