1. 程式人生 > >手把手教你做北郵作業系統小學期實驗一——Linux啟動過程優化1

手把手教你做北郵作業系統小學期實驗一——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()函式計算各個系統啟動初始化函式所用的時間。

通過修改核心原始碼和系統的默些配置檔案可以加快啟動速度,隱藏啟動字元,開機畫面顯示與隱藏,更換開機畫面等。

PS:這只是做實驗前的過程,實驗過程在後面。

這裡寫圖片描述