这是一个有关操作系统的问题:
在一个进程申请多个资源时,资源申请的顺序要与释放的顺序相反,否则会效率低下,
请问为什么会效率低下?例如:
1.申请A资源 -> 申请B资源 -> 释放B资源 -> 释放A资源
2.申请A资源 -> 申请B资源 -> 释放A资源 -> 释放B资源为什么2比1的效率要低?
在一个进程申请多个资源时,资源申请的顺序要与释放的顺序相反,否则会效率低下,
请问为什么会效率低下?例如:
1.申请A资源 -> 申请B资源 -> 释放B资源 -> 释放A资源
2.申请A资源 -> 申请B资源 -> 释放A资源 -> 释放B资源为什么2比1的效率要低?
解决方案 »
- 记录集已经打开,但是不允许添加新纪
- 求轮廓提取和种子填充的算法,有代码最好
- 关于NChittest和mousemove消息
- snmp代理端能收到管理站信息,代理端用senfto(sendbuf,strlen(sendbuf),161,127.0.0.1,0)发送信息,管理站怎么收不到
- 关于CListCtrl中条件查找的问题
- InstallShield develop 8 的简单问题 不要见笑 :)
- 突然想到两个问题,来者有分。
- 结构体怎样用数组实现?
- 如何在程序中实现刷新桌面的操作!
- 有啥工具可以把C++的头文件里声明的api导成vb的api定义?
- 高手进 winsock的socket怎么将接收的cstring转成byte
- 原始套接字有没阻塞这一说法。
对于第1条 要等到最后一步释放A资源时 前两个请求才能依次得到满足
而第2条 只要到第三步 A资源就得到满足 程序就可以继续进行下去期待其它解答
例如,某个进程中先申请A资源,由于A资源的使用需要B资源的支持,于是会申请使用B资源,使用完成后,如果先将A资源释放,那么B资源可能会因此无法释放,其它进程无法再使用B资源。(形象一点:在打印进程中,A是打印机,B是打印机中的纸)② 即使资源之间没有依赖关系,也可能因此降低系统效率。
以内存资源为例,在整个存储器中,如果始终可以遵循后申请的内存单元先被释放,那么在分配内存空间时,将节省用于寻找最合适的内存空闲块的时间,不会产生碎片,提高系统的效率。当然,在实际中,内存无法保证后申请的先释放,但是如果在其它资源的使用上尽量遵循这个规则,也是可以提高效率的。