Linux 關機重啟流程分析

來源:互聯網
上載者:User

標籤:

  linux下的關機和重啟流程對於一般的案頭應用和網路伺服器來說並不重要,但是在使用者自己定義的嵌入式系統核心中就有一定的研究意義,通過瞭解Linux 關機重啟的流程,我們對它可以修改和自訂,甚至以此為基礎開發出全新的功能來。

  1.概述

  在linux下的關機和重啟可能由兩種行為引發,一是通過使用者編程,一是系統自己產生的訊息。使用者和系統進行互動的方式也有兩個,一個是系統調用:sys_reboot,另一個就是apm或則acpi的裝置檔案,通過對其操作也可以使系統關機或者重啟。

#FormatImgID_0#

  2.通過系統調用sys_reboot的重啟

  這個系統調用定義了一系列的MAGIC_NUMBER,在調用的開始部分首先檢查MAGIC_NUMBER是否正確,只有正確才繼續向下運行。在重啟的時候轉向分支

case LINUX_REBOOT_CMD_RESTART:

  首先使用notifier_call_chain向其它部分發出重啟的訊息,然後調用machine_restart函數完成重啟。

  machine_restart 函數的開始部分有一段SMP相關的代碼,主要完成多CPU時由一個CPU完成重啟操作,其它CPU處於等待狀態。之後系統根據一個變數 reboot_thru_bios的內容判斷重啟方式,通過閱讀reboot_setup我們可以得知,這個參數的內容是在系統啟動時指定的,決定了是否 利用bios,事實上是系統複位後的入口(FFFF:0000)地址的程式進行重啟。在不通過bios進行重啟的情況下,系統首先設定了重啟標誌,然後向 連接埠0xfe寫入數字0x64,這種重啟的具體原理我還不大清楚,似乎是類比了一次reset鍵的按下,希望大家和我討論。在通過bios重啟的情況下, 系統同樣先設定了重啟模式,然後切換到了實模式,通過一條ljmp $0xffff,$0x0完成了重啟。

#FormatImgID_1#

  3.通過系統調用sys_reboot進行關機

  在系統調用的處理分支上,我們可以看到,首先同樣是檢查MAGIC_NUMBER,然後在

case LINUX_REBOOT_CMD_POWER_OFF:

  的執行流程裡面,又是使用 notifier_call_chain發出了關閉電腦電源的訊息,緊接著執行了machine_power_off函數。我們在 machine_power_off函數中可以看到,如果pm_power_off這個函數指標不為空白,那麼系統就會通過調用這個函數進行關機。在apm 已經載入的情況下(SMP除外),實際上pm_power_off函數實際上指向了apm.c中的apm_power_off,在這個函數裡系統通過 apm_info結構裡的值,使用切換到實模式關機,或者使用apm_bios_call_simple函數調用保護模式下的apm介面關機兩種方法。

#FormatImgID_2#

  4.apm驅動本身的關機過程

  apm使用其註冊的裝置的ioctl介面完成apm的操作,在apm.c的do_ioctl函數中可以看見處理的分支。這裡只有suspend和standby的代碼,所以我們不能通過ioctl這種方法使用apm關機。

  當 使用者按下POWER開關的時候,如果有apm模組,那麼關機流程是由apm來處理的。apm驅動在初始化的時候啟動了一個apm核心線 程:apm_mainloop,系統會在這裡檢測到POWEROFF按鍵訊息並且將其命名為APM_SYS_SUSPEND,以區別apm -s設定的APM_USER_SUSPEND模式。緊接著進入了apm_event_handler函數,又從apm_event_handler函數進 入了check_events函數,處理函數對應的case分支上。系統同樣使用了suspend函數進行關機,不過由於其它參數的原因,suspend 最後調用的是關機的流程。本文由“www.zrnkyy.com”編輯

Linux 關機重啟流程分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.