操作系统: 基本结构

操作系统概述

OS本质

  • 软件分为系统软件、支撑软件、应用软件(功能专用),操作系统是一种系统软件
  • 系统软件包括OS(运行程序),编译器(生成程序),数据库系统DBMS(管理数据)等
  • 计算机由上至下可分为用户层、程序层、库例程、系统调用、操作系统、硬件
    • 狭义上的操作系统仅包含系统调用和操作系统,它们合称内核Core/Kernal
    • 广义上还包含库例程、系统程序及硬件层
  • 根据侧重点不同,可分类:
    • 资源共享及工作效率:Unix
    • 易用性:Windows
    • 资源高效利用:移动端OS
    • 安全性:嵌入式OS

OS功能模块概述

  • CPU管理:
    • 包括进程管理(对任务进行管理)、CPU调度(支持多任务)、进程同步控制(支持并发)
  • 内存管理:
    • 包括内存分配、虚存管理
  • 文件管理:
    • 包括接口设计及其实现
  • 设备管理:
    • 包括I/O管理,设备分类,设备驱动
  • 通信

OS服务

  • UI(user interface,用户接口)服务:
    • CLI(command-line interface,命令行接口):Unix、Linux、Windows Server
      • 效率高且稳定
      • 通过终端(terminal)键入命令,如今均使用特殊的终端环境控制台(Console) 终端环境统称TTY(teletypewriter) 键入的命令为某种Shell,为脚本语言
    • GUI(graphical user interface,图形用户接口):Windows
    • TSI(touch screen interface,触控接口):MacOS
  • 程序执行:
    • 先将可执行文件(windows-.exe、linux-.elf、macOS-.mach-o)/脚本(shell/python)文件加载到内存
    • CPU取指执行
  • I/O管理
  • 文件系统:
    • 接口:如命名、读写等方法
    • 具体实现:需考虑存储结构、性能
  • 通信:任务间通信等
  • 错误检测(error detection):即软件中断
  • 服务保障(保证上述服务正常运行的服务):(CPU、内存、磁盘)资源回收、运行日志、系统资源访问控制

OS内核分类

  • 单内核(宏内核):DOS、Unix
    • 用户层包含应用、库例程
    • 内核包含文件系统、IPC(Inter-Process Communication,进程间通信)、I/O控制、进程管理等性能要求高的服务
  • 微内核:Mach
    • 文件系统归入用户层
    • 性能效率低,但可移植、可扩展性强、且支持分布式系统
  • 混合内核:Windows、XNU、MacOS

系统调用

  • 系统调用是用户程序(及标准库等)和系统服务间的最原始接口,用户程序通过系统调用来主动访问系统程序
  • 和函数调用的区别:将用户态转换为核心态,以访问处于保护状态的程序和设备;执行完后切换回用户态
    • 核心态是特殊的执行模式,使核心服务代码在被保护的状态下执行
    • 使用系统调用与函数调用类似,仅仅是由操作系统完成期间的执行模式转换操作
  • 系统调用的参数传递方式:
    • 寄存器传递:效率高,优先使用;但可传递参数数量少
    • 内存块传递:分配内存块给待传递参数,将块地址传递给系统程序
    • 栈传参:用户程序将参数入栈,系统程序退栈使用参数