典型结构

整体式结构(单内核)

  • 所有操作系统功能在内核态运行
  • 效率高,但模块耦合紧密

微内核结构

  • 内核只保留最基本功能(进程通信、中断处理等)
  • 其他功能(文件系统、设备驱动等)在用户态实现
  • 高可靠性、可扩展性

分层结构

  • 按功能层次组织,下层向上层提供服务

重点 运行模型

根据 OS 的运行方式,分为三种模型:

① 非进程内核模型

  • 内核运行在任何进程上下文之外,以一个独立的内核映像存在
  • 内核代码不依附于任何用户进程,拥有自己独立的栈和内存区域
  • 实际例子
    • MS-DOS:整个 OS 是一个常驻内存的程序,与用户程序完全分离
    • 传统 UNIX(早期):核心常驻内存,中断/异常直接在核心态处理,不涉及进程切换
  • 特点:简单直接,但缺乏灵活性

② OS 功能在用户进程内执行的模型

  • OS 内核代码在用户进程的上下文中执行
  • 当进程通过系统调用中断与异常陷入内核时,进程本身切换到核心态继续运行(使用进程自己的内核栈)
  • 内核代码共享进程的地址空间(仅核心态部分)
  • 实际例子
    • Linux:进程调用 read() → 陷入内核 → 在当前进程上下文中执行内核代码(sys_read)→ 返回用户态。操作系统-错误 和 top 显示的 sy%(内核态 CPU 时间)就是这部分
    • Windows NT 内核:系统服务分发后,在调用线程的上下文中执行内核函数
  • 特点:性能好(无需额外上下文切换),现代主流 OS 的模式

③ OS 功能作为独立进程执行的模型

  • OS 的各功能模块作为独立的内核/系统进程运行
  • 用户进程通过进程间通信(IPC) 向这些系统进程请求服务
  • 代表微内核结构
  • 特点:高模块化/可靠性(一个模块崩溃不影响整个系统),但 IPC 开销大
模型典型 OS性能健壮性
非进程内核MS-DOS、早期 UNIX
用户进程内执行Linux、Windows NT
独立进程执行MINIX、QNX、Mach中(IPC 开销)

用户接口

  • 命令接口(命令解释器 / shell)
  • 程序接口(系统调用
  • 图形用户接口(图标、窗口)