操作系统崩溃过程:从基础内核到高级虚拟化

作者 : IT 大叔 本文共6149个字,预计阅读时间需要16分钟 发布时间: 2020-09-3

操作系统是现代数字设备的基础。这些系统确定您如何查看机器并与之交互。操作系统决定了我们如何对应用程序进行编程,可以使用什么软件以及应该如何设计硬件。对于开发人员来说,了解操作系统至关重要,以确保他们设计的程序能够发挥特定操作系统的优势。

今天,我们将分解操作系统组件和功能的基础知识,从最基本的内核开始,以更高级的虚拟化主题结束。到本文结尾,您将具有扎实的操作系统基础,并准备跳入中级的动手实践。

这是我们今天要介绍的内容:

  • 什么是操作系统?
  • 什么是内核?
  • 什么是过程?
  • 什么是服务?
  • 操作系统配置类型
  • 先进的操作系统概念
  • 检视问题
  • 接下来要学什么

什么是操作系统?

操作系统(OS)是核心软件,其中包含机器运行程序必不可少的服务集合。可以将其视为计算机内存和进程的管理器。操作系统是我们可以在不了解相同语言的情况下与计算机进行通信的方式。没有操作系统,用户将需要知道许多命令行语句来手动控制计算机的每个部分。

它们最重要的功能是标准化和协调程序以及机器的内部硬件。操作系统是计算机调度顺序任务,同时完成任务和委派资源的方式。换句话说,操作系统将提供程序运行所需的平台和资源。

在操作系统变得司空见惯之前,开发人员必须设计程序才能与各个硬件一起使用。但是,不可能知道您的客户将拥有什么硬件,因此几乎不可能分布广泛的软件。操作系统提供了一种标准媒体,开发人员可以在不处理每个用户的特定硬件的情况下进行编程。如果系统可以运行操作系统,则可以运行您的程序。

开发人员常用的操作系统

那里有许多操作系统,您甚至可能从未听说过。它们通常都提供相同的基础,但是具有不同的功能,例如对硬件,安全性,目标用户或定期更新的支持。今天,开发人员使用的三种最受欢迎​​的操作系统是:

Linux

该操作系统是可用于所有计算机的开源操作系统。Linux的开放源代码属性使其具有高度可定制性,非常适合安装和运行其他开放源代码程序。开源技术的这种结合使Linux系统的开发速度远快于Windows或macOS。

因此,对于所有开发人员,Linux都是最受欢迎的操作系统,尤其是在网络安全领域。

但是,Linux的学习曲线很陡,可能很难掌握。

操作系统崩溃过程:从基础内核到高级虚拟化插图

苹果系统:

该操作系统由Apple开发,可在Mac计算机上使用。macOS因其基于Unix的功能(如内置的bash-shell实用程序和简单的Unix文件系统)而受到开发人员的好评。但是,许多人发现macOS没有足够的灵活性,而是选择了Linux。

操作系统崩溃过程:从基础内核到高级虚拟化插图(2)

视窗:

该操作系统由Microsoft开发,可在PC机上使用。Windows以其易用性和跨版本的一致功能而闻名。Windows的简单性导致许多开发人员使用其他具有更多内置功能的操作系统(例如macOS),或者具有更多可变性的操作系统(例如Linux)。

操作系统崩溃过程:从基础内核到高级虚拟化插图(4)

什么是内核?

内核是允许程序访问硬件资源的操作系统的核心。内核是系统启动,转换输入并将请求输出到中央处理器(GPU)的方式。

每个操作系统都必须具有内核才能运行。结果,内核被存储在有限的内存空间中,因此不会被意外覆盖。开发内核的开发人员旨在在不更改功能的情况下使其尽可能小,以便向用户开放更多内存。

内核很少因版本而异。实际上,现代操作系统使用的是20年前的相同版本,仅进行了较小的更新或现代化。

  • Linux使用Linux内核
  • macOS使用XNU内核
  • Windows使用Windows NT内核

资源管理

资源管理是内核最重要的服务之一。内核将计算机资源(如内存和CPU)委派给每个正在执行的进程。通过调节进程,内核可以防止贪婪的程序使系统饿死并降低其他并发程序的速度。该服务确保所有进程都有足够的资源来运行,并且确保每个进程都利用所有可用资源。

什么是过程?

流程是执行程序中工作的基本单位。开发人员不编写流程。相反,它们编写程序,这些程序在由计算机执行时成为进程。

每个过程分5个步骤:

操作系统崩溃过程:从基础内核到高级虚拟化插图(6)

  1. 开始:首先从程序创建该过程。
  2. 就绪:该进程正在等待由操作系统调度程序分配给处理器。
  3. 运行:进程的指令由处理器执行。
  4. 等待中:如果需要其他资源(例如用户输入或文件访问),则该过程将设置为等待。
  5. 终止:代码执行后,进程将移至终止状态,最终将其从主内存中删除。

进程如何执行取决于其所使用的操作系统类型。在下面,我们将看到每个人如何唯一地处理流程。

什么是服务?

内核是我们运行程序的平台,而服务则为程序提供工具以完成其工作。服务是一组内置函数,程序可以使用这些函数来实现常见行为,例如保存到文件或共享数据。没有服务,开发人员将不得不在需要它们的每个程序中为这些行为编写代码。在OS系统上工作的计算机科学家很快意识到,许多程序将从这些行为中受益,并将它们包含在OS软件包中。它们的包含使针对OS的编程更加方便,因为开发人员可以避免每次从头开始编写最需要的行为。

例如,云存储应用程序不需要包含有关如何将数据写入内存的说明。而是,应用程序仅调用文件系统操作服务中包含的保存行为。

某些服务(例如错误检测)始终在运行,而与程序调用无关。

共同服务

操作系统中包含的服务因操作系统而异,但其中一些已成为标准:

  • 程序执行:此服务允许计算机加载,执行和产生程序输出。
  • 输入/输出(I / O)操作:此服务提供了与打印机和键盘等标准设备​​进行通信的能力。设备可以使用它来发出内核请求,反之亦然。处理特定设备的软件称为驱动程序,该驱动程序指示I / O操作服务如何与新设备接口。
  • 文件系统操作:此服务包括导航内存的标准化方法,因此我们可以在目录中创建和放置文件。程序然后可以浏览这些目录,更改属性或访问/创建文件。它还为用户提供了通过create/delete和等请求与文件进行交互的界面move
  • 通讯:通讯服务使各个流程之间的链接可以共享数据或结果。它还包括用于多台机器协同工作的分布式系统的框架。
  • 错误检测:错误检测使计算机可以通过监视进度和预期结果来扫描所有进程中的错误。该服务还可以纠正小错误,而不会受到用户的干扰。
  • 资源分配:此内核服务允许计算机在添加或完成进程时动态地授予和释放资源。它还允许计算机使用CPU调度程序创建过程序列。
  • 保护:此服务通过控制系统访问,限制对无关资源的I / O访问和密码验证来提供基本的网络安全保护。

操作系统配置类型

操作系统用于每个数字系统,并且具有不同的类型。Linux,macOS和Windows只是一种类型的操作系统,称为网络操作系统。尽管这些功能非常适合计算机使用,但其他系统(例如电子邮件服务器和空中交通管制系统)却有不同的需求。发明了其他类型的操作系统来满足这些需求。每种类型都有独特的优势和处理算法,可以针对某些任务优化系统。

公司需要开发人员针对所采用的OS类型量身定制程序。了解每种操作系统的工作方式以及每种对开发人员构成的独特挑战对您而言至关重要。

下面,我们将探讨6种类型的OS,它们用于执行哪些任务以及如何为每种操作系统优化程序。

网络操作系统

网络操作系统在服务器上运行,并使服务器能够管理网络功能,例如数据,用户,组,安全性和软件程序。这些系统旨在在网络(通常是局域网(LAN),专用网络或其他网络,如Internet)中的多台计算机之间授予文件共享和打印机访问权限。

这是家用计算机以及路由器和交换机等网络管理设备上最常用的OS类型。Windows,macOS和Linux都是网络操作系统,因为它们必须经常使用Internet。

优点:

  • 服务器稳定性和安全性由用户处理
  • 易于升级的硬件和软件
  • 服务器访问可以在许多位置或设备中实现

缺点:

  • 昂贵的购买和设置本地服务器
  • 依靠中央服务器运行
  • 需要定期更新和维护

批处理操作系统

操作系统崩溃过程:从基础内核到高级虚拟化插图(8)

批处理操作系统旨在通过“分批”待稍后运行的任务组来加快处理速度。

用户不能在批处理操作系统中直接与计算机进行交互。相反,任务是在单独的脱机设备上起草的,并移交给计算机控制器。一旦他们在特定时间(如工作日结束)收到批处理,或者当他们获得足够的任务以保证执行时,控制器就会运行批处理。由于可以同时完成类似的过程,因此可以加快处理速度。

批处理操作系统通常用于金融领域。工资和银行对帐单处理系统是实现批处理操作系统的两个最常见的系统。这些系统具有较旧的风格,近年来,许多公司开始将其转换为分时系统。

在为批处理系统设计程序时,请尽量减少处理时间,因为任何长时间的处理都会减慢工作流程。但是,由于设备一次仅运行一个进程,因此程序可能会占用大量资源。

优点:

  • 始终知道流程何时完成
  • 可由多名工人共享
  • 可以处理一致的大型工作负载

缺点:

  • 效率取决于操作员的效率
  • 调试困难
  • 设置昂贵
  • 失败的作业导致积压

分时操作系统

操作系统崩溃过程:从基础内核到高级虚拟化插图(10)

分时操作系统分配一个时间段(称为“量子”)来处理每个用户的任务,并在每个进程之间快速切换,直到全部完成为止。虽然CPU一次只能处理一个进程,但快速切换可模拟并发处理。

分时系统优先考虑响应时间,因为流程以相同的速度完成,而不管它们何时发布。这避免了堆叠响应时间,在该响应时间中,一个序列中的第一个过程迅速完成,而最后一个过程则保持不变,直到所有其他过程都完成为止。

分时系统没有得到广泛使用,但是用于转换旧的批处理OS设备以提高响应速度。分时还被Multics(一种定义了现代多任务系统的操作系统)和Unix(macOS的基础)使用。这种系统风格是多线程技术的基础。

优点:

  • 确保始终如一的快速响应时间
  • 减少CPU停机时间

缺点:

  • 容易出错
  • 安全性最低,恶意软件流程将像常规流程一样完成
  • 并发进程无法轻松共享数据

分布式操作系统

操作系统崩溃过程:从基础内核到高级虚拟化插图(12)

分布式操作系统使用多个连接的计算机(称为节点)来处理用户任务。每个过程都分发到可用设备以单独完成,并且所有节点完成后,所有部分都将合并。分布式系统的主要优点是它允许单个用户同时使用许多设备的处理能力,从而加快了处理速度。

在为分布式操作系统设计程序时,请将程序拆分为较小的模块化任务,以确保系统可以有效地使用其分而治之的结构。

分布式操作系统的常见示例可以在以响应为中心的大规模系统中找到,例如电子邮件服务器,手机网络和电子银行系统。

优点:

  • 耐用,一个节点的故障不会中断其他节点
  • 跨节点轻松共享数据
  • 由于多个节点的资源而实现快速计算
  • 减少每个节点上的负载
  • 可扩展的新节点可以无缝添加

缺点:

  • 仅在连接到节点网络时有效
  • 设置昂贵

实时操作系统

操作系统崩溃过程:从基础内核到高级虚拟化插图(14)

该操作系统为每个程序提供了给定的时间,任何超过该处理时间的程序都将被拒绝。这维护了严格的流程计划,以确保某些重要任务始终可以立即执行。

实时系统与分时系统的不同之处在于,一次可以完成多少个过程。实时操作系统在一定时期内一次只能完成一个过程。如果处理时间超过其专用时间,则该过程将中断。另一方面,分时系统在多个过程之间切换焦点,并允许花费多个时间来完成。

当需要快速响应和严格的计划时,这些系统将被广泛使用,例如用于科学实验的设备,空中交通管制系统或国防系统。

在为实时系统编写程序时,必须知道系统中的每个周期有多长时间,并确保程序足够小以在该周期内完成。

优点:

  • 每个流程的最佳资源使用
  • 响应时间非常快,通常只有3微秒
  • 程序小巧,可将它们嵌入其他系统中
  • 错误少

缺点:

  • 一次只运行一个进程
  • 实现最大效率是资源密集型
  • 难以编写程序,每个程序在整个程序中都必须具有中断条件,如果周期结束,该条件会终止该过程

先进的操作系统概念

工艺调度

资源分配服务中的CPU调度程序组件可以使用6种算法之一来决定首先完成哪个进程。这些算法中的每一个都是抢占式或非抢占式的。

抢占式调度程序使用优先级系统来影响处理。ready即使当前正在运行另一个进程,高优先级进程也会在到达阶段后立即进行调度。如果发生这种情况,则高优先级进程将推翻低优先级进程。

以下是3种常见的抢先式调度算法:

  • 最短剩余时间(SRT):处理器优先处理最接近完成的进程。如果添加的新进程的完成时间比当前进程的完成时间短,则首先执行新进程。这通常用于批处理OS系统。
  • 循环调度:处理器轮流处理每个进程,从而使每个进程都可以处理一定时间。一旦量子结束,该过程将中断,然后被下一个过程抢占。此算法是分时操作系统的基础。
  • 多级队列调度:进程分为多个单独的队列,每个队列具有不同的调度算法。处理器在每个队列之间交替,并根据其本地队列的算法分配进程。当一个系统处理截然不同的过程(每个过程都需要一种独特的算法)时,通常会使用此方法。

非抢占式调度程序不允许中断。相反,进程一旦启动就不能被抢占。他们可能仍会使用优先级系统,但是高优先级进程仍必须等到当前进程完成后才能开始。

  • 先进先出(FIFO):处理器按进来的顺序完成进程。这是最简单的算法,但会导致最慢的平均处理时间。
  • 下一个最短作业(SJN):处理器始终将下一个最短作业排队。该算法产生的处理时间非常短,但是除非知道CPU的持续时间和每个进程的处理时间,否则无法实现。SJN是最短剩余时间的非抢先等效项,还用于批处理OS系统中。
  • 基于优先级的调度:基于预设的基于资源的因素(例如内存使用或处理时间)为每个进程分配优先级。然后,进程按优先级由CPU完成。如果多个进程具有相同的优先级,则CPU使用FIFO算法执行它们。这是使用最广泛的调度算法之一。

线程和多线程

线程是已编程指令的最小序列,并且是任何进程的主要组成部分。每个线程都完成一个特定的命令。当所有线程完成时,该过程已完全执行。

一个进程中可以存在多个线程,并且每个线程在该进程中的所有线程之间共享数据和内存空间。线程可以一次完成一个线程,也可以使用上下文切换或多个CPU内核同时完成。

进程与线程

工艺流程 线程数
流程是独立的 线程是进程的子集
进程比线程携带更多的独特信息 一个进程中的多个线程共享资源
进程具有单独的内存地址 线程共享它们的地址空间
处理上下文切换相对较慢 线程上下文快速切换

虚拟化

操作系统崩溃过程:从基础内核到高级虚拟化插图(16)

虚拟化是一种使虚拟对象充当硬件的技术,例如分时操作系统的交换能力。分时操作系统可以在多个进程之间快速切换,从而同时完成多个进程。通常,一台计算机将需要两个单独的CPU来同时完成进程。结果,分时操作系统通过使用快速的过程切换来仿真附加CPU来实现虚拟化。

虚拟化可以使用每个容器的主机资源,数据和设备的单独分配部分来模拟整个OS实例。这些容器与主机以及所有其他托管虚拟机(VM)隔离。这种更大的虚拟化规模称为操作系统虚拟化,或更常见的称为容器化。

程序在这些容器上运行,就好像它们是真正的操作系统一样。他们访问分配给容器的资源,并使用容器化的调度程序执行进程。因此,虚拟化可以在单独的容器中运行多个并发程序,而所有这些程序都托管在同一台物理计算机上。

这为开发人员提供了对OS容器环境的高度控制。通过控制容器环境,开发人员可以在不同种类的操作系统上测试程序,或者在同一台机器上模拟硬件环境。另外,在多个VM上使用并发程序时,程序效率更高。

优点:

  • 访问同一物理计算机上的多个操作系统
  • 隔离故障,即使一个或多个托管VM崩溃,主机系统也将继续运行
  • 虚拟机是安全的,恶意软件被隔离到单个VM,并且不会损坏其他OS容器
  • 与同等数量的物理机相比,维护成本更低

缺点:

  • 虚拟机效率不如同等的物理机,因为虚拟机必须通过主机操作系统间接请求硬件使用
  • 资源在不同的VM之间分配,这意味着大多数计算机一次只能高效运行少数几个

检视问题

现在,我们已经涵盖了与OS相关的一些基础知识和高级概念,让我们进行测验以巩固我们学到的术语。

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 操作系统崩溃过程:从基础内核到高级虚拟化

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论