死锁!图解死锁到底是什么!

世间死锁万万千,都离不开其本质:资源争夺

资源争夺与死锁

如下图所示,有进程1和进程2,他们的执行都同时需要资源1和资源2。

现在,进程1已经拥有了资源1,还需要资源2,它在痴痴地等待资源2被释放,如果资源2不被释放,他就一直持有资源1并一直等待资源2.

进程2已经拥有了资源2,还需要资源1,它在痴痴地等待资源1被释放,如果资源1不被释放,它就会一直持有资源2并一直等待资源1.

我想聪明的盲生你应该已经发现了华点。它们要释放持有的资源,就必须要得到对方的资源;但是要得到对方的资源,就必须释放自己持有的资源供对方使用。但是它们是进程,不会懂得谦让,它们只会等待对方释放资源,而不会自己释放资源。

这样,两个进程就会一直等待资源,资源也一直不会被释放,这就是死锁!!!!
在这里插入图片描述

理解死锁举例

如果你还是觉得用进程和资源来讲过于抽象,那我就来举个例子,如下图。

小明和小红两个人看做是两个进程。他们都要吃饭了,而吃饭同时需要筷子和碗这两个资源。

现在的情况是,小明拿着筷子,他需要碗,他如果拿不到碗吃饭,他就一直拿着筷子等碗;
小红拿着碗,他需要筷子,他如果拿不到筷子吃饭,他就一直拿着碗等筷子。

看到这里,你有没有恍然大悟,如同梦中惊醒?!!

没有?
亲,我介意你再看一遍。。。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43222869/article/details/106993942