freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linux啟動過程分析及dns服務(wù)器畢業(yè)論文(編輯修改稿)

2024-10-07 16:52 本頁面
 

【文章內(nèi)容簡介】 Bootloader 是嵌入式系統(tǒng)的引導(dǎo)加載程序,它是系統(tǒng)上電后運行的 第一段程序,其作用類似于 PC 機上的 BIOS。在完成對系統(tǒng)的初始化任務(wù)之后,它會將非易失性存儲器(通常是 Flash 或 DOC 等)中的 Linux 內(nèi)核拷貝到 RAM 中去,然后跳轉(zhuǎn)到內(nèi)核的第一條指令處繼續(xù)執(zhí)行,從而啟動 Linux 內(nèi)核。由此可見, bootloader 和 Linux 內(nèi)核有著密不可分的聯(lián)系,要想清楚的了解 Linux 內(nèi)核的啟動過程,我們必須先得認識 bootloader 的執(zhí)行過程,這樣才能對嵌入式系統(tǒng)的整個啟過程有清晰的掌握。 Bootloader 的執(zhí)行過程 不同的處理器上 電或復(fù)位后執(zhí)行的第一條指令地址并不相同,對于 ARM 處理器來說,該地址為 0x00000000。對于一般的嵌入式系統(tǒng),通常把 Flash 等非易失性存儲器映射到這個地址處,而 bootloader就位于該存儲器的最前端,所以系統(tǒng)上電或復(fù)位后執(zhí)行的第一段程序便是 bootloader。而因為存 儲 bootloader 的存儲器不 同,bootloader的執(zhí)行過程也并不相同 。 bootloader 必須具備的功能 1) 初始化 RAM 因為 Linux 內(nèi)核一般都會在 RAM 中運行,所以在調(diào)用 Linux 內(nèi)核Linux 啟動過程分析 之前 bootloader 必須設(shè)置和初始化 RAM,為調(diào)用 Linux 內(nèi)核做好準備。初始化 RAM 的任務(wù)包括設(shè)置 CPU 的控制寄存器參數(shù),以便能正常使用 RAM 以及檢測 RAM 大小等。 2) 初始化串口串口在 Linux 的啟動過程中有著非常重要的作用,它是 Linux 內(nèi)核和用戶交互的方式之一。 Linux 在啟動過程中可以將信息通過串口輸出,這樣便可清楚的了解 Linux 的啟動過程。雖然它并不是 bootloader 必須要完成的工作,但是通過串口輸出信息是調(diào)試 bootloader 和 Linux 內(nèi)核的強有力的工具,所以一般的 bootloader 都會在執(zhí)行過程中初始化一個串口做為調(diào)試端口。 3) 檢測處理器類型 Bootloader 在調(diào)用 Linux 內(nèi)核前必須檢測系統(tǒng)的處理器類型,并將其保存到某個常量中提供給 Linux 內(nèi)核。 Linux 內(nèi)核在啟動過程中會根據(jù)該處理器類型調(diào)用相應(yīng)的初始化程序。 4) 設(shè)置 Linux 啟動參數(shù) Bootloader 在執(zhí)行過程中必須設(shè)置和初始化 Linux 的內(nèi)核啟動參數(shù)。 目前 傳遞 啟動 參數(shù) 主 要采 用兩 種方 式: 即通 過 struct param_struct 和 struct tag(標記列表, tagged list)兩種結(jié)構(gòu)傳遞。 5) 調(diào)用 Linux 內(nèi)核映像 Bootloader 完成的最后一項工作便是調(diào)用 Linux 內(nèi)核。如果 Linux 內(nèi)核存放在 Flash 中,并且可直接在上面運行(這里的 Flash 指 Nor Flash),那么可直接跳轉(zhuǎn)到內(nèi)核中去執(zhí)行。但由于在 Flash Linux 啟動過程分析 中執(zhí)行代碼會有 種種限制,而且速度也遠不及 RAM 快,所以一般的嵌入式系統(tǒng)都是將 Linux 內(nèi)核拷貝到 RAM 中,然后跳轉(zhuǎn)到 RAM 中去執(zhí)行。不論哪種情況,在跳到 Linux 內(nèi)核執(zhí)行之前 CUP 的寄存器必須滿足以下條件: r0= 0, r1=處理器類型, r2=標記列表在 RAM中的地址。 Linux 啟動過程分析 第三章 Linux 內(nèi)核的啟動過程 Linux 內(nèi)核入口 Linux 非壓縮內(nèi)核的入口位于文件 /arch/arm/kernel/ 中的 stext 段。該段的基地址就是壓縮內(nèi) 核解壓后的跳轉(zhuǎn)地址。如果系統(tǒng)中加載的內(nèi)核是非壓縮的 Image,那么 bootloader 將內(nèi)核從 Flash中拷貝到 RAM 后將直接跳到該地址處,從而啟動 Linux 內(nèi)核。不同體系結(jié)構(gòu)的 Linux 系統(tǒng)的入口文件是不同的,而且因為該文件與具體體系結(jié)構(gòu)有關(guān),所以一般均用匯編語言編寫 [3]。對基于 ARM 處理的 Linux 系統(tǒng)來說,該文件就是 。該程序通過查找處理器內(nèi)核類型和處理器類型調(diào)用相應(yīng)的初始化函數(shù),再建立頁表,最后跳轉(zhuǎn)到 start_kernel()函數(shù)開始內(nèi)核的初始化工作 。 start_kernel 函數(shù) start_kernel是所有 Linux 平臺進入系統(tǒng)內(nèi)核初始化后的入口函數(shù),它主要完成剩余的與硬件平臺相關(guān)的初始化工作,在進行一系列與內(nèi)核相關(guān)的初始化后,調(diào)用第一個用戶進程- init 進程并等待用戶進程的執(zhí)行,這樣整個 Linux 內(nèi)核便啟動完畢。 結(jié)論 Linux 內(nèi)核是一個非常龐大的工程,經(jīng)過十多年的發(fā)展,它已從從最初的幾百 KB 大小發(fā)展到現(xiàn)在的幾百兆。清晰的了解它執(zhí)行的每一個Linux 啟動過程分析 過程是件非常困難的事。但是在嵌入式開發(fā)過程中,我們并不需要十分清楚 li
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1