第2章 操作系统的结构和硬件支持
2.1 操作系统虚拟机
操作系统虚拟机是一种通过软件技术对硬件资源进行抽象和虚拟化的机制,使用户能够以逻辑方式访问和使用计算机资源。
-
定义与概念:
-
虚拟机是操作系统虚拟化技术的核心产物,通过模拟硬件资源为多个操作系统提供运行环境。
-
提供应用程序与硬件之间的隔离,提高系统的安全性和稳定性。
-
-
虚拟机的实现方式:
-
全虚拟化:模拟硬件环境,使操作系统完全不感知底层虚拟化的存在。
-
半虚拟化:部分硬件资源由虚拟化平台直接管理,例如通过支持虚拟化的CPU指令优化性能。
-
容器虚拟化:通过共享操作系统内核实现轻量化虚拟化,每个容器独立运行应用程序。
-
-
应用场景:
-
资源整合:将多个虚拟机部署在单一硬件上,提升资源利用率。
-
隔离环境:为开发、测试提供独立的运行环境,避免相互干扰。
-
灾备与迁移:支持虚拟机快照、动态迁移等功能。
-
2.2 操作系统的组织结构
2.2.1 操作系统的结构
操作系统的结构是其功能模块的组织方式,不同结构直接影响系统的运行效率、扩展性和可维护性。
-
单体结构:
-
所有功能模块运行在内核空间,包括进程管理、内存管理、文件系统等。
-
优点:性能高,模块间通信效率快。
-
缺点:模块间高度耦合,任何修改可能影响整个系统。
-
-
微内核结构:
-
仅保留最基本的功能模块,如进程管理、内存管理。
-
其他功能模块运行在用户空间。
-
优点:模块独立,易于扩展和调试。
-
缺点:模块间通信开销大。
-
-
模块化结构:
-
内核划分为多个相对独立的模块,如文件系统模块、网络模块等。
-
优点:扩展性强,易于维护和调试。
-
缺点:需要良好的模块接口设计。
-
2.2.2 运行时的组织结构
-
任务调度机制:
-
调度器根据调度算法分配CPU资源。
-
常见算法包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转等。
-
-
内存管理:
-
包括虚拟内存的动态分配与回收,涉及页表、段表等。
-
提供按需调页机制,减少内存浪费。
-
2.2.3 操作系统与计算机系统各层次的接口
-
用户接口:
- 提供用户与操作系统交互的工具,例如命令行接口(CLI)和图形用户界面(GUI)。
-
系统调用接口:
- 提供一组标准化的函数,用户程序通过系统调用接口请求操作系统服务。
-
硬件接口:
- 操作系统通过设备驱动程序与底层硬件交互,例如磁盘驱动、网络驱动等。
2.3 处理机的特权级
2.3.1 处理机的态及分类
处理机运行态定义了系统的访问权限级别,用于确保系统安全和稳定性。
-
用户态:
-
用于运行普通应用程序。
-
权限受限,禁止直接操作硬件。
-
-
内核态:
-
用于运行操作系统核心代码。
-
拥有最高权限,可以直接操作硬件资源。
-
-
态切换机制:
- 当用户程序请求系统资源或触发异常时,处理器从用户态切换到内核态。
2.3.2 特权指令
特权指令用于执行对硬件有直接影响的操作,仅能在内核态运行。
-
定义与分类:
- 包括I/O操作指令、内存管理指令、处理器控制指令等。
-
安全机制:
- 当用户态程序尝试执行特权指令时,处理器会触发异常并进入内核态处理。
2.4 中断及其处理
2.4.1 中断概念及类型
中断是计算机系统中处理异步事件的重要机制,用于确保系统对突发事件的及时响应。
-
类型:
-
硬件中断:由外设触发,例如键盘输入、网络包到达等。
-
软件中断:由程序显式触发,例如系统调用。
-
异常:由处理器检测到的错误触发,例如除零错误。
-
2.4.2 向量中断和探询中断
-
向量中断:
- 每种中断类型分配一个唯一编号,通过编号找到对应的中断处理程序。
-
探询中断:
- 按优先级逐一检查中断源,找到激活的中断。
2.4.3 中断进入
描述中断请求信号到中断处理程序开始执行的全过程,涉及保存现场、加载中断向量等。
2.4.4 软件中断处理过程
软件中断由程序触发,常用于系统调用或内核功能测试,处理过程包括参数传递和结果返回。
2.5 UNIX、Linux系统结构
2.5.1 UNIX系统的体系结构
-
分层结构:
-
硬件层、内核层、系统调用接口层、用户层。
-
每一层次独立,便于维护和扩展。
-
-
模块划分:
- 包括文件系统模块、进程管理模块、设备管理模块等。
2.5.2 UNIX系统的核心结构
-
核心模块:
- 负责内存管理、进程调度、设备驱动等基本功能。
-
内核功能:
-
提供进程间通信机制。
-
管理文件系统,支持多种文件系统格式。
-
2.5.3 Linux系统的内核结构
Linux内核采用模块化设计,支持动态加载模块和内核更新。
-
模块划分:
- 文件系统模块、网络协议栈、设备驱动模块。
-
特性:
- 高度可移植性,支持从嵌入式设备到超级计算机的多种硬件架构。
2.6 Linux系统的特权级与中断处理
2.6.1 Linux系统的特权级
Linux系统采用两级特权机制:用户态和内核态。
-
切换机制:
-
用户程序通过系统调用进入内核态。
-
内核态完成任务后返回用户态。
-
2.6.2 中断处理的上半部和下半部
-
上半部:
- 处理紧急的中断请求,例如硬件状态检查。
-
下半部:
- 延迟执行非紧急任务,例如网络包处理。
2.6.3 中断处理下半部的实现机制
-
实现机制:
- 使用软中断、任务队列等延迟执行框架。
-
实际案例:
- 网络数据包的接收和协议解析分布于上半部和下半部。