花了大概半年的时间不紧不慢的把《现代操作系统》读了一遍,第一遍读得感觉比较费劲,不过读下来也得以对操作系统整体概念有了一个整体的认识。
下面,我讲把我读书之后一些知识进行一个梳理,作为自己对操作系统的知识储备。其中缺陷错误之处请大家多多批评指正。
1. 进程与线程
在看这一章时,首先我不断让自己明确进程是程序的一次执行,是系统进行资源分配和调度的一个独立单位,线程是进程的实体,是cpu调度和分配的基本单位。书中指出,每个进程有一个地址空间和一个控制线程。
进程包括三种状态:运行态,就绪态,阻塞态。进程会由于等待资源或者获得资源的原因在这三个状态间切换。一个进程可以分为多个线程的运行,这些线程公用相同的地址空间和所有数据,线程比进程更轻量,可以做到更快的创建和撤销,在需要大量的io和cpu计算时,多个线程可以做到多个线程的同时运行,加快执行速度,在多核计算机中,多个线程也可以同时运行。
进程与线程还有一个重点,即进程间通信。进程间通信需要解决三个问题:
- 一个进程如何给另一个进程传递信息
- 如何保证进程之间不相互干扰
- 当进程间出现相互依赖关系时该如何处理。
同样的线程也存在这样的问题,但是由于线程拥有相同的地址空间,因此第一个问题对于线程而言并不困难。但是另外两个问题同样困扰线程。那么我们就需要了解几种概念。
竞争条件:两个或多个进程读写某些共享数据,而最后的结果取决于程序运行的精确时序。
临界区:对于这些竞争条件,就需要做到互斥。这里讲共享内存进行访问的程序片段称为临界区。因此需要进行