1 基本概念

1.1 组成(冯·诺伊曼模型)

  • 主机部分
    • 运算器
    • 存储器
    • 控制器
  • 外部设备
    • 输入设备
    • 输出设备

1.2 最基本特征

  • 并发
  • 共享

1.3 功能

  • 处理器管理
    • 进程控制
    • 进程同步
    • 进程通信
    • 进程调度
  • 存储器管理
    • 内存分配
    • 内存保护
    • 内存扩充
  • 设备管理
  • 设备分配
  • 设备传输控制
  • 设备独立性
  • 文件管理
    • 文件存储空间的管理
    • 目录管理
    • 文件操作管理
    • 文件保护
  • 提供用户接口
    • 命令接口
      • 联机命令接口 / 交互式命令接口
      • 脱机命令接口 / 批处理命令接口
    • 程序接口 / 系统调用
    • 图形接口

1.2 分类

1.2.1 批处理操作系统

  • 多个用户将多个作业交给计算机集中处理
  • 缺少交互性
  • 具体分类
    • 单道批处理系统(早期)
      • 自动性
      • 顺序性
      • 单道性
    • 多道批处理系统
      • 多道
      • 宏观上并行
      • 微观上串行

1.2.2 分时操作系统

  • 多个用户以交互方式使用计算机

  • 具体分类

    • 简单分时操作系统

      内存只有一道作业,其他作业在外存

    • 具有“前台”和“后台”的操作系统

      • 前台存放作业流,工作方式与简单分时操作系统相同
      • 后台存放批处理作业
      • 前台正在调入/调出或无调入/调出时,处理后台作业,并为其分配更长时间片
    • 多道分时操作系统

      内存中装入多道作业,按队列顺序运行

  • 特征

    • 多路性:多个用户同时使用计算机
    • 交互性:用户通过终端与程序进行交互
    • 独占性:用户感觉自己独占计算机
    • 及时性:系统能在较短时间内响应用户请求

1.2.3 实时操作系统

  • 对外部输入的信息,操作系统能在规定时间内处理完毕并作出反应
  • 及时性 & 高可靠性

1.2.4 其他分类

  • 嵌入式操作系统
  • 集群系统

1.3 运行环境

1.3.1 内核态 & 用户态

内核态(管态/系统态)

  • 操作系统管理程序执行时的状态
  • 能执行一切指令,访问所有寄存器和存储区
  • 工作内容
    • 时钟管理
    • 中断机制
    • 原语:关闭中断的小程序
      • 原子性
      • 处于操作系统最底层,最接近硬件
      • 运行时间短,调用频繁
    • 系统控制的数据结构及处理

用户态(目态)

  • 用户程序执行时的状态
  • 只能执行规定的指令,访问指定的寄存器和存储区

特权指令

  • I/O指令
  • 设置中断屏蔽指令
  • 清内存指令
  • 存储保护指令
  • 设置时钟指令

1.3.2 中断 & 异常

中断

  • 外中断
  • 系统正常功能的一部分

异常

  • 内中断
  • 由错误引起

通常异常会引起中断,但中断未必时由异常引起的。

1.3.3 系统调用

  • 应用程序和系统之间的接口
  • 过程
    • 系统调用把应用程序的请求传递给内核,通过 trap 指令进入内核(用户态 —> 内核态)
    • 调用相应的内核函数完成所需处理
    • 将处理结果返回给应用程序(内核态 —> 用户态)
  • 包括
    • 进程控制
    • 文件系统控制
    • 系统控制
    • 内存管理
    • 网络管理
    • socket 控制
    • 用户管理
    • 进程间通信

1.4 体系结构

1.4.1 模块组合结构

  • 优点
    • 结构紧密
    • 接口直接简单
    • 系统效率相对较高
  • 缺点
    • 模块独立性不好把握,系统结构不清晰
    • 可扩展性差
    • 可适应性差
  • 适用于系统小、模块少、使用环境比较稳定的系统

1.4.2 层次结构

  • 优点
    • 模块间组织和依赖关系清晰明了
    • 可读性强
    • 可扩展性强
    • 可适应性强
    • 可靠性好
  • 缺点
    • 如何有效地进行分层

1.4.3 微内核结构

  • 内核中只留下最基本的功能,把其他功能尽可能分离出去,用若干个运行在用户态下的进程(服务器进程)来实现
  • 优点
    • 可靠性好:某个服务器产生问题,不会影响其他服务器和其他组成部分
    • 灵活:增删功能方便
    • 便于维护:修改服务器的代码不会影响其他部分
    • 适合分布式处理计算环境
  • 缺点
    • 效率不高:所有用户都要通过微内核进行通信,微内核成为“瓶颈”
10-06 16:44