手把手教你做北郵作業系統小學期實驗一——Linux啟動過程優化1
1.實驗環境:
硬體:Intel i5
作業系統:Windows 8.1
虛擬機器:VMware Workstation 12.5.0
軟體:Red Hat Enterprise Linux 9 (Linux 核心 2.4.20-8)
2.實驗目的:
Linux系統從啟動到登陸shell介面需要花費較長的時間,在普通微機上的啟動過程需要十幾秒或更長。如果要啟動X介面,那花費的時間更多了。啟動時間過長對嵌入式系統而言,如資訊家電產品(機頂盒),是無法接受的。、
Linux系統的啟動由核心態下的啟動和使用者態下的啟動組成。利用本實驗中採取的多種方法,可以簡化Linux系統啟動過程,提高Linux系統啟動速度,適應嵌入式系統快速啟動和實時應用的需要。
3.實驗內容:
a. 分析原始碼,理解啟動流程。
b. 在核心態下,利用do_gettimeofday()函式測試時鐘初始化完成後,系統啟動過程中的幾個主要部分的啟動時間。如start_kernel()中的控制檯console_init(),init()函式過程中的檔案系統初始化和檔案系統載入,尋找初始化時間較長的核心部分。
c. 至少選取啟動過程中的5處較大的程式碼模組,測量其執行時間,保證測出的執行時間可觀測。
d. 核心態程序啟動過程優化——IDE檢測修改
- 修改linux/include/asm-I386/ide.h中巨集定義#define MAX_HWIFS 10,
- 減少核心啟動時檢測的埠數目,提高啟動速度。
編寫測試函式,測試實驗前後IDE介面檢測時間。
e. 使用者程序啟動過程優化——開機畫面字元隱藏技術
f. 使用者程序啟動過程優化——開機畫面隱藏/調出
g. 使用者程序啟動過程化——開機畫面更換
h. 經過上述核心態和使用者態優化後,測試系統總的啟動時間
綜上所述,實驗分為核心態啟動優化和使用者態啟動優化
核心態啟動優化測量幾個較大程式碼模組的啟動時間
- 更改MAX_HWIFS,減少檢測IDE過程的啟動時間
使用者態啟動優化 - 開機畫面字元隱藏技術
- 開機畫面隱藏/調出
- 開機畫面更換
3.實驗原理:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
結構紀錄的是系統時間(距1970年1月1日0點)
其中tv_sec紀錄的是秒,tv_usec紀錄的是該秒內的微妙;
void do_gettimeofday(struct timeval *tv);
函式把當前系統的時間傳遞給tv所指向的結構。
通過使用do_gettimeofday()函式計算各個系統啟動初始化函式所用的時間。
通過修改核心原始碼和系統的默些配置檔案可以加快啟動速度,隱藏啟動字元,開機畫面顯示與隱藏,更換開機畫面等。