Linux 管理員手冊(1)--Linux系統概述(轉)

gugu99發表於2007-08-10
Linux 管理員手冊(1)--Linux系統概述(轉)[@more@]

  本章概述Linux系統。首先描述作業系統提供的主要服務。然後說明實現這些服務的程式 with a considerable lack of detail。本章的目的是理解系統整體,以後再詳細說明每個部分。

  一個作業系統的不同部分

  一個UNIX作業系統包括一個核心程式kernel和一些系統程式system programs。還有一些做某件事情的應用程式application programs。核心是作業系統的心臟 。它跟蹤磁碟上的檔案,啟動程式並執行它們,給不同的程式分配記憶體和其他資源,從網路接收和向網路傳送包,等等。核心很少自己幹活,但它提供工具,用這些工具可以建立所有服務。它還阻止任何人直接存取硬體,強制每個人使用它提供的工具。這樣,核心給每個使用者與其他使用者之間提供保護。核心提供的工具透過系統呼叫system calls使用;要了解關於這的更多的資訊,看手冊頁第二節。

  系統程式使用核心提供的工具實現作業系統要求的不同的服務。系統程式和所有其他程式執行在核心之上,叫做使用者模式user mode。系統程式和應用程式的區別是目的:應用程式意圖完成一些有用的工作(或遊戲),而系統程式則為系統工作而需要。字處理器是應用;telnet 是系統程式。區別經常有些模糊,也許,只是為了強制分類。

  雖然程式語言不必是作業系統的一部分,作業系統也可以包括編譯器及其相關的庫(Linux下是gcc和C庫)。文件、有時甚至遊戲,可以是作業系統的一部分。傳統上,作業系統被定義為安裝磁帶或磁碟上的內容;對於Linux就更不清楚,因為它分佈在全世界的FTP站點上。

  核心的重要部件

  Linux核心包括幾個重要部分:程式管理、儲存器管理、硬體裝置驅動、檔案系統驅動、網路管理和其他不同的部分。圖2.1顯示了它們的一些。

  可能核心最重要的部分(沒有它們什麼也不能工作)是儲存器管理和程式管理。儲存器管理負責分配程式的儲存器區域和對換空間區域、核心的部件及buffer cache。程式管理產生程式,用切換處理器上的活動程式來實現多工。

  在最低階,核心對它支援的每種硬體包含一個硬體裝置驅動。因為世界上存在大量不同的硬體,硬體裝置驅動的數量極大。有許多不同的硬體,因此軟體控制方法不同。但其相似性可能分類驅動,支援相似的操作;每類的每個成員有相同的與核心其他部分介面,但具體實現是不同的。例如,所有的硬碟驅動與核心其他部分介面相同,即他們都有初始化驅動器、讀N扇區、寫N扇區。

  核心自己提供的有些軟體服務有類似的抽象屬性,因此可以抽象分類。例如,不同的網路協議已經被抽象為一個程式設計介面:BSD socket庫。另一個例子是虛擬檔案系統virtual filesystem(VFS)層,它從檔案系統操作實現中抽象出檔案系統操作。每個檔案系統型別提供了每個檔案系統操作的實現。當一些實體企圖使用一個檔案系統時,請求透過VFS送出,它將請求傳送到適當的檔案系統驅動。

  UNIX系統的主要服務

  本節說明一些最重要的UNIX服務,但不太詳細。以後的章節中將更詳細地說明。

  init

  UNIX系統裡最重要的服務是由init 提供的。 init 是每個UNIX系統在核心引導最後啟動的第一個程式。 init 啟動後,它做不同的啟動工作繼續引導過程(檢查和mount檔案系統、啟動守侯程式等)

  init 做的具體事情的列表依賴於使用者意願; init 有多個啟動選擇。通常提供單使用者模式single user mode的概念,此時沒有使用者能登入,root 在控制檯使用一個shell;通常的模式叫多使用者模式multiuser mode。一般說來這稱為執行級run levels;單使用者和多使用者模式可以理解為2個執行級,還可以有其他執行級,例如,在控制檯上執行X。

  在普通操作中,init 確認getty 正常執行(允許使用者登入),並收養孤兒程式(父程式已死的程式;UNIX中,所有程式 必須在一棵樹中,因此孤兒程式必須收養)。

  當系統關閉時,init 負責殺死所有其他程式,unmount所有檔案系統並停止處理器,根據設定。

  從終端登入

  從終端登入(透過序列線)和控制檯(當不執行X時)是由getty 程式提供的。 init 為每個允許登入的終端啟動一個單獨的getty 例項 getty 讀使用者名稱並執行login 程式,由它讀口令。如果使用者名稱和口令正確,login 就執行shell。當shell終止時,即使用者登出,或login 因使用者名稱和口令不對而終止時, init 知道並啟動一個新的getty 例項。核心沒有登入的概念,這都由系統程式處理。

  Syslog

  核心和許多系統程式會產生錯誤、警告和其他資訊。這些資訊在以後能看經常是很重要的,甚至很久以後,所以它們應該被寫到一個檔案。這個程式是syslog 。它能設定成根據輸出資訊的程式或重要程度將資訊排序到不同的檔案。例如,核心資訊經常與其他資訊分開,單獨定向到一個分離的檔案,因為核心資訊經常更重要且需要有規律地閱讀以確定問題。

  定時執行命令: cron 和at

  使用者和系統管理員經常需要定時執行命令。例如,系統管理員可能想執行一個程式從老檔案中清除暫存檔案的目錄 (/tmp 和/var/tmp ),以免磁碟滿,因為並非所有程式都正確地清除自己的暫存檔案。

  cron 服務是做這個的。每個使用者有個crontab ,在這裡列出他要執行的命令和想執行的時間。 cron 守侯程式負責在特定的時間啟動命令。

  at 服務與cron 類似,但它只執行一次:命令在給定的時間執行,但不可自動重複。

  圖形使用者介面GUI

  UNIX和Linux不將使用者介面合在核心中,而是用使用者級程式實現。使用者介面同時提供文字和圖形環境。

  這樣的安排使系統更靈活,但有容易對每個程式實現不同的使用者介面的缺點,使系統較難學。

  Linux使用的主要的圖形環境叫X Window系統(簡稱X)。 X也不實現使用者介面;它只實現一個視窗系統,即可以實現圖形使用者介面的工具。 3種最流行的基於X實現的使用者介面風格是Athena、Motif和Open Look。

  網路

  網路連線2臺或更多的計算機使之能互相通訊。連線和通訊的實際方法有些複雜,但結果非常有用。

  UNIX作業系統具有許多網路特徵。最基本的服務:檔案系統、列印、備份等都可以透過網路完成。這可使系統管理更簡單,因為它允許集中管理,同時獲得小型機和分佈計算的優點,例如降低成本和更好的容錯能力。

  然而,本書只概述網路;更多的資訊請見《Linux網路管理員指南》,包括一個網路如何操作的基本說明。

  網路登入

  網路登入與普通登入有一點不同。可以登入的每個終端各有一條單獨的物理序列線。從網路登入的每個人,有一條單獨的虛擬網路連線,並且可以有任意數量 。因此不可能為每個可能的虛擬連線執行單獨的getty 。透過網路登入有若干不同的方法, telnet 和rlogin 是TCP/IP網路中的主要方法。

  網路登入為每種登入方法提供一個單獨的守侯程式(telnet 和rlogin 使用不同的守侯程式),而不是使用一群getty ,來偵聽所有的輸入的登入企圖。當發現一個登入企圖,就啟動一個自己的新例項來處理這個企圖;原來的例項繼續偵聽其他企圖。新例項的工作和getty 類似。

  網路檔案系統

  網路服務的一個最有用的東西是透過網路檔案系統network file system共享檔案。這個服務一般用Sun公司開發的網路檔案系統Network File System,或NFS。

  透過網路檔案系統,任何檔案操作可以由一臺機器的一個程式透過網路傳送到其他任何機器。這愚弄了程式,使它以為其他機器上的所有檔案是在程式執行的機器上。這極大地簡化了資訊共享,因為它對程式無須任何修改。

  郵件

  電子郵件通常是透過計算機通訊的最重要的方法。一封電子信件用特定的格式儲存在一個檔案中,使用特定的郵件程式來收發郵件。

  每個使用者有一個收件箱incoming mailbox(一個特定格式的檔案),所有新郵件存在這裡。當什麼人傳送郵件時,郵件程式定位收件人的郵箱,並在郵箱檔案中新增信件。如果收件人的郵箱在另一臺機器上,信件就被髮送到那臺機器,由它用它覺得最合適的方法來投遞郵箱。

  郵件系統包括很多程式。投遞郵件到本地或遠端郵箱使用一個程式(mail transfer agent或MTA,例如,sendmail 或smail ),而使用者使用的則有很多不同的程式(mail user agent或MUA,例如pine 或elm )。郵箱一般存在/var/spool/mail 中。

  列印

  同時只能有一個人使用某一臺印表機,但各使用者不共享印表機是不經濟的。因此印表機由軟體來管理,實現一個列印佇列print queue:所有的列印任務放進一個佇列,印表機完成一個任務後,自動再列印下一個。這無須使用者來組織列印佇列,迴避了直接控制印表機。

  列印佇列軟體也把列印輸出spools到磁碟,即,當任務在佇列中時,列印輸出存在一個檔案中。這允許應用程式快速地完成一個列印任務到列印佇列程式,應用程式無須等到列印任務真正完成就可以繼續下去。這真的很方便,因為它允許列印出一個版本,無須列印完成,就繼續修改一個新版本。

  檔案系統佈局

  檔案系統分為許多部分,通常從根檔案系統有: /bin , /lib , /etc , /dev , 及一些其他; /usr 檔案系統包含程式和不改變的資料; /var 檔案系統包含改變的資料(例如log檔案); /home 檔案系統包含每個使用者的個人檔案。依賴於硬體配置和系統管理員的決定,方法不同,甚至所有東西可能在一個檔案系統中。

  3章將更詳細地說明檔案系統佈局,Linux檔案系統標準(Linux Filesystem Standard)中有更詳細的說明。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-940001/,如需轉載,請註明出處,否則將追究法律責任。

相關文章