跳转至

Chapter 0 : Introduction

📖 阅读信息

阅读时间:8 分钟 | 中文字符:3083

Computer System Firmware

计算机系统可以分为四个组成部分:

  • 硬件——提供基本的计算资源:CPU、内存、输入/输出设备
  • 操作系统:控制和协调硬件在各种应用和用户之间的使用
  • 系统程序和应用程序——定义系统资源的使用方式,以解决用户的计算问题:文字处理器、编译器、网页浏览器、数据库系统、视频游戏
  • 用户:人、机器、其他计算机

它们之间的关系主要如下图所示:


Operating System Definition

  • 操作系统是一个充当计算机用户与计算机硬件之间中介的程序,它是资源分配者,管理所有资源,在相互冲突的请求之间进行决策,以实现高效和公平的资源使用;它也是控制程序,控制程序的执行,以防止错误和不当使用计算机
  • 操作系统的目标:
    • 执行用户程序,并使解决用户问题变得更容易
    • 帮助计算机用户以高效的方式利用计算机硬件
  • “计算机上始终在运行的那个程序”就是内核(Kernel)。其他的要么是系统程序(随操作系统一起提供),要么是应用程序。

Computer Startup

在启动一个计算机时,通常会经过以下两步:

  1. 引导程序(Bootstrap Program)在开机或重启时加载
    • 引导程序通常存储在只读存储器(ROM)或可擦可编程只读存储器(EPROM)中,一般称为固件(Firmware)
    • 它初始化系统的各个方面,加载操作系统内核并开始执行
  2. 计算机系统开始运行

    • 一个或多个 CPU,设备控制器通过共有总线连接,实现对共享内存的访问(如下图所示)
    • CPU 与设备并发执行,争夺内存周期

    • I/O 设备和 CPU 可以并发执行
    • 每个设备控制器负责一种特定类型的设备
    • 每个设备控制器都有一个本地缓冲区(Local Buffer)
    • CPU 将数据从主存储器移动到本地缓冲区,或从本地缓冲区移动到主存储器
    • I/O 操作是指从设备到控制器本地缓冲区的数据传输
    • 设备控制器通过引发中断(通过系统总线)来通知 CPU 其操作已经完成

    I/O Structure

在 I/O 开始后,只有当 I/O 完成时,控制权才会返回到用户程序。

  • 等待指令会让 CPU 处于空闲状态,直到下一个中断发生
  • 等待循环(会导致内存访问竞争)
  • 一次最多只能有一个 I/O 请求处于未完成状态,无法同时进行多个 I/O 处理

在 I/O 开始后,控制权会立即返回给用户程序,而无需等待 I/O 完成

  • 系统调用(System Call)——请求操作系统允许用户等待 I/O 完成
  • 设备状态表(Device-Status Table)包含每个 I/O 设备的条目,显示其类型、地址和状态
  • 操作系统通过索引 I/O 设备表来确定设备状态,并可修改表项以包含中断信息

I/O 主要有异步和同步两种方式,如下图所示:


Interrupt Handling

如果遇到了中断情况:

  • 中断会将控制权转移到中断服务程序,通常是通过中断向量(Interrupt Vector),其中包含所有服务程序的地址
  • 中断架构必须保存被中断指令的地址
  • 当另一个中断正在处理时,会禁止新的中断进入,以防止丢失中断(Lost Interrupt)
  • 陷阱(Trap)是由软件生成的中断,可能是由于错误(Error)或用户请求(User Request)(后者通常称为系统调用,System Call)引发的
  • 一个操作系统是由中断驱动的(Interrupt Driven),操作系统通过寄存器(Registers)和程序计数器(Program Counter),来保护 CPU 的状态
  • 要判断发生了哪种类型的中断:
    • 通过通用例程轮询(Polling)
    • 向量化中断系统(Vectored Interrupt System)
  • 不同的代码片段决定了针对每种类型的中断应采取什么操作


Direct Memory Access Structure

  • 用于能够以接近内存速度传输信息的高速 I/O 设备
  • 设备控制器将数据块从缓冲存储区直接传输到主存,而无需 CPU 干预
  • 每处理一个数据块只会产生一个中断,而不是每处理一个字节就产生一个中断

Operating System Structure

操作系统主要采取多程序设计(Multiprogramming),主要是为了提高效率(CPU 利用率)

  • 单用户无法时刻让 CPU 和 I/O 设备都处于工作状态
  • 多道程序设计将作业(代码和数据)组织起来,保证 CPU 始终有事情可做
  • 系统中的部分作业被保存在内存中
  • 通过作业调度(Job Scheduling)选择并运行一个作业
  • 当一个作业需要等待(比如 I/O 操作)时,操作系统会切换到其它作业

一个多程序设计的操作系统内存分布如下图所示:

分时/多任务(Timesharing / Multitasking)是多道程序设计的逻辑扩展,CPU 在各作业间频繁切换,使得用户可以与正在运行的每个作业交互,实现交互式计算(Interactivity)。

  • 响应时间(Response Time)应小于 1 秒
  • 每个用户在内存中至少有一个正在执行的程序→进程(Process)
  • 如果有多个作业同时准备就绪运行→需要 CPU 调度(CPU Scheduling)
  • 如果进程装不下内存,交换(Swapping)可以将它们调进调出以运行
  • 虚拟内存(Virtual Memory)允许进程在未完全装入内存的情况下执行

Operating System Operations

在操作系统中可能会出现很多问题:

  • 中断:由硬件驱动
  • 软件错误或请求:产生异常(Exception)或陷阱(Trap)
    • 比如除零错误、请求操作系统服务
  • 其他进程问题:包括无限循环(Infinite Loop)、进程相互修改(Modifying)或修改操作系统

因此我们需要保护措施,双模式操作(Dual-mode Operation)允许操作系统保护自身及其他系统组件

  • 用户模式(User Mode)和内核模式(Kernel Mode)
  • 硬件提供模式位(Mode Bit)
    • 能够区分系统是在运行用户代码还是内核代码
    • 有些指令被指定为特权指令(Privileged),只能在内核模式下执行
    • 系统调用会切换到内核模式,调用返回时再设为用户模式
  • 定时器用于防止无限循环或进程占用资源
    • 在特定时间后设置中断
    • 操作系统减少计数器的值
    • 当计数器为零时产生中断
    • 在调度进程之前设置好,以便操作系统能够重新获得控制权或终止超时的程序


Process Management

进程是正在运行的程序。它是系统中工作的基本单位。程序是“静态实体(Passive Entity)”,而进程是“活动实体(Active Entity)”

进程完成任务需要资源,在终止时需要回收任何可重用的资源:

  • CPU、内存、I/O、文件
  • 初始化数据

单线程进程有一个程序计数器(Program Counter),指明下一条将要执行的指令的位置,进程按顺序执行指令,每次一条,直到执行完成;多线程进程每个线程都拥有自己的程序计数器

通常系统会有许多进程,一些是用户进程,一些是操作系统进程,它们可以通过在不同进程/线程之间复用 CPU 实现并发运行

操作系统在进程管理方面负责以下活动:

  • 创建和删除用户进程和系统进程
  • 挂起和恢复进程
  • 为进程同步提供机制
  • 为进程通信提供机制
  • 为死锁处理提供机制

Memory Management

所有数据在处理之前和之后都必须在内存中,所有指令必须在内存中才能执行,内存管理决定何时哪些内容在内存中,以优化 CPU 利用率和提升计算机对用户的响应速度。

内存管理的具体活动包括:

  • 跟踪当前哪些内存区域正在被使用,以及由谁使用
  • 决定哪些进程(或其部分)以及数据需要被调入或移出内存
  • 按需分配和释放内存空间

Storage Management

操作系统为信息存储提供统一、逻辑化的视图:

  • 将物理属性抽象为逻辑存储单元——文件
  • 每种介质由设备控制(如磁盘驱动器、磁带驱动器)
    • 不同设备属性包括:访问速度、容量、数据传输速率、访问方式(顺序或随机)

文件系统管理:

  • 文件通常被组织到目录中
  • 大多数系统对访问权限进行控制,以决定谁可以访问哪些内容
  • 操作系统的相关活动包括:
    • 创建和删除文件及目录
    • 提供操作文件和目录的基本操作
    • 将文件映射到二级存储
    • 将文件备份到稳定(非易失性)存储介质

Mass-Storage Management

通常,磁盘用于存储无法放入主存的数据,或者需要长期保存的数据,妥善的管理至关重要。整台计算机的运行速度取决于磁盘子系统及其算法。

操作系统的相关活动包括:

  • 空闲空间管理
  • 存储分配
  • 磁盘调度

有些存储不需要很快:

  • 第三层存储包括光存储、磁带等
  • 这些存储也必须进行管理
  • 存储类型包括一次写入、多次读取(WORM)及可读写(RW)

I/O Subsystem

操作系统的一个目的就是将硬件设备的特殊性隐藏起来,使用户更容易使用和编程。

I/O 子系统负责:

  • I/O 的内存管理,包括缓冲(在数据传输过程中临时存储数据)、缓存(为提高性能将部分数据存储在更快的存储介质中)、假脱机(一个作业的输出与其他作业的输入重叠)
  • 通用设备驱动接口
  • 针对具体硬件设备的驱动程序

Protection and Security

  • 防护(Protection):控制进程或用户对操作系统定义资源访问的任何机制
  • 安全(Security):防御系统免受内部和外部攻击
    • 范围广泛,包括拒绝服务、蠕虫、病毒、身份盗窃、服务盗用等。
  • 系统通常首先区分不同用户,以决定谁可以做什么:
    • 用户身份(用户 ID,安全 ID):包括用户名和关联编号,每个用户唯一一个
    • 用户 ID 随后与该用户的所有文件、进程等资源关联,以确定访问控制
    • 组标识符(组 ID):允许定义用户组并进行权限控制,也与各个进程、文件关联
    • 权限提升:允许用户切换为具有更多权限的有效 ID

Computing Environments

Traditional Computer

  • 随着时间推移,界限变得模糊
  • 办公环境
    • 个人电脑连接到网络,终端接入主机或小型计算机,提供批处理和分时服务
    • 现在通过门户网站,使联网和远程系统能够访问相同的资源
  • 家庭网络
    • 过去是单一系统,后来有了调制解调器
    • 现在有防火墙并实现了网络化

Client-Server Computing

  • 愚蠢终端被智能个人电脑取代
  • 现在许多系统都是服务器,响应客户端发出的请求
    • 计算服务器:为客户端提供一个接口以请求服务(如数据库)
    • 文件服务器:为客户端提供存储和检索文件的接口


Peer-to-Peer Computing

点对点计算是另一种分布式系统模型,它不区分客户端和服务器:

  • 所有节点都被视为对等体
  • 每个节点可以作为客户端、服务器或两者同时存在
  • 节点必须加入P2P网络
    • 可将其服务注册到网络上的中心查找服务
    • 也可以通过发现协议广播服务请求并响应其他节点的服务请求
  • 典型例子包括 Napster 和 Gnutella

Web-Based Computing

  • 网络已经变得无处不在
  • 个人电脑是最普及的设备
  • 越来越多的设备实现联网以允许访问网络
  • 出现了新类型的设备,用于在多个相似服务器之间管理网络流量:负载均衡器
  • 操作系统的使用也经过了变化,比如 Windows 95(客户端),发展到现在的 Linux 和 Windows XP,这些操作系统既可以作为客户端,也可以作为服务器

💬 评论

评论系统加载中...