題目: 輸入一個包括 '(' 和 ')' 的字元串string ,判斷字元串是否有效。要求設計演算法實現檢查字元串是否有效,有效的字元串需滿足以下條件: A. 左括弧必須用相同類型的右括弧閉合。 B. 左括弧必須以正確的順序閉合。 C. 每個右括弧都有一個對應的相同類型的左括弧。 題目分析: ...
Linux啟動過程
Linux啟動需要經歷一些步驟,這些步驟確保系統能夠在各種不同的硬體和配置條件下可靠地啟動和運行,並且具有足夠的靈活性以適應不同的使用場景和需求,具體步驟如下:
- BIOS/UEFI初始化(硬體初始化):執行基本輸入輸出系統(BIOS)或統一可擴展介面(UEFI)中的初始化程式。這些程式負責硬體的自檢、載入引導程式等操作,這確保了系統能夠正確地與硬體交互,並且提供了基本的硬體支持。
- 引導載入程式(Boot Loader):BIOS/UEFI初始化後,控制權被傳遞給引導載入程式,從而載入操作系統的內核映像和必要的初始化RAM磁碟映像,以及傳遞啟動參數給內核;這個過程是系統啟動的關鍵一步,確保了正確的內核被載入並且系統啟動參數被正確傳遞。
- Linux內核啟動:引導載入程式將控制權交給Linux內核。內核啟動時,會初始化硬體、載入必要的驅動程式以及創建第一個用戶進程(init進程);這確保了系統能夠正確地與硬體交互,並且能夠訪問存儲在磁碟上的文件系統。
- init進程啟動:init 進程是 Linux 系統的第一個用戶空間進程,它負責啟動系統的其他進程和服務;通過 init 進程,系統可以在啟動時根據需要啟動不同的服務,並且提供了系統運行級別的管理和切換功能。
- 運行級別初始化:根據系統的預設運行級別,init 進程會啟動相應的運行級別。每個運行級別都定義了一組需要啟動的系統服務和進程。通過運行級別,管理員可以根據需要輕鬆地切換系統的運行狀態,並且可以根據需要啟動或停止不同的服務。
- 系統初始化和用戶登錄:一旦系統處於適當的運行級別並啟動了所需的服務,系統就會初始化各種設置和環境。如果是多用戶環境,系統會等待用戶登錄。登錄後,用戶可以開始使用系統。
Linux中的7種運行級別
通過設置不同的運行級別,管理員可以實現系統啟動時的自定義配置,例如啟用或禁用特定服務、載入特定的內核模塊等。這種靈活性使得 Linux 系統可以更好地適應不同的使用場景和需求。
- 單用戶模式(runlevel 1):也稱為救援模式,系統在此模式下只啟動最基本的服務和進程,通常用於系統修複和維護。
- 多用戶模式(runlevel 2、3、4):這些運行級別通常用於多用戶環境下,系統啟動基本的網路服務,但不包含圖形用戶界面。
- 多用戶圖形界面模式(runlevel 5):系統啟動圖形用戶界面和相關服務,適用於桌面系統或需要圖形界面的伺服器環境。
- 關機(runlevel 0):系統關閉所有服務並停止運行;
- 重新啟動(runlevel 6):系統重新啟動;
與運行級別相關的 Bash 指令通常用於管理系統的運行級別以及執行與運行級別相關的操作。以下是一些常用的與運行級別相關的 Bash 指令:
runlevel #顯示當前系統的運行級別
telinit <運行級別> #用於改變系統的運行級別
init <運行級別> #傳統的系統初始化程式,也可用來改變系統的運行級別
chkconfig --list # 顯示所有系統服務及其在各個運行級別下的啟用情況
chkconfig <服務名> on # 將指定服務在啟動時自動啟用
chkconfig <服務名> off # 將指定服務在啟動時取消自動啟用