• Os学习笔记之资源的分配与调度


          资源是指一个执行一个用户程序所需要的全部硬件和软件设施和数据。操作系统的重要任务之一就是要为各个用户进程分配资源,在使各用

    户满意和资源利用率之间进行折衷是评价资源分配和调度策略的 标准。

          1. 资源的分类

                物理资源和程序资源,单一访问入口的资源和多访问入口的资源,等同资源,虚拟资源

          2. 资源分配机制

               2.1 资源描述器:描述各类资源的最小分配单位的数据结构(资源分配单位与资源描述器一一对应)   

               2.2 资源信息块:说明资源请求者以及实施分配所需的必要信息

               2.3 资源分配程序:分配程序和去分配程序

          3. 资源分配策略

              3.1 FIFO

              3.2 优先调度

         4. 死锁

             如果OS进程调度失败的话,很容易造成死锁,导致所有进程都无法向前推进。临界区(访问和操作共享数据的代码段)和竞争条件(两个进程

             都在同一个临界区中)是死锁中两个基本的概念。加锁是防止进程并发的访问临界区的一种方法,在Linux中,实现了两种锁机制,一种进程在

             请求锁的时候出于忙等待(自旋锁),一种会使当前的进程睡眠直到锁可用(睡眠锁)。

             4.1 死锁产生的条件

                  1)互斥性:进程独占资源

                  2)不剥夺条件:进程所获得 的资源在未使用完毕之前,不能被剥夺,只能由自己释放

                  3)部分分配:每次只申请需要的一部分资源

                  4)环路条件: 

           4.2 死锁的解决策略

                  1)采用静态分配方法:要求进程在没有获得全部资源之前不能投入运行

                  2)动态分配资源方法:检测是否出现环路,出现环路则不予分配资源

                  3)发生死锁时能够检测出,并且有能力恢复

           4.3 死锁的预防

                  同样分为以上的动态和静态的方法,含义相同

          4.4 死锁的避免

                 1)加锁的顺序。使用嵌套的锁的时候要保证以相同的顺序获取锁。避免形成环路

                 2)不要重复请求一个锁

                 3)越复杂的加锁方案越容易造成死锁

  • 相关阅读:
    (感受)新人生的三种境界
    (学)如何在打印时对横向页面重复左端标题
    (原)解决.NET 32位程序运行在64位操作系统下的兼容性问题
    (原)儿子上小学了
    OSG学习过程中的笔记
    从c++角度学习JAVA、Android的总结
    Android Studio利用cmakelists.txt编译OSG的方法总结
    android studio 利用gradle和cmakelist生成c++静态库.a的方法总结
    Android Studio使用c++静态库的方法总结(hello-libs为例)
    Android.mk、CMake、Gradle简介 NDK和JNI的关系
  • 原文地址:https://www.cnblogs.com/ITEagle/p/1728359.html
Copyright © 2020-2023  润新知