透视Linux内核层级:从山顶远眺

你们都晓得源理君好多期的文章都是关于Linux内核的功能,本着公众号的原则,只讲原理,将复杂的代码转换为浅显易懂的文字,图片。最后呈现给你们。可以源理君始终没有从大框架上系统的给诸位梳理Linux内核体系结构。那本文就一个目的,站在山顶向上看。

Linux系统的层次框架

linux内核移植与编译实验_linux内核移植实验报告_linux内核移植步骤

从图中我们可以分为两个层次:

用户空间内核空间

在最下层是用户空间,也就是运行应用程序。用户空间的上层就是常常使用的gblic库linux内存管理,它的作用就是封装系统调用插口。不使用gblic库,而大量的直接使用系统调用插口是十分不明智的选择。用户空间运行的进程,她们各自拥有独立的虚拟地址空间,而内核则有单独的地址空间。

上层就是内核空间了。Linux内核空间又分为了三层:

系统调用层;它是属于最下层,它提供了用户空间和内核空间通讯的形式。Linux内核:应当愈发准确的说是独立于体系结构的内核代码,这种通用的代码适用于任何体系结构。依赖体系结构的代码:这部份我们一般称之为BSP,这种代码主要是为了兼容不同平台或则处理器而引入的。

Linux内核实现了好多重要的体系结构属性。在或高或低的层次上,内核被界定为多个子系统。Linux也可以看作是一个整体,由于它会将所有那些基本服务都集成到内核中。这与微内核的体系结构不同,前者会提供一些基本的服务,比如通讯、I/O、内存和进程管理,更具体的服务都是插入到微内核层中的。每种内核都有自己的优点linux命令行,不过这儿并不对此进行讨论。

随着时间的流逝,Linux内核在显存和CPU使用方面具有较高的效率,而且十分稳定。并且对于Linux来说,最为有趣的是在这些大小和复杂性的前提下,仍然具有良好的可移植性。Linux编译后可在大量处理器和具有不同体系结构约束和需求的平台上运行。一个反例是Linux可以在一个具有显存管理单元(MMU)的处理器上运行,也可以在这些不提供MMU的处理器上运行。Linux内核的uClinux移植提供了对非MMU的支持。

Linux内核体系结构

linux内核移植实验报告_linux内核移植与编译实验_linux内核移植步骤

linux内核移植与编译实验_linux内核移植步骤_linux内核移植实验报告

Linux内核的主要组件有:

系统调用插口进程管理显存管理虚拟文件系统网路堆栈设备驱动程序、硬件构架的相关代码。

(1)系统调用插口

系统调用层提供了个别机制执行从用户空间到内核的函数调用。它是依赖真个体系结构的。在这一层提供多路复用和多路分解服务。

(2)进程管理

linux内核移植步骤_linux内核移植与编译实验_linux内核移植实验报告

进程管理的核心就是进程的调度。在Linux内核中,进程调度的单元是进程,线程对与调度来说相当于进程概念。内核通过系统调用提供了应用程序编程插口。诸如:创建新进程(fork,exec),结束进程(kill,exit),而且提供了控制进程linux内核移植步骤,同步进程和进程间通讯的插口。

进程管理还包括处理活跃进程之间共享CPU的需求。内核使用的是CFS完全公正调度器,在我之前文章《Linux完全公正调度器CFS》有详尽阐释。

(3)显存管理

内核所管理的另外一个重要资源是显存。源理君的另一篇文章《搞懂Linux显存管理,仅此一篇》有详尽讲解Linux显存管理。为了提升效率,引入了虚拟显存的概念,显存是根据所谓的显存页形式进行管理的(通常一个显存页大小4KB和8KB,绝大部份为4KB)。Linux除了管理可用显存的方法,以及数学和虚拟映射所使用的硬件机制。不过显存管理要管理的可不止4KB缓冲区。Linux提供了对4KB缓冲区的具象,比如slab分配器。这些显存管理模式使用4KB缓冲区为基数,之后从中分配结构,并跟踪显存页使用情况,例如什么显存页是满的,什么页面没有完全使用,什么页面为空。这样就容许该模式依据系统须要来动态调整显存使用。为了支持多个用户使用显存,有时会出现可用显存被消耗光的情况。因为这个缘由,页面可以移出显存并放入c盘中。这个过程称为交换,由于页面会被从显存交换到硬碟上。显存管理的源代码可以在./linux/mm中找到。

(4)虚拟文件系统

虚拟文件系统(VFS)是Linux内核中十分有用的一个方面,由于它为文件系统提供了一个通用的插口具象。VFS在系统调用和内核所支持的文件系统之间提供了一个屏蔽层。如右图所示:

linux内核移植与编译实验_linux内核移植步骤_linux内核移植实验报告

在VFS里面,是对诸如open、close、read和write之类的函数的一个通用API具象。在VFS下边是文件系统具象,它定义了下层函数的实现方法。它们是给定文件系统(超过50个)的插件。文件系统的源代码可以在./linux/fs中找到。文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或则随后预先读取数据便于在须要是就可用)优化了对化学设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定化学设备的插口。

(5)网路合同栈

网路合同栈在设计上依循模拟合同本身的分层体系结构。回想一下linux内核移植步骤,InternetProtocol(IP)是传输合同(一般称为传输控制合同或TCP)下边的核心网路层合同。TCP里面是socket层,它是通过系统调用层进行调用的。socket层是网路子系统的标准API,它为各类网路合同提供了一个用户插口。从原始帧访问到IP合同数据单元(PDU),再到TCP和UserDatagramProtocol(UDP),socket层提供了一种标准化的方式来管理联接,并在各个终点之间联通数据。内核中网路源代码可以在./linux/net中找到。

(6)设备驱动程序

Linux内核中有大量代码都在设备驱动程序中,它们就能运转特定的硬件设备。Linux源码树提供了一个驱动程序子目录,这个目录又进一步界定为各类支持设备,比如Bluetooth、I2C、serial等。设备驱动程序的代码可以在./linux/drivers中找到。

(7)依赖体系结构的代码

虽然Linux很大程度上独立于所运行的体系结构,并且有些元素则必须考虑体系结构能够正常操作并实现更高效率。./linux/arch子目录定义了内核源代码中依赖于体系结构的部份,其中包含了各类特定于体系结构的子目录(共同组成了BSP)。对于一个典型的桌面系统来说,使用的是x86目录。每位体系结构子目录都包含了好多其他子目录,每位子目录都关注内核中的一个特定方面,比如引导、内核、内存管理等。这种依赖体系结构的代码可以在./linux/arch中找到。

Linux还是一个动态内核,支持动态添加或删掉软件组件。被称为动态可加载内核模块,它们可以在引导时按照须要(当前特定设备须要这个模块)或在任何时侯由用户插入。

参考

源理君参考了这篇文章

以上就是透视Linux内核层级:从山顶远眺的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2206124.html

(0)
上一篇 2025年2月26日 01:56:40
下一篇 2025年2月26日 01:56:58

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 非MMU的支持是由Linux内核的uClinux移植提供的吗?

    篇幅长,技术内容多,点击关注不走散。 序言:了解Linux内核 一个计算机系统是一个硬件和软件的共生体,它们相互依赖,不可分割。计算机的硬件linux内核移植步骤,富含外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的缸体。并且没有软…

    2025年2月26日 互联网
    100
  • Linux内核源代码阅读经验分享

    随着linux的逐渐普及,现今有不少人对于Linux的安装及设置早已比较熟悉了。与Linux的蓬勃发展相适应,想深入了解Linux的也越来越多。而要想深入了解Linux,就须要阅读和剖析linux内核的源代码。 Linux的内核源代码可以从…

    互联网 2025年2月26日
    200
  • 对Linux内核的基本组成和工作原理进行分析与解释

    Linux作为全球最流行的开源操作系统,其内核的设计和实现仍然是计算机科学领域的热门话题。本文将深入剖析Linux内核的基本构成和工作原理,帮助读者更好地理解这个强悍的系统。接出来我们简单的了解一下Linux内核的几个方面。 一、Linux…

    2025年2月26日 互联网
    200
  • 了解Linux内核开发的源码阅读和编辑的工具和方法有哪些?

    进行嵌入式Linux产品开发,常常须要对内核进行剪裁和订制,以满足嵌入式产品的功能和性能需求。本文介绍几种阅读Linux内核源码的工具和技巧。 这儿所说的“Linux内核开发”仅仅是指嵌入式Linux产品开发中内核和驱动相关开发工作,与Li…

    互联网 2025年2月26日
    200
  • Linux内核TCP协议栈优化的秘密技巧揭示

    尊敬的读者们,您好!在此,我有幸与您分享我作为资深网络工程师,以其专业的技术在Linux内核TCP协议栈的研发及优化工作中所积累下的宝贵经验与技巧。相信通过此文,我们能互相学习、探讨,为对该领域有着浓厚兴趣或正在进行相关工作的你们带来实际且…

    互联网 2025年2月26日
    200
  • Linux内核新版本,开发者必看

    近日,Linux内核最新版备受关注,作为一位有丰富经验的Linux开发者,在此,愿同诸位分享我对该话题的心得体会。期待通过此文,能为对Linux内核热爱的朋友提供有力支持。 一、理解内核版本号的含义 理解内核版本号是关键环节。每次新版发布时…

    2025年2月26日 互联网
    200
  • Linux内核2.1单内核与微内核的应用体系分析与应用

    目录 1、应用系统的两种形态1.1无操作系统应用体系 对于简单的SOC应用,如大部份简单功能的单片机应用都无需在系统中使用操作系统,这时应用程序是直接调用相应的驱动操作底层的硬件,如图: 这些结构,应用软件直接调用了设备驱动操作硬件。优点是…

    互联网 2025年2月25日
    200
  • 华为云完成Linux内核的编译与安装(自选题目)

    实验要求把握Linux内核的编译与安装把握Linux系统调用基本概念设计和添加linux系统调用 (1)更改或返回指定进程的优先级(nice值和prio值)(详见教材P328)提示:可能参考的内核函数:set_user_nice(). (2…

    互联网 2025年2月25日
    200
  • Linux内核:深度解析与全面掌握

    驻足于计算机操作系统之核心位置,Linux内核承载着管理硬件设施、供应用户使用的系统调用接口等多重任务。倘若阁下对此颇加关注,特向您推荐颇为精彩且富有深度的Linux内核视频教程,期待助您全面、深刻地理解并掌握这项技术精髓。 一、《深入理解…

    互联网 2025年2月25日
    200
  • Linux内核预备工作理解:懂C语言懂一点操作系统

    序言:操作系统(英文:OperatingSystem,简写:OS)是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统须要处理如管理与配置显存、决定系统资源供需的优先顺序、控制输入与输出设备、操作网路与管理文件系统…

    2025年2月25日 互联网
    100

发表回复

登录后才能评论