操作系统-系统结构知识详解
操作系统-系统结构操作系统的设计和实现
虚拟机
操作系统调试
操作系统生成
系统启动
## 操作系统的设计和实现
没有一个完整的设计和实现OS的解决方案,但是一些方法已经被证明是成功的
不同操作系统的内部结构可能差别很大
从定义目标和规范开始
受硬件选择、系统类型的影响
用户目标和系统目标
用户目标——操作系统应该使用方便、易学、可靠、安全、快速
系统目标——操作系统应该易于设计、实现和维护,以及灵活、可靠、无错误和高效操作系统的结构
分离的重要原则
政策:我们会做些什么?
机制:怎么做?
机制决定如何做某事,政策决定将要做什么
政策与机制的分离是一个非常重要的原则,它允许政策决策在以后改变时具有最大的灵活性
>简单结构
用最少的空间提供最多的功能
未划分为模块
虽然MS-DOS有一些结构,但它的接口和功能层并没有很好地分开
> ms - dos层结构
分为应用程序 常驻应用程序 md-dos驱动程序 rom bios驱动
> 传统UNIX系统结构
用户 shell命令,编译器,解释器 kernel的系统调用接口 终端控制器终端,
UNIX——同样受到硬件功能的限制,最初的UNIX操作系统的结构有限。
UNIX操作系统由两个可分离的部分组成
系统程序
内核
包括系统调用接口以下和物理硬件之上的所有内容
提供文件系统、CPU调度、内存管理等操作系统功能;一个层次有大量的函数
> 分层的方法分层式操作系统
操作系统被分为许多层(层),每一层都构建在较低的层之上。底层(0层),为硬件;最高层(N层)是用户界面。
通过模块化,可以选择各个层,以便每个层只使用较低层的功能(操作)和服务
> 微内核体系结构
从内核移动到“用户”空间
用户模块之间使用消息传递进行通信
好处:
更容易扩展微内核
更容易将操作系统移植到新的架构
更可靠(在内核模式下运行的代码更少)
更安全的
造成损害:
用户空间到内核空间通信的性能开销
> Mac OS X结构
应用程序环境和公共服务 到kernel环境
>组件
大多数现代操作系统都实现了内核模块
使用面向对象的方法
每个核心组件都是独立的
每一个都通过已知的接口与其他的通信
每一个都可以根据需要在内核中加载
总体上,类似于层,但更灵活
> Solaris模块化方法
solaris为核,向外扩展文件管理 设备驱动...
## 虚拟机
虚拟机采用分层的方法得出其逻辑结论。它把硬件和操作系统内核都当作硬件来对待
虚拟机提供与底层裸硬件相同的接口
操作系统主机创建一个进程有自己的处理器和(虚拟内存)的假象。
为每个客户提供底层计算机的(虚拟)副本
> 虚拟机的历史记录和好处
1972年首次在IBM大型机中商业化出现
从根本上说,多个执行环境(不同的操作系统)可以共享相同的硬件
互相保护
可以允许、控制某些文件共享
通过网络与其他物理系统相互交换
对开发、测试有用
将许多低资源使用的系统合并到较少繁忙的系统上
“开放虚拟机格式”,虚拟机的标准格式,允许一个虚拟机在许多不同的虚拟机(主机)平台上运行
> 半虚拟化
为客户提供与硬件类似但不完全相同的系统
必须修改Guest以在半虚拟化硬件上运行
Guest可以是一个操作系统,或者在Solaris 10应用程序的情况下运行在容器中
> Solaris 10有两个容器
用户程序 系统程序,cpu调用资源 -- 全局专区
虚拟平台设备管理 用户管理 系统管理 网络地址 驱动管理 cpu管理 内存管理
> VMware架构
应用程序 虚拟化层 操作系统(linux) 硬件(cpu 内存 io设备)
> java虚拟机
java文件和 java api放到 类加载器中 然后到 java解释器 =>再到操作系统
## 操作系统调试
调试是发现并修复错误或bug
操作系统产生的日志文件中包含错误信息
应用程序的失败可以生成捕获进程内存的核心转储文件
操作系统故障会生成包含内核内存的崩溃转储文件
除了崩溃之外,性能调优还可以优化系统性能
Kernighan定律:“调试的难度是编写代码的两倍。因此,如果你把代码写到极致,那么显然,你就没有能力调试它。”
Solaris中的DTrace工具,FreeBSD, Mac OS X允许在生产系统上进行实时检测
探针在代码执行时触发,捕获状态数据并将其发送给这些探针的消费者
>Solaris 10 dtrace跟踪系统调用
##操作系统生成
操作系统被设计成可以在任何一类机器上运行;系统必须为每个特定的计算机站点配置
SYSGEN程序获取有关硬件系统具体配置的信息
引导-通过加载内核来启动计算机
Bootstrap程序-存储在ROM中的代码,能够定位内核,将其加载到内存中,并开始执行
## 系统启动
操作系统必须对硬件可用,这样硬件才能启动它
一小段代码——引导加载程序,定位内核,将其加载到内存中,并启动它
有时两步过程,引导块在固定位置加载引导加载程序
当power在系统上初始化时,执行从一个固定的内存位置开始
固件用于保存初始引导代码 谢谢分享 谢谢了了 感谢分享学习笔记 小本本抄好了 感谢分享 这个是个大纲? 感谢分享
页:
[1]