浙江大学 李善平教授 && 《计算机操作系统.第三版.汤子瀛等》

操作系统的定义

操作系统(OS,Operating System)介于计算机硬件系统和其他所有软件系统之间,为所有软件系统使用计算机 硬件提供各项服务。操作系统是一组控制和管理计算机硬件和软件资源、合理地组织计算机 工作流程以及方便用户的程序集合。

  • 操作系统的目标:1)使用户方便地使用计算机;2)使计算机硬件高效运行。

操作系统的特征

1)并发性(Concurrence)。并发性是指两个或多个事件在同一时间间隔内发生;并行性是指两个或多个事件在同一 时刻发生;

2)共享性(Sharing)。 共享是指系统中的所有资源(如 CPU、内存、I/O 设备及软件资源)不再为一个程序所 独占,而是供同时存在于系统中的多道程序共同使用。根据资源属性不同,可有互斥共享和同时共享两种不同的共享方式;

3)虚拟性(Virtual)。 虚拟是指通过某种技术把一个物理实体变成若干个逻辑上的对应物。物理实体是实际存 在的,是实的;逻辑物体是用户感觉到的,是虚拟的;

4)异步性(Asynchronism)。在多道程序环境下,允许多个程序并发执行,但由于资源等因素的限制,程序的执行是 以“走走停停”的方式运行,即程序是以异步方式运行的。

  • 计算机系统的体系结构:硬件(提供基本的计算资源;CPU,内存,I/O设备等);操作系统;应用程序;用户(人,机器设备,网络上的其他计算机)

现代操作系统的特征

  • 多程序(Multiprogramming)

1)单用户系统有先天缺陷,无法让 CPU 和 I/O 设备同时处于运转状态;

2)多程序思想让多个程序竞争使用 CPU ,使 CPU 总是有用户程序执行;

3)作业调度器每次选择一个作业,交 CPU 执行;

4)当这个作业被迫等待时 ( 例如有 I/O 操作 ) , CPU 转向另一个作业。

  • 多任务(Multitasking),分时系统(Timesharing)

​ 进一步扩展多程序思想,使 CPU 更快速地在作业之间切换。这样,作业总能及时地得到 CPU ,响应用户的交互操作,称为交互式计算

响应时间(Response time)必须在 1 秒之内;

每个用户至少有一道作业在内存中执行,由此产生了进程;

如果存在两个以上的进程等待 CPU 执行,需要 CPU 调度;

如果内存空间装不下进程,需要换入、换出操作;

虚拟内存管理技术使得小内存也能运行大进程。

定时器(Timer)用来防止无限循环:

设置定时中断;

定时时间到,计数器做减 1 操作;

计数器减至 0 ,触发一次中断;

这种机制用来重获 CPU 控制权,或者终止一个程序。

CPU 提供 Dual-mode 机制,实现 OS 自我保护。

操作系统的功能

1)处理机管理:对处理机进行分配,并对其运行进行有效的控制和管理;

2)存储管理:为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率,以及能从逻辑上来扩充内存,为此存储管理应具有内存分配、内存保护、 地址映射和虚拟存储器等功能;

3)文件系统:对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性,为此文件系统管理应具有对文件存储空间的管理、目录管理、文件共享和保护等功能;

4)设备管理:登记各 I/O 设备状态,管理并完成用户提出的 I/O 请求,按一定的策略为用户分配 I/O 设备;

5)用户接口:系统接口分成两类:第一类是命令接口,它提供一组键盘和鼠标命令,供用户去组织和控制程序的运行;第二类是程序级接口,它提供一组系统调用供其它程序调用。

操作系统的服务类别

  • 一类服务直接帮助用户

用户界面 (UI) – 常见 UI 类别含

Command-Line (CLI)

Graphics User Interface (GUI)

批处理 (Batch)

程序执行 – 使OS 能够装入程序到内存,执行驻留内存的程序,结束程序的执行,以及出错时的异常处理

I/O 操作

文件系统相关操作

进程间通信

通过共享内存实现通信

通过消息传递实现通信

出错检测 – OS 必须随时应对系统出错

出错可能由硬件引起,如 CPU 、内存、 I/O 设备

对于各种出错, OS 必须有合适的处理程序

OS 应该提供调试、查错工具

  • 另一类服务确保系统共享资源的高效运作

资源分配

记账 – 跟踪记录哪些用户使用了多少资源,使用了哪些资源

保护和安全

保护 – 确保对资源的访问都是受控的;

安全 – 外来访问都需通过身份认证,不允许非法访问。

操作系统的服务功能

进程管理

内存管理

存储设备管理

大容量存储器管理

I/O子系统管理

系统调用可分为五大类:进程控制、文件操纵、设备管理、信息维护和通信等。由命令解释程序或系统程序来完成的高级别请求需要转换成一系列的系统请求。

操作系统用户界面

  • CLI:命令行解释 (CLI) 直接解释执行命令项。

可以在 OS 内核实现,可以由系统程序实现;

可以有多个版本供用户选择 – shells;

基本流程:逐条取得用户的命令,逐条执行。

  • GUI:用户友善的桌面计算机系统操作界面。

硬件:鼠标、键盘、显示器

以图标 (Icons) 表示文件、程序等对象

由 Xerox PARC 发明

操作系统编程界面

  • System Calls

通常用高级语言 (C or C++) 实现

程序通常以 Application Program Interface (API) 使用,而不是直接使用系统调用

3 大流行的 APIs

Win32 API for Windows

POSIX API for POSIX-based systems (including virtually all versions of UNIX, Linux, and Mac OS X)

Java API for the Java virtual machine (JVM)

操作系统结构

  • 简单结构

以 MS-DOS 为代表

占用极小的内存空间,提供大部分 OS 功能

不区分模块;

有一些数据结构。但是并没有很好地分离界面,层次化组织 OS 功能。

  • 层次化方法
  • 微内核结构

将 OS 的功能模块转移至用户态空间,剩下的就是微内核。

处于用户态空间的功能模块通过消息传递机制进行通信。

有利因素:

容易升级微内核;

容易移植 OS 至不同类型的 CPU 、体系结构;

更可靠 (less code is running in kernel mode);

更安全。

不利因素:用户态空间与内核态空间之间的通信频繁,性能开销大。

  • 模块 (Modules)

现代操作系统大多实现了内核模块 (kernel modules) 机制。

应用 object-oriented 思想方法

核心组件相对独立、分离

模块之间通过预知的界面对话

可动态装入内核

可动态卸载