Part 1 概述
基本特征:并发 共享 虚拟 异步
基本功能:进程管理 内存管理 文件管理 设备管理
系统调用:如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。
大内核:大内核是将操作系统功能作为一个紧密结合的整体放到内核。
微内核:由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。
中断分类:外中断 异常 陷入
Part 2 进程管理
一、进程与线程
进程:进程是资源分配的基本单位。
进程控制块 (Process Control Block, PCB) :描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。
线程:线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。
区别:拥有资源/调度/系统开销/通信
二、进程状态的切换
进程状态:就绪 运行 阻塞 (created)(terminated)
- 只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得 CPU 时间,转为运行状态;而运行状态的进程,在分配给它的 CPU 时间片用完之后就会转为就绪状态,等待下一次调度。
- 阻塞状态是缺少需要的资源从而由运行状态转换而来,但是该资源不包括 CPU 时间,缺少 CPU 时间会从运行态转换为就绪态。
三、进程调度算法
1.批处理系统
批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间(从提交到终止的时间)。
1.1先来先服务 first-come first-serverd(FCFS)
非抢占式的调度算法,按照请求的顺序进行调度。
有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。
1.2 短作业优先 shortest job first(SJF)
非抢占式的调度算法,按估计运行时间最短的顺序进行调度。
长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。
1.3 最短剩余时间优先 shortest remaining time next(SRTN)
最短作业优先的抢占式版本,按剩余运行时间的顺序进行调度。 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待。
2.交互式系统
交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应。
2.1 时间片轮转
时间片轮转算法的效率和时间片的大小有很大关系:切换进程需要时间/实施性
2.2 优先级调度
为每个进程分配一个优先级,按优先级进行调度。
2.3 多级反馈队列
可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。