不同操作系统相关的设计和编程风格可以追溯出三个源头:(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)数据文件只有通过专用工具才能访问,开发者的思维会以工具而非数据为中心,这样,不同版本的文件格式很难兼容。