Linux系統概述

來源:互聯網
上載者:User

本章概述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)中有更詳細的說明。

相關文章

聯繫我們

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

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

Tags Index: