Linux笔记 --- Linux内核链表

news2024/11/27 8:28:31

Linux 内核链表

经过上一小节的分析,我们知道了传统链表的先天缺陷:没有将具体的数据从组织这些数据的逻辑结构中剥离,而Linux内核链表的思路,正是从一方面着手,追根溯源直抵病灶,彻底颠覆了传统链表:把传统链表中的“链”抽象出来,使之成为一条只包含前后指针的纯粹的双循环链表,这样的链表由于不含有特殊的数据,因此它实质上就是链表的抽象表示:

这样的只有前后两指针的纯粹的链表形式被称为Linux标准双向循环链表。当然,光是这样的一条链表是毫无意义的,就好比一根绳子,但是没有串上任何东西。下一步,就是将这条绳子“嵌入”一个具体的节点当中,比如:

        这样,链表的逻辑就被单独地剥离开来了,所带来的好处是巨大的:我们可以定义针对内核链表的基本操作并将之运用到任何类型的节点中,因为此时我们对链表的操作已经完全与数据无关,所有操作统一针对Linux标准抽象链表,可以适用任何类型数据的节点

        这样做的另一个好处是,使得复杂的数据结构背景变得更易受控,一个节点在系统中的关系网跟一个人在社交网络中的关系网类似,一个人不可能只单单处于某一个关系逻辑之中,比如你是某家公司的职工人员,同时你还是你们家族关系网中的一员,你也是某一家俱乐部的VIP会员,你还是一个业余乐队的成员,你还有N多的社会关系网络,如果一个节点也是有这样的众多背景,用传统的节点来表达的情况是这样的:

这个节点每增加一个“数据结构背景”,其节点就要多一对指针,要命的是,这些不断增加的指针会导致结构体的成员发生变化,从而使得其他的链表指针跟着发生变化,因此这是一种完全不可取的做法。

而Linux内核链表则完美地避免了这种情况(广告时间),因为任何情形下对链表的操作都是统一的,跟具体的节点无关,一个节点如果处在一个复杂的关系网之中,Linux内核链表也很容易就可以解决,只需要在节点中镶嵌更多的“小结构体”即可,如图所示。


        

        总结起来,Linux内核链表的突出优点是:由于可以非常方便地将其标准实现(即“小结构”)镶嵌到任意节点当中,因而任何数据组成的链表的所有操作都被完全统一。另外,即使在代码的维护过程之中要对节点成员进行升级修改,也完全不影响该节点原有的链表结构。

        既然Linux内核链表是一种统一的抽象的数据结构实现,那么在Linux源码中就有专门的已经写好的代码,实现了内核链表的初始化、插入、删除、遍历、移动等等,这些代码被保存在内核目录中的inlucde/btrfs/list.h中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux内网环境部署thingsboard(离线部署)

先说明一下内网部署的环境,我这里是安装的thingsboard3.6.4 下面所有环境包的版本都是基于这个版本 我们需要安装jdk11,postgres数据库,这里注意下jdk必须使用rpm方式安装,要不后面安装Thingsboard会提示你没有检测到jdk. 下面我们就一步一步来 1.先下…

同城货运软件开发货运搬家系统源码基于Java开发的货运平台

一.管理端配置及操作 1.服务配置 添加:服务,给服务添加车型和车厢,以及收费金额 2.用户中心 分为普通用户 师傅用户 和推广员用户; 推广员用户的一二级分佣不为0,可给推广员设置一二级佣金 3.车厢/车型管理 给服务添加车厢 和车型,选择 服务后,只能选择该服务关联的车型和…

Tomato靶机~文件包含日志

寻找网站上传点并把 php 恶意代码文件改成 jpg 上传到网站上在本地包含引入恶意代码,当文件被引入后代码就被执行; 0x01信息收集 # 环境准备: Target IP:192.168.66.143 Attack IP:192.168.66.84 靶机目标&#xff1…

无缝协作的艺术:Codigger 视频会议(Meeting)的用户体验

在当今数字化的时代,远程协作已经成为工作和学习中不可或缺的一部分。然而,远程协作也面临着诸多挑战,如沟通不畅、信息同步不及时、协作工具的复杂性等。而 Codigger 视频会议(Meeting)作为一款创新的工具&#xff0c…

伦敦银和伦敦金的关系是怎么样的?

在贵金属投资市场中,有两个品种是经常被投资者讨论的,一个是伦敦银,而另外一个是伦敦金,他们的名字很相似,那实际上他们有何关系呢?下面我们就来简单地讨论一下。 伦敦银其实也叫国际现货白银,是…

探索3D视觉中的Transformer架构:通用Backbone与自适应采样策略 !

1 Introduction 计算机视觉中的一个基本问题是在三维空间中理解和识别场景与物体。它允许以紧凑的方式表达关系,并提供在现实世界中导航和操作的能力。3D视觉在各个领域都发挥着重要作用,包括自动驾驶、机器人技术、遥感、医疗、增强现实、设计行业等众…

【Nuxt】初识 Nuxt 和目录说明

初识 Nuxt Nuxt3 支持 Vue3 及其周边生态,提供前后端功能,支持 CSR(SPA),SSR,SSG 渲染模式的应用。 Nuxt3 特点: Vue技术栈 Nuxt3是基于Vue3Vue RouterVite等技术栈,全程Vue3Vite开发体验(Fast)。 自动导…

6大类果蔬食物百科大全ACCESS数据库

其实今天这个数据库早些时候就已经搞到了,但是鉴于它的多表结构不太喜欢就一直没有整理,然而现在仔细看起来,又觉得这种安排好处还是很好的,清晰明了。发上来看看有没有朋友喜欢,包含了水果类、蔬菜类、坚果类、肉类、…

xss漏洞(二,xss靶场搭建以及简单利用)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 一,环境搭建。 使用工具:PHP study,dvwa靶场。 1,GitHub上下载dvwa到PHP study的WWW文件夹内,并解压。 dvwa下载地址 …

3D Web轻量引擎HOOPS Communicator处理大模型时有哪些优化技巧?

在当今的工程设计和可视化领域,大型3D模型变得越来越普遍。然而,这些模型的复杂性和体量给传统的渲染技术带来了挑战。HOOPS Communicator,作为一个高性能的3D可视化工具,提供了一系列的优化技巧,以提高大型模型的渲染…

ARMxy工业计算机支持BACnet推动智能楼宇能源管控升级

城市化进程的加速,智能楼宇成为了未来建筑的发展趋势。而能源管控作为智能楼宇的重要组成部分,对于实现节能减排、提高能源利用效率具有至关重要的意义。ARMxy 工业计算机作为一种高性能、低功耗的计算平台,为智能楼宇能源管控提供了全新的解…

【砖墙】python刷题记录

R4-哈希表 这题不就是射箭那道题?! 很类似好吧 【用最少数量的箭引爆气球】python刷题记录 哈希表前缀和秒杀! class Solution:def leastBricks(self, wall: List[List[int]]) -> int:dictdefaultdict(int)nlen(wall)for i in range(n)…

酒店民宿小程序搭建,用户在线一键预订!

近几年,我国旅游业发展非常迅速,同时也带动了酒店民宿的发展。因此,为了提升游客的住宿体验,各大酒店民宿也纷纷开始发展专属的预约小程序,让用户可以在小程序上更加快速便利的查看酒店信息,预订心仪的房间…

中小微企业必看:税贷票贷融资策略与实战技巧

各位中小微企业的老板们,今天咱们来聊聊个实用话题——税贷和票贷,少部分朋友可能还觉得挺新鲜。别看它们听起来有点专业,其实搞懂了,融资就能变得简单又高效。 一、啥是税贷票贷? 税贷票贷,说白了&#x…

服务治理-Nacos

介绍 思考 什么是服务治理 常见的注册中心 Zonnkeeper Eureka Consull Nacos(服务治理 配置中心) Nacos实战入门 修改bin–>startup.smd 把集群模式改为单列模式 问题:如果出现一闪而过,要看jdk环境变量有没有配置,jdk是不是8以上 …

信息采集器pda手持机二维码扫描手持终端

随着物联网技术不断发展,在信息技术日新月异的今天,信息采集器PDA(Personal Digital Assistant)手持机,特别是具备二维码扫描功能的手持终端,已经成为众多行业不可或缺的智能化工具。它们不仅极大地提升了数据收集的效率与准确性&…

飞机机翼弹性、桥梁晃动频率,重要的流固耦合FSI如何用技术解决

背景介绍 最初的流固耦合FSI(Fluid-Solid Interaction)专指研究流体载荷对弹性结构的影响,例如飞机机翼气动弹性问题,船舶螺旋桨的水弹性问题,核反应堆燃料棒的涡激振动问题等等。在数值仿真领域FSI概念扩展到一般性的CFD模型和FEA模型的数据…

OB08/FAGL_FCV--维护汇率/外币重估

OB08:汇率维护 一般使用M类型。 重估汇率维护为PND。(每个月底都维护最新的汇率) FAGL_FCV:外币余额重估(使用刚刚维护的最新的汇率对系统内外汇余额进行重估) 关键日期是以哪一天的汇率来进行重估 下面…

C++:模板初阶与STL简介

前言: 上一篇博客我们结束了对C/C内存管理的学习,这篇让我们继续探索模板初阶与了解STL! 个人主页:Pianeers 文章专栏:C 如果有问题,欢迎评论区讨论! 希望能帮到大家,求点赞&#xf…

数学公式秒变美!2024最新MathType7中文版的魅力功能讲解

MathType 7是一款强大的数学公式编辑器,其中文版本在功能和界面设计上都非常人性化,适合中国用户使用。该软件不仅提供了丰富的数学符号库,还支持手写输入,让用户能够轻松地编辑复杂的数学公式。此外,MathType 7还具有…