1.Linux内核简介
内核:在计算机科学中是一个拿来管理软件发出的数据I/O(输入与输出)要求的计算机程序,将那些要求转译为数据处理的指令并交由中央处理器(CPU)及计算机中其他电子组件进行处理linux内核架构,是现代操作系统中最基本的部份。
它是为诸多应用程序提供对计算机硬件的安全访问的一部份软件,这些访问是有限的,并由内核决定一个程序在哪些时侯对某部份硬件操作多长时间。直接对硬件操作是十分复杂的。
所以内核一般提供一种硬件具象的方式,来完成这种操作。通过进程间通讯机制及系统调用,应用进程可间接控制所需的硬件资源(非常是处理器及IO设备)。
2.GNU/Linux操作系统与Linux内核关系
我们一般说的Linux实际上指的是内核,即Linux内核。
而Linux的操作系统实际是GNU/Linux操作系统,即使用Linux内核的GNU系统。
3.GNU/Linux操作系统的基本体系结构
3.1用户空间
最前面是用户(或应用程序)空间。
这是用户应用程序执行的地方。用户空间之下是内核空间linux系统好用吗,Linux内核正是坐落这儿。GNUCLibrary(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缓冲区为基数,之后从中分配结构,并跟踪显存页使用情况,例如什么显存页是满的,什么页面没有完全使用,什么页面为空。这样就容许该模式依据系统须要来动态调整显存使用。
为了支持多个用户使用显存,有时会出现可用显存被消耗光的情况。因为这个缘由,页面可以移出显存并装入c盘中。
这个过程称为交换,由于页面会被从显存交换到硬碟上。显存管理的源代码可以在./linux/mm中找到。
3.2.3进程管理
进程实际是某特定应用程序的一个运行实体。
在Linux系统中,还能同时运行多个进程,Linux通过在短的时间间隔内轮流运行那些进程而实现“多任务”。
这一短的时间间隔称为“时间片”,让进程轮流运行的方式称为“进程调度”,完成调度的程序称为调度程序。
进程调度控制进程对 CPU 的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。
一个可运行的进程是指该进程的进程状态为 TASK_RUNNING,意味着这个进程是可运行的:要么它正在运行,要么在 runqueue 中等待运行。对于 「用户空间」(指内存上用户进程运行的空间) 正在运行的进程来说,它只可能是可运行的。
对于「内核空间」(内存上内核运行并提供服务的空间)正在运行的进程来说,可运行状态也是可能的。
一个 runqueue (运行队列)是 scheduler (调度器)里面的基本数据结构,它保存了可运行进程的列表,这些列表中的进程随后会被 CPU 执行scheduler (调度器)也被称为 process scheduler (进程调度器),是内核的一部分,它会为不同的可运行进程分配 CPU 时间,Linux 使用了比较简单的基于优先级的进程调度算法选择新的进程。
通过多任务机制,每个进程可认为只有自己独占计算机,从而简化程序的编写。
每个进程有自己单独的地址空间,并且只能由这一进程访问,这样操作系统避免了进程之间的互相干扰以及“坏”程序对系统可能造成 的危害。为了完成某特定任务,有时需要综合两个程序的功能,例如一个程序输出文本,而另一个程序对文本进行排序。
为此,操作系统还提供进程间的通讯机制来帮助完成这样的任务。
Linux 中常见的进程间通讯 机制有信号、管道、共享内存、信号量和套接字等。
内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(fork、exec 或 Portable Operating System Interface [POSIX] 函数),停止进程(kill、exit),并在它们之间进行通信 和同步(signal 或者 POSIX 机制)。
3.2.4文件系统
和DOS等操作系统不同,Linux操作系统中单独的文件系统并不是由驱动器号或驱动器名称(如A:或C:等)来标示的。
相反linux内核架构,和UNIX操作系统一样,Linux操作系统将独立的文件系统组合成了一个层次化的树状结构,但是由一个单独的实体代表这一文件系统。
Linux将新的文件系统通过一个称为“挂装”或“挂上”的操作将其挂装到某个目录上,因而让不同的文件系统结合成为一个整体。Linux操作系统的一个重要特性是它支持许多不同类型的文件系统。
Linux中最普遍使用的文件系统是Ext2,它也是Linux土生土长的文件系统。
但Linux也就能支持FAT、VFAT、FAT32、MINIX等不同类型的文件系统,因而可以便捷地和其它操作系统交换数据。
因为Linux支持许多不同的文件系统,而且将它们组织成了一个统一的虚拟文件系统.
虚拟化文件系统:
虚拟文件系统(VFS)是Linux内核中十分有用的一个方面,由于它为文件系统提供了一个通用的插口抽象。
VFS在SCI和内核所支持的文件系统之间提供了一个交换层。即VFS在用户和文件系统之间提供了一个交换层。
虚拟化文件系统隐藏了各类硬件的具体细节如何安装linux,把文件系统操作和不同文件系统的具体实现细节分离了开来,为所有的设备提供了统一的插口,VFS提供了多达数十种不同的文件系统。
虚拟文件系统可以分为逻辑文件系统和设备驱动程序。
逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编撰的设备驱动程序模块。
3.2.5设备驱动程序
设备驱动程序是Linux内核的主要部份。
和操作系统的其它部份类似,设备驱动程序运行在高特权级的处理器环境中,因而可以直接对硬件进行操作,但正由于这般,任何一个设备驱动程序的错误都可能导致操作系统的崩溃。
设备驱动程序实际控制操作系统和硬件设备之间的交互。
设备驱动程序提供一组操作系统可理解的具象插口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。
通常而言,设备驱动程序和设备的控制芯片有关,比如,假如计算机硬碟是SCSI硬碟,则须要使用SCSI驱动程序,而不是IDE驱动程序。
3.2.6网路插口程序
提供了对各类网路标准的存取和各类网路硬件的支持。
网路插口可分为网路合同和网路驱动程序。
网路合同部份负责实现每一种可能的网路传输合同。
众所周知,TCP/IP合同是Internet的标准合同,同时也是事实上的工业标准。Linux的网路实现支持BSD套接字,支持全部的TCP/IP合同。
Linux内核的网络部份由BSD套接字、网络合同层和网路设备驱动程序组成。
网路设备驱动程序负责与硬件设备通信,每一种可能的硬件设备都有相应的设备驱动程序。
本文原创地址://q13zd.cn/srljlnhxdczx.html编辑:刘遄,审核员:暂无