首页 > 自考资讯 > 高考百科

操作系统运行过程详细解读

小条 2024-10-02

首先我们知道,计算机本身就是一个硬件的集合,而这个硬件集合的核心就是CPU和所谓的内存设备。计算机为了获取数据或者输入/输出数据,需要两种类型的输入设备和输出设备,但计算机系统的核心是运算单元和控制单元,只是一个计算设备。 CPU和存储设备。

虽然计算机一次只能运行一个程序,但计算机的计算能力非常强大,为了充分利用计算机,您不需要运行一个程序那么长时间。一台计算机要同时运行多个程序,执行后需要一个协调器。这个协调器称为操作系统。这里称其为操作系统并不合适,因为我们理解的操作系统可能还包括许多其他外围程序。因此,这里称之为内核更为合适。稍后我们将其称为内核。这是操作系统的核心。内核本身负责管理硬件资源,并将其虚拟化成其他形式来服务于上层需要运行的应用程序。

为什么我需要这样做?如果程序直接在硬件上运行,并且程序本身也直接在硬件上运行,那么这些程序可能会相互干扰。需要集成的资源管理器,因为其他程序可能会终止,并且希望能够使用硬件的应用程序必须通过内核来执行此操作。

内核不允许程序直接访问硬件。它通过内核提供的系统调用来一一实现硬件提供的执行功能。函数是非常低级的实现。

1a53085b52154137a79f53a5899df076~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728488982&x-signature=BhAR1mZYrjo6csyoIIOpjashEdU%3D 计算机层次结构

当程序员基于系统调用来编写程序时,它变得非常乏味和烦人。此外,许多程序之间的功能是相同的。给你一个简单的例子,假设你需要打印Word,而系统调用本身是非常低级的,所以如果这些函数没有公开,你可能还需要打印Excel。这意味着Word也必须开发自己的打印模块。 Excel 还需要打印模块。这种重复必然需要额外的资源配置空间。这么说是没有道理的。

除了提供内核之外,操作系统通常还需要发出其自己的内核提供的一些系统调用。这个输出是通过一个称为此接口库的高级调用接口来完成的(任何研究过软件开发的人都应该知道)。提供Java编程中各种功能的jar包)。库本身就是一个应用程序,但是这个应用程序没有程序执行入口,只有被另一个程序调用时才运行。

调用库所在的执行环境。这意味着调用不仅可以调用系统内核提供的函数,还可以调用库提供的函数。这里可能要问的问题是:程序员是否可以直接在内核上编程而不使用包含的库?这显然也是简称lib的主要原因。

对于操作系统,该库本身称为应用程序编程接口API。应用程序编程接口也是程序。对于Windows,它与Linux 和其他UNIX 相同。这意味着当程序员为不同系统开发库时,实现的功能和内部实现细节可能会有所不同。这意味着如果有人使用Windows 库进行编程,该库可能无法在Linux 上运行。当然,各个库的内部实现细节是不同的,但是如果调用接口相同的话,这个程序能运行吗?答案是没问题的。这是我们的图书馆。

图书馆上层有各种应用程序。该应用程序可以直接通过系统调用(内核)运行,或者使用库对其进行编程可能更容易。内核调用的执行效率可以更高,至少因为它们不是通过库来完成的,并且获得的操作权限也可以更大,因此一些高级黑客决定直接运行系统调用或进行编程。直接利用硬件功能进行编程。无需赘述,无论您有多少应用程序,它们在操作系统启动时都可能不会运行。这意味着操作系统一启动,这些程序就已经具备了工作条件。或者你已经有一个运行环境了。但它无法运行。通常有多种方法来启动一个程序。

例如,该程序会在操作系统启动时自动启动。安装Windows后,您将看到一个干净的系统,当您单击“进程管理器”时,您将看到大量进程正在运行。这些进程在系统启动时启动。这些过程称为服务。为什么叫呼叫服务?操作系统是自行运行的,因此为了提供完整的功能或提供完整的操作系统,系统必须以提供完整的基本功能的方式运行。在这种情况下,它被称为后台服务。

当然,有些是根据需要激活的。例如,如果要编辑Word文档,则需要启动窗口系统。它不需要自动启动。因此,虽然它们可能需要手动启动,但这种类型的程序通常称为交互式程序。因为它本身就是一个编辑器,需要用户运行它。交互式程序需要与用户进行交互,因为有些内容是不断被编辑的。

对于用户来说,使用计算机无非就是一个输入输出设备。输入设备是键盘和鼠标之类的东西,输出设备是显示器之类的东西。现在我们来思考一下这个问题。当你在键盘上打字之后,输入的信息首先到达CPU,而CPU并不知道这些信息意味着什么。如果您按CTRL+C ,它是复制并粘贴的,还是您按的任意键?有些编译器说您需要做的就是将键盘上的键解析为相应的应用程序可以理解的内容。内核可以和硬件进行交互,所以CPU拿到这个信息后,首先告诉内核去处理这个信息,而不是直接告诉Word去传递这个信息。因此,此时内核必须能够运行。它位于CPU 上并继续处理此类信号。

当然,内核知道哪个进程启动了这个程序。这是因为对整个系统资源的监控,包括对上层操作的应用程序的监控,都是根据哪个进程是当前焦点进程并负责接收来完成的。这样的快捷键或这样的组合键从内核转移到应用程序。这就是应用程序运行的过程。

其实操作系统本身就是一个程序,需要指令和数据来运行。指令和数据被放置在上面提到的存储器中。换句话说,内核和其他应用程序都驻留在内存中。如果恶意应用程序可以直接访问内核,可以直接与内核交互,并且可以直接修改内核内的某些数据。如果出现这种情况,系统的稳定性就无法得到保证,所以需要一种机制来将应用程序和内核分开。

Intel 等处理器通常提供所谓的保护机制或保护模式。一般来说,我们的记忆分为四个层次,用四个同心环来表示。最内层称为0 级或0 环。 Ring0指的是CPU执行级别。 ring0 是最高级别,ring1 是第二级别,ring2 是第二级别。以Linux+x86为例,操作系统(内核)代码运行在最高执行级别。 Ring0和特权指令可用于控制中断、修改页表、访问设备等。 应用程序代码在最低执行级别(环3)上运行,并且无法执行受控操作。例如,如果要访问磁盘或写入文件,则需要进行系统调用(函数)。当执行系统调用时,CPU的工作级别从环3切换到环0,并跳转到相应的级别。系统调用执行内核代码位置,使内核完成设备访问,完成后从ring 0返回到ring 3。这个过程也称为用户模式和内核模式之间的切换。如前所述,CPU 和内存紧密集成,因此CPU 的0 级被映射到受保护空间内的内存的特定部分。

c79713bc2c73468f8b1ce4aef80c12c5~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728488982&x-signature=QG7JiGKgF8yR0ejwVXmzjk24ezI%3D 这只是为了让大家知道,程序运行后,在内存中被分割成两段(实际上是三段)。最下面的一段称为BIOS映射程序。计算机开机的瞬间,BIOS程序经过开机自检后自动映射到该内存的开头(BIOS开机自检过程将在后面介绍)(见章节)。可执行并已完成开机自检。自检完成后,下一步就是加载操作系统。这实际上是加载操作的内核。因此,内存中存放BIOS程序之后的部分就是运行内核的空间。这就是所谓的内核,我们称之为内核空间。我想了解这一点。以下空间由多个应用程序共享,因此您可能在此部分中运行应用程序1、应用程序2 等。

计算机内存的这种划分很笼统,但这样解释是为了让任何人都更容易理解。

事实上,这样划分内存很容易导致内存碎片。这里我们提出一个概念,叫做碎片化。想象一下,如果你的程序刚启动时只需要2M 内存。 2M过去了,之后程序2被加载到内存中。第一个程序又需要2M,因为它需要加载其他数据来执行其功能。现在我们该怎么办呢?如果内存分配是按需分配的,如果此时程序2退出,那么这两个区域的内存将不连续。片段会变成碎片吗?

ccb594883dc344c689747eb13ca9bf57~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728488982&x-signature=0HjahluZQX7cP9NLimPK0FWuKWs%3D 所以你必须明白,内存管理显然不是这么简单的机制。实际上,这意味着操作系统需要管理的任务和需要执行的功能也非常复杂。这非常非常复杂。

在上一章中,我们提到有两种启动应用程序的方法。一种方式是在后台自动启动,另一种方式是按需启动。但如果要按需启动,如何告诉你的计算机启动特定的程序呢?操作系统内核如何接收用户命令呢?这种特殊的应用程序称为shell 范围的功能。它接收用户的指令,理解用户的命令,并发送给内核,指示进程启动这样一个接口。换句话说,“interface”这个词有时被译为“接口”,有时被译为“界面”,但说白了,它们的意思是一样的。从现在开始,我们不会乱用接口,也不会乱用接口,只要知道它们是同一个东西。

shell本身有什么用呢?首先,它提供了一个供用户交互的界面。其次,用户的命令动作必须翻译成计算机可以理解的命令,或者内核可以理解的命令。例如,在window系统上,双击桌面上的图标,然后单击鼠标两次。为什么内核此时需要接收命令呢?允许用户双击以显示鼠标的界面。这实际上是shell提供的一个接口。如果没有shell,如何与计算机交互?如果打开窗口时没有桌面,如何与桌面交互可能会有点困难。

这称为shell,但广义上有两种类型:称为图形界面shell的shell和称为命令行shell的shell(也称为字符界面shell)。这两种类型中的第一种称为GUI 图形用户界面,第二种称为CLI 命令行界面。无论是GUI还是CLI,它实际上都是一个应用程序,因此不同的操作系统可能会提供不同的替代版本。

这是每个人都应该知道的一些常识。目前操作系统的类型主要分为Windows系统和Linux系统,Windows和Linux系统都具有图形界面shell。

Linux 具有gnome、KDE 和XFACE 三种流行的图形界面。这三种都很常见。 Windows 中只有一个且无法替换。有人说你可以更改它,但你应该在主题中更改它,而不是在图形界面shell 中,你应该知道这一点。特别是2008年之前的Windows操作系统的shell是直接内置在内核中的,没有图形界面就无法使用。 Windows Server 2008提供了Powershell界面,因此不需要使用图形界面。

说到CLI命令行shell,我们都知道窗口系统来自DOS时代,而DOS本身就是一个命令行,一个单一的任务。 Linux 操作系统有许多shell 程序,包括sh、ksh、psh、zsh 和bash。有很多可用的程序。

有些人可能有这样的概念。要操作没有图形界面的计算机,必须键入命令。事实上,如果您在使用命令方面具有更大的灵活性,则命令行界面可以比图形界面快得多。事实上,其中一个命令可能执行一项需要点击数十次鼠标才能完成的任务。我们还需要建立这样一个概念:像Linux 这样的操作系统本身就是比Windows 更简单的系统。不过它有一个特点,叫做学习曲线,这使得它比较陡峭,上手比较困难,但是一旦学会了,你一定会发现它很神奇,非常聪明。所以有人比较了window和linux,说window更好看,linux更聪明,linus比windows简单得多。稍后我会详细解释该操作系统的发展历史,希望大家能够理解。

更重要的是,Linux 系统比Windows 运行稳定得多,通常三到五年不需要重新启动,另外10 到八年也不需要重新启动。已经启动并且仍然有效。尝试使用您的窗口系统一周而不重新启动。这对于一些关键业务来说非常重要,但却是完全不可想象的。因此,我们经常在两种场景下使用Windows。一种是个人台式机,另一种是用于比较低端的IDC机房。一些非常重要的业务领域大多使用Linux系统。

据TOP500统计,全球最快的500台计算机中90%以上都使用Linux,而微软本身很可能也使用Windows。让我们暂时停下来,回到GUI 和CLI。您需要了解,这也是一个特殊的应用程序。当shell 应用程序关闭时,使用此类接口启动的应用程序也会随之关闭。

例如,如果你打开Windows桌面,启动Word,关闭桌面,然后注销,你确定Word已经消失了吗?因此,这些程序之间仍然存在关系,而你通过交互界面启动的程序是,与交互界面程序本身密切相关。这就是我们的操作系统的组成部分以及我们使用它的原因。然而,实际上,操作系统功能比此处描述的更复杂。为了获得基本的理解,我们将简要解释内核的功能。内核提供的主要功能有哪些?

前面提到,内核的进程管理协调各个进程,内存管理管理系统内存,并提供文件系统、网络功能、硬件驱动、安全机制等等,这些我们稍后会详细讨论。这些都是特点。内核的。

进程管理、内存管理、文件管理、网络管理、硬件管理、安全管理、系统调用接口(System Calls)我们不知道使用哪些函数来完成特定的工作,但是如下。通用软件。

我不确定您是否注意到用于完成特定工作的任何功能,但这是常见的软件。

版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。

猜你喜欢