《现代操作系统》细读笔记

567 阅读3分钟

昨天面腾讯时候面试官问:你说你看过经典的书籍来学习操作系统,那么这些书是按照什么顺序来讲解操作系统的?目录是怎样的顺序?
我人傻了,我都是跳着看的,确实没注意到这点,所以今天重拾这本书来学一下

进程与线程

一般会知道进程是资源分配单位,线程是调度单位,但阿岳说:我觉得不行。再细点

进程

以下内容来自书中原文摘抄

UNIX系统中,只有一个系统调用可以创建新进程:fork。这个系统调用会创建一个与调用进程相同的副本。调用了fork以后,这两个进程(父进程和子进程)拥有相同的内存映像、同样的环境字符串和同样的打开文件。

父进程和子进程有着各自不同的地址空间,不可写的内存区是共享的。如果子进程和父进程共享所有内存,那么会采用写时复制技术,这意味着一旦要修改部分内存,则这块内存要首先被明确地复制,以确保修改发生在私有内存区域。再次强调,可写的内存是不可以共享的。

PCB进程表

PCB包含了进程状态的重要信息,包括程序计数器、堆栈指针、内存分配状况、打开的文件状态、账号和调度信息、优先级、进程状态、进程ID...

线程

若CPU密集型,多线程不能获得性能增强,若IO密集,则会加快程序执行的速度

为什么要有进程

把相关的资源集中在一起,包括打开的文件、子进程、即将发生的定时器、信号处理程序、账号信息等,把他们放在一起会更容易管理。

线程呢?

线程拥有寄存器,来保存当前线程的工作变量。进程用于把资源集中在一起,而线程则是在CPU上被调度执行的实体。

除了共享地址空间之外,所有线程还共享一个打开文件集、子进程、定时器以及相关信号

进程线程内容对比

每个进程中的内容每个线程中的内容
地址空间程序计数器
全局变量寄存器
打开文件堆栈
子进程状态
即将发生的定时器
信号与信号处理程序
账户信息

进程调度

  1. 先进先出
  2. 最短任务优先
  3. 最短完成时间优先
  4. 最短响应时间优先
  5. 轮转调度
  6. 多级反馈队列
  7. 比例份额调度:彩票调度、步长调度

最后

书的整体讲解流程是:介绍进程和线程,进程的通信,内存管理,死锁,然后是系统安全,文件系统这样的流程