死锁:

如何避免死锁?

有序资源分配法、银行家算法

死锁预防:打破四大条件

可能造成死锁的条件:互斥、环路等待、不剥夺、保持和等待

银行家算法:

是一种防止死锁的常用算法,由Dijkstra 提出的,将死锁的问题演示为一个银行家贷款的模型。一个银行家向一群客户发放信用卡,每个客户有不同的信用额度,每个客户可以

提出额度内的任意额度请求,直到额度用完后再一次性还款。

银行家可以挂起某个额度请求较大的客户的请求,优先满足小额度的请求,等小额度的请求还款后,再处理挂起的请求。这样资金就能够永远疏通。如果银行家的额度小于所有客户的

限额,便会发生死锁。

存储管理:

页式管理:增加利用率,但增加了系统开销,可能产生抖动现象。页:页号+业内地址。页号可以通过页表查询到块号。块号+业内地址=逻辑地址

段式存储:段号+段内地址。多道程序共享内存,各段程序互不影响,内存利用率低,通过查询段表

段页式存储:空间浪费小,可以共享。但是增加软件的复杂度,开销。快表是一块小容量的相联存储器。

 关系数据库规范化理论:

更新异常:只更新了局部的信息,导致数据不一致性

插入异常:无法插入异常(无主键或主键重复)

删除异常:删除多余的信息

函数依赖:

从性值上分为:完全函数依赖、部分函数依赖、传递函数依赖

范式:

第一范式:每个属性都是不可再分割的原子属性

第二范式:满足第一范式,非主属性完全依赖于主键,不存在部分依赖(单属性主键,不存在部分函数依赖)

第三范式:满足第二范式,没有非主关键字的传递依赖,消除非主关键字传递依赖

BCNF:在第三范式的基础上,消除主属性的传递依赖