不同操作系統(tǒng)相關(guān)的設計和編程風格可以追溯出三個源頭:(a)操作系統(tǒng)設計者意圖单山,(b)成本和編程環(huán)境的限制對設計的均衡影響 (c)文化隨機漂移州藕,傳統(tǒng)無非先入為主
1.操作系統(tǒng)的統(tǒng)一性理念
Unix統(tǒng)一性最重要的一點是“一切皆文件”模型及在此基礎(chǔ)上建立的管道概念
2.多任務能力
各種操作系統(tǒng)最基本的不同之處之一就是操作系統(tǒng)支持多進程并發(fā)能力毫缆。最低端的操作系統(tǒng)(DOS或CP/M),基本上就是一個順序的程序加載器重斑,根本不具備多任務能力,這種操作系統(tǒng)在通用計算機上已經(jīng)毫無競爭力值依。
操作系統(tǒng)可具備協(xié)作式多任務能力,支持多個進程碟案,一個進程運行前必須等待前一個進程主動放棄占用處理器愿险。這種操作系統(tǒng)風格是對一種硬件的暫時性適應,這種硬件雖然功能強大到支持并行操作价说,但要么缺乏周期性時鐘中斷辆亏,要么缺乏內(nèi)存管理單元、或者兩者都缺鳖目,這種系統(tǒng)過時扮叨,不再具備競爭力
unix系統(tǒng)擁有搶先式多任務能力,時間片由調(diào)度程序來分配领迈,這個調(diào)度程序定期中斷或搶斷正在運行的進程而把控制權(quán)交給下一個進程彻磁,幾乎所有現(xiàn)代操作系統(tǒng)都支持搶占式調(diào)度。
注意狸捅,多任務和多用戶不是一回事衷蜓,一個操作系統(tǒng)可以進行多任務處理而只支持單用戶。
3.協(xié)作進程
在Unix尘喝,低價的進程生成和簡便的進程間通信(IPC)使眾多小工具磁浇、管道和過濾器組成一個均衡系統(tǒng)成為可能。
進程是自主運算單元的統(tǒng)一性符號朽褪、而進程中控制是可編程的置吓。
管道和所有其他unix IPC方法有一個精微的性質(zhì)无虚,把程序間的通訊簡化到某一程度而促使功能分離。如果沒有與管道等效機制衍锚,程序必須在完全相互了解內(nèi)部細節(jié)的基礎(chǔ)上設計程序友题,才能實現(xiàn)彼此間的合作。
4.內(nèi)部邊界
unix提倡設立多個賬戶构拳,每個賬戶具有專屬咆爽、可能不同權(quán)限,以保護用戶不受行為不端程序的侵害置森。
unix至少設立了三層內(nèi)部邊界來防范惡意用戶或有缺陷的程序斗埂。一層是內(nèi)存管理:Unix用硬件自身的內(nèi)存管理單元來保證金各自進程不會侵入到其它進程的內(nèi)存地址空間。第二層為多用戶設置真正的權(quán)限組---普通用戶(非root用戶)的進程未經(jīng)允許凫海,不能更改或讀取其他用戶的文件呛凶。第三層是把涉及關(guān)鍵安全性的功能限制在盡可能小的可信代碼上。
5. 文件屬性和記錄結(jié)構(gòu)
unix既沒記錄結(jié)構(gòu)也沒有文件屬性行贪。
6.二進制文件格式
如果你的操作系統(tǒng)使用二進制文件格式存放關(guān)鍵數(shù)據(jù)漾稀,應用程序采用可讀文本格式的傳統(tǒng)很可能無法形成。也會帶來如下后果:(1)即使支持命令接口建瘫、腳本和管道崭捍,也無法形成過濾器.(2)數(shù)據(jù)文件只有通過專用工具才能訪問,開發(fā)者的思維會以工具而非數(shù)據(jù)為中心啰脚,這樣殷蛇,不同版本的文件格式很難兼容。