本文是操作系统的课程笔记,主要精炼操作系统教程中最重要的概念。旨在帮助程序员快速建立关于操作系统的基本认知。
操作系统是一个管理计算机硬件的软件,同时也是计算机硬件和用户软件之间的中间件,它为用户软件提供软硬件资源。
在这里,用户软件可以理解为除操作系统外的软件。所以操作系统的关键功能是在用户软件和计算机硬件之间搭建了桥梁。
一般来说,一个完整的计算机系统包括:
从用户的角度看,操作系统的目标是执行用户程序,让用户能更容易地解决问题,使计算机系统容易使用。
从系统的角度看,操作系统的目标是管理资源,让计算机硬件发挥最大效用。
操作系统的主要组件包括:
接下主要阐述这四个组件的具体职责。
进程是一个执行中的程序。它可以被中断,让 CPU 执行更高优先级的进程;也可以在被中断的地方恢复执行。
进程于程序可以类比于 OOP 中的实例于对象。
例如,Chrome 游览器在新建一个 Tab 时都会新启一个进程,这个 Tab 里的内容可能包含了多个线程。若我们的打开的是 Google Map,那地图的控制组件和地图渲染就会是两个线程。
所以:
一个进程中的执行部分称为线程,它可以是多个的。
多任务会给人一种在单核 CPU 上进行并行处理的假象。其背后机制是 CPU 的时间分片。
时间分片是 CPU 运行的一种合理扩展:在运行时, CPU 在任务之间进行频繁地切换,用户们总是可以和任务进行交互。所以多个用户可以同时使用同一台单核计算机,而且一直能和程序进行交互,从而用户会感得自己独占了这台计算机资源。
时间分片需要满足的要求
操作系统负责管理进程和线程,包括:创建和销毁、暂停和恢复、调度、进程间同步机制、进程间通信机制和处理死锁机制。
当一个进程在执行中,它会在不同的状态之间进行切换。它的调度状态包括:
操作系统负责高效地使用 CPU,并在短时间内响应用户的操作。
I/O 包括两种方法:同步和异步。
同步:I/O 开始后,控制权只有在 I/O 结束后才返回给用户程序。
异步:I/O 开始后,控制器不需要等 I/O 结束后就可以直接返回给用户程序。
操作系统负责所有 I/O 设备的调控。
OS 必须给多个进程在内存中找到存放空间。
缓存在设计中是一个重要原则,在计算机的各个层面上均有体现。
信息总是从低速存储暂时复制到高速存储。操作系统会先在高速存储中检索所需的信息。若存在,则直接使用缓存信息;若不存在,则先将信息复制到缓存,并使用缓存中的信息。
在多任务环境中,必须要留意使用最新值,不管它存储在哪个 level 上。在多处理器环境中,必须提供在硬件层面上提供缓存的一致性,使所有 CPU 在它们的缓存上都有最新值。而在分布式环境中,情况变得更为复杂,因为一份数据往往会有多个备份。
操作系统负责提供高效有序的内存分配,它的职责包括: