導航:首頁 > 操作系統 > linux44內核

linux44內核

發布時間:2022-09-23 01:54:53

linux內核一般佔用多大內存

[root@scs-2 tmp]# free
total used free shared buffers cached
Mem: 3266180 3250004 16176 0 110652 2668236
-/+ buffers/cache: 471116 2795064
Swap: 2048276 80160 1968116
下面是對這些數值的解釋:
total:總計物理內存的大小。
used:已使用多大。
free:可用有多少。
Shared:多個進程共享的內存總額。
Buffers/cached:磁碟緩存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解釋了。
區別:第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。 這兩個的區別在於使用的角度來看,第一行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用,所以他的可用內存是16176KB,已用內存是3250004KB,其中包括,內核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是從應用程序角度來看,對於應用程序來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。
所以從應用程序的角度來說,可用內存=系統free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236
接下來解釋什麼時候內存會被交換,以及按什麼方交換。 當可用內存少於額定值的時候,就會開會進行交換。
如何看額定值:
cat /proc/meminfo
[root@scs-2 tmp]# cat /proc/meminfo
MemTotal: 3266180 kB
MemFree: 17456 kB
Buffers: 111328 kB
Cached: 2664024 kB
SwapCached: 0 kB
Active: 467236 kB
Inactive: 2644928 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 3266180 kB
LowFree: 17456 kB
SwapTotal: 2048276 kB
SwapFree: 1968116 kB
Dirty: 8 kB
Writeback: 0 kB
Mapped: 345360 kB
Slab: 112344 kB
Committed_AS: 535292 kB
PageTables: 2340 kB
VmallocTotal: 536870911 kB
VmallocUsed: 272696 kB
VmallocChunk: 536598175 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
用free -m查看的結果:
[root@scs-2 tmp]# free -m
total used free shared buffers cached
Mem: 3189 3173 16 0 107 2605
-/+ buffers/cache: 460 2729
Swap: 2000 78 1921
查看/proc/kcore文件的大小(內存鏡像):
[root@scs-2 tmp]# ll -h /proc/kcore
-r——– 1 root root 4.1G Jun 12 12:04 /proc/kcore
備註:
佔用內存的測量
測量一個進程佔用了多少內存,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的信息,實際上top等工具也通過這里來獲取相應的信息。
/proc/meminfo 機器的內存使用信息
/proc/pid/maps pid為進程號,顯示當前進程所佔用的虛擬地址。
/proc/pid/statm 進程所佔用的內存
[root@localhost ~]# cat /proc/self/statm
654 57 44 0 0 334 0
輸出解釋
CPU 以及CPU0。。。的每行的每個參數意思(以第一行為例)為:
參數 解釋 /proc//status
Size (pages) 任務虛擬地址空間的大小 VmSize/4
Resident(pages) 應用程序正在使用的物理內存的大小 VmRSS/4
Shared(pages) 共享頁數 0
Trs(pages) 程序所擁有的可執行虛擬內存的大小 VmExe/4
Lrs(pages) 被映像到任務的虛擬內存空間的庫的大小 VmLib/4
Drs(pages) 程序數據段和用戶態的棧的大小 (VmData+ VmStk )4
dt(pages) 04
查看機器可用內存
/proc/28248/>free
total used free shared buffers cached
Mem: 1023788 926400 97388 0 134668 503688
-/+ buffers/cache: 288044 735744
Swap: 1959920 89608 1870312
我們通過free命令查看機器空閑內存時,會發現free的值很小。這主要是因為,在linux中有這么一種思想,內存不用白不用,因此它盡可能的cache和buffer一些數據,以方便下次使用。但實際上這些內存也是可以立刻拿來使用的。
所以 空閑內存=free+buffers+cached=total-used

② linux內核源碼詳解

Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。
對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對於linux內核源代碼來講,我認為,基本要求是:1、操作系統的基本知識; 2、對C語言比較熟悉,最好要有匯編語言的知識和GNU C對標准C的擴展的知識的了解。
另外在閱讀之前,還應該知道Linux內核源代碼的整體分布情況。我們知道現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序、網路等組成。看一下Linux內核源代碼就可看出,各個目錄大致對應了這些方面。Linux內核源代碼的組成如下(假設相對於linux目錄):
arch 這個子目錄包含了此核心源代碼所支持的硬體體系結構相關的核心代碼。如對於X86平台就是i386。
include 這個目錄包括了核心的大多數include文件。另外對於每種支持的體系結構分別有一個子目錄。
init 此目錄包含核心啟動代碼。
mm 此目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/-/mm目錄下,如對應於X86的就是arch/i386/mm/fault.c 。
drivers 系統中所有的設備驅動都位於此目錄中。它又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。
ipc 此目錄包含了核心的進程間通訊代碼。
moles 此目錄包含已建好可動態載入的模塊。
fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/-/kernel目錄下。
net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/-/lib/目錄下。
scripts 此目錄包含用於配置核心的腳本文件。
Documentation 此目錄是一些文檔,起參考作用。

③ linux內核模塊的小問題

使用 locate include/generated/autoconf.h 來查找系統中有沒有這個文件,如果有的話看看它給的路徑的你寫的路徑有無出入。如果沒有的話我就不知道怎麼回事了。
還有你的命令只怕也寫錯了,這樣在父目錄中創建一個與以本目錄為前綴,加上moles為名的新目錄,而不是在本目錄中創建一個名為moles的子目錄。 $(pwd)moles 似應該為 $(pwd)/moles, 另外如果這樣改的話,那麼 moles/Makefile 中的hello.c 也應該改為../hello.c , 要不路徑就錯誤了

④ Linux內核有多大,不同Linux版本內核有什麼差別呢

根據版本的不同,內核大小也不同,新版本為幾百M。

1、發行版的不同,主要是對於版本的選擇,穩定性的測試,還有錯誤修正補丁都會讓每個發行版有自己特殊的內核。

2、官方內核的不同,這個區別很好說,官方的開發是基於 git 版本控制的,去看兩個 git 版本就知道了。一般是硬體支持,還有新的功能演算法,還有驅動增減,錯誤修補什麼的。

Linux的內核版本編號有點像如下的樣子:

2.6.32-642.el6.x86_64

主版本.次版本。發布版本-修改版本。

雖然編號就是如上的方式來編寫,不過依據Linux內核的發展歷程,內核版本的定義有點不太相同。

奇數、偶數版本分類:

在2.6x版本以前,托瓦斯將內核的發展方向分為兩類,並根據這兩類內核的發展分別給予不同的內核編號,那就是:

主、次版本為奇數:開發中版本。

如2.5.xx,這種內核版本主要用於測試與發展新功能,所以通常這種版本僅有內核開發工程師會使用。如果有新增的內核程序代碼,會加到這種版本當中,等到很多工程師測試沒問題後,才加入下一版本的穩定內核中;

主、次版本為偶數:穩定版本。

如2.6.xx,等到內核功能發展成熟後會加到這類版本中,主要用在一般家庭計算機以及企業版本中,重點在於提供一個用戶相對穩定的Linux操作環境平台。

至於發布版本則是在主、次版本架構不變的情況下,新增的功能累積到一定程度後新發布的內核版本。而由於Linux 的內核是使用CPL的授權,因此大家都能夠進行內核程序代碼的修改。

因此,如果有針對一個版本的內核修改過的部分程序代碼,那麼這個被修改過的新內核版本就可以加上所謂的修改版本。

Linux內核版本與Linux發行版本。

Linux內核版本與發行版本的版本並不相同,因為所謂的Linux版本指的應該是內核版本,而目前最新的內核版本應該是4.7.2(2016/08)才對,並不會有7.x的版本出現。

(4)linux44內核擴展閱讀:

Linux內核的任務:

1、從技術層面講,內核是硬體與軟體之間的一個中間層。作用是將應用層序的請求傳遞給硬體,並充當底層驅動程序,對系統中的各種設備和組件進行定址。

2、從應用程序的層面講,應用程序與硬體沒有聯系,只與內核有聯系,內核是應用程序知道的層次中的最底層。在實際工作中內核抽象了相關細節。

3、內核是一個資源管理程序。負責將可用的共享資源(CPU時間、磁碟空間、網路連接等)分配得到各個系統進程。

4、內核就像一個庫,提供了一組面向系統的命令。系統調用對於應用程序來說,就像調用普通函數一樣。

⑤ 如何查看Linux內核版本及發行版本

1、打開Linux面板。

⑥ 如何學習Linux內核該學習哪些方面的知識謝謝!!!

最早接觸inux是看了《linux操作系統實用教程》,98~99年的光景,學習了簡單的操作和內核編譯,那時候開始注意並學習內核。看的第一本是《Unix環境高級編程》,看了一部分沒看完,開始對
if(!(p=fork()))
{
…………
}
else
{
……
}
結構恨意很疑惑,這和一般的應用程序邏輯相背,因此想搞明白內核在干什麼,怎麼乾的。開始買了《操作系統設計與實現》,上下冊,下冊全是minix操作系統內核代碼。它和linux完全不同的,一個是微內核,一個單內核。即便看懂了minix,linux也要從頭看起,反之亦然。因此後來沒鑽進去。我看的第一本Linux內核書是李善平老師的《linux操作系統實驗教程》,當時市面上關於內核的書很少,這本是講2.0.35版的好像,似懂非懂。就開始邊看邊讀源代碼,間或看點操作系統原理的書,有不懂得在論壇上提問,這樣慢慢琢磨,就有點懂了。現在比當時好多了,很多內核的書,各方面剖析得很詳盡。不過要學懂,還是要:1、有好奇心和興趣 2、看書、讀代碼,這樣能夠比較懂。要進一步提高的話還要學會修改內核。有以下書籍可以參考:
1、《linux內核完全剖析》0.11版內核
2、《深入理解linux內核》(1、2、3版) ,3個版本分別對應2.2、2.4、2.6版的內核。
3、《linux內核源代碼情景分析》2.4.0版內核
4、《linux內核設計與實現》
5、《linux設備驅動程序》

⑦ 嵌入式linux 4.x 內核多大

Linux 是一個開放自由的操作系統內核,4.0和2.6相比,佔用空間區別不大,具有一些鮮明特點如下:
(1) Linux 是一個一體化內核;
註:「一體化內核」是也稱「宏內核」,是相對於「微內核」而言的。幾乎所有
的嵌入式和實時系統都採用微內核,如 VxWorks、uC/OS-II、PSOS 等。
(2) 可移植性強。盡管 Linus 最初只為在 X86 PC 上實現一個「類 UNIX」,後來隨
著加入者的努力,Linux 目前已經成為支持硬體平台最廣泛的操作系統;
註:目前已經在 X86、IA64、ARM、MIPS、AVR32、M68K、S390、Blackfin、M32R
等眾多架構處理器上運行。
(3) 是一個可裁剪操作系統內核。Linux 極具伸縮性,內核可以任意裁剪,可以大至
幾十或者上百兆,可以小至幾百 K,運行的設備從超級計算機、大型伺服器到
小型嵌入式系統、掌上移動設備或者嵌入式模塊,都可以運行;
(4) 模塊化。Linux 內核採用模塊化設計,很多功能模塊都可以編譯為模塊,可以在
內核運行中動態載入/卸載而無需重啟系統;
(5) 網路支持完善。Linux 內核集成了完整的 POSIX 網路協議棧,網路功能完善;
(6) 穩定性強。運行 Linux 的內核的伺服器可以做到幾年不用復位重啟;
(7) 安全性好。Linux 源碼開放,由眾多黑客參與 Linux 的開發,一旦發現漏洞都能及時修復;
(8) 支持的設備廣泛。Linux 源碼中,設備驅動源碼佔了很大比例,幾乎能支持任何
常見設備,無論是很老舊的設備還是最新推出的硬體設備,幾乎都能找到 Linux下的驅動。

⑧ linux 4.4.0內核有什麼特點

Linux 是一個開放自由的操作系統內核,具有一些鮮明特點如下: (1) Linux 是一個一體化內核; 註:「一體化內核」是也稱「宏內核」,是相對於「微內核」而言的。幾乎所有 的嵌入式和實時系統都採用微內核,如 VxWorks、uC/OS-II、PSOS 等。 ...

⑨ Linux內核應該怎麼去學習

1 學習一些操作系統的理論知識,一些概念。比如:進程,內存管理,文件系統等等。關於這一方面的書籍太多了,自己找一本就行了

2 學習x86匯編,雖然linux用的是AT&T匯編,但二者只是格式不同而已。而且學習x86匯編有助於了解x86系統結構。書籍推薦王爽的《匯編語言》 ,我學的時候用的不是這個,後面看到這本書,才覺得自己做了「苦功了」。學完大部分匯編指令時,找些匯編程序讀讀,熟悉這些指令的用法。不需要有寫匯編程序的能力,能讀就行了,當然會寫更好

3 趙炯的《Linux內核0.11完全注釋》。這個linux內核版本低,作者也講得很詳細。不過關於x86體系的那一部分,作者講得很繁瑣,這一部分一定要大體看懂,那後面章節的內容就沒有多大的問題了。我先把書通看了一遍,用了1個月的時間。後來,再返回來一個一個研究,用了2個月。
之所以看這本書,是讓自己對內核有個實質的感受,不僅僅只是理論上的東西。

4 毛德操的《linux內核情景分析》。linux內核版本2.4.0,這本書很厚,上下兩冊。我通讀一遍,用了2個月時間。後來,再返回來一個一個研究,現在已用了2個月,正在研究中。。。。就我個人覺得,linux內核最難的是內存管理,這2個月我就只大體搞清內存頁面的周轉,但搞清了這個,就會對內核的整體結構有個大致的了解,因為你已經清楚了用戶進程和內核的其它部分是怎樣使用內存頁面的。

5 學習linux內核最需要的是堅持和思考。這是一個很長的過程,也許你會發現學了linux內核,並不會給你帶來什麼,我現在就是這樣覺得的,感覺自己什麼都不會做,真希望有人能我一些建議!不過學習學習也是有好處的,比如看了趙炯的《Linux內核0.11完全注釋》後,你再去看UCOS-II,會感覺那太容易了!也許學習linux內核會對將來的工作有所幫助吧!

閱讀全文

與linux44內核相關的資料

熱點內容
皓強工具解壓步驟 瀏覽:688
部隊抗洪搶險命令範文 瀏覽:886
歐姆龍plc編程軟體使用教程 瀏覽:592
ai文件pdf 瀏覽:911
騰訊雲伺服器掛載混合雲 瀏覽:758
智能小車用什麼單片機 瀏覽:463
java怎麼給窗口關閉 瀏覽:940
列舉51單片機的定址方式 瀏覽:706
剪輯app怎麼寫長篇文字 瀏覽:400
app專屬流量過月租怎麼不更新 瀏覽:654
王者程序員都有誰 瀏覽:76
給牛換腳掌解壓 瀏覽:387
圍棋有多少種演算法 瀏覽:602
unity資源包在哪個文件夾 瀏覽:704
阿里雲伺服器遠程鏈接不成功 瀏覽:482
文件系統pdf 瀏覽:767
原神安卓區服什麼意思 瀏覽:37
貝殼app怎麼線上發布 瀏覽:161
如何挑選安卓系統機頂盒 瀏覽:54
安卓快充使用有什麼注意事項 瀏覽:911