约 1464 个字 12 张图片 预计阅读时间 7 分钟
Chap 2 | Operating-System Structures
章节启示录
本章节是OS的第二章。
1.Operating System Services¶
- 用户界面(User interface):
几乎所有的操作系统都有一个用户界面(UI)
不同于命令行(CLI)、图形用户界面(GUI)、批处理 - 程序执行(Program execution): 系统必须能够将程序装入内存并运行该程序,结束执行,正常或异常(指示错误)。
- I/O操作: 运行的程序可能需要I/O,这可能涉及文件或I/O设备。
- 文件系统操作(File-system manipulation): 程序需要读取和写入文件和目录,创建和删除它们,搜索它们,列出文件信息,权限管理。
- 通信:
进程可以在同一台计算机上或通过网络在计算机之间交换信息
通信可以通过共享内存或通过消息传递(由操作系统移动的数据包)进行。 - 错误检测
- 资源分配
- 审计accounting/logging:
跟踪哪些用户使用了多少和哪种计算机资源 - 保护和安全
2.System Calls¶
主要由程序通过 Application Program Interface(API) 访问,而不是直接使用系统调用
System Calls VS. API
- System Calls 更加底层一些,用户不会直接使用系统调用
- API是提供的接口,用户程序通过API访问
2.1 系统调用的实现¶
每个系统调用有一个编号
系统调用接口维护一个根据这些数字索引的表
系统调用接口在OS内核中调用预期的系统调用,并返回系统调用的状态和任何返回值
2.2 系统调用的参数传递¶
用于向操作系统传递参数的三种通用方法
-
最简单的:在寄存器中传递参数
在某些情况下,可能有比寄存器更多的参数
-
存储在内存块(block)或表中的参数,以及在寄存器中作为参数传递的块地址
Linux和Solaris采用这种方法
-
由程序放置或推入堆栈(stack)的参数,由操作系统弹出堆栈
块和堆栈方法不限制传递参数的数量或长度
2.3 系统调用的分类¶
- Process control
- File management
- Device management
- Information maintenance (e.g. time, date)
- Communications
- Protection
2.4 系统程序¶
- File manipulation:Create, delete, copy, rename, print, dump, list, and generally manipulate files and directories
- Status information:
- 有些请求系统提供日期、时间、可用内存量、磁盘空间、用户数量等信息
- 其他提供详细的性能、日志记录和调试信息
- 一些系统实现了一个注册表——用于存储和检索配置信息
- File modification:用于创建和修改文件的文本编辑器 用于搜索文件内容或执行文本转换的特殊命令
- Programming language support:Compilers, assemblers, debuggers and interpreters
- Program loading and execution:Absolute loaders, relocatable loaders, linkage editors, and overlay-loaders, debugging systems for higher-level and machine language
- Communications
- Application programs
3.Operating System Design and Implementation¶
Start by defining goals and specifications
Affected by choice of hardware, type of system
-
Important principle to separate
- Policy: What will be done? 策略Policy(确定具体做什么事)
- Mechanism: How to do it? 机制Mechanism(定义做事方式)
Example: timer for CPU protection is a mechanism
机制决定如何做一件事,政策决定做什么
策略与机制的分离是一个非常重要的原则,如果以后要更改策略决策,它可以提供最大的灵活性
4.Operating System Structure¶
4.1 Simple Structure¶
MS-DOS——用最少的空间提供最多的功能
不分为模块
虽然MS-DOS有一些结构,但它的接口和功能层次没有很好地分离
4.2 UNIX¶
4.3 微内核与宏内核¶
微内核¶
将尽可能多的内容从内核移到“用户”空间
用户模块之间使用消息传递进行通信
- 优势:
- 更容易扩展微内核
- 更容易将操作系统移植到新的体系结构中
- 更可靠(内核模式下运行的代码更少)
- 更安全的
- 劣势:
- 用户空间到内核空间通信的性能开销
宏内核¶
- 优势:
- 效率很高
- 劣势:
- 安全性低
- 因为大量功能互相耦合导致维护困难
4.4 Hybrid Structure - Darwin(A hybrid structure!混合结构)¶
- MacOS / iOS Structure:以Darwin为基础,applications层很灵活,可以调用多个层
4.5 操作系统的设计思路¶
-
Layered Approach(逻辑)分层:
- 底层(第0层)是硬件;最高层(第N层)是用户界面。
- 通过模块化、层的选择使得每个层只使用较低层的功能(操作)和服务(不能跨层使用)
-
Modules(模块化):对宏内核很重要
- 每个核心组件都是独立的
- 每个系统都通过已知接口与其他系统通信
-
模块相互调用而不是消息传递
-
类太阳系模块方法(
我自己取的名字)Solaris Modular Approach:
为操作系统提供了扩展的能力,方便运维。
-
Other Structures:
- Exokernel外核:
- 高度简化kernel,只负责资源分配,提供了低级的硬件操作,必须通过定制library供应用使用。不涉及状态的转化。
- 高性能,但定制化library难度大,兼容性差。
(学术界中很成功,但无法形成产业。强调性能,但维护成本很高)
- Unikernel: statically linked with the OS code needed.
Good for cloud service, APP boots in tens of ms.
启动速度很快,性能很高。
- Exokernel外核:
5. 虚拟机¶
虚拟机采用分层方法得出其逻辑结论。它将硬件和操作系统内核视为硬件
虚拟机提供与底层裸硬件相同的接口
操作系统创建了多个进程的假象,每个进程在自己的处理器上使用自己的(虚拟)内存执行
人话:虚拟机其实就是一个虚拟化的平台