操作系统的体系结构、内核、虚拟机


🐌个人主页: 🐌 叶落闲庭

💨我的专栏:💨
c语言
数据结构
javaweb

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


操作系统结构

一、操作系统体系结构

1.1操作系统的内核

  • 内核是操作系统最基本、最核心的部分

  • 实现操作系统内核功能的那些程序就是内核程序

  • 与硬件关系较紧密的模块:

    • 时钟管理:实现计时功能
    • 中断处理:负责实现中断机制
    • 原语:
      • 是一种特殊的程序
      • 处于操作系统最底层,是最接近硬件的部分
      • 这种程序的运行具有原子性 -- -- 其运行只能一气呵成,不可中断
      • 运行时间较短、调用频繁
  • 对资源系统进行管理的功能:

    • 进程管理
    • 存储器管理
    • 设备管理
  • 注意:这些管理工作更多的是对数据结构的操作,不会直接涉及硬件



  • 注意:
    • 操作系统内核需要运行在内核态
    • 操作系统非内核功能运行在用户态

1.1.1大内核(又名:宏内核/单内核)

  • 将操作系统的主要功能模块都作为系统内核,运行在核心态
  • 优点:高性能
  • 缺点:
    • 1.内核代码庞大,结构混乱,难以维护
    • 2.大内核中某个功能模块出错,就可能导致整个系统崩溃
  • 典型的大内核/宏内核/单内核 操作系统:Linux、UNIX
  • 特征、思想:
    • 所有系统功能都放在内核里(大内核结构的OS通常也采用了"模块化"的设计思想)


1.1.2微内核

  • 只把最基本的功能保留在内核
  • 优点:
    • 1.内核功能少,结构清晰,方便维护,内核可靠性高
    • 2.内核外的某个功能模块出错不会导致整个系统崩溃
  • 缺点:
    • 1.需要频繁地在核心态和用户态之间切换,性能低
    • 2.用户态下的各功能模块不可以直接相互调用,只能通过内核的"消息传递"来间接通信
  • 典型的微内核操作系统:Windows NT


1.3分层结构

  • 特征、思想:内核分多层,每层可单向调用更低一层提供的接口
  • 优点:
    • 1.便于调试和验证、自底向上逐层调试验证
    • 2.易扩充和易维护,各层之间调用接口清晰固定
  • 缺点:
    • 1.仅可调用相邻低层,难以合理定义各层的边界
    • 2.效率低,不可跨层调用,系统调用执行时间长


1.4模块化

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

  • 特征、思想:将内核分为多个模块,各模块之间相互协作
  • 内核=主模块+可加载内核模块
  • 主模块:只负责核心功能,如进程调度、内存管理
  • 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核
  • 优点:
    • 1.模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
    • 2.支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
    • 3.任何模块都可以直接调用其他模块,无需采用详细传递进行通信,效率高
  • 缺点:
    • 1.模块间的接口定义未必合理
    • 2.模块间相互依赖,更难调试和验证

1.5外核(exokernel)

  • 特征、思想:内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全
  • 优点:
    • 1.外核可直接给用户进程分配"不虚拟、不抽象"的硬件资源,使用户进程可以更灵活的使用硬件资源
    • 2.减少了虚拟硬件资源的"映射层",提升效率
  • 缺点:
    • 1.降低了系统的一致性
    • 2.是系统变得更复杂

**

二、操作系统引导

2.1什么是操作系统引导?

操作系统引导:开机的时候,怎么让操作系统运行起来

安装操作系统后:

  • 磁盘包括:

    • 主引导记录(MBR)(包含:磁盘引导程序和分区表)
    • C:盘
    • D:盘
    • E:盘等
    • C:盘中又包含:
      • 引导记录PBR(负责找到"启动管理器")
      • 根目录
      • 其他
  • 主存:

    • 由ROM(BIOS)包含:ROM引导程序,即自举程序和RAM组成

2.2操作系统引导过程



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

三、虚拟机

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



  • 两类虚拟机管理程序(VMM)的对比
第一类VMM 第二类VMM
对物理资源的控制权 直接运行在硬件之上,能直接控制和分配物理资源 运行在Host OS之上,依赖于Host OS为其分配的物理资源
资源分配方式 在安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于"外核"的分配方式,分配未经抽象的物理硬件 Guest OS拥有自己的细腻==虚拟硬盘,该硬盘实际上是Guest OS文件系统中的一个大文件,Guest OS分配到的内存是虚拟内存
性能 性能更好 性能更差,需要Guest OS作为"中介"
可支持的虚拟机数量 更多,不需要和Guest OS竞争资源,相同的硬件资源可以支持更多的虚拟机 更少,Guest OS本身需要使用物理资源,Guest OS上运行的其他进程也需要物理资源
虚拟机的可迁移性 更差 更好,只需导出虚拟机镜像文件即可迁移到另一台Guest OS上,商业化应用更广泛
运行模式 第一类VMM运行在最高特权级(Ring O),可以执行最该特权的指令 第二类VMM部分运行在用户态、部分运行在内核态,Guest OS发出的系统调用会被VMM截获,并转化为VMM对Guest OS的系统调用
相关推荐
荔枝吻6 分钟前
【保姆级喂饭教程】Windows下安装Git Flow
windows·git·git flow
这我可不懂2 小时前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇3 小时前
java idea 本地debug linux服务
java·linux·intellij-idea
tan77º3 小时前
【Linux网络编程】Socket - TCP
linux·网络·c++·tcp/ip
kfepiza4 小时前
Linux的`if test`和`if [ ]中括号`的取反语法比较 笔记250709
linux·服务器·笔记·bash
CodeWithMe4 小时前
【Note】《深入理解Linux内核》 第十九章:深入理解 Linux 进程通信机制
linux·运维·php
深盾科技5 小时前
深入解析 .NET 泛型:从原理到实战优化
windows·.net
vvw&5 小时前
Linux 中的 .bashrc 是什么?配置详解
linux·运维·服务器·chrome·后端·ubuntu·centos
tao3556676 小时前
树莓派免密登录(vs code/cursor)
linux·嵌入式硬件·ssh
是阿建吖!6 小时前
【Linux | 网络】socket编程 - 使用UDP实现服务端向客户端提供简单的服务
linux·网络·udp