1. 程式人生 > >Unix/Linux系統概述

Unix/Linux系統概述

1. Unix系統架構:Unix系統可以分為3層,硬體層、核心層和使用者層。最底層是硬體層,作為整個系統的基礎,其次是核心層,核心層具有一般作業系統應當具有的裝置管理,程序管理,檔案管理等功能,並提供了系統呼叫介面。最高層是應用程式。

2. Unix系統關鍵系統元件:

a) 記憶體管理系統(包括虛擬記憶體)

b) 檔案系統,負責儲存資訊在磁碟上,虛擬檔案系統(VFS)隱藏了各種不同硬體的具體細節,為所有裝置提供了統一的介面,支援幾十種不同的檔案系統

c) 程序間通訊

d) 程序排程系統,控制著程序對CPU的訪問

e) 裝置驅動程式,使計算機與裝置通訊

3. 以Linux為例說一下系統啟動過程

a) 開啟計算機電源之後,Intel CPU在真實模式下開始自檢,然後載入BIOS資訊

b) 讀取主引導記錄,硬碟0磁軌的第一個扇區被稱為MBR,即主引導記錄,有512個位元組大小,存放了預啟動和分割槽表資訊。BIOS在讀取到所指定硬碟中的MBR之後就會將其複製到記憶體中,被複制到記憶體中的那一部分被稱為載入程式

c) 載入載入程式用來初始化硬體裝置,建立記憶體空間的對映圖,為最終呼叫作業系統核心做準備,載入程式有若干種:

      i.     Lilo,這是一個在系統啟動時執行的程式,允許選擇用於引導計算機的作業系統,可以引導幾個不同的作業系統,還可以定義一個預設的作業系統和引導作業系統的延遲時間

     ii.     Grub,這是一個多作業系統的啟動程式,是多啟動的規範,執行在使用者的計算機內部擁有多個不同的作業系統,並且允許在啟動的時候選擇使用的作業系統,可以用於選擇作業系統分割槽上的不同核心,也可以像這些核心傳遞引數,系統通過讀取記憶體中的Grub配置資訊來選擇啟動不同的作業系統

d) 載入核心,根據Grub設定的核心映像所在路徑,系統讀取記憶體映像,並進行解壓操作,系統將解壓之後的記憶體放在記憶體中,然後呼叫一系列初始化函式來初始化裝置,完成核心環境的建立

e) 執行init程序,init是一個由核心啟動的使用者級程序,init始終是啟動的第一個程序,init程序位於/sbin/init,它會讀取/etc/inittab檔案來進行初始化操作。Init程序用於設定Linux的執行等級,比如0-關機,1-單使用者模式等等等等

f) 在init程序設定了執行等級之後,Linux系統會通過執行指令碼的方式來完成系統的初始化階段,包括設定PATH,設定網路,啟動swap分割槽等

g) 然後再啟動核心模組,執行不同級別的指令碼程式,完成初始化操作和啟動服務的操作

h) 然後啟動/bin/login程式來進入登入狀態

4. 系統服務和程序

a) 守護程序:守護程序是脫離於終端並且在後臺執行的程序,這是一個生存期較長的程序,獨立於掃至終端並且週期性的執行某種任務或等待處理某些事件的發生。守護程序會在系統啟動時啟動,在系統關閉時關閉。在Linux系統中大部分服務是通過守護程序實現的。一些程序名以d結尾就是daemon守護程序的意思。在Linux作業系統中,終端指的是系統與使用者交流的介面,每一個從終端開始執行的程序都會依附於這個終端,這個終端就被稱為是控制終端。終端被關閉時,相應的程序都會自動關閉。如果想讓某個程序不因為使用者或其他終端的變化而受到影響,就要把這個程序寫為一個守護程序

b) 啟動與關閉服務:服務是執行在網路伺服器上監聽使用者請求的程序,通過埠號來進行區分,通過inetd或啟動指令碼來啟動,通過inetd服務來啟動的程序可以在/etc/inetd.conf中來啟用或關閉

c) inetd程序,這是一個網路服務程序,是一個用於監視網路請求的守護程序,通過一個集中的配置檔案來管理大多數的入網連線,根據網路請求呼叫相應的服務程序來處理連線請求。使用inetd程序來執行那些負載不重的服務可以有助於減少系統負載,從而避免幾十個服務都在記憶體中處於準備被使用的狀態,把這些服務都列在/etc/inetd.conf下,代替他們的是inetd程序來監聽進入的連線,這樣只需要由一個程序在記憶體中就可以了。目前為止,最靈活簡便的是xinetd,xinetd程序還提供了訪問控制,日誌和資源管理功能,是目前的Linux/Unix系統標準的Internet超級守護程序

首發於我的個人網站: 點選開啟連結