新聞中心
隨著IT技術(shù)的日益發(fā)展,Linux操作系統(tǒng)在各個(gè)領(lǐng)域得到了越來(lái)越廣泛的應(yīng)用。作為一種高性能、穩(wěn)定性好的操作系統(tǒng),它被廣泛用于服務(wù)器、路由器、網(wǎng)絡(luò)存儲(chǔ)等領(lǐng)域。然而,要想發(fā)揮Linux操作系統(tǒng)的優(yōu)勢(shì),需要對(duì)其內(nèi)存管理機(jī)制有深入的了解。本文將從幾個(gè)方面介紹Linux內(nèi)存管理機(jī)制,幫助讀者優(yōu)化內(nèi)存使用,提高系統(tǒng)性能。

一、了解Linux內(nèi)存管理機(jī)制
在Linux操作系統(tǒng)中,內(nèi)存是一種非常重要的資源。 Linux內(nèi)存管理機(jī)制包含了內(nèi)存分配、內(nèi)存回收、內(nèi)存保護(hù)等一系列的操作。為了快速高效地管理內(nèi)存資源,Linux內(nèi)存管理機(jī)制主要采用了以下幾種技術(shù):
1、內(nèi)存映射技術(shù)(Memory Mapping Technology)
內(nèi)存映射技術(shù)是Linux系統(tǒng)中常用的一種內(nèi)存管理技術(shù)。這種技術(shù)將一個(gè)文件映射到虛擬地址空間中,用戶可以通過(guò)訪問(wèn)虛擬地址空間的方式讀寫文件,而不需要直接去訪問(wèn)硬盤。內(nèi)存映射技術(shù)可以極大地提高文件的讀寫效率,同時(shí)也可以方便地實(shí)現(xiàn)內(nèi)存共享機(jī)制。
2、頁(yè)面置換技術(shù)(Page Swapping Technology)
頁(yè)面置換技術(shù)被用來(lái)調(diào)整內(nèi)存中的頁(yè)面,使得空閑的頁(yè)面被回收以供其他進(jìn)程使用。在Linux中,頁(yè)面置換技術(shù)的核心機(jī)制是頁(yè)面置換算法。目前常用的頁(yè)面置換算法有先進(jìn)先出算法(FIFO)、最近最少使用算法(LRU)、次久次新算法(SC)等多種算法。不同的算法適用于不同的應(yīng)用場(chǎng)景,可以根據(jù)具體情況進(jìn)行選擇。
3、Slab分配器
Slab分配器是一種內(nèi)存池技術(shù),主要用于管理內(nèi)核中的數(shù)據(jù)結(jié)構(gòu)和內(nèi)存塊。在操作系統(tǒng)運(yùn)行過(guò)程中,經(jīng)常需要分配和釋放像inode、dentry、file、socket等這樣的小型數(shù)據(jù)結(jié)構(gòu)。Slab分配器能夠高效地管理這些數(shù)據(jù)結(jié)構(gòu),避免反復(fù)分配和釋放內(nèi)存的開銷。
二、優(yōu)化Linux內(nèi)存使用
浪費(fèi)內(nèi)存會(huì)導(dǎo)致系統(tǒng)性能下降,因此需要合理使用內(nèi)存資源。操作系統(tǒng)提供多種優(yōu)化內(nèi)存使用的方法,可以根據(jù)具體情況進(jìn)行調(diào)整。
1、調(diào)整內(nèi)存緩存
Linux系統(tǒng)中有三種內(nèi)存緩存:頁(yè)緩存、slab緩存和inode緩存。其中,頁(yè)緩存是用于緩存文件的數(shù)據(jù)塊,slab緩存是用于緩存內(nèi)核中的數(shù)據(jù)結(jié)構(gòu),inode緩存是用于緩存文件系統(tǒng)的inode節(jié)點(diǎn)。可以通過(guò)sysctl命令和/proc/sys/vm目錄中的相關(guān)文件調(diào)整內(nèi)存緩存使用。例如,可以通過(guò)修改/proc/sys/vm/dirty_expire_centisecs設(shè)置臟頁(yè)的過(guò)期時(shí)間,從而控制內(nèi)存中臟頁(yè)的數(shù)量。
2、關(guān)閉不必要的服務(wù)
在Linux系統(tǒng)中,由于默認(rèn)啟動(dòng)了一些不必要的服務(wù),這些服務(wù)會(huì)占用大量的內(nèi)存資源。一些服務(wù)可以通過(guò)設(shè)置開關(guān)或卸載不需要的軟件包來(lái)關(guān)閉。通過(guò)關(guān)閉不必要的服務(wù),可以釋放更多的內(nèi)存資源,提高系統(tǒng)性能。
3、控制程序的內(nèi)存使用
在Linux操作系統(tǒng)中,如果多個(gè)進(jìn)程同時(shí)申請(qǐng)大量的內(nèi)存,就會(huì)導(dǎo)致內(nèi)存不足的情況??梢酝ㄟ^(guò)ulimit命令設(shè)置每個(gè)用戶進(jìn)程可用的內(nèi)存上限,從而控制程序的內(nèi)存使用。同時(shí),還可以通過(guò)nice命令調(diào)整進(jìn)程的優(yōu)先級(jí),優(yōu)先為一些重要的進(jìn)程保留內(nèi)存資源。
三、監(jiān)控系統(tǒng)內(nèi)存使用
在操作系統(tǒng)運(yùn)行過(guò)程中,需要通過(guò)監(jiān)控系統(tǒng)內(nèi)存使用情況,及時(shí)發(fā)現(xiàn)和解決內(nèi)存不足的問(wèn)題。Linux系統(tǒng)內(nèi)置了一些工具,可以用于監(jiān)控內(nèi)存使用情況,例如vmstat、top等。
1、vmstat命令
vmstat命令用于顯示Linux系統(tǒng)的內(nèi)存使用情況,它可以列出內(nèi)存的總量,已經(jīng)使用的內(nèi)存量,可用內(nèi)存量,緩存和緩存的釋放情況,頁(yè)面入/出隊(duì)列等信息。此外,還可以通過(guò)vmstat命令實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的內(nèi)存使用狀況,及時(shí)發(fā)現(xiàn)并解決內(nèi)存不足的問(wèn)題。
2、top命令
top命令是Linux系統(tǒng)中常用的監(jiān)控內(nèi)存使用情況的工具。它可以實(shí)時(shí)顯示內(nèi)存使用率、進(jìn)程的狀態(tài)、CPU占用率、線程數(shù)等信息。通過(guò)top命令,用戶可以更加全面地了解系統(tǒng)的內(nèi)存使用情況,及時(shí)進(jìn)行優(yōu)化和調(diào)整。
四、結(jié)語(yǔ)
本文對(duì)Linux內(nèi)存管理機(jī)制、優(yōu)化內(nèi)存使用和監(jiān)控內(nèi)存使用情況等方面進(jìn)行了簡(jiǎn)單介紹,希望讀者能夠從中獲得一些啟示。Linux操作系統(tǒng)已經(jīng)成為企業(yè)級(jí)應(yīng)用的首選平臺(tái),精通Linux系統(tǒng)的開發(fā)人員將具有廣闊的就業(yè)前景和發(fā)展空間。因此,希望廣大開發(fā)人員能夠重視Linux內(nèi)存管理機(jī)制的學(xué)習(xí),為企業(yè)的發(fā)展做出更大的貢獻(xiàn)。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
linux操作系統(tǒng)的詳細(xì)啟動(dòng)過(guò)程,謝謝(硬件啟動(dòng)的先后順序)
當(dāng)稿液升用戶打開PC的電源,BIOS開機(jī)自檢,按BIOS中設(shè)置的啟動(dòng)設(shè)備(通常是硬盤)啟動(dòng),
接著啟動(dòng)設(shè)備上安裝的引導(dǎo)程序lilo或grub開始引導(dǎo)Linux,Linux首先進(jìn)行內(nèi)核的引導(dǎo),
接下來(lái)執(zhí)行init程序,init程序調(diào)用了rc.sysinit和rc等程序,rc.sysinit和rc當(dāng)完成系
統(tǒng)初始化和運(yùn)行服務(wù)的任務(wù)后,返回init;init啟動(dòng)了mingetty后,打開了終端供用戶登
錄系統(tǒng),用戶登錄成功后進(jìn)入了Shell,這樣就完成了從開機(jī)到登錄的整個(gè)啟動(dòng)過(guò)程。
加載內(nèi)核
LILO啟動(dòng)之后,如果你選擇了Linux作為準(zhǔn)備引導(dǎo)的操作系統(tǒng),之一個(gè)被加載的東西就是內(nèi)核。請(qǐng)記住此時(shí)的計(jì)算機(jī)內(nèi)存中還不存在任何操作系統(tǒng), PC(因?yàn)樗鼈兲烊坏脑O(shè)計(jì)缺陷)也還沒(méi)有辦法存取機(jī)器上全部的內(nèi)存。因此埋慶,內(nèi)核就必須完整地加載到可用RAM的之一個(gè)兆字節(jié)之內(nèi)。為了實(shí)現(xiàn)這個(gè)目的,內(nèi)核是被壓縮鍵老了的。這個(gè)文件的頭部包含著必要的代碼,先設(shè)置CPU進(jìn)入安全模式(以此解除內(nèi)存限制),再對(duì)內(nèi)核的剩余部分進(jìn)行解壓縮。
執(zhí)行內(nèi)核
內(nèi)核在內(nèi)存中解壓縮之后,就可以開始運(yùn)行了。此時(shí)的內(nèi)核只知道它本身內(nèi)建的各種功能,也就是說(shuō)被編譯為模塊的內(nèi)核部分還不能使用。最基本的是,內(nèi)核必須有足夠的代碼設(shè)置自己的虛擬內(nèi)存子系統(tǒng)和根文件系統(tǒng)(通常就是ext2文件系統(tǒng))。一旦內(nèi)核啟動(dòng)運(yùn)行,對(duì)硬件的檢測(cè)就會(huì)決定需要對(duì)哪些設(shè)備驅(qū)動(dòng)程序進(jìn)行初始化。從這里開始,內(nèi)核就能夠掛裝根文件系統(tǒng)(這個(gè)過(guò)程類似于Windows識(shí)別并存取C盤的過(guò)程)。內(nèi)核掛裝了根文件系統(tǒng)之后,將啟動(dòng)并運(yùn)行一個(gè)叫做 init的程序。
注意:在這里我們故意略去了Linux內(nèi)核啟動(dòng)的許多細(xì)節(jié),這些細(xì)節(jié)只有內(nèi)核開發(fā)人員才感興趣。如果你好奇的話,可以訪問(wèn)http://
www.redhat.com:8080
地址處的 “Kernel Hackers Guide”。
init進(jìn)程
init進(jìn)程是非內(nèi)核進(jìn)程中之一個(gè)被啟動(dòng)運(yùn)行的,因此它的進(jìn)程編號(hào)PID的值總是1。init讀它的配置文件/etc/inittab,決定需要啟動(dòng)的運(yùn)行級(jí)別(Runlevel)。從根本上說(shuō),運(yùn)行級(jí)別規(guī)定了整個(gè)系統(tǒng)的行為,每個(gè)級(jí)別(分別由0到6的整數(shù)表示)滿足特定的目的。如果定義了 initdefault級(jí)別,這個(gè)值就直接被選中,否則需要由用戶輸入一個(gè)代表運(yùn)行級(jí)別的數(shù)值。
輸入代表運(yùn)行級(jí)別的數(shù)字之后,init根據(jù)/etc/inittab文件中的定義執(zhí)行一個(gè)命令腳本程序。缺省的運(yùn)行級(jí)別取決于安裝階段對(duì)登錄程序的選擇:是使用基于文本的,還是使用基于X-Window的登錄程序。
rc命令腳本程序
我們已經(jīng)知道,當(dāng)運(yùn)行級(jí)別發(fā)生改變時(shí),將由/etc/inittab文件定義需要運(yùn)行哪一個(gè)命令腳本程序。這些命令腳本程序負(fù)責(zé)啟動(dòng)或者停止該運(yùn)行級(jí)別特定的各種服務(wù)。由于需要管理的服務(wù)數(shù)量很多,因此需要使用rc命令腳本程序。其中,最主要的一個(gè)是/etc/rc.d/rc,它負(fù)責(zé)為每一個(gè)運(yùn)行級(jí)別按照正確的順序調(diào)用相應(yīng)的命令腳本程序。我們可以想象,這樣一個(gè)命令腳本程序很容易變得難以控制!為了防止這類事件的發(fā)生,需要使用精心設(shè)計(jì)的方案。
對(duì)每一個(gè)運(yùn)行級(jí)別來(lái)說(shuō),在/etc/rc.d子目錄中都有一個(gè)對(duì)應(yīng)的下級(jí)目錄。這些運(yùn)行級(jí)別的下級(jí)子目錄的命名方法是rcX.d,其中的X就是代表運(yùn)行級(jí)別的數(shù)字。比如說(shuō),運(yùn)行級(jí)別3的全部命令腳本程序都保存在/etc/rc.d/rc3.d子目錄中。
在各個(gè)運(yùn)行級(jí)別的子目錄中,都建立有到/etc/rc.d/init.d子目錄中命令腳本程序的符號(hào)鏈接,但是,這些符號(hào)鏈接并不使用命令腳本程序在 /etc/rc.d/init.d子目錄中原來(lái)的名字。如果命令腳本程序是用來(lái)啟動(dòng)一個(gè)服務(wù)的,其符號(hào)鏈接的名字就以字母S打頭;如果命令腳本程序是用來(lái)關(guān)閉一個(gè)服務(wù)的,其符號(hào)鏈接的名字就以字母K打頭。
許多情況下,這些命令腳本程序的執(zhí)行順序都很重要。如果沒(méi)有先配置網(wǎng)絡(luò)接口,就沒(méi)有辦法使用DNS服務(wù)解析主機(jī)名!為了安排它們的執(zhí)行順序,在字母S 或者K的后面緊跟著一個(gè)兩位數(shù)字,數(shù)值小的在數(shù)值大的前面執(zhí)行。比如:/etc/rc.d/rc3.d/S50inet就會(huì)在 /etc/rc.d/rc3.d/S55named之前執(zhí)行(S50inet配置網(wǎng)絡(luò)設(shè)置,S55named啟動(dòng)DNS服務(wù)器)。
存放在/etc/rc.d/init.d子目錄中的、被符號(hào)鏈接上的命令腳本程序是真正的實(shí)干家,是它們完成了啟動(dòng)或者停止各種服務(wù)的操作過(guò)程。當(dāng) /etc/rc.d/rc運(yùn)行通過(guò)每個(gè)特定的運(yùn)行級(jí)別子目錄的時(shí)候,它會(huì)根據(jù)數(shù)字的順序依次調(diào)用各個(gè)命令腳本程序執(zhí)行。它先運(yùn)行以字母K打頭的命令腳本程序,然后再運(yùn)行以字母S打頭的命令腳本程序。對(duì)以字母K打頭的命令腳本程序來(lái)說(shuō),會(huì)傳遞Stop參數(shù);類似地對(duì)以字母S打頭的命令腳本程序來(lái)說(shuō),會(huì)傳遞 Start參數(shù)。
編寫自己的rc命令腳本
在維護(hù)Linux系統(tǒng)運(yùn)轉(zhuǎn)的日子里,肯定會(huì)遇到需要系統(tǒng)管理員對(duì)開機(jī)或者關(guān)機(jī)命令腳本進(jìn)行修改的情況。有兩種方法可以用來(lái)實(shí)現(xiàn)修改的目的:
● 如果所做的修改只在引導(dǎo)開機(jī)的時(shí)候起作用,并且改動(dòng)不大的話,可以考慮簡(jiǎn)單地編輯一下/etc/rc.d/rc.local腳本。這個(gè)命令腳本程序是在引導(dǎo)過(guò)程的最后一步被執(zhí)行的。
● 如果所做的修改比較細(xì)致,或者還要求關(guān)閉進(jìn)程使之明確地停止運(yùn)行,則需要在/etc/rc.d/init.d子目錄中添加一個(gè)命令腳本程序。這個(gè)命令腳本程序必須可以接受Start和Stop參數(shù)并完成相應(yīng)的操作。
之一種方法,編輯/etc/rc.d/rc.local腳本,當(dāng)然是兩種方法中比較簡(jiǎn)單的。如果想在這個(gè)命令腳本程序中添加內(nèi)容,只需要使用喜歡的編輯器程序打開它,再把打算執(zhí)行的命令附加到文件的末尾就可以了。這對(duì)一兩行的修改來(lái)說(shuō)的確很便利。
如果確實(shí)需要使用一個(gè)命令腳本程序,這時(shí)必須選擇第二個(gè)方法。編寫一個(gè)rc命令腳本程序的過(guò)程并不像想象中那么困難。我們下面就給出一個(gè)例子,看看它是怎樣實(shí)現(xiàn)的(順便說(shuō)一句,你可以把我們的例子當(dāng)作范本,按照自己的需要進(jìn)行修改和添加)。
假設(shè)你打算每隔60分鐘調(diào)用一個(gè)特殊的程序來(lái)彈出一條消息,提醒自己需要從鍵盤前面離開休息一會(huì)兒,命令腳本程序?qū)ㄏ旅鎺讉€(gè)部分:
● 關(guān)于這個(gè)命令腳本程序功能的說(shuō)明(這樣就不會(huì)在一年之后忘記它);
● 在試圖運(yùn)行它之前驗(yàn)證這個(gè)命令腳本程序確實(shí)存在;
● 接受start和stop參數(shù)并執(zhí)行要求的動(dòng)作。
參數(shù)給定后,我們就可以編寫命令的腳本程序。這個(gè)程序很簡(jiǎn)單,大家可以自己編寫一下,我在這里就不給出了。
編寫好新的命令腳本程序之后,再?gòu)南嚓P(guān)的運(yùn)行級(jí)別子目錄中加上必要的符號(hào)鏈接,來(lái)控制這個(gè)命令腳本程序的啟動(dòng)或者停止。在我的印象中,只想讓它在運(yùn)行級(jí)別3或者運(yùn)行級(jí)別5中啟動(dòng),原因是我認(rèn)為只有這兩個(gè)運(yùn)行級(jí)別才是日常工作的地方。最后,希望這個(gè)命令腳本程序在進(jìn)入運(yùn)行級(jí)別6(重啟動(dòng))的時(shí)候被關(guān)閉。
激活或者禁止服務(wù)項(xiàng)目
有的時(shí)候會(huì)發(fā)現(xiàn),在引導(dǎo)的時(shí)候并不需要某個(gè)特定的服務(wù)被啟動(dòng)。如果你正在考慮使用Linux替換Windows NT的文件和打印服務(wù)器,就更是如此。
我們已經(jīng)知道,在特定的運(yùn)行級(jí)別子目錄中給符號(hào)鏈接改個(gè)名稱,就可以讓該服務(wù)不被啟動(dòng),如把其名稱的之一個(gè)字母由S改為K。一旦熟練掌握了命令行和符號(hào)鏈接,就會(huì)發(fā)現(xiàn)這是激活或者禁止服務(wù)的最快辦法。
在學(xué)習(xí)這個(gè)改名方法的時(shí)候,可能會(huì)覺(jué)得圖形化的操作界面ksysv比較容易掌握。雖然它原來(lái)是設(shè)計(jì)使用在KDE環(huán)境里的,但在 Red Hat Linux 7.2下缺省安裝的GNOME環(huán)境里也運(yùn)行得很好。如果想啟動(dòng)它,只需簡(jiǎn)單地打開一個(gè)xterm窗口,并輸入ksysv命令就可以了。屏幕上會(huì)出現(xiàn)一個(gè)窗口,其中列出了能夠修改的全部參數(shù),需要時(shí)還包括在線幫助。
警告:如果是在一個(gè)現(xiàn)實(shí)中的系統(tǒng)上學(xué)習(xí)本文的知識(shí),要多多運(yùn)用常識(shí)。當(dāng)試著對(duì)啟動(dòng)腳本程序進(jìn)行修改的時(shí)候,要記住所做的修改可能會(huì)造成你的系統(tǒng)不能正常工作,而且無(wú)法采用重啟動(dòng)的方法恢復(fù)。不要在正常運(yùn)轉(zhuǎn)的系統(tǒng)上實(shí)驗(yàn)新的設(shè)置,對(duì)你準(zhǔn)備修改的文件要全部進(jìn)行備份。最重要的是,在手邊要準(zhǔn)備一張引導(dǎo)盤以防不測(cè)
1983年,理察·馬修·斯托曼(Richard Stallman)創(chuàng)立了GNU計(jì)劃(GNU Project)。這個(gè)計(jì)劃有一個(gè)目標(biāo)是為了發(fā)展一個(gè)完全免費(fèi)自由的 Unix-like 操作系統(tǒng)。自1990年代發(fā)起這個(gè)計(jì)劃以來(lái),GNU 開始大量的產(chǎn)生或收集各種系統(tǒng)所必備的元件昌敬,像是——函式庫(kù)(libraries)、編譯器(compilers)、偵錯(cuò)工具(debuggers)、文字耐爛慎編輯器(text editors)、網(wǎng)頁(yè)服務(wù)器(web server),以及一個(gè)Unix的使用者接口(Unix shell)——除了執(zhí)行核心(kernel)仍然付闕外。1990年,GNU計(jì)劃開始在馬赫微核(Mach microkernel)的架構(gòu)之上開發(fā)系統(tǒng)核心,也就是所謂的GNU Hurd,但是這個(gè)基于Mach的設(shè)計(jì)異常復(fù)雜,發(fā)展進(jìn)度則相對(duì)緩慢。
Linux的基本思想有兩點(diǎn):之一,一切都是文件;第二,每個(gè)軟件都有確定的用途,同時(shí)它們都盡可能被編寫得更好。其中之一條詳細(xì)來(lái)講就是系統(tǒng)歷橘中的所有都?xì)w結(jié)為一個(gè)文件,包括命令、硬件和軟件設(shè)備、操作系統(tǒng)、進(jìn)程等等對(duì)于操作系統(tǒng)內(nèi)核而言,都被視為擁有各自特性或類型的文件。至于說(shuō)Linux是基于Unix的,很大程度上也是因?yàn)檫@兩者的基本思想十分相近。
在啟動(dòng)之前,各個(gè)系統(tǒng)應(yīng)該是沒(méi)什么差別的
之一步: 當(dāng)我們按下電源開關(guān)時(shí),電源就開始向主板和其它設(shè)備供電,此時(shí)電壓還不太穩(wěn)定,主板上的控制芯片組會(huì)向CPU發(fā)出并保持一個(gè)RESET(重置)信號(hào),讓CPU內(nèi)部自動(dòng)恢復(fù)到初始狀態(tài),但CPU在此刻不會(huì)馬上執(zhí)行指令。當(dāng)芯片組檢測(cè)到電源已經(jīng)開始穩(wěn)定供電了(當(dāng)然從不穩(wěn)定到穩(wěn)定的過(guò)程只是一瞬間的事情),它便撤去RESET信號(hào)(如果是手工按下計(jì)算機(jī)面板上的Reset按鈕來(lái)重啟機(jī)器,那么松開該按鈕時(shí)芯片組就會(huì)撤去RESET信號(hào)),CPU馬上就從地址FFFF0H處開始執(zhí)行指令,從前面的介紹可知,這個(gè)地址實(shí)際上在系統(tǒng)BIOS的地址范圍內(nèi),無(wú)論是Award BIOS還是AMI BIOS,放在這里的只是一條跳轉(zhuǎn)指令,跳到系統(tǒng)BIOS中真正的啟動(dòng)代碼處。
第二步: 系統(tǒng)BIOS的啟動(dòng)代碼首先要做的事情就是進(jìn)行POST(Power-On Self Test,加電后自檢),POST的主要任務(wù)是檢測(cè)系統(tǒng)中一些關(guān)鍵設(shè)備是否存在和能否正常工作,例如內(nèi)存和顯卡等設(shè)備。搏好廳由于POST是最早進(jìn)行的檢測(cè)過(guò)程,此時(shí)顯卡還沒(méi)有初始化,如果系統(tǒng)BIOS在進(jìn)行POST的過(guò)程中發(fā)現(xiàn)了一些致命錯(cuò)誤,例如沒(méi)有找到內(nèi)存或者內(nèi)存有問(wèn)題(此時(shí)只會(huì)檢查640K常規(guī)內(nèi)存),那么系統(tǒng)BIOS就會(huì)直接控制喇叭發(fā)聲來(lái)報(bào)告錯(cuò)誤,聲音的長(zhǎng)短和次數(shù)代表了錯(cuò)誤的類型。在正常情況下,POST過(guò)程進(jìn)行得非???,我們幾乎無(wú)法感覺(jué)到它的存在,POST結(jié)束之后就會(huì)調(diào)用其它代碼來(lái)進(jìn)行更完整的硬件檢測(cè)。
第三步: 接下來(lái)系統(tǒng)BIOS將查找顯卡的BIOS,前面說(shuō)過(guò),存放顯卡BIOS的ROM芯片的起始地址通常設(shè)在C0000H處,系統(tǒng)BIOS在這個(gè)地方找到顯卡BIOS之后就調(diào)用它的初始化代碼,由顯卡BIOS來(lái)初始化顯卡,此時(shí)多數(shù)顯卡都會(huì)在屏幕上顯示出一基隱些初始化信息,介紹生產(chǎn)廠商、圖形芯片類型等內(nèi)容,不過(guò)這個(gè)畫面幾乎是一閃而過(guò)。系統(tǒng)BIOS接著會(huì)查找其它設(shè)備的BIOS程序,找到之后同樣要調(diào)用這些BIOS內(nèi)部的初始化代碼來(lái)初始化相關(guān)的設(shè)備。
第四步: 查找完所有其它設(shè)備的BIOS之后,系統(tǒng)BIOS將顯示出它自己的啟動(dòng)畫面,其中包括有系統(tǒng)BIOS的類型、序列號(hào)和版本號(hào)等內(nèi)容。
第五步: 接著系統(tǒng)BIOS將檢測(cè)和顯示CPU的類型和工作頻率,然后開始測(cè)試所有的RAM,并同時(shí)在屏幕上顯示內(nèi)存測(cè)試的進(jìn)度,我們可以在CMOS設(shè)置中自行決定使用簡(jiǎn)單耗時(shí)少或者詳細(xì)耗時(shí)多的測(cè)試方式。
第六步: 內(nèi)存測(cè)試通過(guò)之后,系統(tǒng)BIOS將開始檢測(cè)系統(tǒng)中安裝的一些標(biāo)準(zhǔn)硬件設(shè)備,包括硬盤、CD-ROM、串口、并口、軟驅(qū)等設(shè)備,另外絕大多數(shù)較新版本的系統(tǒng)BIOS在這一過(guò)程中還要自動(dòng)檢測(cè)和設(shè)置內(nèi)存的定時(shí)參數(shù)、硬盤參數(shù)和訪問(wèn)模式等。
第七步: 標(biāo)準(zhǔn)設(shè)備檢測(cè)完畢后,系統(tǒng)BIOS內(nèi)部的支持即插即用的代碼將開始檢測(cè)和配置系統(tǒng)中安裝的即插即用設(shè)備,每找到一個(gè)設(shè)備之后,系統(tǒng)BIOS都會(huì)在屏幕上顯示出設(shè)備的名稱和型號(hào)等信息,同時(shí)為該設(shè)備分配中斷、DMA通道和I/O端口等資源。
第八步: 到這一步為止,所有硬件都已經(jīng)檢測(cè)配置完畢了,多數(shù)系統(tǒng)BIOS會(huì)重新清屏并在屏幕上方顯示出一個(gè)表格,其中概略地列出了系統(tǒng)中安裝的各種標(biāo)準(zhǔn)硬件設(shè)備,以及它們使用的資源和一些相關(guān)工作參數(shù)。
第九步: 接下來(lái)系統(tǒng)BIOS將更新ESCD(Extended System Configuration Data,擴(kuò)展系統(tǒng)配置數(shù)據(jù))。ESCD是系統(tǒng)BIOS用來(lái)與操作系統(tǒng)交換硬件配置信息的一種手段,這些數(shù)據(jù)被存放在CMOS(一小塊特殊的RAM,由主板上的電池來(lái)供電)之中。
通常ESCD數(shù)據(jù)只在系統(tǒng)硬件配置發(fā)生改變后才會(huì)更新,所以不是每次啟動(dòng)機(jī)器時(shí)我們都能夠看到“Update ESCD… Success”這樣的信息,不過(guò),某些主板的系統(tǒng)BIOS在保存ESCD數(shù)襪判據(jù)時(shí)使用了與Windows系統(tǒng)不相同的數(shù)據(jù)格式,于是Windows在它自己的啟動(dòng)過(guò)程中會(huì)把ESCD數(shù)據(jù)修改成自己的格式,但在下一次啟動(dòng)機(jī)器時(shí),即使硬件配置沒(méi)有發(fā)生改變,系統(tǒng)BIOS也會(huì)把ESCD的數(shù)據(jù)格式改回來(lái),如此循環(huán),將會(huì)導(dǎo)致在每次啟動(dòng)機(jī)器時(shí),系統(tǒng)BIOS都要更新一遍ESCD,這就是為什么有些機(jī)器在每次啟動(dòng)時(shí)都會(huì)顯示出相關(guān)信息的原因。
第十步: ESCD更新完畢后,系統(tǒng)BIOS的啟動(dòng)代碼將進(jìn)行它的最后一項(xiàng)工作,即根據(jù)用戶指定的啟動(dòng)順序從軟盤、硬盤或光驅(qū)啟動(dòng)。
linux ram 操作的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux ram 操作,Linux RAM操作指南:優(yōu)化內(nèi)存利用,提升系統(tǒng)性能,linux操作系統(tǒng)的詳細(xì)啟動(dòng)過(guò)程,謝謝(硬件啟動(dòng)的先后順序)的信息別忘了在本站進(jìn)行查找喔。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
網(wǎng)站名稱:LinuxRAM操作指南:優(yōu)化內(nèi)存利用,提升系統(tǒng)性能(linuxram操作)
本文網(wǎng)址:http://www.dlmjj.cn/article/dpdhgsd.html


咨詢
建站咨詢
