操作系统-系统结构

操作系统的设计和实现

没有一个完整的设计和实现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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑白极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值