这是一个有关操作系统的问题:
在一个进程申请多个资源时,资源申请的顺序要与释放的顺序相反,否则会效率低下,
请问为什么会效率低下?例如:
1.申请A资源 -> 申请B资源 -> 释放B资源 -> 释放A资源
2.申请A资源 -> 申请B资源 -> 释放A资源 -> 释放B资源为什么2比1的效率要低?

解决方案 »

  1.   

    构造函数和析构函数就是这样的A B B A
      

  2.   

    第2条释放A资源时 申请A资源请求得到满足 而第1条释放的是B资源 申请A资源并得不到满足
    对于第1条 要等到最后一步释放A资源时 前两个请求才能依次得到满足
    而第2条 只要到第三步 A资源就得到满足 程序就可以继续进行下去期待其它解答
      

  3.   

    在往底层一点呢,我知道他是这样做的,但是我不知道他为什么会这样做...如果ABAB为什么就效率低下呢?
      

  4.   

    手机用nor-flash,虽然不涉及磁盘寻道但还是会有助于提高整体效率
      

  5.   

    谢谢大家,这是最终解释...① 在某些情况下,资源本身存在一定的依赖关系。
    例如,某个进程中先申请A资源,由于A资源的使用需要B资源的支持,于是会申请使用B资源,使用完成后,如果先将A资源释放,那么B资源可能会因此无法释放,其它进程无法再使用B资源。(形象一点:在打印进程中,A是打印机,B是打印机中的纸)② 即使资源之间没有依赖关系,也可能因此降低系统效率。
    以内存资源为例,在整个存储器中,如果始终可以遵循后申请的内存单元先被释放,那么在分配内存空间时,将节省用于寻找最合适的内存空闲块的时间,不会产生碎片,提高系统的效率。当然,在实际中,内存无法保证后申请的先释放,但是如果在其它资源的使用上尽量遵循这个规则,也是可以提高效率的。