banner
NEWS LETTER

第二章:操作系统结构

Scroll down

1. 操作系统提供的服务

操作系统提供一系列服务,以便用户和程序能方便、高效地使用计算机系统。这些服务可以分为两大类:

面向用户/程序的服务:

  • 用户界面:提供用户与系统交互的方式。
    • CLI:命令行界面,用户通过输入文本命令来操作。
      • 例子:Windows 中的 cmdPowerShell,Linux 或 macOS 中的 Terminal
    • GUI:图形用户界面,用户通过点击鼠标、拖拽等图形元素来操作。
      • 例子:Windows 的桌面、macOS 的 Finder。
  • 程序执行:将程序从硬盘加载到内存,并启动运行。
  • I/O 操作:由于用户程序不能直接控制硬件,操作系统提供统一的接口来执行输入/输出。
    • 例子:当你用程序读取一个文件时,你调用的是操作系统提供的 read 函数,而不是直接去操作硬盘磁头。
  • 文件系统操作:提供创建、删除、读取、写入、搜索文件和管理目录的功能。
  • 通信:允许进程之间交换信息。
    • 方式共享内存消息传递
    • 例子:复制一段文字,在另一个程序中粘贴,背后可能就是通过操作系统的通信服务实现的。
  • 错误检测:持续监控系统,检测硬件(如CPU错误、内存故障)、软件(如除零错误、访问非法内存)的错误,并确保计算正确进行。

确保系统自身高效运行的服务:

  • 资源分配:当多个用户或多个作业同时运行时,操作系统需要将 CPU 时间、内存空间、文件存储空间、I/O 设备等资源分配给它们。
    • 例子:你的电脑同时运行着浏览器、音乐播放器和Word,操作系统负责公平地分配CPU时间片给它们。
  • 记账:记录用户使用了多少以及何种类型的资源。这可以用于计费,或简单地用于统计系统性能和使用模式。
    • 例子:云计算服务商会记录你使用了多少CPU小时、存储空间和网络流量,并据此收费。
  • 保护与安全
    • 保护:控制进程或用户对系统资源的访问,防止相互干扰。
      • 例子:用户A不能未经授权访问或删除用户B的文件。
    • 安全:防御来自系统外部的攻击,如病毒、木马、黑客入侵等。

2. 用户与操作系统的接口

系统调用

  • 是什么:系统调用是操作系统内核为运行在用户态的程序提供的、请求服务的编程接口。它是用户程序进入内核态的唯一入口
  • 重要性:用户程序不能直接执行特权指令(如直接操作硬件),必须通过系统调用“请求”操作系统代为执行。
  • 例子:在C语言中,你调用 printf(“Hello”) 来打印。printf 函数库的内部最终会触发一个 write 系统调用,通知操作系统内核将字符串“Hello”输出到屏幕上。
  • 传递参数的方法
    1. 通过寄存器:将参数放在CPU的寄存器中。
    2. 通过内存块:将参数放在内存的一个表格里,然后将表格的地址存放在寄存器中。
    3. 通过栈:程序将参数压入栈中,操作系统再从栈中弹出这些参数。

系统程序

  • 是什么:系统程序是运行在操作系统之上的实用工具软件集合,它们利用系统调用来完成更复杂的功能。它们定义了大多数用户眼中的“操作系统体验”。
  • 例子
    • 文件操作:文件管理器、复制命令 (cp)、删除命令 (rm)。
    • 状态信息:任务管理器、系统监视器 (top)。
    • 编程语言支持:编译器 (gcc)、解释器 (Python)。
    • 程序加载与执行:命令行解释器 (shell)。

3. 操作系统的结构与设计

设计目标

  • 用户目标:系统应该方便使用、易于学习、可靠、安全、快速
  • 系统目标:系统应该易于设计、实现、维护,并且灵活、可靠、无错误、高效

机制与策略

  • 机制如何做。指实现一个功能的底层具体方法和步骤。
  • 策略做什么。指决定在何时、为何做某件事的高层决策。
  • 分离原则:将机制与策略分离是一个重要设计原则,它允许我们在不改变底层机制的情况下,灵活地调整策略。
    • 例子:CPU调度是一个机制,它负责在进程间切换。而调度算法(如先来先服务、时间片轮转)则是策略。我们可以轻松地更换调度算法,而无需重写整个进程切换的底层代码。

操作系统的几种结构

  1. 简单结构(如 MS-DOS)
    • 特点:没有清晰的模块划分,接口和功能层级混乱。为了在有限的空间内提供最多功能,应用程序甚至可以绕过操作系统直接访问硬件。
    • 缺点:极其不安全,一个程序的错误可能导致整个系统崩溃。
  2. 分层结构
    • 特点:操作系统被划分为若干层(级),每一层只使用其下一层提供的服务,并为上一层提供服务。最底层是硬件,最高层是用户界面。
    • 优点:简化了设计和调试,层与层之间接口清晰。
    • 缺点:性能可能稍差,因为一个高层请求可能需要穿越多个层。
  3. 微内核结构
    • 思想:将内核中最基本的功能(如进程调度、进程间通信、底层内存管理)保留在内核中,而将其他服务(如文件系统、设备驱动、网络协议栈)作为独立的“用户态进程”运行。
    • 优点
      • 高可靠性:一个服务崩溃不会导致整个内核崩溃。
      • 高安全性:更少的代码运行在内核模式。
      • 易于扩展与移植:添加新服务只需添加新的用户态程序。
    • 缺点:由于需要频繁在用户态和内核态之间切换,性能可能成为瓶颈。
  4. 虚拟机
    • 思想:将分层思想推到极致。虚拟机管理器(VMM)运行在裸机上,它负责多道编程提供多个虚拟机的错觉。每个虚拟机都认为自己独占整个计算机系统(包括CPU、内存、I/O设备)。
    • 例子:VMware、VirtualBox。你可以在你的Windows电脑上创建一个虚拟机,并在里面安装一个完整的Linux系统,这个Linux系统感觉就像运行在一台独立的真实电脑上。
    • 优点
      • 完全隔离:一个虚拟机的崩溃不影响其他虚拟机。
      • 研究与开发:是研究新操作系统的完美平台,不会破坏宿主系统。
    • 缺点:实现困难,且由于需要模拟硬件,性能会有损失。
  5. Java 虚拟机
    • 特点:JVM 本身就是一个虚拟机的例子。它提供了一个与底层硬件和操作系统无关的运行时环境,使得Java程序可以“一次编译,到处运行”。

4. 系统启动

  • 系统生成:操作系统需要针对特定计算机的硬件配置进行定制和编译,这个过程称为 SYSGEN。
  • 引导程序
    • BIOS:存储在主板ROM中的基本输入输出系统。计算机加电后,首先运行BIOS,它进行硬件自检,并加载引导程序。
    • Bootstrap:一个更小的程序,负责在硬盘上找到操作系统的内核,将其加载到内存中,并跳转到内核的起始地址开始执行
    • 类比:启动计算机就像发射火箭。
      • BIOS是发射前的最终系统检查。
      • Bootstrap是第一级推进器,负责将火箭(内核)推出地面。
      • 内核是主发动机,一旦启动就接管了整个系统。

如果您喜欢我的文章,可以考虑打赏以支持我继续创作.

其他文章
目录导航 置顶
  1. 1. 1. 操作系统提供的服务
    1. 1.1. 面向用户/程序的服务:
    2. 1.2. 确保系统自身高效运行的服务:
  2. 2. 2. 用户与操作系统的接口
    1. 2.1. 系统调用
    2. 2.2. 系统程序
  3. 3. 3. 操作系统的结构与设计
    1. 3.1. 设计目标
    2. 3.2. 机制与策略
    3. 3.3. 操作系统的几种结构
  4. 4. 4. 系统启动
请输入关键词进行搜索