当前位置: 首页 > Linux

Linux内核和GNU-Linux操作系统的基本架构

时间:2023-04-06 01:42:55 Linux

1.Linux内核简介内核:在计算机科学中,是用来管理软件发出的数据I/O(输入输出)需求的计算机程序。指令需要翻译成数据处理,由计算机中的中央处理器(CPU)和其他电子元件处理,是现代操作系统最基本的部分。它是软件的一部分,为许多应用程序提供对计算机硬件的安全访问。这种访问是有限的,内核决定程序在硬件的特定部分上运行的时间和时间。直接在硬件上操作非常复杂。所以内核通常会提供硬件抽象方法来完成这些操作。通过进程间通信机制和系统调用,应用进程可以间接控制所需的硬件资源(尤其是处理器和IO设备)。2、GNU/Linux操作系统与Linux内核的关系。我们平时所说的Linux,其实指的就是内核,也就是Linux内核。Linux操作系统实际上就是GNU/Linux操作系统,即使用Linux内核的GNU系统。3.GNU/Linux操作系统的基本架构3.1用户空间最顶层是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间下面是内核空间,Linux内核所在的地方。GNUC库(glibc)也在这里。它为内核提供了一个系统调用接口,并提供了一种在用户空间应用程序和内核之间切换的机制。这很重要,因为内核和用户空间应用程序使用不同的受保护地址空间。每个用户空间进程使用自己的虚拟地址空间,而内核占用单独的地址空间。3.2Linux内核体系结构内核是操作系统的核心,具有许多基本功能。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux内核由以下几部分组成:内存管理、进程管理、文件系统、设备驱动程序和网络接口程序。3.2.1系统调用接口(SystemCallInterface,简称SCI)SCI层提供了一定的机制来执行从用户空间到内核的函数调用。此接口依赖于体系结构,即使在同一处理器系列中也是如此。SCI其实是一个非常有用的函数调用复用和解复用服务。在./linux/kernel中,您将找到SCI实现,并在./linux/arch中找到体系结构相关的部分。3.2.2内存管理对于任何计算机来说,它的内存和其他资源都是有限的。为了让有限的物理内存满足应用程序对内存的大量需求,Linux采用了一种称为“虚拟内存”的内存管理方式。Linux将内存划分为可管理的“内存页面”(大多数架构为4KB)。Linux包括管理可用内存的方法,以及用于物理和虚拟映射的硬件机制。但是内存管理要管理的不仅仅是4KB缓冲区。Linux为4KB缓冲区提供了抽象,例如slab分配器。这种内存管理模型以一个4KB的缓冲区为基础,然后从中分配结构,并跟踪内存页的使用情况,比如哪些内存页是满的,哪些页没有用完,哪些页是空的。这允许该模式根据系统需要动态调整内存使用情况。为了支持多个用户使用内存,有时可用内存会被耗尽。出于这个原因,页面可以移出内存并放在磁盘上。这个过程称为交换,因为页面从内存交换到磁盘。内存管理的源代码可以在./linux/mm中找到。3.2.3进程管理进程实际上是一个具体应用程序的运行实体。在Linux系统中,多个进程可以同时运行,Linux通过以较短的时间间隔轮流运行这些进程来实现“多任务”。这种短时间间隔称为“时间片”,让进程轮流运行的方法称为“进程调度”,完成调度的程序称为调度器。进程调度控制进程对CPU的访问。当需要选择下一个要运行的进程时,调度程序会选择最值得运行的进程。可运行进程是指进程的进程状态为TASK_RUNNING,表示进程是可运行的:要么正在运行,要么在运行队列中等待运行。它只能为在“用户空间”(即用户进程运行的内存空间)中运行的进程运行。可运行状态对于在“内核空间”(内核运行并提供服务的内存空间)中运行的进程也是可能的。一个runqueue(运行队列)是调度器(scheduler)中的基本数据结构,它保存着一个可运行进程的列表,然后由CPU执行。调度器(scheduler),也称为进程调度器(processscheduler),是内核的一部分,为不同的可运行进程分配CPU时间。Linux使用相对简单的基于优先级的进程调度算法来选择新进程。过程。通过多任务机制,每个进程都可以看作是独占计算机的唯一进程,从而简化了程序的编写。每个进程都有自己独立的地址空间,只能被本进程访问,这样操作系统就避免了进程之间的相互干扰和“坏”程序可能对系统造成的危害。有时需要组合两个程序的功能以完成特定任务,例如一个程序输出文本而另一个程序对文本进行排序。为此,操作系统还提供了进程间通信机制来帮助完成此类任务。Linux中常见的进程间通信机制包括信号、管道、共享内存、信号量和套接字。内核通过SCI提供应用程序编程接口(API)来创建新进程(fork、exec或PortableOperatingSystemInterface[POSIX]函数)、停止进程(kill、exit)以及它们之间的通信和同步(信号或POSIX机制)。3.2.4文件系统与DOS等操作系统不同,Linux操作系统中独立的文件系统不以盘符或驱动器名(如A:或C:等)来标识。相比之下,Linux操作系统与UNIX操作系统一样,将独立的文件系统组合成一个层次化的树状结构,用一个单一的实体来代表这个文件系统。sLinux通过一种称为“mount”或“mount”的操作将新的文件系统挂载到某个目录中,这样就可以将不同的文件系统组合成一个整体。Linux操作系统的一个重要特性是它支持许多不同类型的文件系统。Linux中最常用的文件系统是Ext2,这也是Linux原生的文件系统。不过,Linux也可以支持FAT、VFAT、FAT32、MINIX等不同类型的文件系统,从而可以方便地与其他操作系统进行数据交换。由于Linux支持多种不同的文件系统,并将它们组织成一个统一的虚拟文件系统。虚拟化文件系统:虚拟文件系统(VFS)是Linux内核的一个非常有用的方面,因为它为文件系统提供了一个通用接口抽象。VFS在SCI和内核支持的文件系统之间提供了一个交换层。也就是说,VFS在用户和文件系统之间提供了一个交换层。虚拟化文件系统隐藏了各种硬件的具体细节,将文件系统操作与不同文件系统的具体实现细节分离,为所有设备提供了统一的接口。VFS提供了几十种不同的文件系统。虚拟文件系统可分为逻辑文件系统和设备驱动程序。逻辑文件系统是指Linux支持的文件系统,如ext2、fat等,设备驱动是指为各个硬件控制器编写的设备驱动模块。3.2.5设备驱动程序设备驱动程序是Linux内核的组成部分。与操作系统的其他部分类似,设备驱动程序运行在具有高特权的处理器环境中,因此可以直接对硬件进行操作,但正因如此,设备驱动程序的任何错误都可能导致操作系统崩溃。设备驱动程序实际上控制着操作系统和硬件设备之间的交互。设备驱动程序提供了一组操作系统可以理解的抽象接口来完成与操作系统的交互,而与硬件相关的具体操作细节则由设备驱动程序完成。一般来说,设备驱动程序与设备的控制芯片有关。比如电脑硬盘是SCSI硬盘,就需要使用SCSI驱动,而不是IDE驱动。3.2.6网络接口程序提供对各种网络标准的访问和对各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。众所周知,TCP/IP协议是互联网的标准协议,也是事实上的行业标准。Linux的网络实现支持BSD套接字并支持所有TCP/IP协议。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。网络设备驱动程序负责与硬件设备进行通信,每一种可能的硬件设备都有对应的设备驱动程序。