这个问题没有定论,有以下四种观点:
- User/Computer Interface:该观点认为OS是计算机用户使用计算机系统的接口,它为计算机用户提供了方便的工作环境。
- Virtual Machine :该观点认为OS是建立在计算机硬件平台上的虚拟机器,它为应用软件提供了许多比计算机硬件功能更强或计算机硬件所没有的功能。
- Resource Manager:该观点认为OS是计算机系统中各类资源的管理者,它负责分配、回收以及控制系统中的各种软硬件资源。
- Job Organizer:该观点认为OS是计算机系统工作流程的组织者,它负责协调在系统中运行的各个应用软件的运行次序。
2. 分析OS的功能性需求和非功能性需求
人们对软件系统提出很多的期望,这些期望包括三种类型:
- 软件系统能提供的服务;(功能性需求)
- 软件系统在提供这些服务时,需要满足的限制条件;(非功能性需求)
- 软件系统具有适应某些变化的能力。(非功能性需求)
2.1 OS的功能性需求
- 计算机用户需要的用户命令
由OS实现的所有用户命令所构成的集合常被人们称为OS的Interface(用户接口);有时也称为命令接口。
(用户)命令:指计算机用户要求计算机系统为其工作的指示。
命令的表示形式:字符形式,菜单形式,图形形式
命令的使用方式:脱机使用方式(命令不受计算机控制),联机使用方式(命令受计算机控制)。 - 应用软件需要的System Call(系统调用)
由OS实现的所有系统调用所构成的集合被人们称为程序接口或应用编程接口(Application Programming Interface, API)。
当前两种常用的API:POSIX.1、WIN32 API
注:程序接口事实上定义了一台虚拟计算机。该虚拟计算机包含一组抽象概念以及与这组抽象概念相关的系统服务。
2.2 OS的非功能性需求
性能,效率
maximize throughput, minimize response time, and in the case of time sharing, accommodate as many users as possible
公平性
可靠性
安全性
可伸缩性
可扩展性
可移植性
3. 专业术语
作业:计算机用户在一次上机过程中要求计算机系统为其所做工作的集合;作业中的每项相对独立的工作称为作业步。
离线作业:计算机用户不能在此类作业被计算机系统处理时改变已定义好的作业步。
在线作业:计算机用户可以在此类作业被计算机系统处理时随时改变其作业步。
线程:程序的一次相对独立的运行过程;在现代OS中,线程是系统调度的最小单位。
进程:系统分配资源的基本对象;在现代OS中,进程仅仅是系统中拥有资源的最小实体;不过,在传统OS中,进程同时也是系统调度的最小单位。进程是给线程分配资源的,进程与线程的关系就像火车与车厢的关系,一个火车可以有很多车厢(参考链接:线程和进程的区别是什么? - biaodianfu的回答 - 知乎
https://www.zhihu.com/question/25532384/answer/411179772)。
虚拟存储:简单地说,就是进程的逻辑地址空间;它是现代OS对计算机系统中多级物理存储体系进行高度抽象的结果。
文件:简单地说,就是命名了的字节流;它是现代OS对计算机系统中种类繁多的外部设备进行高度抽象的结果。
4. OS的演变、类型及特征
- 串行处理:没有操作系统,通过开关和亮灯来展示输入输出。显然浪费处理时间,也浪费了运行时间
- 简单批处理系统:
- 单道批处理系统:一次只能有一道程序准备运行,就相当于只有一个程序在内存中
- 多道批处理系统:允许多道程序同时准备运行,就相当于有多个程序在内存中
- 分时系统:这个就是隔一段时间,就跳到另外一个程序执行,不管现在这个程序是否执行完成,这样的系统强调的是最小化响应时间。
- 实时系统:强调系统的实时性,比如购票软件上购买火车票。
现代OS的两个基本特征
5. 任务共行:
- 从宏观上看,任务共行是指系统中有多个任务同时运行
- 从微观上看,任务共行是指单处理机系统中的任务并发(Task Concurrency:即多个任务在单个处理机上交替运行)或多处理机系统中的任务并行(Task Parallelism:即多个任务在多个处理机上同时运行)。
- 资源共享:
- 从宏观上看,资源共享是指多个任务可以同时使用系统中的软硬件资源
- 从微观上看,资源共享是指多个任务可以交替互斥地使用系统中的某个资源。
5. 一种常见的OS总体结构风格
大多数现代OS其总体结构包含两类子系统:
- 用户接口子系统:用户接口子系统提供计算机用户需求的用户命令
- 基础平台子系统:基础平台子系统提供应用软件需求的系统调用
注意:用户接口子系统在实现各种用户命令时能够引用基础平台子系统所提供的各种系统调用,但基础平台子系统在实现各种系统调用时不会引用用户接口子系统所提供的各种用户命令。
6. 基础平台子系统结构风格
比如 A<->B<->C<->D
- 分层结构风格的结构特征:B依赖C,但不依赖D,也不依赖A
- 分级结构风格的结构特征:B依赖C,依赖D,不依赖A
- 分块结构风格的结构特征:B独立
因此:分层结构风格是一种特殊的分级结构风格;分级结构风格是一种特殊的分块结构风格。
7. 双模式基础平台子系统
两个模式基础平台子系统其总体结构包含两个模式模块;它们分别在两种不同的CPU特权模式下运行。
人们把双模式基础平台子系统的这两个模式模块分别称为核外子系统和核心子系统;
微核结构设计思想:
尽最大努力剔除核心子系统中的多余成份,并把它们移到核心子系统中实现,核心子系统只实现一些必要的简单的概念及其属性,从而保持核心子系统简洁高效。