黑白客 发表于 2021-4-18 15:40

操作系统-系统结构知识详解

操作系统-系统结构
操作系统的设计和实现
虚拟机
操作系统调试
操作系统生成
系统启动

## 操作系统的设计和实现

没有一个完整的设计和实现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在系统上初始化时,执行从一个固定的内存位置开始

固件用于保存初始引导代码

年轻的旅途 发表于 2021-4-18 15:48

谢谢分享

18818471096 发表于 2021-4-18 15:49

谢谢了了

xlshmf 发表于 2021-4-18 15:52

感谢分享学习笔记

Ninecold 发表于 2021-4-18 15:55

小本本抄好了

有、 发表于 2021-4-18 16:04

感谢分享

krainwb 发表于 2021-4-18 17:41

这个是个大纲?

zhou23197082 发表于 2021-4-18 20:16

感谢分享
页: [1]
查看完整版本: 操作系统-系统结构知识详解