今后转行机器学习,现在补上操作系统的短板,边学习边总结,我会发布一系列操作系统的博客,此为第一篇。
操作系统的发展,需要依赖电脑硬件的功能,按照发展技术的不同,OS 可以分为如下几个阶段:串行处理,简单批处理,多道批处理,分时系统。
串行处理
20 世纪四五十年代是串行处理阶段,当时没有操作系统,程序员直接和硬件打交道,而且电脑每次只能处理一个任务,每个人预约顺序轮流使用机器半小时或者半小时的整数倍。如果发生故障,机器就亮灯并停止当前的任务。这是需要花费很长时间准备工作,往内存中加载编译器和源程序, 保存目标程序,链接目标程序和公用函数,往往需要准备很长的时间。为了加快串行处理的效率,发明了公共函数库,编译器,加载器,链接器,I/O 驱动和调试器。
简单批处理
上世纪 50 年代中期,出现了一个简单的批处理操作系统(也是第一个操作系统)。核心思想是将所有用户的作业交给计算机操作员,他把这些作业按顺序组织成一批,将整个批处理作业放入输入设备。电脑中的监控程序自动加载用户程序,将控制权交给用户,作业完成之后用户程序将控制权返回给操作系统。
监控程序负责程序的编译,加载和运行,这个系统引入了内存保护和中断机制,用户程序无法在运行时访问和修改监控程序的内存区域,监控程序通过中断完成控制权的交接。此外,有些机器指令设计成只有监控程序才能执行,称为特权指令,比如访问 I/O 设备。由此引申出用户态 / 内核态的概念,用户程序执行用户态有些内存区域不能访问,而且不能执行特权指令,而监控程序执行内核态,可以执行特权指令,而且内存区域可访问。
多道程序批处理
多道批处理系统出现在可以将监控程序和多个用户程序同时载入到内存中,并行运算,这样就可以避免由于外设与 CPU 处理速度上的差异引起的 CPU 大量空闲等待的问题。
多道处理程序需要更大的内存以并行载入更多的用户程序,因为内存中不止一个用户程序,操作系统还需要为每个程序分配内存空间,以及决定在什么时刻执行什么程序,引入了内存管理和调度的概念。
分时系统
分时系统 (time sharing system) 允许多个用户同时访问相同的计算机资源。理论上如果有 n 个用户同时使用一台电脑,那么可以将 CPU 的时间切割成 n 块,每个用户占用其中的一块,由于 CPU 的处理速度很快,不同任务切换快到用户无法察觉以至于他们每个人都认为自己在独占 CPU 资源,这是分时系统的核心思想。
分时系统比多道程序批处理更复杂,它需要额外保证 CPU 和内存在不同用户间能顺利切换,下表是二者的区别
操作系统 | 多道批处理系统 | 分时系统 |
---|---|---|
主要目标 | 充分使用处理器 | 减少响应时间 |
操作系统指令源 | 作业提供的控制语言命令 | 终端键入的命令 |
下图是一个分时系统某一个时刻的截取示意图,
其中的用户 1~6 分时使用 CPU 资源,1~4 处于空闲态,5 在使用 CPU,6 处于 ready 状态,可以想象在公司中多个同事同事使用同一台服务器的情景。
下表将以上的所有的操作系统进行了总结
操作系统形态 | 年代 | 引入概念 | 硬件支持 | 优点 |
---|---|---|---|---|
串行处理 | 20 世纪四五十年代 | 编译器,链接器,加载器,调试器 | 无 | 无 |
简单批处理 | 20 世纪 50 年代 | 内存保护,中断,用户态 / 内核态 | 内存和 CPU 性能提升 | 提高自动化,处理器的运行速率提高 |
多道处理 | 20 世纪 70 年代 | 内存管理,调度 | 大内存 | 并行处理多个程序,提高 CPU 运行效率 |
分时系统 | 现代 | 分时,用户等级,访问权限 | 性能进一步提升 | 多个用户可以同时使用同一台主机 |