不同操作系統相關的設計和編程風格可以追溯出三個源頭:(a)操作系統設計者意圖,(b)成本和編程環境的限制對設計的均衡影響 (c)文化隨機漂移,傳統無非先入為主
1.操作系統的統一性理念
Unix統一性最重要的一點是“一切皆文件”模型及在此基礎上建立的管道概念
2.多任務能力
各種操作系統最基本的不同之處之一就是操作系統支持多進程并發能力。最低端的操作系統(DOS或CP/M),基本上就是一個順序的程序加載器,根本不具備多任務能力,這種操作系統在通用計算機上已經毫無競爭力。
操作系統可具備協作式多任務能力,支持多個進程,一個進程運行前必須等待前一個進程主動放棄占用處理器。這種操作系統風格是對一種硬件的暫時性適應,這種硬件雖然功能強大到支持并行操作,但要么缺乏周期性時鐘中斷,要么缺乏內存管理單元、或者兩者都缺,這種系統過時,不再具備競爭力
unix系統擁有搶先式多任務能力,時間片由調度程序來分配,這個調度程序定期中斷或搶斷正在運行的進程而把控制權交給下一個進程,幾乎所有現代操作系統都支持搶占式調度。
注意,多任務和多用戶不是一回事,一個操作系統可以進行多任務處理而只支持單用戶。
3.協作進程
在Unix,低價的進程生成和簡便的進程間通信(IPC)使眾多小工具、管道和過濾器組成一個均衡系統成為可能。
進程是自主運算單元的統一性符號、而進程中控制是可編程的。
管道和所有其他unix IPC方法有一個精微的性質,把程序間的通訊簡化到某一程度而促使功能分離。如果沒有與管道等效機制,程序必須在完全相互了解內部細節的基礎上設計程序,才能實現彼此間的合作。
4.內部邊界
unix提倡設立多個賬戶,每個賬戶具有專屬、可能不同權限,以保護用戶不受行為不端程序的侵害。
unix至少設立了三層內部邊界來防范惡意用戶或有缺陷的程序。一層是內存管理:Unix用硬件自身的內存管理單元來保證金各自進程不會侵入到其它進程的內存地址空間。第二層為多用戶設置真正的權限組---普通用戶(非root用戶)的進程未經允許,不能更改或讀取其他用戶的文件。第三層是把涉及關鍵安全性的功能限制在盡可能小的可信代碼上。
5. 文件屬性和記錄結構
unix既沒記錄結構也沒有文件屬性。
6.二進制文件格式
如果你的操作系統使用二進制文件格式存放關鍵數據,應用程序采用可讀文本格式的傳統很可能無法形成。也會帶來如下后果:(1)即使支持命令接口、腳本和管道,也無法形成過濾器.(2)數據文件只有通過專用工具才能訪問,開發者的思維會以工具而非數據為中心,這樣,不同版本的文件格式很難兼容。