Linux 2.4的精彩世界(3)(轉)
Linux 2.4的精彩世界(3)(轉)[@more@]作者:Joe Pranevich 編譯:Georgia
系統匯流排-ISA、PCI、USB、MCA等
處理器只是計算機中一個微小的部分。計算機的匯流排結構也同樣重要,它是管理內部和外部裝置的系統部件。一些匯流排結構,像最初的ISA,對其它硬體是極不可靠的,它們不提供資源管理功能,僅僅提供了一個插卡的地方。而另外一些匯流排,例如PCI,則支援更高階的配置,並允許裝置重新定位和其它功能。
Linux 2.2支援Intel硬體內部的所有主要的匯流排,包括(E)ISA、VLB、PCI,最新的附件(較老的匯流排一般用於IBM硬體)以及MCA。Linux 2.4除此以外還包括對ISA即插即用裝置(這種方案使ISA裝置幾乎與PCI一樣智慧)和I20裝置的支援。最重要的是,Linux 2.4是首個提供資源管理的強大系統的Linux核心版本。在開發Linux 2.4的過程中發現,要使Linux完全支援USB、PC卡或其他先進的硬體,必須開發這樣一個系統,它是Linux作為一個"現代的"作業系統所必需的。
ISAPnP一直是Linux使用者的主要問題。雖然由於更強大的PCI硬體的出現,對ISA硬體的支援已經縮小,但使用ISAPnP的預算裝置仍在銷售。以前,Linux使用者使用ISAPnP硬體都是用pnp實用程式,它通常需要幾個小時才能完成,實在讓人沮喪。有些版本試圖自動完成這個過程,但都沒有成功。而Linux 2.4將ISAPnP支援同資源管理器結合在一起,從而解決了這一問題。(但是,還沒有完成對所有驅動程式原始碼的更改,實現這一功能。)不過對不太普遍的PnP硬體來說,Linux 2.4對ISAPnP的核心級支援還沒有實現。
Linux 2.4 也包括對I2O的支援,I2O (Intelligent Input/Output智慧輸入/輸出)是PIC的超集,PIC提供對記憶體、暫存器的集中管理。而I2O 裝置更深一層,可以在裝置級上提供API,從而為裝置提供作業系統的獨立驅動程式。底層的作業系統需要識別"通配"的I2O API,而不是指定的硬體。由於這項技術還比較新,沒有多少裝置使用了該項技術,但這種產品一旦投放市場,Linux能馬上做好準備。
目前對裝置進行的主要工作並不是內部匯流排,而是外部匯流排,如PC卡匯流排和各種序列匯流排。Linux 2.4也增強了對外部裝置的PC卡支援。很多發行版本以及大多數的發行版本預設已經包含它了。不過為了更好的使用這些裝置,Linux 2.4仍然需要一個外部的daemon(程式)和其他一些部件。
或許在這之前最令人激動的訊息是通用序列匯流排 (USB),一個使得裝置更加顯著的外部匯流排,像鍵盤、滑鼠、聲音系統、掃描器以及印表機。USB是許多新裝置很歡迎的選件,包括非Intel的硬體。雖然,Linux對這些裝置的支援還處於初期階段,但是Linux核心已經支援大部分的通用USB硬體(包括鍵盤、滑鼠、話筒等)。
最近,Linux核心增加了對Firewire (IEE1394)的支援,Firewire 一直以來受到很多高頻寬裝置的青睞。然而,至今很多現有的驅動程式或者裝置不支援這些硬體體系結構,但是隨著時間的推移,當這些體系結構成熟的時候,這些支援將很可能得到改善。
塊裝置-LVM,磁碟驅動器等
在它簡單的列表中,塊裝置被描述為一個可以不連續訪問的位元組陣列。這將包括磁碟(你可以讀你想要的任何扇區),但不是串列埠(因為你只能線上的末端讀取)。延伸這個概念(例如彈出磁碟等)在Linux中透過ioctls(I/0控制)變得很容易。但是塊裝置的概念很長時間沒有改變並支援從第一次Linux核心修訂本中就存在的IDE和SISC磁碟驅動器。
在Linux 2.4中,所有塊裝置的驅動程式都重寫了一些,塊裝置API從介面中去掉了一些遺留的垃圾,並在核心級將模組API完全同檔案API分開,這次變動要求API重寫不是主要部份。但是如果模組維護人員如果運用了主子目錄之外的模組,則需要對原始碼進行更新(沒有人假定API與主要修訂版核心完全相容)。
至少在桌上型電腦中,普遍使用的是IDE匯流排磁碟驅動器。Linux從早期核心就開始支援IDE,但Linux 2.4在許多方法上提高了對這些裝置的支援。首先,擁有多個IDE控制器的高階系統如果將IDE控制器數從4增加到10個,則效果會更好。大多數的主機板最多隻有2個IDE控制器,這並不會對桌上型電腦的使用者產生多大的影響。其次,這些IDE驅動程式的改動提高Linux 2.4對PCI和即插即用IDE控制器的支援,IDE軟盤和磁帶機,DVD和CD-ROM;最後,Linux 2.4包括了可以逐步解決一些IDE晶片中存在的漏洞的驅動程式更新,並且更好的支援其他先進的特性,例如ATA66。
看起來似乎SCSI子系統沒有IDE子系統改動的多,SCSI子系統在在外殼中進行了大量的重寫,另外,這個版本中支援了許多新的SCSI控制器,我們可以期待在2.5的開發週期中的某個時候得到進一步的SCSI支援。
Linux 2.4核心中一個全新的特性是實現了raw I/O裝置,raw裝置不透過快取記憶體層處理,自動尋找到低階裝置。萬一一個複雜的程式要求完全的控制超過了怎樣使用資料快取和一般快取的開支得不到滿足,這時可以使用raw裝置。raw裝置能夠用於資料要求嚴格的情況下,例如:我們確保資料立即寫入磁碟、系統失敗時不會遺失資料。早先這些支援的形勢並不適合,包括他們字面上需要的加倍裝置節點數以使每個塊裝置都有一個raw裝置節點(這是一些商業UNIX使用的方法),本版本中是使用一組裝置節點來實現,它可以連線任意的塊裝置。
Linux 2.4一個大範圍的改進是在主流核心中加入了LVM(邏輯卷管理)子系統。這在一些企業族的UNIX,如HP-UX和Tru64 UNIX(原來的Digital UNIX)中是一個系統和標準,它完全重新考慮管理檔案系統和卷的方法。不需要深入細節,LVM充許檔案系統跨越磁碟,調整大小,用更多靈活方式管理。LVM子系統的一些特效能夠用md(複合裝置)驅動器或使用者使用的工具複製。而且,LVM子系統以標準相容的方式提供這種支援,讓商業UNIX使用者至少感到有些熟悉。
Linux 2.4另一個大範圍改進的是支援RAID(冗餘磁碟陣列)裝置,許多磁碟同時工作提供冗餘儲存或快速讀訪問。在新核心中,幾乎所有的RAID子系統都被重寫。效能,也許是完善的RAID實現最重要的一面在SMP(對稱多處理器)和單處理器系統中得到提高(在對稱多處理器中,如今可以更好支援多執行緒)。另外,使RAID陣列遞迴和不用虛擬磁碟映像安裝設定根盤的能力的程式碼已經有了很大的加強。當很多企業級使用者接觸Linux時,像有強大的RAID子系統的特性成為接收和不接收的選中係數。Linux 2.4再一次加強這一條。
檔案系統和分割槽表
本地檔案系統
有多種方法訪問塊裝置,最常見的方法是使用檔案系統(內部實現上,檔案系統就像是為這個塊裝置描繪的一張地圖,透過這張地圖你可以找到想要的任何內容)。另外的方法有使用分割槽的方法訪問塊裝置(結構非常類似於檔案系統,只是處理方法完全不同),或者直接訪問它。
Linux 2.4包含Linux 2.2實現的所有檔案系統。這些檔案系統包括FAT(適用各種版本的DOS),NTFS(適用Windows NT -- Windows 2000的支援不完備),VFAT和FAT32(適用Windows 9x),HFS(適用MacOS),HPFS(適用OS/2),以及其他各種檔案系統。新增支援的檔案系統中,引人注目的有DVD盤使用的UDF檔案系統,和舊版本IRIX使用的EFS檔案系統。因為要支援新擴充套件的頁面緩衝系統,全部檔案系統的程式碼都已經重新寫過,所以 執行會更有效率。
還有不少改進有助於提高與其他作業系統的相容性:OS/2使用者終於可以在Linux上寫入他們的檔案系統了;NT使用者暫時還不能享受這項特權,因為其驅動程式還在試用階段;NextStep使用者可以在支援NextStep使用的UFS檔案系統的同時,在Linux下訪問光碟機了。但必須注意,Linux目前還不能支援HFS+,這個新的Macintosh檔案系統。
Linux 2.4尚不支援日誌檔案系統,儘管幾個提供此項功能的專案正在接近達到穩定的程度。日誌檔案系統的最大優點就是它的容錯能力。一個設計精良的日誌檔案系統能比傳統的日誌檔案更容易地將損壞恢復,並且fsck時間更短,返回服務功能更快。ReiserFS無疑是現在最成熟的日誌檔案系統,將很快在發行Linux 2.4之後加入到核心中。(可能會在2.4.1版本中吧。)Ext3檔案系統,作為包含了日誌支援的Ext2的擴充套件,也將會在某個Linux 2.4.x版本中出現。(不過也有可能我會在“Linux 2.6的精彩世界”中講述它?)
對於嵌入式裝置,Linux 2.4增加了對JFFS和RamFS的支援。前者為日誌閃爍檔案系統(Journaling Flash Filesystem),後者是可以在執行過程中調整大小的記憶體檔案系統(in-memory filesystem)。這兩種檔案系統目前都有了各自的使用者。
網路檔案系統
並不是所有檔案系統都是作為塊裝置被載入的。像程式、共享記憶體和devfs檔案系統等完全都是虛擬的。還有其他一些檔案系統是透過網路被載入的,完成這個任務有各種方法,許多作業系統都提供它們自己的方法來處理。而Linux可以識別當前的大部分網路檔案系統。
Windows世界使用伺服器訊息塊(Server Message Block,SMB)協議作為它們的網路檔案系統。新的Linux核心放棄了在編譯核心階段手動選擇是從Windows 9x還是NT/2000載入的選項,它將能夠自動的檢測遠端作業系統的型別並可以進行必要的除錯。
在UNIX世界裡,使用Network Filesystem(NFS)協議來共享檔案。Linux 2.4在顯著提高NFS載入目錄的穩定性同時,還將提供對NFS協議最新版本,NFSv3的支援。NFSv3能更好地支援檔案系統同步、檔案鎖定,以及對企業環境非常關鍵的一些概念。(NFSv4的支援正在開發當中。)
分割槽表
Linux 2.4增加了對外部分割槽表的支援。Linux 2.2和Linux其他版本支援PPC或m68k對Macintosh分割槽的讀取。在Intel硬體上,核心可以識別標準IBM格式、BSD磁碟標籤,及其他公用擴充套件區。而Linux 2.4消除了埠直接的障礙,因而可以無縫地使用附加在Intel Linux機子上的外部Macintosh硬碟驅動器。一般來說,如果編譯時轉載了驅動程式,Linux就可以讀取它在任何埠可以識別的分割槽表格式。
系統匯流排-ISA、PCI、USB、MCA等
處理器只是計算機中一個微小的部分。計算機的匯流排結構也同樣重要,它是管理內部和外部裝置的系統部件。一些匯流排結構,像最初的ISA,對其它硬體是極不可靠的,它們不提供資源管理功能,僅僅提供了一個插卡的地方。而另外一些匯流排,例如PCI,則支援更高階的配置,並允許裝置重新定位和其它功能。
Linux 2.2支援Intel硬體內部的所有主要的匯流排,包括(E)ISA、VLB、PCI,最新的附件(較老的匯流排一般用於IBM硬體)以及MCA。Linux 2.4除此以外還包括對ISA即插即用裝置(這種方案使ISA裝置幾乎與PCI一樣智慧)和I20裝置的支援。最重要的是,Linux 2.4是首個提供資源管理的強大系統的Linux核心版本。在開發Linux 2.4的過程中發現,要使Linux完全支援USB、PC卡或其他先進的硬體,必須開發這樣一個系統,它是Linux作為一個"現代的"作業系統所必需的。
ISAPnP一直是Linux使用者的主要問題。雖然由於更強大的PCI硬體的出現,對ISA硬體的支援已經縮小,但使用ISAPnP的預算裝置仍在銷售。以前,Linux使用者使用ISAPnP硬體都是用pnp實用程式,它通常需要幾個小時才能完成,實在讓人沮喪。有些版本試圖自動完成這個過程,但都沒有成功。而Linux 2.4將ISAPnP支援同資源管理器結合在一起,從而解決了這一問題。(但是,還沒有完成對所有驅動程式原始碼的更改,實現這一功能。)不過對不太普遍的PnP硬體來說,Linux 2.4對ISAPnP的核心級支援還沒有實現。
Linux 2.4 也包括對I2O的支援,I2O (Intelligent Input/Output智慧輸入/輸出)是PIC的超集,PIC提供對記憶體、暫存器的集中管理。而I2O 裝置更深一層,可以在裝置級上提供API,從而為裝置提供作業系統的獨立驅動程式。底層的作業系統需要識別"通配"的I2O API,而不是指定的硬體。由於這項技術還比較新,沒有多少裝置使用了該項技術,但這種產品一旦投放市場,Linux能馬上做好準備。
目前對裝置進行的主要工作並不是內部匯流排,而是外部匯流排,如PC卡匯流排和各種序列匯流排。Linux 2.4也增強了對外部裝置的PC卡支援。很多發行版本以及大多數的發行版本預設已經包含它了。不過為了更好的使用這些裝置,Linux 2.4仍然需要一個外部的daemon(程式)和其他一些部件。
或許在這之前最令人激動的訊息是通用序列匯流排 (USB),一個使得裝置更加顯著的外部匯流排,像鍵盤、滑鼠、聲音系統、掃描器以及印表機。USB是許多新裝置很歡迎的選件,包括非Intel的硬體。雖然,Linux對這些裝置的支援還處於初期階段,但是Linux核心已經支援大部分的通用USB硬體(包括鍵盤、滑鼠、話筒等)。
最近,Linux核心增加了對Firewire (IEE1394)的支援,Firewire 一直以來受到很多高頻寬裝置的青睞。然而,至今很多現有的驅動程式或者裝置不支援這些硬體體系結構,但是隨著時間的推移,當這些體系結構成熟的時候,這些支援將很可能得到改善。
塊裝置-LVM,磁碟驅動器等
在它簡單的列表中,塊裝置被描述為一個可以不連續訪問的位元組陣列。這將包括磁碟(你可以讀你想要的任何扇區),但不是串列埠(因為你只能線上的末端讀取)。延伸這個概念(例如彈出磁碟等)在Linux中透過ioctls(I/0控制)變得很容易。但是塊裝置的概念很長時間沒有改變並支援從第一次Linux核心修訂本中就存在的IDE和SISC磁碟驅動器。
在Linux 2.4中,所有塊裝置的驅動程式都重寫了一些,塊裝置API從介面中去掉了一些遺留的垃圾,並在核心級將模組API完全同檔案API分開,這次變動要求API重寫不是主要部份。但是如果模組維護人員如果運用了主子目錄之外的模組,則需要對原始碼進行更新(沒有人假定API與主要修訂版核心完全相容)。
至少在桌上型電腦中,普遍使用的是IDE匯流排磁碟驅動器。Linux從早期核心就開始支援IDE,但Linux 2.4在許多方法上提高了對這些裝置的支援。首先,擁有多個IDE控制器的高階系統如果將IDE控制器數從4增加到10個,則效果會更好。大多數的主機板最多隻有2個IDE控制器,這並不會對桌上型電腦的使用者產生多大的影響。其次,這些IDE驅動程式的改動提高Linux 2.4對PCI和即插即用IDE控制器的支援,IDE軟盤和磁帶機,DVD和CD-ROM;最後,Linux 2.4包括了可以逐步解決一些IDE晶片中存在的漏洞的驅動程式更新,並且更好的支援其他先進的特性,例如ATA66。
看起來似乎SCSI子系統沒有IDE子系統改動的多,SCSI子系統在在外殼中進行了大量的重寫,另外,這個版本中支援了許多新的SCSI控制器,我們可以期待在2.5的開發週期中的某個時候得到進一步的SCSI支援。
Linux 2.4核心中一個全新的特性是實現了raw I/O裝置,raw裝置不透過快取記憶體層處理,自動尋找到低階裝置。萬一一個複雜的程式要求完全的控制超過了怎樣使用資料快取和一般快取的開支得不到滿足,這時可以使用raw裝置。raw裝置能夠用於資料要求嚴格的情況下,例如:我們確保資料立即寫入磁碟、系統失敗時不會遺失資料。早先這些支援的形勢並不適合,包括他們字面上需要的加倍裝置節點數以使每個塊裝置都有一個raw裝置節點(這是一些商業UNIX使用的方法),本版本中是使用一組裝置節點來實現,它可以連線任意的塊裝置。
Linux 2.4一個大範圍的改進是在主流核心中加入了LVM(邏輯卷管理)子系統。這在一些企業族的UNIX,如HP-UX和Tru64 UNIX(原來的Digital UNIX)中是一個系統和標準,它完全重新考慮管理檔案系統和卷的方法。不需要深入細節,LVM充許檔案系統跨越磁碟,調整大小,用更多靈活方式管理。LVM子系統的一些特效能夠用md(複合裝置)驅動器或使用者使用的工具複製。而且,LVM子系統以標準相容的方式提供這種支援,讓商業UNIX使用者至少感到有些熟悉。
Linux 2.4另一個大範圍改進的是支援RAID(冗餘磁碟陣列)裝置,許多磁碟同時工作提供冗餘儲存或快速讀訪問。在新核心中,幾乎所有的RAID子系統都被重寫。效能,也許是完善的RAID實現最重要的一面在SMP(對稱多處理器)和單處理器系統中得到提高(在對稱多處理器中,如今可以更好支援多執行緒)。另外,使RAID陣列遞迴和不用虛擬磁碟映像安裝設定根盤的能力的程式碼已經有了很大的加強。當很多企業級使用者接觸Linux時,像有強大的RAID子系統的特性成為接收和不接收的選中係數。Linux 2.4再一次加強這一條。
檔案系統和分割槽表
本地檔案系統
有多種方法訪問塊裝置,最常見的方法是使用檔案系統(內部實現上,檔案系統就像是為這個塊裝置描繪的一張地圖,透過這張地圖你可以找到想要的任何內容)。另外的方法有使用分割槽的方法訪問塊裝置(結構非常類似於檔案系統,只是處理方法完全不同),或者直接訪問它。
Linux 2.4包含Linux 2.2實現的所有檔案系統。這些檔案系統包括FAT(適用各種版本的DOS),NTFS(適用Windows NT -- Windows 2000的支援不完備),VFAT和FAT32(適用Windows 9x),HFS(適用MacOS),HPFS(適用OS/2),以及其他各種檔案系統。新增支援的檔案系統中,引人注目的有DVD盤使用的UDF檔案系統,和舊版本IRIX使用的EFS檔案系統。因為要支援新擴充套件的頁面緩衝系統,全部檔案系統的程式碼都已經重新寫過,所以 執行會更有效率。
還有不少改進有助於提高與其他作業系統的相容性:OS/2使用者終於可以在Linux上寫入他們的檔案系統了;NT使用者暫時還不能享受這項特權,因為其驅動程式還在試用階段;NextStep使用者可以在支援NextStep使用的UFS檔案系統的同時,在Linux下訪問光碟機了。但必須注意,Linux目前還不能支援HFS+,這個新的Macintosh檔案系統。
Linux 2.4尚不支援日誌檔案系統,儘管幾個提供此項功能的專案正在接近達到穩定的程度。日誌檔案系統的最大優點就是它的容錯能力。一個設計精良的日誌檔案系統能比傳統的日誌檔案更容易地將損壞恢復,並且fsck時間更短,返回服務功能更快。ReiserFS無疑是現在最成熟的日誌檔案系統,將很快在發行Linux 2.4之後加入到核心中。(可能會在2.4.1版本中吧。)Ext3檔案系統,作為包含了日誌支援的Ext2的擴充套件,也將會在某個Linux 2.4.x版本中出現。(不過也有可能我會在“Linux 2.6的精彩世界”中講述它?)
對於嵌入式裝置,Linux 2.4增加了對JFFS和RamFS的支援。前者為日誌閃爍檔案系統(Journaling Flash Filesystem),後者是可以在執行過程中調整大小的記憶體檔案系統(in-memory filesystem)。這兩種檔案系統目前都有了各自的使用者。
網路檔案系統
並不是所有檔案系統都是作為塊裝置被載入的。像程式、共享記憶體和devfs檔案系統等完全都是虛擬的。還有其他一些檔案系統是透過網路被載入的,完成這個任務有各種方法,許多作業系統都提供它們自己的方法來處理。而Linux可以識別當前的大部分網路檔案系統。
Windows世界使用伺服器訊息塊(Server Message Block,SMB)協議作為它們的網路檔案系統。新的Linux核心放棄了在編譯核心階段手動選擇是從Windows 9x還是NT/2000載入的選項,它將能夠自動的檢測遠端作業系統的型別並可以進行必要的除錯。
在UNIX世界裡,使用Network Filesystem(NFS)協議來共享檔案。Linux 2.4在顯著提高NFS載入目錄的穩定性同時,還將提供對NFS協議最新版本,NFSv3的支援。NFSv3能更好地支援檔案系統同步、檔案鎖定,以及對企業環境非常關鍵的一些概念。(NFSv4的支援正在開發當中。)
分割槽表
Linux 2.4增加了對外部分割槽表的支援。Linux 2.2和Linux其他版本支援PPC或m68k對Macintosh分割槽的讀取。在Intel硬體上,核心可以識別標準IBM格式、BSD磁碟標籤,及其他公用擴充套件區。而Linux 2.4消除了埠直接的障礙,因而可以無縫地使用附加在Intel Linux機子上的外部Macintosh硬碟驅動器。一般來說,如果編譯時轉載了驅動程式,Linux就可以讀取它在任何埠可以識別的分割槽表格式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10796304/viewspace-963216/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sketch mac:以簡潔高效的方式,繪製精彩向量世界Mac
- 未來的Linux世界Linux
- 讓世界更精彩,中興通訊亮相2023世界VR大會VR
- 微課|玩轉Python輕鬆過二級(2.4節):常用內建函式用法精要3Python函式
- 2.4 介面
- 爬蟲養成記——先跨進這個精彩的世界(女生定製篇)爬蟲
- [] == ![],走進==隱式轉換的世界
- linux的test命令(轉)Linux
- 2.4-2.10
- 魔幻特效,慢放世界,nova 3帶你玩轉抖音新技能特效
- 一週精彩內容分享(第 3 期):開工大吉的 B 面
- xtrabackup 2.4 的介紹與使用
- Cocos Creator 的工作流程 2.4
- 走進Linux的世界,需要怎麼做Linux
- 攻防世界-轉輪機加密加密
- 2.4 Overview of Services in a CDBView
- 2.4 DOM型xss
- Linux雲端計算學習教程,一個全新的世界—LinuxLinux
- 2.4g和藍芽哪個好 2.4g和藍芽的區別藍芽
- springboot2.4跨域配置的方法Spring Boot跨域
- 【精彩影片集錦】來自拉斯維加斯re:Invent的精彩
- 實用教程丨使用K3s和MySQL執行Rancher 2.4MySql
- 招商基金數字化轉型下的研發管理|釋出會精彩回顧
- 《殺手 3》Polygon 評測:精彩刺激的三部曲收官之作Go
- 2.4、User’s guide (Coroutines)GUIIDE
- 3步get加勒比海盜同款身份證 元宇宙如何玩轉世界公民元宇宙
- Linux:改變世界的一次程式碼提交Linux
- 轉轉“拯救世界”的第一步,師從小米換LOGO?Go
- Linux NAT轉發Linux
- Linux轉包命令Linux
- 精彩回放:第六屆世界網際網路大會綠盟科技亮點集錦
- 群邑報告:在轉型的世界中打造品牌
- threeJs構建3D世界JS3D
- 簡單的css3頭像旋轉與3D旋轉效果CSSS33D
- Three.js - 走進3D的奇妙世界JS3D
- Code Project精彩分享Project
- 新的Monterey 讓遊戲更精彩!遊戲
- 《精彩絕倫的css》筆記《一》CSS筆記
- Linux磁碟掛載 轉Linux