Linux 小知識集錦

ksoftirqd是什麼

ksoftirqd是運行在Linux的進程,專門處理系統的軟中斷的。在多核服務器上,每核都有一個ksoftirqd進程。我們經常看到ksoftirqd/0表示這是CPU0的軟中斷處理程序。

 ringr buffer

 環形緩衝器(ringr buffer),也稱作圓形隊列(circular queue),循環緩衝區(cyclic buffer),圓形緩衝區(circula buffer),是一種用於表示一個固定尺寸、頭尾相連的緩衝區的數據結構,適合緩存數據流。最大的好處是環形隊列出隊(讀取)後,不需要對後續隊列內容進行搬移,可以後續由入隊(寫入)覆蓋。

glibc

glibc是GNU發佈的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝linux操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。由於 glibc 囊括了幾乎所有的 UNIX 通行的標準,可以想見其內容包羅萬象。而就像其他的 UNIX 系統一樣,其內含的檔案羣分散於系統的樹狀目錄結構中,像一個支架一般撐起整個操作系統。在 GNU/Linux 系統中,其C函式庫發展史點出了GNU/Linux 演進的幾個重要里程碑,用 glibc 作爲系統的C函式庫,是GNU/Linux演進的一個重要里程碑。

slab

slab是Linux操作系統的一種內存分配機制。其工作是針對一些經常分配並釋放的對象,如進程描述符等,這些對象的大小一般比較小,如果直接採用夥伴系統來進行分配和釋放,不僅會造成大量的內存碎片,而且處理速度也太慢。而slab分配器是基於對象進行管理的,相同類型的對象歸爲一類(如進程描述符就是一類),每當要申請這樣一個對象,slab分配器就從一個slab列表中分配一個這樣大小的單元出去,而當要釋放時,將其重新保存在該列表中,而不是直接返回給夥伴系統,從而避免這些內碎片。slab分配器並不丟棄已分配的對象,而是釋放並把它們保存在內存中。當以後又要請求新的對象時,就可以從內存直接獲取而不用重複初始化。

對象高速緩存的組織,高速緩存的內存區被劃分爲多個slab,每個slab由一個或多個連續的頁框組成,這些頁框中既包含已分配的對象,也包含空閒的對象。

在cache和object中加入slab分配器,是在時間和空間上的折中方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章