Background

【譯名】幕後、背景

【說明】UNIX系統是一個多人多工系統。換言之,它可以在同一時間內服務多個使用者及執行多個工作,因此需要有幕前、幕後之分。在背景的情況下,使用者所下達的指令並不會馬上執行,而是放到一個佇列(queue)中,等待 CPU 的眷顧,至於何時被執行?執行的細節如何?使用者無法立即由終端機知曉,因此以「背景」稱之 。一般作法是在指令後面加上 "&" 符號,來表示我們要求系統以背景的方式來作處理,等到執行完畢,會傳回該指令的處理程序識別碼(process ID)以及結束的訊息。

【範例】$spell memo.aut > errors &

【參考】foreground, process ID, background process。

Background process

【譯名】幕後處理程序、背景處理程序

【說明】如果使用者所建立的處理程序是以幕後的方式執行,就稱之「幕後處理程序」。它的一切優先權利(priority),例如:執行的時間、資源的取得等,都較「幕前處理程序」(foreground process)為低。

【參考】background, priority, foreground process。

backup

【譯名】備份

【說明】一般泛指檔案系統(file system)的拷貝,目的是為了防止機器的當機、碟的意外損毀或是使用者無意之間刪除重要的資料。

【參考】file system。

Baud rate

【譯名】鮑率

【說明】用以計算傳輸速率的單位。若某介質(media)每秒能傳送 n 個訊號值,則其鮑率即為 n 。但是傳輸速率為 n 鮑率的線路並不一定表示每秒傳送 n 個位元。如果一個訊號值可用來傳送 3 個位元﹐則其位元速率為鮑率的 3 倍;如果一個訊號值只傳送 1 個位元﹐則其位元速率即等於鮑率。

Berkeley fast file system

【譯名】柏克萊快速檔案系統,簡稱 bfs

【說明】柏克萊快速檔案系統將磁碟的分割區(partition)分割為許多的磁柱群 (Cylinder Group),每一個磁柱群依磁碟的大小,包含了 1 到 32 個相鄰的磁柱,在磁柱群上,擁有「超級區塊」(super block),磁柱群區塊和索引節點區塊(請參考下圖),磁柱群區塊包含了有關在此磁柱群中空白區塊和空白索引節點的資料以及磁柱群運用的狀態,而超級區塊(super block)在檔案系統中每個磁柱群都佔有不同的位置,例如一個可能在磁軌(TRACK)5 上而另一個則在磁軌 6 上(放在比前一個多一個 TRACK 的位置),因此所有超級區塊同時損壞的機率很小。當檔案系統超級區塊損壞時,可依照其他的超級區塊上的資料來修復。

啟動區塊

超級區塊

磁柱群區塊

索引節點區塊

.

.

.

資料區塊

.

.

.

資料區塊

超級區塊

磁柱群區塊

索引節點區塊

.

.

.

資料區塊

因為每個磁柱群都有索引節點表,而快速檔案系統又儘可能地將在屬於同樣一個目錄的索引節點和資料區塊放入在同一個磁柱群中(由索引節點的直接指標所指到的資料區塊通常被放於和目錄相同的磁柱群�堙A間接指標所指向的資料區塊則存於後面的磁柱群中),因此找尋資料的速度也相對的提高了許多。對於一個新建立的目錄檔案,快速檔案系統會找到有較多空索引節點的磁柱群來存放,而且檔案系統儘量在磁柱群上留下一些空間而不將其放滿,使磁柱群更有彈性。此外,BSD 的快速檔案系統使用較大的邏輯區塊(4K 或 8K),所以速度很快,但是也因為如此存放檔案時,往往會浪費許多空間,所以快速檔案系統准許小的檔案存放在別的檔案中未使用的空間(稱為 fragment),如此可以減少磁碟浪費的狀況,一般而言一個 fragment 佔該邏輯區塊的1/8。

此外,快速檔案系統保留了一部份的磁碟空間,只有 root 的使用者有權利應用這部份磁碟空間,這樣使得檔案系統存滿時,系統管理師仍有足夠空間能操作,所以有時您使用 df 指令時會發現檔案系統會超過 100% 的使用率。在快速檔案系統中保留之磁碟空間的預設值是 10%,不過您可以更改 MINFREE 的值或使用 "newfs -m" 的指令使得建立的新檔案系統利用不同的比率。例如/usr 上的資料比較不常改變,我們可將保留的比率降低。

【參考】fragmentation。

binary file

【譯名】二進位檔

【說明】這種檔案與 DOS 中以 .EXE 或 .COM 結尾的檔相類似,在檔頭前幾個位元組的地方記錄著一些關於系統的資料,以及所謂的「魔術數字」(magic number)。當系統執行此類檔案時,便會藉此判斷這是否為合格的二進位可執行檔。

【參考】magic number。

Block

【譯名】區塊(名詞),阻隔/擱置(動詞)

【說明】「區塊」是指 UNIX 系統在作大量資料搬移的動作時,所使用的資料量單位,常見的區塊大小是 512 或 1024 個位元組,在 SVR4 最多可以讓一個區塊大至 8192 個位元組。如果 Block 用做動詞,例如某個處理程序因為等候輸入/輸出作業的完成而處於被阻隔的情形。

Block device

【譯名】區塊設備

【說明】在核心(kernel)中有許多的設備驅動程式(device driver)來管理各種不同的週邊設備,這些設備因性質的不同可分為兩類:字元設備與區塊設備。而區塊設備是指在做資料的輸出輸入時,能一次處理多個位元組資料的設備。例如:磁碟機、磁帶機。它的作法是─使用一個固定大小的連續記憶體區塊當作資料的暫存緩衝區(buffer),等到存滿了以後再一次做輸出或輸入。

【參考】character device, kernel, device driver。

block special file

【譯名】區塊特殊檔

【說明】所謂的「區塊特殊檔」是指此檔案它所對應的設備一次可處理多個位元組資料。在舊式的 UNIX 檔案系統,其大小通常是 512 個位元組或是 1024 個位元組。現在的一些檔案系統則往往大到一個區塊 8192 個位元組。

【參考】character device, character special file, block device。

Boot

【譯名】啟動

【說明】UNIX 和 DOS 的最大不同點便是在 UNIX 環境中,使用者是沒有權力和任何週邊設備連絡,而所有的指令動作必須透過「核心」。「核心」是在系統啟動時便一直座落於記憶體之內,而如何將「核心」在啟動時放入記憶體中便是系統啟動最重要的目標。

當系統啟動時,機器上的 ROM, PROM 或 EPROM 會自動的將啟動區塊(boot block)放入記憶體中,從啟動區塊(boot block)上,系統會找到一個小小的程式叫 "boot program loader"(有的系統稱之為 boot 0),當執行 "boot program loader" 程式時,它會依據在啟動區塊(boot block)上的記錄找到 "/boot" 程式(這名字可能因系統的不同而不一樣)而將其放入記憶體中執行。因為使用者可能在啟動時引用特別的變數,例如以單一使用者模式( single user mode)啟動,或是希望用某一個特別的核心(如採用 /unix.old 而不用 /unix),"/boot" 會找到啟動所要的變數及核心的位置,然後將核心放入記憶體內執行。核心啟動後會將所有的表都整理好,同時認識了在週圍的設備,安排好排程處理,然後它會產生 "init" 及 "page daemon" 兩個重要的處理程序,最後啟動處理程序會變成 "swapper" 程序。

boot block

【譯名】載入區塊

【說明】我們可視 UNIX 的檔案系統(file system) 為一連串區塊(blocks)的組成。其中的第一個區塊為「載入區塊」,保留給啟動程式使用,其作用在於系統啟動時,將系統核心(kernel)經由磁碟載入主記憶體中,然後再將控制權交給系統核心來指揮整個系統的運作。每個檔案系統都擁有載入區塊,但是只有根檔案系統(root file system)的載入區塊有載入程式(boot program loader),其他的載入區塊雖然存在, 但是並不使用。

【參考】file system, kernel。

Bourne shell

【譯名】無

【說明】Bourne shell 是由 AT&T 貝爾 Steve Bourne 所發展出來的指令解譯器,於 1978 年公開問世。這是一個程式不大而且相當有效率的 shell ,主要是以 UNIX System V 為主。與 C shell 相比較,它的執行速度較快,同時所佔記憶體空間較少。但是與 Korn shell 相比較的話,它的執行速度就慢了一些。那是因為 Korn shell 使用使用了許多的內建函式,能直接由 shell 執行,而不需要另外再建立一個子 shell 執行,故效率較好。但相對地,它所佔的記憶體空間也就較大了。除此之外,對一些較專業的使用者而言, Bourne shell 有幾個美中不足之處。第一:它沒有提供所謂的「命令歷史清單」(command history)的功能;第二:它沒有提供「別名」(alias)的服務務。要靠使用者自行設計程式才能達成。

【參考】C shell, Korn shell。

BSD (Berkley Software Distributions)

【譯名】無

【說明】從西元 1979 開始,由美國加州大學柏克萊分校所發展出來的 UNIX 系統,均以 BSD 作為其版本名稱。第一個版本為 3BSD,之後經過改進有4.0 BSD、 4.1aBSD、 4.1cBSD、 4.2BSD、 4.3BSD 到現在的 BSD 4.4 版。

buffer

【譯名】緩衝區

【說明】當中央處理器(CPU)對週邊設備,如:磁碟機、印表機做輸出入時,由於彼此的速度相差太多,使得中央處理器必須等週邊設備處理完第一筆資料後才丟第二筆資料給它,如此一來,使得中央處理器寶貴的時間都浪費在等待之中。為了改善這個缺點,提高中央處理器的工作效率,於是就在記憶體內劃出一塊區域,稱為〝緩衝區〞。當有資料要輸出時,先將資料放入緩衝區中,由週邊設備去處理緩衝區內的資料,此時中央處理器就可以先去做別的事,等週邊設備處理完緩衝區內的資料後,再通知中央處理器放入第二筆資料。而輸入資料時,則是由週邊設備將資料放入緩衝區後再通知中央處理器來處理。如此一來,中央處理器就不用枯等週邊設備,而能將寶貴的時間用在別的地方。因此,緩衝區其實就是一塊記憶體,目的就在於提高中央處理器的效率。

buffer.gif (3238 bytes)

Buffer cache

【譯名】快速緩衝區

【說明】在微處理機越來越快的今天,電腦系統的速度瓶頸幾乎全卡在輸出輸入設備這部份,在更快速的輸出輸入設備未產生前,加快輸出輸入速度的最有效途徑似乎就只有從減少輸出輸入次數著手。快速緩衝區就是 UNIX 系統用來減少輸出輸入次數的設計。

在作業系統的設計上,我們將資料的儲存裝置分成兩類,一類是主記憶體(primary memory),另一類稱作輔助記憶體(secondary storage device)。主記憶體存取速度快,通常以百萬分之幾秒甚至億分之幾秒為單位,但是昂貴而且電源一旦關閉一切資料就都隨風而逝,輔助記憶體雖然存取速度慢(以千分之幾秒為計算單位),可是價格便宜而且不會因為電源中斷而遺失資料,例如您的硬碟機、光碟機等就是屬於輔助記憶體,通常用戶的資料檔都是存在這�堙C

現代的微處理機速度越來越快,因此相對的也須要更快的記憶體與之匹配,如果全部的主記憶體都使用這種高速記憶體成本又太高,所以又有所謂快取記憶體(cache)的出現, 這種快取記憶體純粹是硬體,您家的 PC 在開機時不是會看到 64K cache 或是 256K cache 的字樣嗎?那就是所謂的快取記憶體。讀者要留意,別將快取記憶體與快速緩衝區給弄混了,前者是百分之一百的硬體,後者則是一個程式,例如 DOS 環境下的 SMART DRIVER (smartdrv.exe)就是一種快速緩衝區軟體。

當處理程序向檔案系統提出存取檔案的需求時,核心(kernel)會將所要的資料載入主記憶體,以供處理程序取用(透過 open()、read()、write()等系統呼叫);在處理程序使用完後,核心還得將這些資料再回存到輔助儲存設備。這樣的作法看來十分理所當然,可是系統如果真的這樣處理,系統的整體執行效率將會大為低落,這是由於緩慢的磁碟存取拖累了整體的執行速度,並且造成微處理機大部份的時間都是在等待輸出輸入動作的完成。

為了克服這個障礙,UNIX 使用一部份主記憶體為系統本身的資料緩衝區,緩衝區中存放著用量較為頻繁的資料,以降低實際對硬體設備讀寫的次數,這些主記憶體即是所謂的快速緩衝區。

由下圖您可以發覺快速緩衝區位於檔案系統和區塊設備(block)換言之,當核心企圖由區塊設備讀取資料時,它會先嘗試著看看快速緩衝區中是否有它要的資料,如果有就直接從快速緩衝區內取用,假使沒有就由磁碟中尋找,並將尋得的資料放一份到快速緩衝區中。同樣的,當核心將資料寫出時,亦會先將資料寫入快速緩衝區以便下次要讀取時能夠不須到硬碟內去找。

從 UNIX 的原始碼來看,快數緩衝區的成是碼共分為三個主要的模組:一個是與檔案系統的介面,包括對區塊設備的各種操作;一個是快速緩衝區佇列本身的管理模組;最後一個則是直接和區塊設備及驅動程式溝通,整個關連請看下圖:

Buffer cache.gif (4278 bytes)

從上面的說明我們可以知道如果系統每次存取的資料都能在快速緩衝區�塈鋮魽A則系統的執行效率自然很好;但是如何讓快速緩衝區能有高命中率呢(high hit rate)?一種是將快速緩衝區家大,另一種就是採用適當的演算法,讓使用最頻繁的資料都留在快速緩衝區內,一般而言,LRU(Least Recently Used)演算法較常被採用。

【參考】file system, block device。

buffer device

【譯名】緩衝設備

【說明】同「區塊設備」(block device)一辭。

【參考】block device, character device。

buffer pool

【譯名】緩衝區儲存池

【說明】系統用以管理全部緩衝區所使用的一種資料結構。透過此種結構,系統可以區分出每一個緩衝區是處在那一種狀態。以 BSD 版為例,它將緩衝區分為:存有資料且資料未被使用的狀態、存有資料但資料已被使用過的狀態、沒有存資料的狀態..等。對磁碟上經常會被使用到的資料,這些系統緩衝區等於提供了一個暫時儲存的場所,用以增進 CPU 的使用效率,因此它們也被稱為「高速緩衝區」(buffer cache)。

【參考】BSD, buffer cache。

byte order

【譯名】位元組序列

【說明】指資料在記憶體中的儲存順序。