目录
操作系统概述
操作系统运行环境与运行机制
进程/线程模型
第四章 处理器调度(CPU调度)
第五章 同步互斥执行
第六章 同步互斥机制2-进程通信机制
管程
进程间通信
典型操作系统的IPC机制
第7章 存储模型
基本概念
物理内存管理
伙伴系统
基本内存管理方案1
基本内存管理方案2
交换技术
第8章 虚拟存储技术
虚拟存储技术
页表及页表项的设计
地址转换过程及TLB引入
软件相关策略
页面置换算法
其它相关技术
第12章 死锁
死锁的基本概念
资源分配图
死锁预防
死锁避免
死锁检测与解除
哲学家就餐问题
五大基本功能:
操作系统的三个作用:
操作系统的特征:
操作系统运行环境:CPU状态;中断/异常机制
操作系统的运行机制:系统调用
CPU状态
处理器由运算器、控制器、一系列的寄存器及高速缓存构成。
操作系统CPU的两种状态:
内核态:运行操作系统程序(特权指令)
用户态:运行用户程序(非特权指令)
特权指令:启动IO、内存清零、修改程序状态字(切换用户态内核态)、设置时钟、允许/禁止中断、停机
非特权指令:控制转移、算术运算、访管指令、取数指令
用户态->内核态 :中断/异常/陷入机制
内核态->用户态 :设置程序状态字
一条特殊的指令:陷入指令(又称访管指令):提供给用户程序的接口,用于调用操作系统的功能(服务)。例如:int,trap,syscall,sysenter/sysexit
中断/异常机制
CPU对系统发生的某个事件作出的一种反应,操作系统是由“中断驱动”或者“事件驱动”。
事件:
中断:外部事件,正在运行的程序所不期望的
异常:由正在执行的指令引发
中断/异常机制的工作原理
系统调用
用户在编程时可以调用的操作系统功能。系统调用是操作系统提供给编程人员的唯一接口,使CPU从用户态陷入内核态
每个操作系统都提供几百种系统调用:进程控制、进程通信、文件使用、目录操作、设备管理、信息维护)
系统调用/库函数/API函数/内核函数
进程
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。
进程控制块PCB:操作系统用于管理控制进程的一个专门数据结构,记录进程的各种属性,描述进程的动态变化过程。PCB是系统感知进程存在的唯一标识。进程与PCB一一对应。
进程表:所有进程的PCB集合。
进程的三种基本状态
运行态:占有CPU,并在CPU上运行
就绪态:已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
等待态:因等待某一事件而暂时不能运行(如:等待读盘结束)(阻塞态,封锁太,睡眠态)
就绪-》运行:调度程序选择一个新的程序运行(被选中获得时间片)
运行-》就绪:运行程序用完时间片;一个高优先级进程进入就绪态,抢占正在运行的进程
运行-》等待:当进程等待某个事件(请求os服务,等待IO,等待另一进程提供信息,对资源的访问尚不能进行)
等待-》就绪:所等待的事件发生了。
其它状态:
创建态:已完成创建一进程所必要的工作(PID,PCB),但尚未同一执行该进程(因为资源有限)
终止态:终止执行后,进程进入改状态;可完成一些数据统计工作;资源回收
挂起:用于调节负载;进程不占内存空间,其进程映像交换到磁盘上。
进程队列:
进程控制:进程控制操作完成各进程状态之间的转换,由具有特定功能的原语完成。(原语:原子操作)
UNIX的几个进程控制操作:(系统调用的形式呈现给用户程序,由用户程序来进行调用)
linux,不再复制到子进程,而是将子进程的指针指向父进程,需要修改的时候分配资源,写时复制。
深入探讨进程:
进程的分类:1)系统进程|用户进程;2)前台进程|后台进程;3)CPU密集型进程|I/O密集型进程
线程
进程的两个基本属性:资源的拥有者,CPU调度单位
线程:进程种的一个运行实体,是CPU的调度单位,有时将线程称为轻量级进程。
线程属性:1):有标识符ID;2)有状态及状态转换-》需要提供一些操作;3)不运行时需要保存的上下文。有上下文环境:程序计数器等寄存器;4)有自己的栈和栈指针;5)共享所在进程的地址空间和其它资源;6)可以创建、撤销另一个线程
线程的实现:1)用户级线程;2)核心级线程;3)混合-两者结合方法
CPU调度:其任务是控制、协调进程对CPU的竞争。即按一定的调度算法从就绪队列种选择一个进程,把CPU的使用权交给被选中的进程。如果没有就绪进程,CPI会安排一个系统空闲进程或idle进程。
CPU调度要解决的三个问题:
CPU调度时机
内核对中断/异常/系统调用处理后返回到用户态时
调度过程
进程调度程序从就绪队列选择了要运行的程序:这个程序可能是刚刚被暂停执行的进程,也可能是另一个新的进程。(如果是新进程,要发生进程切换)
进程切换:是指一个进程让出处理器,由另一个进程占用处理器的过程
上下文切换开销:
CPU调度算法
调度算法衡量指标:
几个要点:
批处理系统追求:吞吐量;周转时间;CPU利用率;公平;平衡
先来先服务(FCFS):按照进程就绪的先后顺序使用CPU
最短作业优先(SJF):具有最短完成时间的进程优先执行
最短剩余时间优先(SRTN):SJF抢占式版本,当一个新就绪的进程比当前进程具有更短的完成时间时,系统抢占当前进程,选择就绪的进程执行。
最高响应比优先(HRRN):调度时,首先计算每个进程的响应比R,之后总是选择R最高的进程执行。
交互式系统:追求响应时间;公平;平衡
轮转调度(Round Robin):时间片轮转的调度算法。
目标:为短任务改善平均响应时间。
解决问题的思路:周期性切换;每个进程分配一个时间片;时钟中断(轮换)
如何选择合适的时间片:太长-大于典型的交互时间(降低为先来先服务算法;延长某些进程的响应时间);太短-小于典型的交互时间(进程切换浪费CPU时间)。典型10ms-100ms之间。
优点:有利于交互式计算,响应时间块
缺点:由于进程切换,时间片轮转算法要花费较高的开销
对大小不同的进程有利
虚拟轮转法:IO型从等待进入就绪进入辅助队列,优先从辅助队列种选进程
最高优先级调度(HPF):选择优先级最高的进程投入运行
系统进程优先级高于用户进程
前台进程优先级高于后台进程
操作系统更偏好IO型进程
优先级可以是静态不变的,也可以动态调整。
就绪队列按照优先级来组织
优先级低产生饥饿现象
多级反馈队列(MFQ):
设置多个就绪队列,第一级队列优先级最高
给不同就绪队列中的进程分配长度不同的时间片,第一级就绪队列时间片最小;随着队列优先级别的降低,时间片增大
当第一级队列为空时,在第二级队列调度,以此类推
各级队列按照时间片轮转方式进行调度。
当一个新创建进程就绪后,放入第一级队列
进程用完时间片而放弃CPU,进入下一级就绪队列
由于阻塞而放弃CPU的进程进入响应的等待队列,一旦等待的时间发生,该进程回到原来一级就绪队列。
若允许抢占:高优先级抢占,原来的回到就绪队列队尾。
最短进程优先(SPN):和最短作业优先差不多
多处理器调度算法需要考虑的问题
典型操作系统的调度算法
Linux抢占式调度
CFS完全公平调度算法
Windows基于优先级的抢占式多任务调度
调度单位是线程。
采用基于动态优先级、抢占式调度、结合时间配额的调整
进程互斥
临界资源:系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量。
临界区:各个进程对某个临界资源实施操作的程序片段
实现进程互斥的方案
软件方案:Dekker解法、Peterson解法
硬件方案:屏蔽中断、TSL(SCHG)指令
软件方案1
软件方案2
软件解法3
Dekker算法
在3基础上引入turn变量
Peterson算法
硬件方案1-中断屏蔽方法
硬件方案2-TSL(SCHG)指令(测试并加锁)
TSL指令:TEST AND SET LOCK
硬件方案3-交换指令
XCHG指令:EXCHANGE
进程同步
指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。
具体地说,一个进程运行到某一点时,要求另一伙伴进程为它提供信息,在未获得消息之前,该进程进入阻塞状态,获得消息后被唤醒进入就绪状态。
一种经典的进程同步机制-信号量及P、V操作
进程与管程:进程只能通过调用管程中的过程来间接的访问管程中的数据结构
作为一种同步机制,管程要解决两个问题
HOARE管程
MESA管程
PTHREAD(线程库)中的同步机制
信号量和管程的不足;不适用于多处理器情况
进程通信机制:消息传递-》send&receive原语
消息传递
共享内存
管道
套接字
远程过程调用
进程地址空间装载到内存中
进程中的地址不是最终的物理地址
在进程运行前无法计算出物理地址
地址重定位:进程地址-》物理地址的转换
内存分配算法
内存回收
linux底层内存管理采用
整个进程进入内存中一片连续区域
单一连续区域;固定分区;可变分区
一个进程进入内存中若干不连续的区域
页式;段式;段页式
页式存储管理方案
逻辑地址:页号|页内地址
页表记录逻辑地址到物理地址的映射
产生内碎片
段式存储管理方案
段页式存储管理方式
如何解决在较小的内存空间运行较大的进程呢?
内存“扩充”技术
覆盖技术
交换技术
以CPU时间和磁盘空间换取昂贵的内存空间,这是操作系统中的资源转换技术。
通常,页表项是硬件设计的。
MMU:内存管理单元
TLB-Translation Look-aside Buffers
页错误
地址转换过程中硬件产生异常
具体原因:
驻留集
置换问题
清除策略
最佳页面置换算法
先进先出算法
第二次机会算法
时钟算法
没有第二次机会算法摘链挂链操作,效率更高
最近未使用算法
最近最少使用算法(LRU)
开销大
最不经常使用算法(NFU)
老化算法
工作集算法
资源转换技术:把独占资源变为共享资源
银行家算法