操作系统演变
串行处理(Serial Processing)
操作系统一直在不断地更新版本,版本升级就是操作系统的改变。操作系统改变的原因包括修复漏洞、支持新的服务、硬件升级、提升性能等。
串行处理时期的计算机体积非常大,因为没有操作系统,所以操作的时候需要通过扳动开关,最终通过灯来进行显示。这种计算机通常由专家操作,一般用户难以使用。这就导致了两个主要的问题:
- 调度低效:机器需要等待人操作开关,浪费时间。
- 准备时间长:没有自动化,需要手工装入编译器、源程序、保存中间代码等。
单道批处理系统(Simple Batch System)
单道批处理系统可以说是早期的一代操作系统,在外存中可以有一批作业等待,当内存没有作业可运行的时候,监控程序(Monitor)就会从外存去选一个作业进入内存。最简单选择方式就是按队列顺序选择,但这不一定是最合理的,这就涉及到了调度算法。
多道程序系统(Multiprogramming)
一个支持Multiprogramming的系统允许多道程序同时准备运行。当正在运行的那道程序因为某种原因(比如等待输入或输出数据)暂时不能继续运行时,系统将自动地启动另一道就绪程序运行。一旦原因消除(比如数据已经到达或数据已经输出完毕),暂时停止运行的那道程序在将来某个时候还可以被系统重新启动继续运行。
用有效工作覆盖I/O等待
A:CPU 2毫秒、I/O 4毫秒、CPU 2毫秒。B:CPU 4毫秒。均在0到达,A先运行。一个CPU与一个独立I/O设备,不计切换开销。
CPU运行A。
最终完成: 12 ms · 最终CPU利用率: 66.7%
并发编程(Concurrency)
并发编程是一种有效提高操作系统(服务器)性能的技术手段,现代的操作系统之中最为重要的代表就是并发性。多核CPU还允许多个任务并行执行,但并发并不要求多核CPU。
传统的DOS系统通常一次运行一个前台程序。病毒可以干扰程序执行,但不能将所有程序无法运行归因于单进程模型。
Windows采用多进程模型,同一时间段上可以运行多个程序。打开Windows的任务管理器,可以发现系统中的进程,但这些进程并不一定正在并行执行;多进程也不能保证系统感染病毒后仍正常运行。
在早期没有多核CPU的硬件系统中,利用时间片轮转算法(Round Robin),可以保证在同一个时间段内交替执行多个进程,但是在某一个时间点上只执行一个进程的指令,实现资源的切换。
知识测验
服务器的硬件性能是有限的,有些程序并不能充分利用硬件资源。如果按照传统的单进程模式来运行程序,在进程等待I/O时,部分硬件资源就可能被闲置。
分时系统(Time-Sharing System)
分时系统首先是个多道系统,分时在多道的基础上为各任务分配时间片,时间到了就切换到下一个就绪任务。这种系统非常适合于交互式系统,例如访问网络服务器,采用时间片轮转的方式,在同一时间段内为几十个、几百个用户服务。
分时系统会有一些问题,比如时间片太短会频繁中断,造成很大的系统开销;有些内核操作不能在任意位置被中断,需要暂时推迟抢占,而不是被中断后无法恢复。因此分时系统需要根据应用环境设计调度策略。
并发时间片还是并行核心?
C、D均在0到达,各需4毫秒CPU工作。不计切换开销,单核共享时间,两个独立核心可分别执行一个任务。
0毫秒时,单核心仅执行C。
完成时间: 8 ms · D首次服务: 1 ms
移动系统(Mobile System)
移动设备体积小,可以手持,便于携带。移动设备一般具有LCD或OLED等平板显示器和触摸屏界面,提供数字化按钮和键盘。移动设备操作系统的例子包括Apple iOS、Google Android,以及历史上的Research in Motion's BlackBerry OS。
比较批处理、多道与分时
A与B在0时刻到达。忽略切换开销,先选A。
| 任务 | 到达 | CPU | I/O | 再次CPU |
|---|---|---|---|---|
| A | 0 ms | 2 ms | 4 ms | 2 ms |
| B | 0 ms | 4 ms | — | — |
- 分别画出单作业批处理与多道程序的CPU和设备时间线。多道情况下,A等待I/O时执行B,让B完成后再恢复A。
- 计算全部工作完成时间与CPU利用率。
- 纯CPU任务C、D各需4毫秒,均在0时刻到达。画出单核1毫秒时间片轮转与双核并行时间线,忽略开销。
- 画出宏内核与微内核服务图,标出文件服务的位置与请求路径。