跳转到内容

单元 1.2.1 系统软件

来自 Wikibooks,开放世界中的开放书籍


操作系统

[编辑 | 编辑源代码]

为什么需要操作系统?

[编辑 | 编辑源代码]

在计算机的早期,如果一个程序需要任何输入或输出,它就需要包含处理与输入和输出设备通信的特定代码。开发了简短的子程序来执行这些基本任务。最终这些子程序被组合在一起,形成了一个输入输出控制系统(IOCS)。随着 IOCS 变得越来越复杂,它变成了操作系统。随着越来越多的程序开始用高级代码编写,需要翻译器,然后翻译器也被合并到操作系统中。

操作系统的功能

[编辑 | 编辑源代码]
  • 安全性 - 提供加密服务和防病毒/恶意软件工具
  • 实用程序 - 提供具有单一功能的小型应用程序,通常这些应用程序用于系统维护和保养。
  • 网络管理 - 提供网络通信的设施和软件
  • 设备驱动程序 - 用于与特定硬件设备通信的内置软件。
  • 错误报告 - 存储操作系统/软件中发生的错误的详细信息,以便开发人员能够找到错误(bug)的来源。
  • 内存管理 - 为各种程序分配内存,以及从内存存储和检索数据。
  • 资源管理 - 管理有限资源,包括 CPU 时间、内存和磁盘空间、电力、外部设备和 I/O 设备。
  • I/O 管理 - 管理连接到系统的输入和输出设备。
  • 设备管理 - 管理所有连接的设备,如存储设备和显卡(此部分包括 I/O 管理)
  • 中断管理 - 管理中断.
  • 用户界面 - 管理用户界面 (UI),例如面向最终用户的 GUI(图形用户界面)和面向技术人员诊断故障的 CLI(命令行界面)。
  • 文件管理(分配表) - 各种文件存储位置的映射。它还包含各种元数据,如文件名、访问权限和文件大小。操作系统在保存、删除和访问文件时使用它。
  • 引导文件 - 用于在操作系统加载时使用,即在计算机完成 POST(开机自检)后开机时,用于提供个人设置。
  • 内核 - 管理操作系统的核心操作,包括调度、资源管理和内存管理。它位于用户界面的下方,例如 Linux 是内核,而 UI 是独立的,因此 UI 可以更改而不会影响操作系统。


从用户的角度描述操作系统的三个典型功能。[3]

答案


从用户的角度来看,操作系统的三个功能 - 任何三个:3x1

• 提供对硬件的访问

• 提供不同的界面,如 GUI/命令行

• 允许自定义界面,例如更改桌面颜色/布局

• 允许复制/删除/移动/排序/搜索文件或文件夹

• 使用密码或访问权限控制安全

• 管理软件/程序的运行

• 提供实用程序,如磁盘碎片整理

• 启动/关闭系统

• 允许创建快捷方式

• 允许用户运行多个程序/打开多个窗口

接受任何其他有效要点


操作系统类型

[编辑 | 编辑源代码]

所有操作系统都提供以下功能

  • 它们控制系统的硬件
    • 这包括内存、资源和设备管理
  • 它们提供用于人类访问和通信的 UI
  • 它们提供应用程序软件执行和管理
    • 即系统安装、内存访问、通过编译器/解释器/汇编器进行软件翻译
  • 它们提供用于执行计算机“家务”和常见任务的实用程序
    • 文件处理
    • 格式化
    • 碎片整理
    • 病毒防护
  • 它们为用户提供安全和隐私
    • 备份程序
    • 用户登录和密码

有几种不同的操作系统类型

多任务操作系统

[编辑 | 编辑源代码]

多任务操作系统的用户会产生一种印象,即系统可以同时执行多个任务。这可以通过给每个任务在 CPU 上分配一个非常短的时间段,并在不同的作业之间轮换来实现,或者通过使用多个内核来并发地运行任务来实现。

多访问/多用户操作系统

[编辑 | 编辑源代码]

这种操作系统允许多个用户同时访问同一个系统。这是通过给每个终端分配一个时间片并在每个终端对 CPU 的请求之间轮换来实现的。CPU 可以通过将不同的用户数据和程序存储在其主内存的不同区域来区分它们。标志可以防止没有任务的终端的时间片浪费 CPU 的时间,而优先级可以增加终端获得的时间片的数量或大小。

分布式操作系统

[编辑 | 编辑源代码]

这种操作系统使用许多不同的位置来存储文件和处理数据。它是运行在独立网络计算“节点”集合上的软件。它们处理由多个独立 CPU 提供服务的作业。

实时操作系统

[编辑 | 编辑源代码]

使用实时操作系统,在输入时处理的数据或采取的操作足够快,以影响下一个输出。它被定义为在线,因为用户可以直接与处理器通信。它通常用在需要立即响应的情况下,例如核电站。

实时操作系统保证在给定的时间段内(通常是短时间段内)提供输出。

事务处理

[编辑 | 编辑源代码]

这类似于实时操作系统,但没有那么快。它只允许预定义的、结构化的交易。每个事务通常都很短,每个事务的处理活动通常是预先编程的。它主要用于数据库。

过程控制

[编辑 | 编辑源代码]

这种操作系统在工业领域被广泛应用,因为它可以实现大规模生产和连续的流程系统。它可以提供自动化,从而减少了对人员的需求。它可能利用反馈或一个连续循环。控制可能是连续的(例如巡航控制系统)或一系列离散事件(例如洒水系统)。该系统中的传感器不直接控制输出,它们都由 CPU 控制和协调。

嵌入式

[编辑 | 编辑源代码]

嵌入式操作系统通常针对单一任务而开发。它通常是特定于设备的,并且在低功耗 CPU 和 RAM 上运行。它们可以在电视、洗衣机等设备中找到。它们针对其任务进行了优化,因此可以运行得更快,因为它们比通用操作系统更简单。

医院的重症监护室是为需要全天候监测和支持的患者准备的。计算机系统可以用来监测患者的生命体征(体温、心率、血压和呼吸)。然后,它们可以向医护人员发出任何重大变化的警报。

这些系统通常运行在嵌入式、实时操作系统上。

(a) (i) 说明“实时”一词的含义。

(ii) 解释为什么实时操作系统适合于此目的。

(b) (i) 许多家用电器包含嵌入式微处理器。

解释为什么大多数这些微处理器不需要操作系统。

答案


(a) (i) 该系统在保证的时间范围内做出响应 (1)。

一分。

(ii) 如果患者发生意外,必须立即做出响应 (1)。其他类型的系统可能会有延迟的响应 (1)。这会导致患者无法及时得到治疗 (1)。

(b) 最多两分,有效解释,展示知识和理解在给定上下文中的应用。

以下任何两点:

例如,洗衣机或微波炉

ROM 存储整个指令集

微处理器只有一组任务要执行

系统期望简单的输入(例如洗衣机前面板上的键盘)

微处理器具有简单且不变的硬件功能来控制 [2]


内存管理

[编辑 | 编辑源代码]
内存管理的必要性
[编辑 | 编辑源代码]
  • 内存分配允许不同的进程同时运行。
  • 它允许在需要时重新分配和共享内存。
  • 它保护不同的数据和进程彼此隔离,从而提供安全性

通过物理分页过程,内存被分成大小相同的段,称为页面。然后,程序将根据其大小分配适当数量的页面。页面的大小是固定的,因此某些程序可能拥有它们不需要的额外内存。

分段是一个逻辑过程,其中内存被分成大小可变的块,这些块反映了程序的逻辑 - 这些划分被称为段。这在很大程度上依赖于操作系统以及链接器和加载器。这样,程序就不太可能分配到多余的内存空间。需要注意的是,逻辑操作会保持在一起,例如循环中的语句。

虚拟内存

[编辑 | 编辑源代码]

当 RAM 不足以存储所有正在运行的程序时,硬盘驱动器上的一个区域将被指定为“虚拟内存”。那些长时间处于非活动状态的程序将被存储在这里,然后在需要时加载回 RAM。这使得计算机可以使用比平时更多或更大的程序进行多任务处理。


解释以下内存管理技术如何使用

(i) Paging
(ii) Segmentation

[6]

答案


分页

- 内存被分成大小相等的单元,称为页面帧

- 程序/数据文件被分成大小相等的单元,称为页面

- 一个或多个页面可以随时加载到内存中

- 页面可以是不连续的

- 页面根据需要进行交换进出

- 不在主内存中的页面存储在虚拟内存/备份存储中

- 页面表/页面/进程索引

- 绝对地址通过将页面地址加到指令中的相对地址来计算

- 分页对程序员是透明的


分段

- 内存被分成长度可变的块

- 程序可以包含多个段

- 段通常与作业/逻辑块中的自然划分相匹配

- 存储段索引,必须...

- 存储段的基地址和长度

- 程序员将代码模块组织成段

(每个 - 1 分,每个点最多 4 分,总计最多 6 分) [6]


BIOS 代表基本输入输出系统。它是一个存储在主板上的 ROM 芯片上的小型程序。它在操作系统启动之前运行,用于确保计算机系统的健康状况。计算机开机后,电源会向 CPU 发送复位信号,指示 CPU 从 ROM 芯片开始执行代码。然后它运行一系列称为 POST(开机自检)的检查,包括

  • 检查系统内存是否正常。
  • 检查系统时钟/计时器是否正常运行。
  • 检查处理器是否正常。
  • 确保键盘存在。
  • 确保屏幕显示内存正常工作。
  • 检查 BIOS 是否没有损坏。

完成这些检查后,系统将使用引导加载程序将操作系统的内核加载到内存中,从而启动操作系统。如果这些检查失败,BIOS 将使用蜂鸣声代码通知用户错误。蜂鸣声代码因制造商而异,因此通常在他们的说明手册中有所记录。


当计算机启动时,它会执行启动序列。解释 BIOS 在启动计算机中的作用 [6]

答案


BIOS 提供启动过程的顺序 (1) 和初始化任务 (1)。答案应该列出进行的检查,例如内存、键盘和硬盘启动。每个检查最多 4 分,共计 4 分。


设备驱动程序

[编辑 | 编辑源代码]

设备驱动程序是与计算机相关联的硬件设备附带的小型程序。它们旨在告知操作系统如何与外设通信。

虚拟机

[编辑 | 编辑源代码]

虚拟机是一段软件,允许计算机模拟另一台机器。虚拟机的优势在于它可以备份和复制。你甚至可以在一台物理机器上运行多个虚拟机。

虚拟机可以用来模拟另一种操作系统。这可以让开发人员在多个平台上测试程序,或者可以用来运行主机操作系统不支持的软件。Apple OSX、Ubuntu 和 Windows 都可以被虚拟化。整个网络也可以由虚拟机组成,这通常被企业和学校使用,因为它提供了一种廉价的解决方案,可以让许多人使用一台机器工作。

中间代码介于目标代码和机器代码之间。它比源代码运行速度快,而且具有高度可移植性,因为它可以通过使用虚拟机来读取它,可以在许多不同的平台上运行。当计算机启动时,它会执行启动序列。解释 BIOS 在启动计算机中的作用 [6]


Spitfire Protection 是一家专门为教育机构和医院提供消防保护系统的公司。在这些类型的场所,在火警激活的情况下,人员疏散建筑物尤为重要。

该公司安装的计算机系统使用循环调度来告知消防队长和消防巡逻员学校或医院的特定区域是否已清空。

公司使用虚拟机进行开发工作。描述使用虚拟机对软件开发的影响。[9]

答案


接受任何关于在虚拟实例中使用不同操作系统的合理答案。答案应包括执行中间代码的可能性。对于每个有效答案,允许 I 标记。


中断

[edit | edit source]

在任何时间点,进程都处于以下状态之一

  • 就绪 - 任务正在等待运行
  • 运行 - CPU 正在执行任务
  • 阻塞 - 任务正在等待正在使用的设备/此时无法执行

中断允许就绪的应用程序请求 CPU 时间。

中断是由 I/O 设备或系统软件例程等来源发出的信号,它会导致当前例程的执行中断。中断有各种不同的类型

  • I/O 中断 - 由 I/O 设备生成,以信号通知工作已完成或发生错误。
  • 定时器中断 - 由内部时钟生成,以信号通知处理器应处理一个时间关键的活动。
  • 硬件错误 - 例如电源故障,计算机必须尝试尽可能安全地关闭。
  • 程序中断 - 由程序中的错误生成,例如违反内存使用情况。

在每个 FDE 周期的结束时,通过检查中断寄存器来检测中断。系统将比较当前正在运行的任务的优先级和中断的优先级 - 如果当前任务具有更高的优先级,则当前任务将继续运行。但是,如果中断具有更高的优先级,则中断服务例程 (ISR) 开始运行。它将 CPU 寄存器的内容复制到堆栈,然后运行中断,直到它完成。接下来,重置中断队列中的中断标志,系统在从堆栈恢复寄存器的内容之前检查是否有任何进一步的优先级中断。在存储过程中,中断存储在队列中,它们在队列中的位置决定了它们对系统、用户和当前作业的重要性。优先级到位,允许系统在中断和当前任务之间做出决定。它允许系统在同时发生两个中断的情况下,在中断之间进行选择。它确保首先执行最紧急的任务,并有效利用处理器。值得注意的是,如果在较低优先级中断完成执行之前触发了较高优先级中断,则一个中断可能会中断另一个中断。


操作系统使用中断来管理任务。

(i) 任务可以处于三种状态之一:就绪、运行或阻塞。简要描述每种状态。[3]


(ii) 什么是计算机中断?[1]


(iii) 举两个计算机中断的例子。[2]


(iv) 操作系统正在处理中断,此时生成了另一个具有更高优先级的中断。详细解释第二个更高优先级中断后的事件序列 [3]

[6]

答案


(i) 就绪 - 任务正在等待运行 1

运行 - CPU 正在执行任务 1

阻塞 - 任务正在等待正在使用的设备/此时无法执行 1


(ii) 中断 - 任何一种:1x1

• 中断是由设备或软件生成的信号,它可能会导致当前例程的执行中断

• 中断是由设备或软件生成的信号,请求注意


注意 - 不要接受中断是在发生故障时生成的(这是一个示例)


(iii) 可以生成的中断 - 任何两个:2x1

• 硬件或软件故障

• 输入/输出设备请求注意,例如打印机缺纸/请求更多数据/按键/鼠标点击

• 用户中断,例如<ctrl> <break>

• 操作系统生成的中断,例如时间片结束

• 运行时错误,例如除以零


注意 - 答案可以是上面任何一种的具体示例


(iv) 生成中断 - 答案必须显示事件序列

• O/S 停止/当前中断例程 1

• O/S 运行新的更高优先级中断例程 1

• OS 返回到原始中断例程(或另一个中断例程)并继续 1


调度

[edit | edit source]

调度算法决定如何分配处理时间。

调度级别

[edit | edit source]

调度有 3 个不同的级别

  1. 低级调度 - 操作系统必须有一种方法来决定何时给程序使用处理器。调度算法将作业放入和移出就绪状态,并决定以什么顺序放置它们以运行。
  2. 中级调度 - 在内存和备份存储器之间交换作业。
  3. 高级调度 - 这是将新程序加载到内存中的方法。

调度还有两种不同的类型

  1. 非抢占式 - 系统将作业置于运行状态,并将其保留在那里,直到作业不再需要运行,但必须进入另一种状态,例如,它进入阻塞状态,因为需要来自用户的输入。
  2. 抢占式 - 系统有权决定当前正在运行的作业应该停止以腾出空间供其他作业运行。

调度算法

[edit | edit source]

先到先服务 (FCFS) - 第一个进入运行队列的作业是第一个进入运行状态的作业。此算法有利于更长的作业。

最短作业优先 (SJF) - 按所需的运行时间升序对就绪队列中的作业进行排序。

循环轮询 (RR) - 每个作业被分配最大处理器时间(一个时间片)。此后,它将返回到队列。作业完成后,它将离开队列。

最短剩余时间 (SRT) - 就绪队列按预计剩余时间进行排序。这有利于较短的作业,因为较长的作业可能永远不会开始。

多级反馈队列 - 使用多个不同的队列,每个队列都有不同的优先级。根据作业的行为,算法可以在队列之间移动作业。

调度的目的是确保所有作业都被处理,并在必要时更改优先级。它确保尽可能多的作业在最短的时间内被处理,同时最大化用户数量和系统响应时间。它的主要目标是有效地利用处理器。



操作系统使用调度。

(i) 解释调度的目的。[4]

(ii) 一些多用户操作系统使用循环轮询调度。描述循环轮询调度。[4]

iii) 描述可能使用的其他调度方法。[2]

答案


(a) (i) 确保所有作业都得到处理/在必要时更改优先级

处理尽可能多的作业(在尽可能短的时间内)

最大化交互式用户的数量…

…接收快速的响应时间

有效地利用资源/处理器时间


接受“对所有用户公平”

(ii) 每个用户分配一个时间片

时间片是非常短的时间/秒的几分之一

在时间片结束时,用户/作业移动到队列的末尾

对所有用户依次重复此操作

顺序可能取决于用户的优先级

用户不知道抢占式调度的任何延迟


接受基于作业而不是用户的答案

(iii) 先到先服务

作业按到达顺序或优先级系统(最高优先级优先)或作业长度(最短作业优先)进行处理

2 for FCFS,如果描述了 FIFO,则接受 FIFO,接受其他示例

华夏公益教科书