简单结构
无结构
早期操作系统采用
- 规模小,简单
- 功能有限
问题:
- 混乱
- 不易维护和更新
- 不适合大规模系统开发
例子:MS-DOS
不划分模块;尽管MS-DOS有某种结构,其接口和功能层没有划分清楚
例子:早期UNIX
受到硬件限制,原始UNIX操作系统由两个独立部分组成:
(1)系统程序
(2)内核
- 接口和驱动程序,硬件上和系统调用接口下的所有部分
- 文件系统、CPU调度、内存管理和其他操作系统功能
操作系统规模
层次结构
操作系统分为若干层,在低层上构建高层,底层(0层)为硬件,最高层(N层)为用户层,每层只使用低层次的功能和服务。层次结构只有相邻两层才能会话。
优点:简化了系统设计和实现,便于调试和升级维护
缺点:每层内容的定义困难,效率差
例子-THE:
1968年Dijkstra开发,荷兰Electrologica X8(32内存)简单批处理系统
例子- iOS
基于Mac OS X,增加部分功能性部件
- Cocoa Touch:开发Apps
- Media services:图像、视频和声音等服务
- Core services:提供云计算、数据库等服务
- Core OS:Mac OS X内核
微内核
问题:内核越来越大,越来越难管理
内核微型化:核内移出尽可能多功能到用户空间
好处:
- 便于扩充微内核
- 便于移植操作系统到新架构系统上
- 更稳定(更少的代码运行在核心态)
- 更安全
坏处:
- 用户空间和内核空间通信的系统开销增加
- 解决办法:提出消息传递机制
微内核系统
第一个微内核系统:CMU的Mach
Tru64的Unix使用Mach内核
QNX-基于微内核的实时操作系统
Windows NT,2000,2003以及后续版本等
模块结构
大部分现代操作系统采用模块结构
- 使用面向对象方法
- 每个核心部件分开
- 每个与其他模块的会话被称为接口
- 每个模块在需要时被加载到内核,类似于硬件的即插即用
总体而言,类似于分层方法,但更灵活。任意两个模块之间都可以会话。
Solaris模块
混合结构–Mac OS X
许多现代操作系统不是采用单一结构,通过采用多种结构获取性能、安全、使用等方面需求。
虚拟机
虚拟机:一种通过软件模拟实现,具有完整硬件系统功能,并运行在一个完全隔离环境中的完整计算机系统。
物理计算机资源共享以创建虚拟机
每个虚拟机同其他虚拟机隔离
由于需要对物理机器进行精确复制,虚拟机实现困难;
上个世纪60年代,虚拟机用于大型机,IBM VM操作系统
虚拟机实现
高级语言虚拟机
- 模拟代码执行
- 目的:跨平台
工作站虚拟机
- Guest OS
- 面向工作站、PC
- 目的:多个操作系统可以同时在一个计算机上使用
服务器虚拟机
- 多用户、多操作系统并存
- 目的:把一个物理计算机虚拟化为多个虚拟机
高级语言虚拟机
目前,有上百种不同的高级语言虚拟机。
JAVA虚拟机(JVM):JAVA语言的解释器
可运行Java代码的假想计算机,只要根据JVM规格将解释器移植到特定的操作系统上,就能运行经过编译的任何代码。
特点:平台无关性
- JAVA VM
- Oracle Hotpot VM
- IBM J9 VM
- Zing VM
- CLDC-HI
- Dalvik VM
工作站虚拟机
工作站虚拟机:操作系统上的虚拟机
- 宿主操作系统(Host OS):安装在硬件上的OS
- 客户操作系统(Guest OS):安装在操作系统上的操作系统
- 工作站虚拟机作为一个软件安装在宿主操作系统上,在工作站虚拟机中可以安装客户操作系统
好处:
- 同时在一个计算机上使用多个操作系统
- 一个宿主操作系统,若干个客户操作系统
虚拟机工作站软件:
- VMWare Station
- Virtual Box
- Virtual PC
- Parallels Desktop
服务器虚拟机
服务器虚拟化:将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器。
安装在硬件上的虚拟机软件是服务器虚拟机。
常用模式:
- 一虚多:一台服务器虚拟成多台服务器虚拟机
- 多虚一:多个独立物理服务器虚拟为一个服务器虚拟机
优点:
- 安全性好
- 资源共享
- 可扩展性好
- 便于隔离
- 性价比高
虚拟机设备
连接模式:
- 软件形式,如远程桌面
- 硬件模式,如虚拟机终端