本期所談的「作業系統概念」在電腦知識領域裡, 是一個非常重要的基本觀
念, 請各位務必重複閱讀! 在日後探討作業系統指令時, 記得交互參閱本文, 將
有助於更深一層的體會。
在介紹作業系統概念之前, 有一個非常重要的觀念必須告訴各位, 如果觀念
不正確, 會影響到各位將來學習電腦的方式, 初學者往往因為學習方法錯誤, 而
認為電腦很難學, 其實他們錯了!
學電腦的重點是在於「觀念」這兩個字, 而不是電腦指令!
或許是學校教育的問題, 初學者會很自然的去K電腦指令, 但卻沒想到不同
的電腦搭配不同的作業系統, 同樣一件事情卻可能使用完全不同的指令和語法。
比如「顯示現在目錄裡所存放的所有檔案」這件事, 在不同的作業系統上所要下
的命令是 :
○ 在早期的 APPLE Ⅱ 電腦的 DOS 作業系統裡 : 鍵入 CATALOG 。
○ 在目前 IBM PC AT 的 MS-DOS 作業系統裡 : 鍵入 dir 。
○ 在目前 IBM PC AT 的 UNIX 作業系統裡 : 鍵入 ls 。
而目前常用的作業系統至少有幾十種! 其他電腦上的作業系統不算, 僅僅在
IBM PC 上可以執行的作業系統就有 MS-DOS、NDOS、中文 DOS、Novell、OS/2、
UNIX、XENIX、Windows 八種以上, 而將來還可能陸續增加 ! 重要的是每一種作
業系統的指令不盡相同, 請問你是學電腦指令呢? 還是電腦觀念?
聰明的人一定會選擇學電腦觀念, 因為觀念只有一種, 只要學會這個觀念,
就算使用不同的電腦和作業系統, 仍然可以勝任愉快。比如你知道: 任何的電腦
都有一種功能, 可以把現在目錄裡所存放的檔案顯示出來。只要知道電腦可以做
這件事, 當你使用其他電腦時, 自然會去找該電腦的「使用手冊」, 查「顯示檔
案」的命令是什麼? 因此, 背指令的學習方式是錯誤的, 請注意我們所敘述的「
觀念」問題! (即使學習其它軟體或電腦語言, 學習重點仍然是觀念)。
───────────────────────────────────
所謂作業系統 (operating system) 其實是位於電腦使用者和電腦硬體之間
的一個介面程式, 我們可以稱為「作業系統程式」。作業系統所服務的內容是:
提供一個良好的工作環境, 讓使用者可以很輕鬆的執行各種應用程式和處理資料
。作業系統主要目的是使電腦系統更易於使用, 其次是希望能夠更有效率的運用
電腦硬體設備。
一部電腦裡頭如果沒有任何程式, 那麼所謂的電腦不過是由一堆電子零件所
組成的一部機器罷了, 根本就不能做任何事情, 如果真的想直接命令電腦動作,
而不透過作業系統的話, 我們必須下達非常多的命令給每一個零組件, 才有可能
完成像「拷貝檔案」這樣一個簡單的工作。
試想, 如果我們必須親自下達啟動磁碟機, 找尋磁碟機裡來源檔案的所在位
置, 以及目的檔案的資料儲存預定區 (可能是一個空白區域或一個已存在的檔案
) , 當這些都確定OK後, 才開始從磁碟機讀取來源檔的一筆資料到電腦裡, 然
後電腦再將這筆資料, 寫入目的檔的資料預定區, 重複這個工作, 直到來源檔所
有的資料, 全部複製到目的檔為止。
很繁瑣是不是? 如果我們事先寫好一個檔案拷貝程式, 以及一個命令處理程
式, 當電腦收到我們下達的複製命令, 如 copy file.a file.b , 電腦就會知道
要把 file.a 檔案的全部內容, 拷貝到 file.b 裡。這種方式不是很好嗎?
當我們把許多繁雜的事務, 如: 記憶體管理、磁碟機管理、硬體輸出入控制
系統、檔案管理、網路... 等, 一一寫成「工具程式」, 然後以一個「命令處理
程式」來分析使用者所下達的指令, 並依據指令的內容來執行相對應的工具程式
, 比如下達 copy file.a file.b 則會執行「檔案複製程式」。如此一來, 經由
作業系統來操作電腦, 是不是更簡單方便呢?
所以作業系統程式, 其實就是由許多工具程式所集合的「工具程式庫」和「
命令處理程式」所組成。一般我們把工具程式庫稱為「核心程式」, 因此:
作業系統 = 核心程式 + 命令處理程式
底下是一個多使用者作業系統 (shared multi-user system, 許多人同時使
用一部電腦) 的系統結構圖 :
┌────┐┌────┐ ┌────┐ ┌────┐ ┌────┐終
│使用者 1││使用者 2 │ │使用者 3 │ │使用者 4│ ... │使用者 N│端
└────┘└────┘ └────┘ └────┘ └────┘機
↑ ↑ ↑ ↑ ↑
↓ ↓ ↓ ↓ ↓(註1)
┌────────────────────────────────┐
│ 命 令 解 釋 處 理 程 式 │
└────────────────────────────────┘
(註2) ↓
┌────────────┐ ┌────────────────┐
│使用者介面,應用程式 │←→│作業系統核心 (kernel) │
│────────────│←→│────────────────│
│文書編輯程式 │←→│系統呼叫介面: │
│檔案資料排序程式 │←→│檔案系統 (file system) │
│電子郵遞系統 │←→│CPU 排程 (CPU scheduling) │
│軟體發展工具 │←→│記憶體管理 (memory management) │
│ C 程式語言 │ └───────↑────────┘
│ BASIC 語言 │ ┌───────↓────────┐
│ MAKE 公用程式 │ │硬體介面: │
│資料庫管理系統 │ │終端機控制器 │
│檔案搜尋程式 │ │磁碟和磁帶裝置控制器 │
│使用者自行設計的程式... │ │實際記憶體控制器 │
└────────────┘ └────────────────┘
註 1. 每一位使用者都有一部終端機 (含鍵盤和螢幕) 以及命令解釋程式可以使
用, 他們可以在終端機上同時下達指令給系統的核心程式 (不過核心程式
未必會立即處理) 。
2. 核心是一個分時的多工程式, 它會以一一服務每一位使用者 (其實在一個
時間內它只能做一件事情, 因為以極快的速度輪流服務, 對使用者而言會
感覺是同時服務的) , 並執行每一位使用者所交付的命令或應用軟體 (仍
以分時的方式來執行這些軟體程式)。
作業系統的核心程式, 其工作內容大致包含有底下幾種工作:
○ 記憶體管理程式: 記憶體空間的配置和釋放、記錄使用者所使用的記憶體位
置、有閒置未用的記憶體時, 則載入其他正在排隊的程式來執行... 等。
○ 磁碟機管理程式: 剩餘空間的管理 (不連續的可用空間, 最好重新排列為連
續的空間, 以提昇資料的存取速度) 、儲存資料的配置、磁碟機使用的流程
管理... 等。
○ 檔案管理程式: 建立或刪除檔案、建立或刪除目錄 (一個目錄裡可以存放許
多相關的檔案) 、支援檔案和目錄的基本操作、備份資料檔案。
○ 輸出入管理程式: 提供一個快取 (caching) 的資料暫存器 (buffer)。因為
電腦的硬體輸出入處理速度較慢, 如果我們把資料先暫時存放在暫存區裡,
等到電腦有空或暫存區滿時, 再一次輸出入完畢, 將有助於提昇電腦的資料
處理速度。
在多使用者作業系統上, 可能會有一位到數十位使用者, 透過終端機同時使
用一部電腦的機會, 電腦執行程式的速度是不變的, 當使用者愈多時電腦就必須
以「分時」的方式服務每一位使用者。假設有 30 位使用者同時使用電腦, 則電
腦必須在 1 秒內同時服務 30 位終端機, 因此每一位真正分配到的時間是 1/30
秒, 如果這 30 位正好同時執行一個複雜的資料庫管理系統, 電腦很可能會因此
忙不過來。
在大型電腦上, 我們經常會遇到電腦反應遲鈍的困擾, 這個時候只好耐心的
等候一下, 至於等多久就得視電腦的處理速度而定, 說不定永遠等下去, 別忘了
, 大型電腦一樣會當機的。個人電腦就沒有長時間等候的問題, 一部電腦只服務
一位使用者, 電腦把所有的時間都給你, 所以在個人電腦上, 只會發生電腦等使
用者, 而不是使用者等電腦把事情做完。
個人電腦的作業系統結構和大型電腦相似, 只有命令解釋程式的部份, 因為
只有一位使用者而有點不同 (IBM PC 的 MS-DOS 作業系統結構圖) :
┌────┐
│ 使用者 │鍵盤
└────┘
↓
┌──────┐ ┌───────────┐ ←┐
│應用軟體程式│ │ 命 令 解 釋 程 式 │ │
│ │ └─────↓─────┘ ├── MS-DOS
│ (存放在 │ ┌───────────┐ │ 作業系統
│ 磁碟機) │←→│ 核 心 程 式 │ │
│ │ └─────↓─────┘ ←┘
└──────┘ ┌───────────┐
│ 硬 體 設 備 │
└───────────┘
MS-DOS 作業系統的核心程式,其工作內容和大型電腦類似, 我們不再重複解
說, 其最大的差別是 MS-DOS 是一個單工的作業系統, 即一次只能做一件事情,
當核心程式等待使用者的命令時 (等命令解釋程式傳來的指令) 就無法執行程式
, 當核心程式在執行應用程式時, 就無法接收作業系統指令 (除非該應用程式自
行模擬作業系統指令) 。
細心的讀者從這個結構圖裡, 就會發現 MS-DOS 並不是一個很好的作業系統
! 怎麼說呢? 試想, 當使用者沒有下指令給作業系統, 叫電腦執行某某應用軟體
時, 電腦因為沒有其他使用者需要服務, 也沒有其它的事可做, 只好不斷的等待
使用者下達命令給它。以專有名詞來說, 此時的電腦狀態叫做「閒置 (idle)」,
簡單的說就是「發呆」! 當然 MS-DOS 並非全然沒有優點, 否則早就被淘汰掉 ,
絕不可能發展到 MS-DOS 6.0 版。 MS-DOS 的最大優點是「系統體積小, 不多佔
用寶貴的記憶體空間」。
讓電腦經常閒置的作業系統, 並不是一個很好的作業系統。個人電腦的執行
速度愈來愈快, 價格也愈來愈便宜, 一部彩色 386 AT 只要 2 萬多 ! 可說是全
世界最便宜的電腦, 就算買回家閒置不用也不算過於浪費, 但如果有一個更好的
作業系統可以發揮電腦高速的特性, 使電腦更易於使用功能更強, 不是很好嗎?
新一代的作業系統 Windows NT、DESQview/X 和 OS/2 2.0 版於近期強力推
出 (我沒說錯吧, 新的作業系統真是愈來愈多, 也愈來愈好) 這三種新的作業系
統, 都有能力同時執行幾個應用程式, 比如你可以同時執行資料庫軟體、通訊軟
體和電腦遊戲, 如此一來, 你只需在一台電腦上即可同時做「資料整理和排序」
、「接收遠程的資料」並利用等待電腦處理資料的空檔, 玩一個有趣的電玩, 打
發打發無聊的時間。對了, 我們可以在不同的電腦上使用同一個作業系統, 而同
一部電腦也可以使用幾種不同的作業系統 (只能選擇其中一種不能同時使用) 。
其實電腦是我們人類最最忠實的朋友! 甚至比狗還要忠實。只要餵它
們吃一點東東 (電源) 你叫它往西, 它決不敢往東, 還可以一天工作 24
小時, 不會鬧情緒, 不會罷工 (除非壞了),不會咬人 (只要你不要摸到你
餵它吃的 110V 的市電即可) 非但如此, 我們交給它再沉重的工作, 它還
會不辭辛勞地為我們把工作做完, 而且還不用給薪水或零用金, 像這種乖
乖型的僕人上那去找?
現在告訴你 Windows 有多好, 一時之間可能還無法體會, 但是當你知道 MS
-DOS 有多難用以後, 就會對 Windows 愛不釋手啦。以後我們會陸續介紹MS-DOS
和 Windows , 敬請期待。
名詞解釋 :
────────────────────────────────────
作業系統 (operating system) : 位於電腦使用者和電腦硬體之間的介面程式。
程式 (program) : 把指令、變數、函數... 等物件, 依照程式設計的目的或功能,
以某一種先後順序組織 (組織的方法稱為演算法) 起來, 就叫做程式。