Linux使用者空間的啟動(一)

2021-07-10 22:25:23 字數 2059 閱讀 5936

linux使用者空間大致按照如下順序啟動的:

1. init

2. 基礎的底層服務,如udevd和syslogd

3. 網路配置

4. 中高層服務,如cron和列印服務

5. 登入提示符,gui和其它應用程式

一 什麼是init?

init是linux上的乙個使用者空間的程式,在/sbin目錄下可以找到它。init主要負責啟動和終止系統中的基礎服務程序。

目前init主要有以下三種實現版本:

1. system v init:老版本的順序init,在centos5上見到了它,如果看過鳥哥的書,應該知道這個東西。

2. systemd:目前應用較為廣泛的新init,centos7和新版本的fedora使用的都是這種init。

3. upstart:ubuntu系統使用的init,目前我使用的ubuntu 14.04就是使用的upstart,不過ubuntu現在也開始計畫轉向systemd了。

system v init依賴於乙個特定的啟動順序,每次只能啟動乙個任務。這種啟動方式依賴關係比較簡單,但是效能卻比較差,因為一次只能啟動乙個任務,不能發揮並行的優勢。另外乙個問題就是使用者只能執行啟動順序規定的一系列服務,如果要啟動乙個新服務,system v init沒有乙個標準方法來規定什麼時候啟動新服務,如何啟動新服務。

而systemd和upstart的目標是解決效能方面的問題,允許多個服務並行啟動。

systemd是面向目標的:定義乙個要實現的目標以及它的依賴條件,systemd負責在滿足所有條件時執行目標。systemd還會將目標推遲到有必要時再啟動。

在傳統的init程式當中,服務守護程序是通過指令碼檔案啟動的。乙個指令碼檔案負責啟動乙個守護程序,守護程式脫離指令碼自己執行。如果我們要獲得守護進行的資訊,需要用其它的定製方法,比如使用ps來獲取守護程序的pid。upstart和systemd則一開始就將守護程序納入管理系統,提供正在執行的程式的資訊和許可權。新的init系統不是基於指令碼檔案,所以配置起來比較簡單。systemd和upstart都提供一定程式的即時服務,即根據需要啟動服務,而不是像system v init一樣在開始啟動所有需要的服務。

二 system v 執行級別

一般的說法,執行級別就是作業系統正在執行的功能級別。在linux系統中,有一組程序自始至終都在執行(如crond和udevd)。system v init中把這種狀態稱為執行級別,使用數字0-6來表示。系統幾乎全程執行在單個執行級別當中,但是當關閉系統的時候,init就會切換到另外乙個執行級別,有序地終止系統服務,並通知核心停止。

受用who -r可以檢視當前執行級別。

在採用upstart的ubuntu中,我的執行結果是:

$who -r

run-level 2 2016-03-29 22:44

而在採用systemd的centos中,執行結果是:

$who -r

run-level 5 2016-04-02 14:50

可以看到兩者的執行級別是不一樣的,第一台機器是執行在多使用者模式,而第二台是執行在圖形化模式。

執行級別有幾個作用,最重要的是區分啟動、關閉、單使用者模式和控制台模式等這些不同的狀態。一般來說。7個執行級別如下:

0 系統停機模式,系統預設執行級別不能設定為0,否則不能正常啟動,機器關閉。

1 單使用者模式,root許可權,用於系統維護,禁止遠端登陸,就像windows下的安全模式登入。

2 多使用者模式,沒有nfs網路支援。

3 完整的多使用者文字模式,有nfs,登陸後進入控制台命令列模式。

4 系統未使用,保留一般不用,在一些特殊情況下可以用它來做一些事情。例如在膝上型電腦的電池用盡時,可以切換到這個模式來做一些設定。

5 圖形化模式,登陸後進入圖形gui模式,x window系統。

6 重啟模式,預設執行級別不能設為6,否則不能正常啟動。執行init 6機器就會重啟。

執行級別應該是眾所周知的東西,但是執行級別現在已經變成了過時的特性。systemd和upstart雖然都支援執行級別,但是已經把它作為過時的特性。

檢視init的型別可以通過man init(0)來確認,一般就在第一行。

Linux的使用者空間與核心空間

當核心模組 或執行緒訪問記憶體時,中的記憶體位址都為邏輯位址,而對應到真正的物理記憶體位址,需要位址一對一的對映,如邏輯位址0xc0000003對應的實體地址為0 3,0xc0000004對應的實體地址為0 4,邏輯位址與實體地址對應的關係為 邏輯位址物理記憶體位址 0xc0000000 0 00x...

linux核心空間與使用者空間

核心空間和使用者空間是作業系統理論的基礎之一,即核心功能模組執行在核心空間,而應用程式執行在使用者空間。現代的cpu都具有不同的操作模式,代表不同的級別,不同的級別具有不同的功能,在較低的級別中將禁止某些操作。linux系統設計時利用了這種硬體特性,使用了兩個級別,最高端別和最低級別,核心執行在最高...

Linux核心空間和使用者空間

在linux系統中存在程序的概念 程序的分類 使用者程序 執行在使用者空間的程序被稱為使用者程序 核心程序 執行在核心空間的程序被稱為核心程序 程序的空間 系統會為每乙個程序分0 4g的虛擬定址空間,在4g的空間中 0 3g 屬於使用者空間,用來執行使用者的相關程序 3 4g 屬於核心空間,用來執行...