一、操作系统服务
操作系统提供用以执行程序的环境,为程序和用户提供一定服务。
对用户很有用的函数:
- 用户界面(user interface, UI)
两种基本方法:
1.提供命令行界面(CLI)或命令中断,允许用户直接输入通过操作系统完成的命令
2.允许用户通过图形用户界面(GUI)与操作系统交互 - 程序执行
- I/O操作
- 文件系统操作
- 通信
- 错误检测
确保系统本身高效运行的函数:
- 资源分配
CPU调度算法等 - 统计
可用于重新配置系统以提高计算服务能力 - 保护和安全
二、系统调用
- 操作系统提供编程的服务接口
- 通常用高级语言(C或C ++)编写
- 程序主要通过高级应用程序接口(API)访问,而不是直接使用系统调用
- 三种最常见的API是用于Windows的Win32 API,用于基于POSIX的系统的POSIX API(包括几乎所有版本的UNIX,Linux和Mac OS X),以及用于Java虚拟机(JVM)的Java API
系统调用类型:
- 进程控制
结束,放弃
装入,执行
创建进程,终止进程
取得进程属性,设置进程属性
等待时间
等待事件,唤醒事件
分配和释放内存 - 文件管理
创建文件,删除文件
打开、关闭
读、写、重定位
取得文件属性,设置文件属性 - 设备管理
请求设备,释放设备
读、写、重定位
取得设备属性,设置设备属性
逻辑连接或断开设备 - 信息维护(消息传递模型&共享内存模型)
读取时间或日期,设置时间或日期
读取系统数据,设置系统数据
读取进程,文件或设备属性
设置进程,文件或设备属性 - 通信
创建,删除通信连接
发送、接受消息
传递状态消息
连接或断开远程设备
三、系统程序
计算机的逻辑层次:最底层是硬件,上面是操作系统,接着是系统程序,最后是应用程序。系统程序提供开发程序和执行程序的环境,可以分成以下几类:
- 文件管理
- 状态信息
- 文件修改
- 程序语言支持
- 程序装入与执行
- 通信
机制(mechanism):怎么做 how to do it
策略(policy):做什么 what will be done
区分两者的原因:策略可以经常改变,机制常常通用
四、操作系统结构
-
MS_DOS系统:
没有很好区分接口和功能层次,导致易受错误或恶意程序伤害。
受限于同时代的硬件,仅允许基本的硬件访问 -
UNIX系统:
由内核和系统程序两个独立部分组成,内核进一步分成一系列接口与驱动程序。
结构较为单一 -
系统模块化
分层法
主要优点在于构造和调试的简单化。每层只能利用较低层的功能和服务,简化了调试和系统验证。 -
微内核(microkernel)
将所有非基本部分从内核中移走,并将它们实现为系统程序或用户程序。
微内核通常包括最小的进程和内存管理以及通信功能。
微内核的主要功能是使客户程序和运行在用户空间的各种服务之间进行通信。客户程序与服务器不会直接交互,而是通过微内核的消息传递来通信。
好处:便于扩充操作系统,容易移植到另一种硬件平台设计,提供更好的安全性和可靠性
但可能由于系统功能总开销的增加导致系统性能的下降。
eg. Tru64 UNIX, QNX, Windows NT… -
模块
用面向对象编程技术生成模块化的内核。
内核有一组核心部件,以及在启动或运行时对附加服务的动态链接。使用动态加载模块。
允许内核提供核心服务,也能动态地实现特定功能。
每个内核部分都有被定义和保护的接口。
比分层系统更灵活,任一模块都能调用任何其他模块。
核心模块只有核心功能以及其他模块加载和通信的相关信息,模块不需要调用信息传递来通信,更加高效。
eg. Solaris, Linux, Mac OS X…
五、虚拟机
![](https://i-blog.csdnimg.cn/blog_migrate/046b040824be789ecd4aa6ae78732678.png)
在并行运行几个不同的执行环境(操作系统)时能共享相同的硬件。