Linux核心中的資料結構與演算法(一)

2021-10-21 19:20:21 字數 1293 閱讀 6225

一,序言

其實想寫這個系列很久了,因為本人工作的關係,平時接觸linux核心很多,從業後很多時候在網上查詢的東西是片面或者不系統的,打算給自己的知識庫進行個整理吧,打算開筆寫這個系列,再加上自己想考研了,算是重新學習,也算鞏固自己的知識吧。如果有什麼錯誤和疏漏,也請看客們給出批評意見,比心比心比心~~~❤️❤️❤️

二,概述

本系列文章主要介紹linux中涉及的資料結構和演算法,其實這遠比你想象的多得多呢,沒有linux核心研究經驗的小夥伴們也不用擔心,懂c語言就行了,文章中使用核心c語言呈現資料結構和演算法,很多時候學習語言的同學們,尤其是大學生同學們在學習資料結構和演算法時都不清楚這東西具體使用的意義,所以結合linux核心的源**,我們從中分析這其中有哪些的資料結構和演算法,因為每次去面試筆試時大多數都會涉及演算法和資料結構,所以對他們的了解當然是多多益善的,寫這系列文章時,最新的linux版本是5.10.15,所以我就下了這個版本的原始碼,正好也讓自己研究一下最新的linux核心,現在我們就來窺探一下linux核心中有哪些我們熟悉的資料結構和演算法吧,go!

三,陣列

這東西真是到處都是啊,我們最常用的資料結構之一,c語言最先接觸的資料結構。

1.陣列是啥

英文名字array,有限數量的型別相同的集合命名為陣列。我們熟知的按照陣列元素型別的不同,陣列可以分為數值陣列、字元陣列、指標陣列、結構陣列等等。

在定義陣列的時候我們需要制定他的資料型別,陣列大小,都是一次性就定義好的。

2.陣列的宣告和引用

int a[10];
3.二維陣列

陣列中儲存著大量相同型別的關聯資料。如果陣列只有一行資料,如同在一條直線上排列的許陣列稱為一維陣列,一維陣列用乙個下標(元素編號)就可以指定陣列元素。但是實際情況中我們經常用到二維陣列

4.陣列初始化

4.特點

5.多說兩句

陣列在linux核心中基本上隨處可見,所以相對的我對基礎的資料結構的贅述就很少,當我們需要連續的空間儲存一些型別相同的資料,且長度不需要變化時我們通常就會選擇陣列,通過陣列的下標我們能很快的找到陣列元素對應的資料內容,這必須是高效的。在這裡我們先記住,陣列的特點以及基本的使用規則,未來我們會經常用到它~

核心中重要的資料結構

任務鍊錶 task list 流程排程程式為每個活動的流程維護乙個資料塊。這些資料塊儲存在稱為任務列表的鏈結列表中。程序排程程式始終維護乙個指示當前活動程序的當前指標。記憶體對映 memry map 記憶體管理器基於每個程序儲存虛擬位址到實體地址的對映,還儲存有關如何獲取和替換特定頁面的其他資訊。此...

Linux核心中的資料結構與演算法(三)雜湊鍊錶

四,雜湊鍊錶 談到鍊錶就不得不談linux核心中另外乙個重要的結構,雜湊鍊錶。討論這個結構前,你需要對雜湊的最基本的概念要清楚哦,由於我們已經講過linux核心中的普通鍊錶的結構,這裡我們對比他們的區別來了解雜湊鍊錶會直觀一些。linux鍊錶認為雙指標表頭雙迴圈鍊錶對於hash表來說過於浪費,因而設...

半原創 核心中的資料結構 SplayTree

核心中的資料結構 splay tree splay tree 伸展樹 是binary search tree 二叉搜尋樹 daniel sleator和robert e.tarjan發明。但此操作可能會花費o n 時間,但m次操作的最壞情況為o m log2 n splay tree是在節點訪問後,...