一、操作系统引论
1. 操作系统的基本特征
- 并发(Concurrence):在一段时间内同时存在多道运行的程序(进程)
- 宏观上:多道程序同时在执行。
- 微观上:在单处理机系统中,任何时刻只有一道程序在执行,即微观上多道程序在CPU上交替执行。
- 并行(Parallel):指多道程序在同一时刻执行,通常需要多个硬件支持。
- 并发执行能有校改善系统资源利用率,但是系统复杂化,因此操作系统必须对并发活动进行控制和管理(引入进程和线程)
2. 操作系统的主要功能
- 处理机管理
- 存储器管理
- 设备管理
- 文件管理
- 用户接口
二、进程的描述与控制
1. 进程的定义
- 进程是程序的依次执行
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程是程序在一个数据集合上的运行过程,他是系统进行资源分配和调度的一个独立单位。
- 进入进程实体的概念后(程序段+数据段+进程控制块),进程可以定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
为了描述和记录进程的运动变化过程,并使之能正确的运行,每个进程都应配置一个进程控制块(PCB)。从结构上看,每个进程(进程实体)都是由程序段,相关数据段及进程控制块组成。
- 进程实际上是指进程实体。
- 创建、撤销进程实际上是指创建、撤销进程实体的PCB。
- PCB是进程存在的位以标志
- 进程独立运行基本单位的标志:PCB
- 进程是程序的一次执行
- 动态性是进程最基本的特征
2. 进程的描述与控制
-
进程控制块pcb的作用
- 作为独立运行基本单位的标志
- 系统根据PCB而感知进程的存在,PCB是进程存在的唯一标志
- 系统创建一个新进程时,就为它建立了一个PCB;进程结束时就回收其PCB,进程于时也随之消亡
- 能实现间断性运行方式
- 利用PCB保存处理机状态信息,保护和恢复CPU现场。
- 提供进程管理虽需要的信息
- 根据PCB中的程序和数据内存地址,找到程序和数据。
- 系统根据PCB了解进程所需的全部资源。
- 提供进程控制所需要的信息
- OS要调度某进程执行时,从PCB中查现行状态及优先级。
- 实现以其他进程的同步和通信
- 作为独立运行基本单位的标志
-
进程标志符
- 内部标识符。由系统创建进程时分配给进程的惟一标识号,通常为一整数,称为进程号,用于区分不同进程。
- 外部标识符。用户在访问该进程时使用,称为用户号。设置父进程标识及子进程标识。还可设置用户标识,以指示拥有该进程的用户。
-
进程控制块PCB的组织方式
- 链接方式
- 把同一状态的PCB链接成一个队列,这样就形成了就绪队列、阻塞队列等
- 索引方式
- 将同一状态的进程组织在一个索引表中,索引表的表项指向相同的PCB,不同状态对应不同的索引表。
- 链接方式
- Suspend 挂起原语; Active 激活原语。
- 原语操作与一般操作的区别在于:他们是”原子操作(Action Operation)“
三、处理机调度与死锁
处理机调度的集中算法
3.2作业调度(高级调度)
- FCFS 先来先服务调度算法(作业等待的时间)
- SPF 段进程优先算法(作业运行的时间)
- HRRN 高相应比优先调度算法 (即考虑作业等待时间,又考虑作业运行时间)
3.3 进程调度(低级调度)
- SRT 最短剩余时间调度算法
- RR 时间片轮转调度算法
- 非抢占式优先级
- 抢占式优先级
3.4 实时调度
- 最早截止时间优先算法(EDF算法, Earliest Deadline First)
- 算法是依据任务的开始截止时间和完成截止时间来确定任务的优先级。截止时间越早,其优先级越高。就绪队列中任务按其截止时间排列,队首任务先分配处理机。
- 非抢占方式调度方式用于非周期实时任务。
- 抢占方式调度方式用于周期实时任务。
- 最低松弛度优先算法(LLF,Least Laxity First)
- 低松弛 = 高紧急
- 算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度越高,其优先级越高,并使之优先执行。
- 算法采用抢占调度方式,可用于调度具有完成截止时间的周期性实时任务。
- 松弛度 = 必须完成时间 - 本身剩余运行时间 - 当前时间
多处理器系统进程调度方式
多处理器系统中的进程调度方式:
- 自调度
- 专用处理器分配
- 成组调度
- 动态调度
3.5 计算机系统中的死锁
死锁式多个进程在运行过程中因争夺资源而造成的一种僵局(Deadli-Embrace),若无外力作用,这些进程都将无法向前推进。
死锁产生的原因:
- 竞争不可抢占资源引起死锁
- 竞争可消耗资源引起死锁
- 进程间推进顺序不当引起死锁
产生死锁的必要条件:4个
- 互斥条件(mutual exclusion)
- 进程对所分配到的资源进行排他性使用。
- 请求和保持条件(hold-while-applying)
- 进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时进程被阻塞,但对自己已获得的资源保持不放。
- 不可剥夺条件(non preemption)
- 进程已获得的资源,在未使用完之前不能被抢占,只能在进程使用完时由自己释放。
- 环路等待条件(circular wait)
- 只在发生死锁时,必然存在一个进程-资源的循环链,即进程集合P0, P1, P2,......, Pn中的P0,正在等待一个P1占用的资源,P1正在等待P2占用的资源, ......, Pn正在等待已被P0占用的资源。
处理死锁的方法
- 鸵鸟方法:对死锁视而不见,即忽略死锁。
- 预防死锁:通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来防止死锁的发生。
- 避免死锁:在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。
- 检测死锁:允许系统在运行过程中发生死锁,但可设置检测机构及时检测死锁的发生,并采取适当措施加以清除。
- 解除死锁:当检测处死锁后,便采取适当措施将进程从死锁状态中解脱出来。
2. 预防死锁
1. 破坏互斥条件
- 即允许多个进程同时访问资源。但由于资源本身固有特性的限制,此方法不可行。
2. 破坏请求和保持条件
- 全分配,全释放。弃了请求条件,也摒弃了保持条件。
- 摒弃保持条件:进程运行过程中必须释放已分配给自己 的且已经用完的全部资源,然后才能再请求新的所需资源。
3. 破坏不可剥夺条件
- 在允许进程动态申请资源前提下,规定一个进程在申请 新的资源不能立即得到满足而变为等待状态之前,必须 释放已占有的全部资源,若需要再重新申请。
4. 破坏环路等待条件
3. 避免死锁
银行家算法简介
- 银行家算法的实质:设法保证系统动态分配资源后不进入不安全状态,以避免可能产生的死锁。
- 银行家算法执行的前提条件:要求进程必须预先提出自 己的最大资源请求数量,这一数量不能超过系统资源的 总量,系统资源的总量是一定的。
银行家算法中的数据结构
假定系统中有n个进程(P1, P2, ......, Pn),m类资源(R1, R2,......, Rm),银行家算法中使用的数据结构如下:
- 可利用资源向量:Avali


835

被折叠的 条评论
为什么被折叠?



