操作系统资源管理
计算机通常有一个操作系统,它在系统启动时激活并接管控制权。计算机硬件被连接到最初加载存储在 永久内存 中的一组小的系统指令。您可能之前使用过至少一个操作系统。各种版本的微软 Windows(从 NT 到 XP,再到 Vista 到 8)是个人电脑的流行选择。多年来,UNIX 一直是严肃程序员的最爱,而一个名为 Linux 的 UNIX 版本在个人电脑系统中很受欢迎。
6.1.1 识别计算机系统中需要管理的资源。
操作系统的各种角色通常围绕着“友好共享”的概念展开。操作系统管理资源,而这些资源通常以某种方式在想要使用它们的各种程序之间共享:多个同时执行的程序共享主内存的使用;它们轮流使用 CPU;以及它们争夺使用输入和输出设备的机会。操作系统充当操场管理员,确保每个人都合作并有机会玩耍。
6.1.7 概述操作系统资源管理技术:调度、策略、多任务处理、虚拟内存、分页、中断、轮询。
一个正在执行的程序驻留在主内存中,它的指令在 取指-解码-执行周期 中一个接一个地被处理。多道程序设计是将多个程序同时保存在主内存中的技术;这些程序竞争访问 CPU,以便完成它们的工作。所有现代操作系统都在不同程度上使用多道程序设计。因此,操作系统必须执行内存管理,以跟踪哪些程序在内存中以及它们驻留在内存中的位置。
0 | ... |
1 | ... |
2 | ... |
⋮ | ⋮ |
20347 | ... |
20348 | ... |
20349 | ... |
⋮ | ⋮ |
所有程序在执行时都存储在主内存中。这些程序引用的所有数据也存储在主内存中,以便可以访问它们。可以将主内存视为一个大的连续空间块,被分成 8 位、16 位和 32 位的组。内存中的每个字节或字都有一个对应的地址,它只是一个唯一标识内存中该特定部分的整数。在右边,有一个内存表示,其中第一个内存地址为 0。
6.1.5 解释操作系统在管理内存、外设和硬件接口方面的作用。
前面提到,在多道程序设计环境中,多个程序(及其数据)同时存储在主内存中。因此,操作系统必须使用技术来
- 跟踪程序在内存中的位置和方式,以及
- 将逻辑程序地址转换为实际内存地址。
一个程序充满了对变量和其他程序代码部分的引用。当程序被编译时,这些引用被更改为数据和代码驻留在内存中的地址。但是,由于不知道程序将被加载到主内存中的确切位置,如何才能知道使用什么地址来引用任何内容呢?
解决方法是使用两种地址:逻辑地址和物理地址。逻辑地址(有时称为虚拟地址或相对地址)是一个指定通用位置的值,相对于程序,而不是相对于主内存的实际情况。物理地址是主内存设备中的实际地址——再次显示在图中。
当一个程序被编译时,对一个标识符(例如变量名)的引用被更改为一个逻辑地址。当程序最终被加载到内存中时,每个逻辑地址最终对应于一个特定的物理地址。将逻辑地址映射到物理地址称为地址绑定。逻辑地址允许程序在内存中移动或在不同时间加载到不同的位置。只要跟踪程序的存储位置,就可以始终确定与任何给定逻辑地址相对应的物理地址。
以下各节将考察主要内存管理技术的底层原理。为了简化示例,所有地址绑定计算都在 10 进制中执行。
单一连续内存管理
计划名为“单一连续内存管理”的部分。 |
分区内存管理
计划名为“分区内存管理”的部分。 |
分页内存管理
计划名为“分页内存管理”的部分。 |
6.1.7 概述操作系统资源管理技术:调度、策略、多任务处理、虚拟内存、分页、中断、轮询。
按需分页方法产生了虚拟内存的概念,即没有程序大小限制的错觉(因为整个程序不必同时都在内存中)。在之前研究的所有内存管理技术中,整个进程必须作为一个连续整体被加载到内存中。因此,进程大小始终有一个上限。按需分页消除了这种限制。
然而,虚拟内存会在程序执行期间带来大量的开销。对于其他内存管理技术,一旦程序被加载到内存中,它就在那里并且准备就绪。使用虚拟内存方法,人们必须不断地在主内存和辅助内存之间交换页面。这种开销通常是可以接受的——当一个程序正在等待页面被交换时,另一个进程可以接管 CPU 并取得进展。过度的页面交换被称为抖动,它会严重降低系统性能。
6.1.3 识别指定计算机系统中一系列资源的限制
6.1.4 描述计算机系统中资源限制可能导致的潜在问题。
特定计算机系统资源的限制通常与系统的硬件及其功能密切相关。限制可能包括
组件 | 可能的限制 | 可能的后果 |
---|---|---|
RAM | 如今大多数计算机都有 4 GB 的 RAM。RAM 的主要限制是,如果程序需要大量的内存,则可能会耗尽内存空间。更罕见的是,RAM 可能不可靠(非 ECC)或太慢(高时序值)。 | 所有操作系统都需要最少量的 RAM 才能运行。例如,Windows 8.1 x86_64 需要至少 2 GB 的 RAM,没有这些,计算机系统将无法运行。RAM 不足也会导致多任务处理出现问题,因为让虚拟内存写入磁盘比访问 RAM 慢得多。最后,一些应用程序(视频处理)需要大量的 RAM。没有这些,程序仍然可以运行,但会浪费大量用户时间在加载上。 |
CPU | 大多数现代计算机拥有 2 到 4 个处理器。处理器的时钟速度可能过低。或者,CPU 的线程数量可能不足。 | CPU 速度慢会限制每秒可执行的计算次数。没有多个核心,多任务处理会变慢。此外,32 位 CPU 无法运行 64 位操作系统或应用程序,而某些专业用户需要这些应用程序。 |
显卡 | 显卡的处理能力可能不足以满足高级用户的需求。此外,GPU 的显存可能不足以与高分辨率显示器兼容。 | 后果包括显卡无法与更高分辨率的显示器配合使用(尤其是在 4K 显示器目前进入市场的情况下)。GPU 直接影响每秒可渲染的帧数。这对视频的流畅度有影响。弱 GPU 可能无法满足专业用户(例如视频编辑器或游戏玩家)的需求。 |
网卡 | 网卡的传输速度可能有限。大多数以太网线都是 1 Gbps,但旧的以太网线可能是 10/100 Mbps。这对于某些应用程序来说可能不够。此外,网卡需要可靠。 | 速度慢的网卡可能没有足够的带宽来满足某些用途,例如流式传输视频。不可靠的网卡会丢掉许多数据包,不适合 VoIP。 |
最广泛使用的 辅助存储 设备是硬盘。它包括计算机主机箱中的硬盘驱动器以及便携式磁盘驱动器,这些磁盘驱动器可以轻松地跨计算机移动。将数据存储到辅助存储器需要一个组织电子介质的机制。因此,使用单个文件,从用户的角度来看,可以写入辅助存储器的最小数据量。文件系统是管理这些文件的自然解决方案,并且是操作系统提供的逻辑视图,以便用户可以将数据管理为文件集合。文件系统通常通过将文件分组到目录中来进行组织。此外,文件是一个通用的概念。不同类型的文件以不同的方式管理。一般来说,文件包含程序(以某种形式)或数据(一种或多种类型)。一些文件具有非常严格的格式;其他文件更灵活。
用作辅助存储器的最重要的硬件设备是磁盘驱动器。存储在这些驱动器上的文件系统必须以高效的方式访问。事实证明,将数据传输到辅助存储器以及从辅助存储器传输数据是通用计算机系统中最严重的瓶颈。
CPU 的速度和主存储器的速度远快于数据传输到磁盘等辅助存储器以及从磁盘传输数据的速度。这就是为什么必须执行磁盘 I/O 的进程必须等待数据传输完成,以便让另一个进程有机会使用 CPU 的原因。
由于辅助 I/O 是通用计算机系统中最慢的部分,因此用于访问磁盘驱动器上数据的技术对于文件系统至关重要。由于计算机在一段时间内处理多个进程,因此访问磁盘的请求会累积。操作系统用于确定要满足哪些请求的技术称为磁盘调度。
磁盘驱动器被组织为一个磁头堆栈,其中每个磁头被分成磁道,每个磁道被分成扇区。所有磁头上的对应磁道集合称为柱面。
先来先服务磁盘调度
标题为“先来先服务磁盘调度”的部分正在计划中。 |
最短寻道时间优先磁盘调度
标题为“最短寻道时间优先磁盘调度”的部分正在计划中。 |
SCAN 磁盘调度
标题为“SCAN 磁盘调度”的部分正在计划中。 |
6.1.7 概述操作系统资源管理技术:调度、策略、多任务处理、虚拟内存、分页、中断、轮询。
标题为“轮询”的部分正在计划中,因为还有更多细节。 |
6.1.7 概述操作系统资源管理技术:调度、策略、多任务处理、虚拟内存、分页、中断、轮询。
标题为“分页”的部分正在计划中,因为还有更多细节。 |
6.1.3 识别指定计算机系统中一系列资源的限制
标题为“限制”的部分正在计划中。 |
6.1.4 描述计算机系统中资源限制可能导致的潜在问题。
标题为“后果”的部分正在计划中。 |
操作系统必须管理的另一个重要资源是单个进程对 CPU 的使用。要了解操作系统如何管理进程,必须认识到进程在其计算生命周期中经历的阶段,并了解必须管理的信息以确保进程在计算机系统中正常工作。
6.1.5 解释操作系统在管理内存、外设和硬件接口方面的作用。
进程在计算机系统中被管理时会经历特定的阶段。也就是说,进程进入系统,准备执行,正在执行,正在等待资源,或者已完成。下面是表示这些进程状态的流程图。
在图中,每个方框代表进程可能处于的一种状态,箭头表示进程如何以及为什么可能从一种状态移动到另一种状态。
检查每个状态下进程正在发生的事情
- 在新建状态中,正在创建进程。例如,它可能是用户登录到分时系统时创建的登录进程,可能是用户提交程序以供执行时创建的应用程序进程,也可能是操作系统创建的系统进程以完成特定的系统任务。
- 没有障碍阻止其执行的进程处于就绪状态。处于就绪状态的进程不会等待事件发生或等待数据从辅助存储器中调入。相反,它正在等待使用 CPU 的机会。
- 处于运行状态的进程当前正在由 CPU 执行。它的指令正在取指执行周期中被处理。
- 处于等待状态的进程当前正在等待资源(CPU 除外)。例如,处于等待状态的进程可能正在等待其内存中的一个页面从辅助存储器中调入,或者等待另一个进程向其发送允许其继续的信号。
- 处于终止状态的进程已完成执行,不再处于活动状态。此时,操作系统不再需要维护有关进程的信息。
请注意,许多进程可能同时处于就绪状态或等待状态,但只有一个进程可以处于运行状态。
进程创建后,操作系统会将其加入到就绪状态。当 CPU 调度算法指示时,进程会被调度到运行状态。
在运行时,进程可能会被操作系统中断以允许另一个进程使用 CPU。在这种情况下,进程只需返回到就绪状态。或者,运行进程可能会请求一个不可用的资源或需要 I/O 来检索进程的已引用部分,在这种情况下,它将被移到等待状态。运行进程最终可能获得足够的 CPU 时间来完成其处理并正常终止;否则,它可能会生成无法恢复的错误并异常终止。
当等待的进程获得其正在等待的资源时,它将再次移到就绪状态。
进程控制块
操作系统必须为每个活动进程管理大量数据。 通常这些数据存储在一个称为进程控制块 (PCB) 的数据结构中。 通常,每个状态都由一个 PCB 列表表示,每个列表对应于该状态中的每个进程。 当进程从一种状态变为另一种状态时,其对应的 PCB 在操作系统中从一种状态列表变为另一种状态列表。 当进程首次创建(新状态)时,会创建一个新的 PCB,并持续到进程终止。
计划有一节名为“进程控制块”,其中包含更多详细信息。 |
6.1.7 概述操作系统资源管理技术:调度、策略、多任务处理、虚拟内存、分页、中断、轮询。
计划有一节名为“中断”,其中包含更多详细信息。 |
6.1.3 识别指定计算机系统中一系列资源的限制
标题为“限制”的部分正在计划中。 |
6.1.4 描述计算机系统中资源限制可能导致的潜在问题。
标题为“后果”的部分正在计划中。 |
6.1.7 概述操作系统资源管理技术:调度、策略、多任务处理、虚拟内存、分页、中断、轮询。
与内存管理和进程管理相关的概念是 CPU 调度的需要,它决定在任何给定时间哪个内存中的进程由 CPU 执行。 如何利用计算机更强大的功能和速度的问题导致了分时概念。 分时系统允许多个用户同时与一台计算机交互。 多道程序设计允许多个进程同时活动,这使得程序员能够直接与计算机系统交互,同时仍然共享其资源,而分时系统则创造了每个用户都独占访问计算机的错觉。 也就是说,每个用户不必积极争夺资源,尽管这正是幕后发生的事情。 一个用户可能实际上知道他们正在与其他用户共享机器,但不必做任何特别的事情来允许它。 操作系统在幕后管理资源的共享,包括 CPU。
CPU 调度是指确定应将处于就绪状态的哪个进程移动到运行状态的行为。 也就是说,CPU 调度算法决定哪个进程应该获得 CPU,以便它可以进行计算进度。
当进程从运行状态变为等待状态,或者当程序终止时,会做出 CPU 调度决策。 这种类型的 CPU 调度称为非抢占式调度,因为对新 CPU 进程的需求是当前执行进程活动的结果。
当进程从运行状态变为就绪状态,或者当进程从等待状态变为就绪状态时,也可能会做出 CPU 调度决策。 这些是抢占式调度的示例,因为当前运行的进程(并非由于自身错误)被操作系统抢占。
调度算法通常使用特定指标进行评估,例如进程的周转时间。 这是进程从到达就绪状态到最后一次退出运行状态之间的时间量。 通常,希望进程的周转时间平均尽可能小。
有多种方法可用于确定哪个进程首先被选中从就绪状态变为运行状态。 在这里,我们将检查三种方法
在先到先服务 (FCFS) 调度方法中,进程按照它们到达运行状态的顺序移动到 CPU。 FCFS 调度是非抢占式的。 一旦进程被授予访问 CPU 的权限,它就会保留它,除非它做出导致它等待的请求,例如,导致它等待的请求,例如,对另一个进程正在使用的设备的请求。
计划有一节名为“先到先服务”。 |
最短作业优先 {SJN} CPU 调度算法查看处于就绪状态的所有进程,并调度具有最短服务时间的进程。 与 FCFS 一样,它通常作为非抢占式算法实现。
计划有一节名为“最短作业优先”。 |
6.1.5 解释操作系统在管理内存、外设和硬件接口方面的作用。
循环调度 CPU 调度在所有就绪进程之间公平分配处理时间。 该算法建立特定的时间片(或时间量子),这是每个进程在被抢占并返回到就绪状态以允许另一个进程轮流之前接收的时间量。 最终,被抢占的进程将被授予 CPU 上的另一个时间片。 此过程将持续到进程最终获得所需的所有时间并终止为止。
请注意,循环调度算法是抢占式的。 时间片到期是将进程从 CPU 移动的任意原因。 此操作由从运行状态到就绪状态的转换来呈现。
计划有一节名为“循环调度”。 |
6.1.3 识别指定计算机系统中一系列资源的限制
标题为“限制”的部分正在计划中。 |
6.1.4 描述计算机系统中资源限制可能导致的潜在问题。
标题为“后果”的部分正在计划中。 |
6.1.7 概述操作系统资源管理技术:调度、策略、多任务处理、虚拟内存、分页、中断、轮询。
操作系统还必须考虑计算机通常连接到网络的事实。 如今,有了万维网,人们会将网络通信视为理所当然,但是,高度连接和交互的 world 需要在数据级别进行管理。 操作系统能够处理进出物理计算机的输入和输出 - 通常通过某种类型的网络卡。 网络卡和计算机之间的这种通信通常通过网络接口控制器 (NIC) 进行管理,网络接口控制器是一个小型组件,它处理 OSI 层 中的两个层;物理层和数据链路层。
6.1.3 识别指定计算机系统中一系列资源的限制
标题为“限制”的部分正在计划中。 |
6.1.4 描述计算机系统中资源限制可能导致的潜在问题。
标题为“后果”的部分正在计划中。 |
除了其他外设之外,操作系统必须处理的最基本方面是图形和图形管理。 计算机图形可以非常笼统地描述为设置计算机屏幕上的像素值。 因此,计算机图形在计算机科学的许多方面都发挥着作用,最常见的应用是现代操作系统的图形用户界面 (GUI)。 文件和文件夹表示为屏幕上的图标,图标指示文件类型,例如。 操作系统必须说明计算机图形的位置和计算,通常使用其自己的独立图形处理单元 (GPU) 完成。
6.1.3 识别指定计算机系统中一系列资源的限制
标题为“限制”的部分正在计划中。 |
6.1.4 描述计算机系统中资源限制可能导致的潜在问题。
标题为“后果”的部分正在计划中。 |
除了显而易见的事实外,还有许多其他需要管理的杂项系统概念,这些概念可能并不完全显而易见。其中之一是缓存。缓存是一个透明地存储数据的组件,以便将来对该数据的请求可以更快地得到处理。存储在缓存中的数据可能是先前计算出的值,也可能是存储在其他地方的原始值的副本。如果请求的数据包含在缓存中,则可以通过简单地读取缓存来处理此请求,这相对更快。否则,必须重新计算数据或从其原始存储位置获取数据,这相对较慢。因此,可以从缓存中处理的请求越多,整个系统性能就越快。
6.1.2 评估各种计算机系统中可用的资源。
操作系统负责与各种设备通信。通常,这种通信是通过设备驱动程序来完成的,设备驱动程序是一个小的程序,它“知道”特定设备期望接收和传递信息的方式。借助设备驱动程序,每个操作系统不再需要了解将来可能需要与之通信的每个设备。这是抽象的另一个很好的例子。合适的设备驱动程序通常会随新硬件一起提供,并且最新的驱动程序通常可以从制造商的网站上免费下载。
6.1.8 讨论为设备生成专用操作系统的优势。
移动设备,如智能手机和平板电脑,运行的操作系统是根据其需求量身定制的。例如,内存限制和较小的外设集与典型的台式机或笔记本电脑不同。苹果的 iPod Touch、iPhone 和 iPad 都运行 iOS 移动操作系统,该操作系统源于 Mac OS。Android 操作系统由 Google 开发,是 Open Handset Alliance 的开源项目。它已成为各种移动设备中最流行的操作系统。Android 和 iOS 主导着当前的移动操作系统市场,但也有一些竞争对手。
6.1.9 说明操作系统如何向用户和应用程序隐藏硬件的复杂性。
现代计算机硬件极其复杂。幸运的是,操作系统通过使用抽象和高级 API 来隐藏这种复杂性。例如,如果应用程序想要在特定位置创建一个文件,它会命令操作系统创建该文件。程序不需要关心磁盘运行的哪个文件系统 (FAT、NTFS 等),是哪个磁盘,以及它是一个网络服务器还是本地驱动器。操作系统隐藏了所有这些细节。其他示例包括虚拟化真实设备,例如驱动器盘符、虚拟内存、输入设备、Java 虚拟机。