解析数据库和操作系统中锁的几个问题


1.数据库中 为什么会出现死锁?

设有事务T1和T2,对象R1和R2,对R1,R2需要加锁才能访问。如果T1已经封锁了R1,还需要封锁R2才能继续执行,那么T1奖等待R2,但此时R2被T2封锁了,T2还要等待封锁R1才能继续执行。就这样T1和T2分别保持着它们的资源,等待所需的资源被释放,如此形成了一个互相等待的闭环,这样就出现了死锁。


2. 请列出数据库中常见的锁,分别给出其应用场景?(百度2014校招研发岗笔试题)

常见的锁有共享锁(读锁),排它锁(写锁)和修改锁。如航空订票系统,当多个进程在查看某种票的剩余票数时,每个进程就需要给数据库加共享锁,保证此时只能读,不能修改剩余票数,且此时多个进程允许同时读。如果此时某进程需要买票,就会导致修改剩余票数,此时需要加排它锁,加锁的进程能够读和写,其他进程既不能读也不能写。只有释放了排它锁后,其他进程才可以对数据库进行读写操作。修改锁是当某进程可能要修改对象时,所以直接对其施加修改锁,当需要修改时,把修改锁升级为排它锁。航空订票系统也是修改锁的一个例子。


3.操作系统中产生死锁的必要条件?

a)资源独占,某个进程一段时间内独占某个资源,其他进程不能访问该资源;b)请求和保持,某进程已经拥有了资源A,它还需拥有资源B才能继续运行,于是该进程保持拥有A,并且请求资源B;c)不可剥夺,当某进程拥有某资源时,这个资源是不能被其他进程剥夺的;d)形成等待资源的闭环,即进程集合{P1,P2,....,Pn}中,P1正在等待一个P1占用的资源,P2正在等待一个P3占用的资源,...,Pn正在等待一个P1占用的资源。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值