操作系统进程调度策略
- FCFS(先来先服务, 队列实现, 非抢占的):先请求CPU的进程先分配到CPU
- SJF(最短作业优先调度算法):平均等待时间最短, 但难以知道下一个CPU区间长度
- 优先级调度算法(可以是抢占的, 也可以是非抢占的):优先级越高的越先分配到CPU, 相同优先级先到先服务, 存在的主要问题是:低优先级进程无穷等待CPU, 会导致无穷阻塞式饥饿,解决方案:老化(随着时间的推移, 那些越老的进程优先级反而越高)
- 时间片轮转调度算法(可抢占的):队列中没有进程被分配超过一个时间片的CPU时间, 除非它是唯一可运行的进程。 如果进程的CPU区间超过了一个时间片, 那么该进程就被抢占并放回就绪队列
- 多级队列调度算法:将就绪队列分成多个独立的队列, 每个队列都有自己的调度算法, 队列之间采用固定优先级抢占调度, 其中, 一个进程根据自身属性被永久地分配到一个队列中
- 多级反馈队列调度算法:与多级队列调度算法相比, 其允许进程在队列之间移动, 若进程使用过多CPU时间, 那么它会被转移到更低的优先级队列, 在较低优先级队列等待时间过长的进程会被转移到更高优先级队列, 以防止饥饿发生
————————————————
版权声明:本文为CSDN博主「xiaozuo7」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37898073/article/details/93484358
函数依赖、码以及范式
基本知识
- 元组:表中的一行就是一个元组。
- 分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
函数依赖
- 定义
简单解释为:如果在X属性上相同的两个元组,在Y属性上也相同,那么可以称作X->Y。
例如:
图中X1属性没有重复的元素,不论Y1有没有重复的元素,都可以称为X1->Y1.
但是X2中有重复元素21,这两个重复元素的Y2值不同,所以不能称为X2->Y2 - 完全函数依赖:
定义
即决定Y的X中的任何属性都缺一不可,则Y对X完全函数依赖。
码
- 码:表中可以唯一确定一个元组的某个属性(或者属性组)
- 候选码:能唯一标识元组并且不含多于属性的属性集合。
范式
- 第一范式(1NF):属性不可分。
例如下图中“高级职称人数”下面分为两列,就不满足第一范式。
- 第二范式(2NF):符合第一范式,且每一个非主属性完全函数依赖于任何一个候选码
例如下图中,候选码为(SNO,CNO),成绩完全依赖于候选码,但是CNO->CREDIT,所以学分是部分依赖与候选码,所以关系SC1不符合第二范式。
解决办法:SC1(SNO,CNO,GRADE),C1(CNO,CREDIT).
- 第三范式(3NF):符合第二范式,且没有非主属性传递依赖与码
例如下图,码只有一个SNO,所以一定符合第二范式,但是存在传递依赖SNO->DNO,DNO->LOCATION,所以不符合第三范式。