Skip to content

操作系统概述

索引

学习 rCore 的笔记记录。该篇记录rCore 第一课:系统概述。

后续大纲

  • 操作系统结构
  • 中断以及系统调用
  • 内存管理
  • 进程管理
  • 处理机调度
  • 同步互斥
  • 文件系统
  • I/O子系统

操作系统定义

作为控制程序

  • 系统软件
  • 执行软件
  • 控制程序执行过程, 防止错误
  • 方便用户使用软件

作为资源管理程序。

  • 应用与硬件之间的中间层
  • 管理各种软硬件资源
  • 访问软硬件资源的服务
  • 解决访问冲突, 保证公平使用

操作系统的软件分类

  • Shell 命令行接口
  • GUI 图形用户接口
  • Kernel 操作系统内部

操作系统需要完成 CPU与进程、文件到磁盘、地址空间与内存之间的串联。

操作系统的特征

并发:同时存在多个应用程序 共享:“同时”访问互斥的各种资源 虚拟:每个程序“独占”的访问一整个计算机 异步:服务完成的时间不确定, 也可能失败

操作系统的演变

  • 单用户系统(1945-1955), 操作系统 = 装载器 + 程序库
  • 批处理系统(1955-1965), 操作系统 = 装载器 + 程序控制器 + 输出处理器
  • 多道程序系统(1955-1980), 操作系统 = 装载器 + 程序调度 + 内存管理 + 输出管理
  • 分时系统(1970-至今), 操作系统 = 装载器 + 程序调度 + 内存管理 + 中断处理...
  • 分布式系统(1990-至今), 操作系统 = 分布式(装载器 + 程序/OS调度 + 内存管理)
  • AIoT系统(2000-至今), 操作系统 = 分布式(程序/OS调度 + 内存管理 + 安全/更新)

操作系统的结构

  • 简单操作系统(1981-1994)
    • 没有拆分模块
    • 主要用汇编编写
    • 没有安全保护
  • 单体分层结构
    • 每层建立在底层之上
    • 最底层是硬件驱动
    • 最高层是用户界面
    • 每一层仅使用低一层的功能和服务
  • 微内核架构
    • 灵活, 安全
    • 性能较低
    • LPC 本地过程调用(Local Procedure Call)
    • HAL 硬件抽象层(Hardware Abstraction Layer)
  • 外核架构
    • 保护与控制分离
    • 虚拟外设, 让应用程序使用虚拟外设
    • 程序能链接到操作系统库
  • 虚拟机结构
    • 将单独的机器接口转换成很多的虚拟机
    • 每个虚拟机都是一个原始计算机系统的有效副本

实验要求

  • 满足应用
    • LibOS
      • 函数调用
      • 编译器与操作系统的配合
      • 硬件启动和软件启动
      • 编写、调试裸机程序
    • 批处理
      • 特权操作
      • 系统调用、异常
      • 加载、执行、切换应用程序
      • 特权级切换
    • 多道程序
      • 协作式调度
      • 内存空间划分与管理
    • 分时多任务
      • 抢占式调度
      • 中断处理
      • 上下文切换
  • 复杂化
    • 地址空间抽象
      • 地址空间抽象
      • 静态内存分配
      • 动态内存分配
      • 页式内存管理
      • 局部性原理
      • 缺页异常
      • 虚拟页式存储
      • 置换算法
    • 进程抽象
      • 多处理器
      • 多核架构
      • 实际 OS 调度
    • 文件抽象
      • 文件抽象
      • 文件组织管理
      • 文件系统实现
  • 多样性功能支持
    • 进程间通信
      • 信号、管道
      • 消息队列、共享内存
      • I/O重定向
    • 并发操作
      • 线程:用户、内核线程
      • 协程机制
      • 协程、线程、进程的关系
      • 同步互斥的机制
      • 同步互斥解决并发问题
      • 死锁等问题
    • 管理I/O设备的
      • 设备抽象
      • 设备执行模型
      • 同步/异步 I/O
      • I/Os 设备管理

执行环境

应用程序执行环境

  • Assembler 汇编 -> 机器码
  • Linker 多个机器码目标文件 -> 单个机器码执行文件
  • OS 加载、执行、管理机器码执行文件

OS 程序执行环境

  • Bootloader 加载 OS 执行
  • 编译器三元组-CPU架构/厂商/操作系统
  • ELF文件

初始化过程

  1. 硬件启动 Bootloader
  2. Bootloader 启动 OS
  3. OS 位于指定位置