基本概念
计算机操作系统介于应用程序和计算机硬件之间,其本身就是一个软件,操作系统是由内核管理硬件资源,系统调用部分用来管理应用程序所提供的系统调用接口
1、各种繁琐复杂的接口打包封装提供给程序员使用。
2、应用本身对硬件的多路复用(时间复用||空间复用)。
基本特征
1、并发:
并发性是指两个或多个事件在同一时间间隔内发生(操作系统的进程切换)。
2、共享:
系统中的资源可供内存中多个并发执行的进程(线程)共同使用(互斥共享、并发共享)。
3、虚拟:
利用时分复用和空分复用技术来实现把一个物理上的实体,变为若干个逻辑上的对应物(虚拟内存)。
4、异步:
微观中多道程序环境下程序的执行,是以异步方式进行的。
基本功能
1、进程管理
进程控制、进程同步、进程通信、死锁处理、处理机调度等。
2、内存管理
内存分配、地址映射、内存保护与共享、虚拟内存等。
3、文件管理
文件存储空间的管理、目录管理、文件读写管理和保护等。
4、设备管理
完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率。
主要包括缓冲管理、设备分配、设备处理、虛拟设备等。
大内核和微内核
- 大内核
大内核是将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此有很高的性能。 - 微内核
由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。
在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。
因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。
中断分类
CPU调度算法
算法 | 解释 | 特点 |
---|---|---|
先到先服务调度(FCFS) | 根据就绪队列的到达时间来服务,此时就绪队列是一个FIFO队列,先到先服务,后到的线程不能抢占前面正在服务的线程 | 优点是实现简单,缺点也很明显,就是CPU进程区间变化很大时,平均等待时间会变化很大 |
最短作业优先调度(SJF) | CPU进程区间最短的先执行,如果两个进程区间具有同样的长度,那么按照FCFS来调度 | SJF可以是抢占的,也可以是不抢占的。它的平均等待时间优于FCFS。 |
优先级调度 | SJF算法就是一种特殊的优先级调度,只不过这里的优先级定义更加广泛一些,SJF算法的优先级是按照CPU进程区间长短来定义的,这里的优先级可以是其他的一些定义。 | 优先级调度可以是抢占的,也可以是非抢占的。优先级调度的一个主要问题是无穷阻塞(也称为饥饿),如果一个线程的优先级很低,可能需要等待很长的时间才能到这个线程执行,甚至永远不执行,一种解决方法是老化(随着时间的增长,增加线程的优先级) |
轮转法调度 | 类似于FCFS,但是增加了抢占为了切换线程。定义一个较小的时间单元,称为时间片,通常为10-100ms。为了实现RR算法,将就绪队列保存为FIFO队列,新进程增加到就绪队列队尾,CPU调度程序从就绪队列选择第一个进程,设置定时器在一个时间片之后再中断,再分派这个进程。如果该进程的CPU区间小于时间片,进程本身就会释放CPU,调度程序继续处理下一个进程,如果当前进程的CPU区间比时间片长,定时器会产生CPU中断,实行上下文切换,然后将此进程放到就绪队列队尾,继续调度就绪队列第一个进程。 | 轮转法调度专门是为分时系统设计的 |
多级队列调度 | 对进程进行分组,在组内使用FCFS和SJF算法,在组间实行优先级调度或者轮转法调度 | 不允许进程在组间切换 |
多级反馈队列调度 | 根据不同区间的特点区分进程,如果CPU进程占用过多CPU时间,那么它会被转移到更低优先级队列。这种形式老化阻止饥饿。 | 允许进程在组间切换 |