第2章: 操作系统结构
Operating System Concepts – 7th Edition, Jan 14, 2005
2.1
Silberschatz, Galvin and Gagne ©2005
目录
操作系统服务
操作系统的用户界面
系统调用
系统调用类型
系统程序
操作系统设计和实现
操作系统结构
虚拟机
系统生成
系统启动
Operating System Concepts – 7th Edition, Jan 14, 2005
2.2
Silberschatz, Galvin and Gagne ©2005
本章目标
介绍操作系统为用户、进程和其他系统提供的
服务
讨论组织操作系统的不同方法
解释如何安装、定制操作系统,以及如何启动
Operating System Concepts – 7th Edition, Jan 14, 2005
2.3
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts – 7th Edition, Jan 14, 2005
2.4
Silberschatz, Galvin and Gagne ©2005
2.1 操作系统服务
操作系统向用户和程序提供一个环境以执行程
用户界面
程序执行
I/O 操作
文件系统操作
通信
安全与保护
错误检测
Operating System Concepts – 7th Edition, Jan 14, 2005
2.5
Silberschatz, Galvin and Gagne ©2005
2.1 操作系统服务
操作系统向程序和用户提供一个环境以执行程序
用户界面
– 命令行、图形、批界面
Operating System Concepts – 7th Edition, Jan 14, 2005
2.6
Silberschatz, Galvin and Gagne ©2005
操作系统服务
操作系统向程序和用户提供一个环境以执行程序
程序执行 -程序必须能结束执行,包括正常或不正常
结束(指明错误)
Operating System Concepts – 7th Edition, Jan 14, 2005
2.7
Silberschatz, Galvin and Gagne ©2005
操作系统服务
操作系统向程序和用户提供一个环境以执行程序
I/O
操作
每个设备根据ICH的规范有专用I/O地址
用户不能直接控制I/O
BIOS(Basic
Input/Output System,基本输入输出系统),
提供最低级硬件控制的程序,是程序和备间的枢纽
CPU与外设的交互方式
– 中断处理方式
– io内存(设备寄存器参与内存统一编址)
– io端口(独立地址空间,内存指令不能访问)
Operating System Concepts – 7th Edition, Jan 14, 2005
2.8
Silberschatz, Galvin and Gagne ©2005
操作系统服务
操作系统向程序和用户提供一个环境以执行程序
文件系统操作
创建、删除、搜索、列出信息,访问权限
Operating System Concepts – 7th Edition, Jan 14, 2005
2.9
Silberschatz, Galvin and Gagne ©2005
操作系统服务
操作系统向程序和用户提供一个环境以执行程序
通信 – 进程间可能需要交换信息 (共享内存,消息交换)
同一台计算机运行的进程间
网络连接的不同计算机上的进程间
各并发进程之间并不是完全互相独立的
• 竞争共享资源
• 通过数据交换来协调、协作
Operating System Concepts – 7th Edition, Jan 14, 2005
2.10
Silberschatz, Galvin and Gagne ©2005
操作系统服务
操作系统向程序和用户提供一个环境以执行程序
错误检测 – OS 需要知道可能出现的错误
可能发生在CPU
或内存硬件(电源失败)、I/O设备(网络
磁盘、打印机)、用户程序(溢出、越界、超时)中
对于每种类型的错误,OS 应该采取适当的动作以确保正
确和一致的计算
调试工具可以在很大程度上加强用户和程序员有效使用
系统的能力
Operating System Concepts – 7th Edition, Jan 14, 2005
2.11
Silberschatz, Galvin and Gagne ©2005
操作系统服务
还有一组操作系统函数通过共享计算机资源提高效率
资源分配 – 当多个用户或多个作业并发运行时,系统必须
为它们中的每一个分配资源
统计 – 需要记录哪些用户使用了多少和什么类型的资源
保护和安全 – 对于保存在多用户或网络连接的计算机系统
中的信息,用户可能需要控制信息的使用
保护即确保所有对系统资源的访问是受控的
Security系统安全 不受外界侵犯,延伸到外部I/O设备不
受非法访问
如果一个系统需要保护和安全,那么系统中的所有部分
都要预防。一条链子的强度与其最弱的链环有关
Operating System Concepts – 7th Edition, Jan 14, 2005
2.12
Silberschatz, Galvin and Gagne ©2005
2.1 操作系统服务
操作系统向程序和用户提供一个环境以执行程
用户界面
程序执行
I/O 操作
文件系统操作
通信
安全与保护
错误检测
Operating System Concepts – 7th Edition, Jan 14, 2005
2.13
Silberschatz, Galvin and Gagne ©2005
2.2 操作系统用户界面
− 命令行界面 CLI
− 图形界面 GUI
Operating System Concepts – 7th Edition, Jan 14, 2005
2.14
Silberschatz, Galvin and Gagne ©2005
命令解释程序
CLI 允许用户直接输入操作系统完成的命令
主要作用是获取并执行用户指定的命令
有时有多种实现方式
– 外壳(shells)
– 命令解释器
– Bourne
shell,C Shell, Korn Shell...
内核实现:包含代码以执行命令
– rm
file.txt
– 跳转到相应的代码段(rm),设置参数、执行系统调用
系统程序实现:搜索rm文件,加载代码进内存
– 增加新命令通过创建文件实现,无需修改shell
Operating System Concepts – 7th Edition, Jan 14, 2005
2.15
Silberschatz, Galvin and Gagne ©2005
操作系统用户界面 - GUI
用户界面友好的桌面接口
通常使用鼠标、键盘和监视器
图标代表文件、程序、系统功能等
不同对象上鼠标按钮导致不同的动作
GUI首次出现在 Xerox PARC
现在许多系统同时包含CLI和GUI界面
Microsoft Windows使用带有命令行的图形界面
Apple Mac OS X, Aqua, Tiger, Leopard, Lion, Mavericks...
UNIX 使用命令行界面并有多个shell可用
Solaris 是 CLI 界面带有可选的图形界面
Operating System Concepts – 7th Edition, Jan 14, 2005
2.16
Silberschatz, Galvin and Gagne ©2005
2.3 系统调用
操作系统提供的编程接口(面向程序)
常用高级语言编写 (C or C++)
大部分程序通过高层应用程序接口(API)访问,不直接
使用系统调用
三种常用 APIs:
用于Windows 的Win32 API,
适用于POSIX的系统 (包括几乎所有版本的UNIX, Linux,
和Mac OS X)的POSIX API
用于 Java 虚拟机 (JVM) 的Java API
Operating System Concepts – 7th Edition, Jan 14, 2005
2.17
Silberschatz, Galvin and Gagne ©2005
函数库调用
系统调用
在所有的ANSI C编译器版本中,C库
各操作系统的系统调用是不同的
函数是相同的
它调用函数库中的一段程序(或函数)它调用系统内核的服务
与用户程序相联系
是操作系统的一个入口点
在用户地址空间执行
在内核地址空间执行
它的运行时间属于“用户时间”
它的运行时间属于“系统”时间
需要在用户空间和内核上下文环境间
属于过程调用,调用开销较小
切换,开销较大
在C函数库libc中有大约300个函数
在UNIX中大约有90个系统调用
典型的C函数库调用:system fprintf
典型系统调用:chdir fork write brk
malloc
内核态(内核模式)
用户态(用户模式)
Operating System Concepts – 7th Edition, Jan 14, 2005
2.18
Silberschatz, Galvin and Gagne ©2005
系统调用举例
拷贝一个文件的内容到另一个文件的系统调用序列
Operating System Concepts – 7th Edition, Jan 14, 2005
2.19
Silberschatz, Galvin and Gagne ©2005
标准 API的例子
可考虑Win32 API中ReadFile()方法 ,从文件中读取内容
ReadFile()函数的参数描述如下:
HANDLE file—所要读取的文件
LPVOID buffer—读进写出的数据缓冲
DWORD bytesToRead—将要读入缓冲区的字节数
LPDWORD bytesRead—上次读操作读的字节数
LPOVERLAPPED ovl—指示是否使用重叠 I/O,异步读取?
Operating System Concepts – 7th Edition, Jan 14, 2005
2.20
Silberschatz, Galvin and Gagne ©2005
系统调用实现
每个系统调用对应一个与其相关的数字
系统调用接口根据这些数字维护一个列表索引
系统调用接口调用所需的系统调用(操作系统内
核中),并返回系统调用状态及其他返回值
调用者不需要知道系统调用具体实现
只需遵循API并了解执行系统调用后系统做了什么
通过API操作系统接口,大部分细节对程序员都隐藏起来,
并由执行支持库所管理
Operating System Concepts – 7th Edition, Jan 14, 2005
2.21
Silberschatz, Galvin and Gagne ©2005
API – 系统调用 – OS 之间的关系
只能受限的访问内存,
不允许访问外围设备
陷阱指令
用户程序不能控制在内核态中执行的指令
内核代码
CPU可以访问所有内存数据
CPU可以访问外围设备
Operating System Concepts – 7th Edition, Jan 14, 2005
2.22
Silberschatz, Galvin and Gagne ©2005
标准的C库例子
C 程序库调用 printf(), 其调用了write()系统调用
printf()
putc()
int write(int,void*,int)
宏STUB
Operating System Concepts – 7th Edition, Jan 14, 2005
2.23
user.h
找不到具体实现
Silberschatz, Galvin and Gagne ©2005
系统调用参数传递(略)
通常,要提供比所需系统调用识别符更多的信息
信息的类型和数量根据操作系统和调用有所不同
向操作系统传递参数有三种方法
通过寄存器传递参数 (最简单的)
一些情况下,参数数量比寄存器多
参数存在内存的块和表中,并将块的地址通过寄存器传递
Linux
和 Solaris 采用这种方法
参数也可通过程序放在或压入堆栈中,通过操作系统弹出
块或堆栈方法不限制所传递参数的数量或长度
Operating System Concepts – 7th Edition, Jan 14, 2005
2.24
Silberschatz, Galvin and Gagne ©2005
通过表传递参数(略)
Operating System Concepts – 7th Edition, Jan 14, 2005
2.25
Silberschatz, Galvin and Gagne ©2005
2.4 系统调用类型
进程控制
文件管理
设备管理
信息维护
通信
Operating System Concepts – 7th Edition, Jan 14, 2005
2.26
Silberschatz, Galvin and Gagne ©2005
MS-DOS 执行状态
(a) 系统启动时
Operating System Concepts – 7th Edition, Jan 14, 2005
(b) 执行程序时
2.27
Silberschatz, Galvin and Gagne ©2005
FreeBSD 运行多个程序
Operating System Concepts – 7th Edition, Jan 14, 2005
2.28
Silberschatz, Galvin and Gagne ©2005
dtrace
如何找出系统运行瓶颈?
dtrace:动态跟踪系统性能及其他问题的工具
Solaris中分散着30,000多的位置指针,也叫探测器probes
,DTrace可激活成千上万的探测器,记录所关注的位
置指定的数据.如命中,即可从该地址显示用户进程或
系统内核的数据,从而了解系统,包括:
任何函数的参数
内核的任何全局变量
函数调用的时间(NS,十亿分之一秒,无任何其他PC/Unix在
ns一级精度)
跟踪堆栈,包括指明函数调用的代码
函数调用时运行的进程
产生函数调用的线程
统计调用次数、磁盘占用等信息
Operating System Concepts – 7th Edition, Jan 14, 2005
2.29
Silberschatz, Galvin and Gagne ©2005
Solaris 10 dtrace 动态跟踪工具
begin{
trace("now begin\n");
}
pid$1::Function:{
ustack();
}
end{
trace("now end\n");
} Concepts – 7th Edition, Jan 14, 2005
Operating System
2.30
Silberschatz, Galvin and Gagne ©2005
2.5 系统程序
提供开发和执行程序的环境
文件管理 – 创建、删除、复制、重命名、打印、
转储、列出和操作文件和目录
状态信息
一些程序从系统那里得到状态信息 – 日期、时间、可用
内存、磁盘空间和用户数等
另一些需要提供详细的性能、登录和调试信息
这些信息经格式化后打印到终端、输出设备或文件
有些系统支持注册表 –用于存储和检索配置信息, regedit
Operating System Concepts – 7th Edition, Jan 14, 2005
2.31
Silberschatz, Galvin and Gagne ©2005
系统程序
文件修改
有多个文件编辑器创建和修改文件
也有特殊命令用于查找文件内容或完成文本转换
程序语言支持
常用程序设计语言的编译程序、汇编程序、调试程
序和解释程序
程序装入和执行
加载程序、重定位加载程序、链接编辑器和覆盖式
加载程序,还有高级语言或机器语言的调试程序
通信
提供在进程、用户和计算机系统之间创建虚拟链接
的机制。浏览网页、电子邮件、远程登录
Operating System Concepts – 7th Edition, Jan 14, 2005
2.32
Silberschatz, Galvin and Gagne ©2005
2.6 操作系统设计和实现
OS的设计和实现没有完整的解决方案,但有些方
法还是成功的
不同操作系统的内部结构也有很大不同
从定义系统的目标和规格开始
系统设计受到硬件选择和系统类型的影响
用户目标 和系统目标
用户目标 – 系统应该方便和容易使用、易学、可靠、
安全和快速
系统目标 – 系统应该容易设计、实现和维护,也应该
灵活、可靠、高效且没有错误
Operating System Concepts – 7th Edition, Jan 14, 2005
2.33
Silberschatz, Galvin and Gagne ©2005
操作系统设计和实现
区分的重要原则
策略(Policy): case sensitive
机制(Mechanism): case independent
机制决定如何做, 策略决定做什么
策略与机制的区分对于灵活性来说很重要
策略可能会随时间或位置而有所改变
实现
高级语言 vs. 汇编 : 性能 vs. 通用性
Operating System Concepts – 7th Edition, Jan 14, 2005
2.34
Silberschatz, Galvin and Gagne ©2005
2.7 系统结构
MS-DOS
分层
微内核
模块
源代码(万行)
9000
8000
7000
6000
5000
4000
3000
2000
1000
0
Unix V1.0
Operating System Concepts – 7th Edition, Jan 14, 2005
Linux 2.2.0
2.35
Windows 7
Windows VistaSilberschatz,
Mac OS XGalvin and Gagne ©2005
2.7.1 简单结构
无结构
早期操作系统:规模小,简单,功能有限
问题
混乱
难以维护和更新
易受错误或恶意代码伤害
不适合大规模系统开发
Operating System Concepts – 7th Edition, Jan 14, 2005
2.36
Silberschatz, Galvin and Gagne ©2005
MS-DOS 层次结构
不划分模块
尽管MS-DOS有某种
结构,其接口和功能
层没有划分清楚
程序错误导致整个系统崩溃
Operating System Concepts – 7th Edition, Jan 14, 2005
2.37
Silberschatz, Galvin and Gagne ©2005
早期 UNIX
UNIX – 受到硬件功能的限制,原始的UNIX操作系统为
受限结构。 UNIX OS 由两个独立部分组成
系统程序: 用户界面,编译器,系统库...
内核
接口和驱动程序,硬件上和系统调用接口下的所有部分
文件系统、CPU调度、内存管理和其他操作系统功能
越来越大,难以管理
Operating System Concepts – 7th Edition, Jan 14, 2005
2.38
Silberschatz, Galvin and Gagne ©2005
2.7.2 层次结构
操作系统划分为若干层,在低层上构建高层。底层(0层)为硬
件;最高层( N层)为用户层
考虑模块化,每层只使用低层次的功能和服务
THE 操作系统 (By Edsger Wybe Dijkstra)
优点: 更灵活、维护效率低
缺点: 影响效率、分层不是普适思想
* File <--> I/O 调用关系
Operating System Concepts – 7th Edition, Jan 14, 2005
2.39
Silberschatz, Galvin and Gagne ©2005
Dijkstra
Edsger Wybe Dijkstra
− 提出信号量和PV原语
− 解决了“哲学家聚餐”问题
− 最短路径算法(SP)和银行家算法的创造者
− 结构程序设计之父
− THE操作系统的设计者和开发者
与D.E. Knuth并成为当代最伟大的计算机科学家
Operating System Concepts – 7th Edition, Jan 14, 2005
2.40
Silberschatz, Galvin and Gagne ©2005
2.7.3 微内核
Fact 1: 服务器对系统稳定性和安全性要求更高
Fact 2: 代码运行总会出错
Operating System Concepts – 7th Edition, Jan 14, 2005
2.41
Silberschatz, Galvin and Gagne ©2005
2.7.3 微内核
从核内移出尽可能多的部分到用户空间
发生在用户模块间的通信使用消息传递形式
好处:
便于扩充OS
用户空间,不改变内核
内核修改所做的改变小
便于移植操作系统到新架构系统上
更稳定 (更少的代码运行在核心态)
更安全
多数服务是用户态执行
坏处: 用户空间和内核空间通信的系统开销增加
Operating System Concepts – 7th Edition, Jan 14, 2005
2.42
Silberschatz, Galvin and Gagne ©2005
微内核系统
第一个微内核系统:CMU的Mach
Tru64 Unix使用Mach内核
QNX-基于微内核的实时操作系统
Windows NT,2000,2003等
Operating System Concepts – 7th Edition, Jan 14, 2005
2.43
Silberschatz, Galvin and Gagne ©2005
2.7.4 模块
大部分现代操作系统用内核模块来实现
使用面向对象方法
每个核心部件是分开的
每个与其他组件的会话被称为接口
每个组件在需要时被加载到内核
总体而言,类似于分层方法,但更灵活
Operating System Concepts – 7th Edition, Jan 14, 2005
2.44
Silberschatz, Galvin and Gagne ©2005
Solaris 模块
类似微内核,核心模块提供核心功能及其他模块加载和
通信的相关信息,模块不需要调用消息来通信
Operating System Concepts – 7th Edition, Jan 14, 2005
2.45
Silberschatz, Galvin and Gagne ©2005
Mac OS X 结构
混合结构
Operating System Concepts – 7th Edition, Jan 14, 2005
2.46
Silberschatz, Galvin and Gagne ©2005
iOS
基于Mac OS X, 增加部分功能性部件
− Cocoa Touch:提供Objective C
API用于开发apps
− Media Services:图像/音视频服务
− Core Services:提供云计算、数据
库等服务
Cocoa Touch
Media Service
Core Services
Core OS
− Core OS: Mac OS X内核
Operating System Concepts – 7th Edition, Jan 14, 2005
2.47
Silberschatz, Galvin and Gagne ©2005
2.8 虚拟机 Virtual Machines
虚拟机:一种通过软件模拟实现,具有完整硬件
系统功能,并运行在一个完全隔离环境中的完整
计算机系统
物理计算机资源共享以创建虚拟机
每个虚拟机同其他虚拟机隔离
由于需要对物理机器进行精确复制,虚拟机实现
困难
上个世纪60年代,虚拟机用于大型机
IBM VM操作系统
Operating System Concepts – 7th Edition, Jan 14, 2005
2.48
Silberschatz, Galvin and Gagne ©2005
虚拟机实现
高级语言虚拟机
模拟代码执行
目的:跨平台
工作站虚拟机
Guest OS
面向工作站、PC
目的:多个操作系统可以同时在一个计算机上使用
服务器虚拟机
多用户、多操作系统并存
目的:把一个物理计算机虚拟化为多个虚拟机
Operating System Concepts – 7th Edition, Jan 14, 2005
2.49
Silberschatz, Galvin and Gagne ©2005
高级语言虚拟机
目前,有上百种不同的高级语言虚拟机
JAVA虚拟机-JVM
JAVA VM
Oracle Hotspot VM
IBM J9 VM
Zing VM
CLDC-HI
Dalvik VM
50
Operating System Concepts – 7th Edition, Jan 14, 2005
2.50
Silberschatz, Galvin and Gagne ©2005
Java 虚拟机
Java虚拟机(JVM):JAVA语言的解释器
可运行Java代码的假想计算机
只要根据JVM规格将解释器移植到特定的操作系统上,
就能运行经过编译的任何Java代码
特点:平台无关性
Operating System Concepts – 7th Edition, Jan 14, 2005
2.51
Silberschatz, Galvin and Gagne ©2005
工作站虚拟机
工作站虚拟机:操作系统上的虚拟机
宿主操作系统(Host OS):安装在硬件上的OS
客户操作系统(Guest OS)安装在操作系统上的操
作系统
工作站虚拟机安装在宿主操作系统上,在工作站虚拟
机中可以安装客户操作系统
好处
同时在一个计算机上使用多个操作系统
一个宿主操作系统,若干个客户操作系统
52
Operating System Concepts – 7th Edition, Jan 14, 2005
2.52
Silberschatz, Galvin and Gagne ©2005
虚拟机工作站软件
VMWare Station
Virtual Box
Virtual PC
Parallels Desktop
53
Operating System Concepts – 7th Edition, Jan 14, 2005
2.53
Silberschatz, Galvin and Gagne ©2005
VMware Station
Operating System Concepts – 7th Edition, Jan 14, 2005
2.54
Silberschatz, Galvin and Gagne ©2005
运行例子
Windows 7
Mac OS X
Operating System Concepts – 7th Edition, Jan 14, 2005
2.55
Silberschatz, Galvin and Gagne ©2005
服务器虚拟机
服务器虚拟化:将服务器物理资源抽象成逻辑资源
,让一台服务器变成几台甚至上百台相互隔离的虚
拟服务器
常用模式:
一虚多:一台服务器虚拟成多台服务器虚拟机
多虚一:多个独立物理服务器虚拟为一个服务器虚拟机
VM1
优点
安全性好
资源共享
可扩展性好
便于隔离
相价比高
Operating System Concepts – 7th Edition, Jan 14, 2005
VM2
VM3
VM4
VM5
2.56
Silberschatz, Galvin and Gagne ©2005
服务器虚拟机架构
57
Operating System Concepts – 7th Edition, Jan 14, 2005
2.57
Silberschatz, Galvin and Gagne ©2005
Vmware vSphere
Operating System Concepts – 7th Edition, Jan 14, 2005
2.58
Silberschatz, Galvin and Gagne ©2005
使用例子
Operating System Concepts – 7th Edition, Jan 14, 2005
2.59
Silberschatz, Galvin and Gagne ©2005
虚拟机(续)
物理计算机的资源被共享,以创建虚拟机
CPU调度使得用户好像有自己的处理器
Spooling和文件系统提供了虚拟卡片阅读机和打印机
普通用户终端成为虚拟机操作员的控制台
Operating System Concepts – 7th Edition, Jan 14, 2005
2.60
Silberschatz, Galvin and Gagne ©2005
虚拟机(续)
Non-virtual Machine
Operating System Concepts – 7th Edition, Jan 14, 2005
Virtual Machine
2.61
Silberschatz, Galvin and Gagne ©2005
虚拟机的优缺点
虚拟机概念提供对系统资源的完全保护,因为每个虚拟
机同其他虚拟机隔离。当然,隔离不允许直接共享资源
虚拟机是研发操作系统的完美载体。系统开发在虚拟机
上而不是在物理硬件上完成,从而不会打扰正常系统运
行
由于需要对下面的机器进行精确的复制,所以虚拟机的
概念实现困难
Operating System Concepts – 7th Edition, Jan 14, 2005
2.62
Silberschatz, Galvin and Gagne ©2005
VMware 结构
Operating System Concepts – 7th Edition, Jan 14, 2005
2.63
Silberschatz, Galvin and Gagne ©2005
Java 虚拟机
Operating System Concepts – 7th Edition, Jan 14, 2005
2.64
Silberschatz, Galvin and Gagne ©2005
系统生成
操作系统被设计成能运行在一类计算机上;系统必须
为每个特定的计算机场所进行配置
SYSGEN 程序获得硬件系统特定配置的相关信息
引导(Booting) – 通过装载内核启动计算机
引导程序(Bootstrap program) –存在ROM中的代码,这
段能够定位内核,将它装入内存并运行
Operating System Concepts – 7th Edition, Jan 14, 2005
2.65
Silberschatz, Galvin and Gagne ©2005
系统启动
操作系统必须被硬件所用,使硬件可以启动它
一小块代码 – 引导转载程序,定位内核,将它装入内
存,并运行
有时采用两步完成:在固定位置加载引导程序的引导块
当电源初始化系统时,开始在一个固定的内存位置执行
固件用于保存初始引导代码
Operating System Concepts – 7th Edition, Jan 14, 2005
2.66
Silberschatz, Galvin and Gagne ©2005
End of Chapter 2
Operating System Concepts – 7th Edition, Jan 14, 2005
2.67
Silberschatz, Galvin and Gagne ©2005
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )