Magic number

【譯名】神奇數字、魔術數字、魔術號碼

【說明】魔術數字名稱聽來似乎博大精深,其實卻是個很平實的東西,它所記錄的資料有兩項,其一是可執行檔的型態。看官應該了解 UNIX 的執行檔有兩種(和治感冒的斯斯一樣),一是二進位檔,這是可以直接執行的,另一種是命令檔(script),它要經由 shell 解譯後才能執行的。魔術數字的第一項功能便是說明這個可執行的檔案是屬於那一類。如果是命令檔,則它的魔術數字是由 "#!" 開始,後面接著一個字串,字串的內容是解譯此命令檔的程式之路徑名。假若是二進位檔,則魔數數字記錄的是該程式之本文節區能否分享給多個處理程序。

魔術數字所記錄的第二種資料是可執行檔所要執行的目的機種(target machine)為何?您也許會想這簡直是廢話嘛!在這台機器上編譯的程式不在這�堸鶡獢A還會在那�堙H這種說法就顯得您有一些...!是這樣的,有一種編譯程式叫做跨機種編譯程式(cross-compilers),它能夠在甲機種編譯可在乙機種執行的二進位碼,如此魔術數字所記錄的資訊就有用啦。您可以做一個實驗,把在 XENIX 上產生的二進位檔,拿到 USL 的 SVR4.2 來執行,這時系統會告訴您它不能執行 XENIX 的二進位檔,除非您安裝了 XENIX 相容套件(XENIX compatibility packages)。SVR4.2 就是靠檢查魔術數字來認定這個二進位碼是來自 XENIX。

Major device

【譯名】主要設備

【說明】指在進行輸出輸入時設備檔所對應的設備驅動程式(device driver)。

【參考】device driver。

Mandatory locking

【譯名】強制鎖

【說明】UNIX 所提供的鎖定模式之一。禁止非協同作業(non cooperative)的處理程序取用被鎖定的資料。強制鎖與輸出輸入次系統結合,當一個檔案或記錄以強制的方式上鎖時,所有違背鎖定方式的讀寫作業都會被核心主動擱置直到鎖定解除。由於上鎖與解鎖的動作都不須經由處理程序叫用 fcntl() 或 lockf() 的程序,所以又稱為暗鎖(implicit locking)。

【參考】advisory locking。

MASSBUS

【譯名】無

【說明】這是一種由 DEC 針對高速度、大量儲存能力的週邊設備所設計出來的輸出入匯流排,同時也可以被 UNIBUS 所支援應用。

Message

【譯名】訊息

【說明】所謂的「訊息」是指一些少量的資料(例如 512 個位元組)。它能由處理程序(process)產生,而後送到一個稱為「訊息佇列」(message queue)的地方儲存。由於此佇列是宣告為全系統共用的,因此只要能符合其存取條件者,便可以讓任何處理程序來讀取�堶悸滌T息。

Meta-character

【譯名】萬用/殊字元

【說明】在 UNIX 系統中有某些通用的字元擁有特殊的意義,它能用來取代或是處理一般的字元,有時也可稱為 wild cards,常見的有:

萬用字元

用 途

*

對應於檔案中任何字串或是空字元。

?

對應於檔案中任何單一字元。

[ccc]

對應於任何中括號內的字元。

&

將指令以幕後的方式執行。

\

跳脫符號用以解除特殊字元的特殊意義。

;

分隔符號用以區分命令行中多個指令。

>

將指令的輸出流重導入檔案中。

<

將指令的輸入流指定為由檔案中載入。

>>

將指令的輸出流加在一個己存在之檔案的後面。

|

建立一個管線使一個指令的輸出為另一指令的輸入。

$

Bourne Shell 的提示符號,同時也是 shell 語言的位置參數(position parameters)。

#

註解

&&

AND。

||

OR。

'...'

單引號可將引號內中空格或是特殊意義的字元轉變為一般的意義。

"..."

雙引號可將引號內中空格或是特殊意義的字元除了 $ 號及 ` 號以外轉變為一般的意義。

>&n

將輸出寫到檔案描述詞(file descriptor)為 n 的檔案

<&n

將原本由鍵盤所產生的輸入改為從檔案描述詞是 n 的檔讀取。

>&-

關閉標準輸出檔。

<&-

關閉標準輸入檔。

【參考】file descriptor。

Minor device

【譯名】次要設備

【說明】「次要設備」就是指實際的輸出輸入設備本身。

【參考】major device, device driver, device number。

MNLS (Multi-National Language Supplement)

【譯名】多國語言支援程式庫

【說明】多國語言支援程式庫為 AT&T 所推出的一組程式庫,用來彌補以 ANSI C 發展國際性軟體上的缺陷。目前最新的多國語言支援程式庫之版本為 4.2 版。多國語言支援程式庫 4.2 是價在 UNIX SVR4.2 之上﹐可使 UNIX 系統具有發展國際化軟體的能力,其架構如下圖:

mnls.gif (2989 bytes)

多國語言支援程式庫提供如下的功能:

1. 支援 EUC(Extended UNIX Code)內碼以適應不同地區不同語言的內碼。

2. 具備處理寬字元的能力。

3. 定義了 libw 函式館,針對位元組所形成的字元做特殊處理。

4. 提供設定區域性專屬功能變數的函式,如 setlocale()。

5. 多國語言支持程式庫可依 LC_MESSAGES 檔的設定,以系統所在區域所通用的方式來顯示合乎當地語言慣例的訊息。例如:在華文地區時間之顯示是依年、月、日的次序,與西方社會不同。

6. 以 STREAMS 為基礎重新撰寫一切輸出輸入介面。使各項週邊設備的功能具有較大的彈性。因此在進行國際化的工作時,可易於加入新的輸出輸入模組。

【參考】STREAMS。

MOTIS (Message-Oriented Text Interchange System)

【譯名】無

【說明】應用層的通訊協定(protocol)。用於電子郵件傳遞,類似於 CCITT 的

X400 建議書。

【參考】protocol, CCITT, X.400。

multiplexor

【譯名】多工器

【說明】在 UNIX 系統中,「多工器」屬於一種「虛擬驅動程式」(pseudo driver),它允許眾多用戶處理程序的資料流(streams) 連到單一的驅動程式(driver),或是多個驅動程式連到單一用戶的處理程序。

【參考】pseudo driver。

multi-tasking system

【譯名】多工系統

【說明】所謂的「多工系統」是指一個系統允許多個程式同時儲存在記憶體內,然後利用作業系統的特殊管理程式將 CPU 的時間適當的分配給每個程式使用。

Multithread process

【譯名】多線處理

【說明】當一個處理程序將其部份的程式同時執行時,每一部份便稱為是一個 thread,處理程序中所有資料都可被任何的 thread 共用,雖然每一個 thread 內都有自己的堆疊,自己的程式計數器(program counter)和區域變數(local variables),但是處理程序本身有提供保護的方法,所以任何的 thread 可以使用的 thread 的堆疊而造成天下大亂,所以程式設計師必須特別小心處理。在 UNIX 上,想要處理另外一個任務往往便衍生(fork)了另一個處理程序,但是對核心而言,衍生是一個很複雜的步驟,除了要在處理程序表 (process table) 內加入新的記錄外,還要有新的使用者區域,雖然大多數的系統提供了" 要寫時才拷貝(copy-on-write) " 的方法,但核心仍得更改在分頁表(page table)內所有相關的分頁(page)記錄(例如 counter 等),而且往往處理程序衍生了另一個處理程序,只是要用來呼叫 execv() 來執行某個指令罷了,如此使核心重新多做了一次建立新處理程序的工作。和衍生比較下,thread 完全不要核心做以上的工作,通常啟動一個新的處理程序要比產生一個新的 thread 要多執行十倍的核心指令,因此 thread 又被稱為 Light Weight Process (LWP)。

multi-user system

【譯名】多用戶系統

【說明】所謂的「多用戶系統」是指一個系統能連接多部終端機,而且功能獨立。可供一個以上的用戶來同時使用此套系統,讓使用者有單獨擁有該計算機的感覺。