C shell

【譯名】無

【說明】C shell 是美國加州大學的柏克萊分校所發展出來的指令解譯器。大部分 Bourne shell 裡的指令在 C shell 中都可以相容,但 C shell 也提供不少專屬的指令,如 aliashistoryprompt 等。BSD 版的 UNIX 都是以 C shell 為主。在 UNIX 系統中叫用 C shell 的指令為 csh

【參考】Bourne shell, BSD

Canonical input mode

【譯名】標準輸入模式

【說明】為便於詳盡說明,請讀者一併參考「原始輸入模式」一辭。

【參考】raw input mode

CCITT

【譯名】國際電報電話諮詢委員會

【說明】CCITT 是國際電報電話諮詢委員會法文名稱 Comite Consult atif International de Telegraphique et Telephoneique 的縮寫。它是聯合國轄下一個叫作國際電信聯盟(Interna tional Telecommunication Union﹐簡稱 ITU)機構中的一個部門﹐其主要業務是要提出跟電話、電報及數據通訊介面有關的技術建議書﹐而這些建議書通常就成為國際公認的標準﹐如 V.24 X.25CCITT 的會員各國國營的郵電部門為 A 級的會員、認可的民營電信局(如 AT&T)員、科技組織和工業組織為 C 級會員、別的國際性組織(如 ISO)為 D 級員、而主要業務並非電信方面﹐但是對 CCITT 的作有興趣的組織為 E 級會員。其中只有 A 級會員有投票權。雖然 ISO CCITT D 級會員、但是對於電信標準方面的問題﹐這兩個組織有時會相互合作﹐以免鬧出兩個法定的國際組織卻互不相容的笑話。

【參考】ISO

Character device

【譯名】字元設備

【說明】在系統核心程式(kernel)多的設備驅動程式(device driver),用來管理各種不同的週邊設備。這些設備因存取資料性質的不同而可分為兩類: 字元設備與區塊設備 block device)。而字元設備指在做資料的輸出輸入時,一次只能處理一個位元組的資料。例如終端機繪圖機、(plotter)、印表機等。

【參考】block device, device driver, kernel

character set

【譯名】字元集

【說明】整理一般常用的字元並將其標準化。常見的字元集有 ASCII EBCDIC 兩種字元集。

【參考】ASCII

character special file

【譯名】字元特殊檔

【說明】所謂的「字元特殊檔」是指此檔案它所對應的設備一次僅能處理一個位元組的資料。由於字元設備是一次一個位元的讀取資料,所以又稱資料流(stream)。

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

Child process

【譯名】子處理程序

【說明】如果一個處理程序(假設為 A)使用了 "fork" 系統呼叫(system call)指令, 則系統會產生另外一個全新的處理程序(假設為 B)。則我們稱 A 為父處理程序, B 為子處理程序。例如:當使用者在 shell 下執行令時,這些命令就是此 shell 的子處理程序。而子處理程序會繼承父處理程序的某些特性,例如兩者共同享有程式節區(code segment),但是卻各有各的資料節區區(data segment)及處理程序區塊(process control block),也就是父子兩者執行的是相同的程式碼,但是卻各擁有他們自己的程式計數器 (program counter) 與資料。

child process.gif (15525 bytes)

【參考】process, system call, parent process, user area, user stack, PCB

Client-server model

【譯名】主從模式

【說明】網路上幾乎所有的通訊服務大多採用主從模式,也就是客機發出詢問,請主機執行,提供服務,並且回覆執行結果。主機又分為反覆式主機(iterative 與共存主機(concurrent)。反覆式主機每次只服務一個客機的要求,共存主機每次可以同時服務多個客機的要求。所謂客機與主機,並不是只一台實体的機器,而是一個執行的處理程序。主機的處理程序會一直執行,隨時等待客機詢問並且提供服務,客機的處理程序在需要時才執行,取得所需的服務後即停止執行。若是共存主機,會衍生(fork)一個新的處理程序來處理這個客機詢問,服務完畢後結束此處理程序,原來的主機處理程序仍繼續等候其他的客機詢問。

clock

【譯名】時鐘

【說明】與時間相關的系統呼叫裡最重要的因素就是系統的時鐘。因為核心程式在控制時鐘中斷和啟始適當的動作時,都需操作各種時間計數器。時鐘中斷處理函式(clock interrupt handler 的主要功能如下:

1. 重新啟動時鐘。

2. 提供核心和使用者處理程序兩者執行啟始檔案(profile)的能力。

3. 當有要求 alarm signal 給處理程序。

4. 在一段期間後叫醒排程程式。

5. 控制處理程序的排程。

【參考】process, profile, tick

close-on-exec

【譯名】無

【說明】這是一個由 fcntl() 系統呼叫設定的旗標。由於子處理程序(child process)會繼承父處理程序(parent process)的環境(environment)﹐在檔案

指標(file pointer)一併繼承的情況下﹐會造成彼此干擾對方讀取檔案的現象。為了改正這個缺點﹐我們可以 fcntl() 的參數 F_GETFD 設定 close-on-exec on ﹐這樣在執 exec() 之後,此檔案描述詞所參考到的檔案會在 exec() 執行成功之後自動關閉。

【參考】child process, parent process

cluster

【譯名】簇柱

【說明】在 BSD 4.3 裡,「簇柱」的定義是一些連續的分頁(page)的組成。換句話說,系統將幾個連接在一起的分頁,合併成一個簇柱。所以這樣做是因為在虛擬記憶體管理的方式中,可以讓「分頁錯誤」(page fault)的次數降低,以及系統的資料結構縮小,同時也可讓使用者覺得記憶體的容量較原本實際硬體所提供的容量大了許多。

【參考】BSD, page fault

COFF (Common Object File Format)

【譯名】共通目的檔格式

【說明】此種格式的目的檔是由 UNIX 系統的組譯程式(assembler)及連結編輯程式(link editor)所產生的。它和其他目的檔不同處在於:它除了適用於 UNIX 系統外,並且也能適用於其他的作業系統。其特點有:

1. 可在目的檔內加入一些與系統有關的資訊,以避免因系統不同而造成輸出入上的困擾。

2. 程式設計師可在編譯(compile)時對目的檔做部份修改。

3. 提供一些訊息以供除錯之用。

Command interpreter

【譯名】命令解譯器

【說明】在 UNIX 系統中的「命令解譯器」就是「shell」。請讀者參考「shell」一辭。

【參考】shell

command line

【譯名】命令列

【說明】所謂的「命令列」是指使用者在 shell 模式下的提示符號後,鍵入完整的工作命令之所在列。其中包括了 shell 命令、選擇項及引數串列。

shell 命令:shell 所允許的命令有三種:

(1) 是一個包含目的碼的可執行檔。

(2) 是一個包含眾多命令的 shell 指令檔(shell script)。

(3) 是一些關鍵字。例如:for-in-do-done, while-do- done, if-then-else-fi ...等等。

選擇項:一般是用 "-" 做開頭,加上所需特定字元,以執行特殊的功能。但是某些選項之前不是用一個減號,而是用一個加號,或是根本不用任何符號。

引數串列:又包含了運算式、目錄名稱或檔案名稱等等。

【範例】

$

提示符號

grep

shell 命令

-i

選擇項

word

運算式

oldfile >

檔案名稱1

newfile

檔案名稱2

【參考】shell, script

command mode

【譯名】命令模式

【說明】所謂的「命令模式」是指某些公用軟體在它們的環境下提供給使用者輸入專屬命令群的模式。下面有兩個例子:在 vi 編輯器的環境下,使用者一定會處於兩種模式之一。另一種是「輸入模式」(input mode),用以接受使用者所鍵入的字元,並顯示於螢幕的編輯區中。另一種就是「命令模式」,用以接受使用者所鍵入的 vi 指令,並立即執行之。另外,在mail郵件服務的環境下,它亦分成兩種不同的模式。一種是「組合模式」(compose mode),用以準備使用者打算傳遞的訊息(message)。另一種就是「命令模式」,用以接受使用者所鍵入的命令,然後對訊息加以適當的處理。例如:可以對這些訊息作查詢、儲存或刪除的動作...等。

【參考】 message

compose mode

【譯名】組合模式

【說明】為便於詳盡說明,請讀者一併參考「命令模式」一辭。

【參考】command mode

Congestion

【譯名】壅塞

【說明】資料因某種因素駐留在緩衝記憶區內無法順利的傳送出去。

Context

【譯名】本文、上下文、前後文

【說明】一個處理程序的本文是一種狀態,包括原文(text)、全域性使用者變數的值、資料結構、機器暫存器的值、儲存在處理程序表格(process table)內的值、使用者區域(U area)以及使用者和核心程式(kernel 堆疊 stack 的內容等要素。綜合上面所述,我們可以說本文是由使用者層面的本文(user level context)、暫存器本文(register context)、系統層面本文(system-level context)所構成的。

【參考】kernel, user area

Context layer

【譯名】本文層

【說明】在本文的系統層面(system-level context)裡,分為靜態部分和動態部分;在處理程序的生命週期中只有一個靜態部分,但卻可能有許多動態部分。

本文系統層面的動態部分可視為本文層中的堆疊(stack),由於堆疊是採後進先出的方式,所以每一個本文層包括一些回覆前一層必要的資訊。

其作用的時機是當核心程式遇到中斷、處理程序進行系統呼叫(system call)或是發生本文置換(context switching)時 push 進本文層。當中斷結束時,處理程序執行完系統呼叫從系統模式(kernel mode)返回到使用者模式(user mode)後,再 pop 出本文層。

【參考】context, context switching, kernel, system call, kernel mode, user mode

Context switching

【譯名】本文置換、前後文轉換、上下文轉換

【說明】當進行系統呼叫(system call)時,使用者的處理程序會從使用者模式(user mode)進入到系統核心模式(kernel mode)。當核心程式執行此處理程序前,必須要進行本文置換。這中間需要若干的額外工作(overhead),例如核心程式(kernel)會儲存必要的資訊以確保稍後能夠從其他的處理程序轉換回來而繼續執行未完成的工作,這些動作即稱為本文置換。

【參考】system call, user mode, process

Control terminal

【譯名】控制終端機

【說明】由處理程序群組首領(process group leader)所開啟的第一個終端設備,它由此處理程序群組(process group)中的成員可以共同擁有。例如,使用者簽入(login)的那台終端機就是往後此用戶所啟始的處理程序群之控制終端機。

【參考】process group leader, process group, login

cooked mode

【譯名】無

【說明】在 BSD 4.3 版中的 UNIX 系統提供了三種不同的字元處理方式,供使用者不同層次的需要:

  1. raw mode:所有輸入的資料立即由系統接收而且不加以解譯。
  2. cbreak mode:所有輸入的資料立即由系統接收,但是對控制字元(例如:Ctrl break)會馬上做轉譯,其餘的一般字元則傳給「原始輸入緩衝區」。
  3. cooked mode:所有資料的輸入先暫時的儲存在一個緩衝區中,一直等遇到 end-of-line字元,系統才做處理。這也是一般的標準處理模式。

cook mode 的作業模式請參閱下圖:

cooked mode.gif (4920 bytes)

【參考】BSD, raw input mode

【附註】cooked mode 又稱為 line mode

Cooperative process

【譯名】共作處理程序、協同作業處理程序

【說明】指有 n 個處理程序參考同一個公用變數、存取同一個檔案或是使用同一個系統資源。

copy-on-write

【譯名】寫入時拷貝

【說明】這是一種提高主記憶體使用效能的方法。其作法是在使用虛擬記憶體管理技巧的 UNIX 系統裡,程式和資料都是被分割成一個又一個固定大小的分頁來儲存;當父處理程序( parent process )產生一個子處理程序(child process)後,這兩者會共同享有程式節區(code segment),至於資料節區( data segment )起初也會讓兩者共有之以節省記憶體,但往後系統 會隨時作監視,一旦有任一方要求更改此資料內容時,便會先將那部份的資料頁拷貝一份出來,讓雙方都各自擁有一份後,再進行修改;如此一來相同的部份不至重覆,便可以達到節省記憶體的空間了,是以稱之「寫入時拷貝」。

【參考】parent process, child process

Core

【譯名】主記憶記、記憶中樞

【說明】在 UNIX 系統中,將主記憶體稱為 core。它其實就是一般所謂的 main memory 或是 primary memory

Core dump

【譯名】記憶體傾印

【說明】UNIX 裡的一些訊號(signal)會造成收到此訊號的處理程序結束,有些訊號更會令執行中的處理程序(process)之「記憶體影像」(memory image),也就是當時的憶體內容,馬上存入現行的目錄(current directory)中,而以 core 為檔案名稱供使用者參考之用。這就是「記憶體傾印」。

【參考】signal

Core image

【譯名】記憶體映射

【說明】記憶體映射是將一個正在執行中或已被結束的程式 (program) 所使用的節區(segment)做一份拷貝,而這份拷備可能存在主記憶體(main memory)、轉換區域(swap area)或是記憶檔(core file)中。

Core map

【譯名】記憶體對應表

【說明】「主記憶體對應表」是 BSD 4.3 UNIX 系統核心(kernel)用來管理主記體的一種資料結構。此對應表包含了主記體中所有「簇柱」(cluster)的進入點(entry)。

【參考】BSD, cluster

core file

【譯名】記憶

【說明】當一個處理程序(process) 因一些不正常的情況發生(例如除以 0、使用者按 CTRL-\ 鍵等)而被終止時﹐系統會將此處理程序的映射(image)寫入一個檔案作為除錯之用﹐此檔案稱之為記憶檔 (core file)。在 UNIX 下,當所執行的程式發生某些錯誤時,系統會產生記憶體傾印(core dump)的動作,所傾印(dump)出的那個檔案是記憶檔。

【參考】core dump

COSE (Common Open Software Environment)

【譯名】無

【說明】這是一個由 IBMHPSCOSunSoft USL 所組成的聯盟,它的目的是為 UNIX 建立一統的標準。目前它已經定義了 170 餘種 UNIX 核心標準、960 種系統介面、174 種系統指令以及 70 餘種標準定義檔。

crash dump

【譯名】失敗傾印

【說明】這是 BSD 4.3 版所提供的一種公用常式,在系統發生嚴重錯誤時,仍然能保留部份系統資料,以供稍後除錯之用。其作業方式是這樣的:當系統核心(kernel)偵測出一個無法復原的錯誤時,便會呼叫此常式迅速地把當時主記憶體的內容寫回次儲存體內,讓系統管理者(system administrator,簡稱 SA)可以藉此找出一些蛛絲馬跡,瞭解問題出在何處。

Cylinder group

【譯名】磁柱群

【說明】請參考 Berkeley Fast File System