計算機操作系統 死鎖問題

概念

  • 條件是基礎,在一定的原因下,產生結果

死鎖三胞胎

  • 死鎖 僵持,消耗時間,雙方都占用了部分資源,不釋放
  • 活鎖 雙方互相謙讓,都不占用資源
  • 饑餓 謙讓的一方一直等待,無法占有資源,導致饑餓問題

死鎖的原因以及必要的條件

應用程序 信號量使用不當?

  • 信號量的初始值設置錯誤,設為0,兩個進程都卡死;
  • 解決辦法 :代碼開發人員 和 代碼測試人員
semaphore s1 = 0;
semaphore s2 = 0;
A(){while(1){p(s1);吃飯;v(s2);}
}B(){while (1){p(s2);喝茶;v(s2);}}

OS內核程序? 不可剝奪的軟硬件資源

  • 多進程對不可剝奪資源的競爭
  • 進程申請資源的順序不合理

死鎖的必要條件

死鎖產生了,一定會產生如下四個條件;但是具有這四個條件不一定會造成死鎖

  • 互斥條件? ? ? ? ? 臨界資源
  • 不可剝奪條件? 進程之間不可以互相剝奪彼此的資源
  • 請求保持條件? 占有資源不主動釋放
  • 循環等待條件??

預防死鎖

破壞死鎖的必要條件

  • 互斥條件? ? ? ? ? 臨界資源? ?幾乎行不通,比如更改臨界資源
  • 不可剝奪條件? 進程之間不可以互相剝奪彼此的資源? 需要付出代價,也有,比如cpu的切換;但是如果是打印機,會造成彼此文件交叉融合
  • 請求保持條件? 占有資源不主動釋放? ?一次性申請完臨界資源?
  • 循環等待條件??遞增編號,按照順序申請資源。比如一個資源切成兩份,第一份資源叫1,第二份資源叫2,A申請資源1,B在申請的時候看到1號資源已經被占用,就需要等待,A繼續申請2號資源,當A使用完資源,釋放之后。B開始申請,按照資源的序號進行資源的申請

避免死鎖

  • 銀行家算法? 計算安全序列
  • 規劃合理的資源申請順序,提高資金的流轉速度
  • 安全序列 找到 無死鎖 可以避免;找不到 必死鎖 無法避免
  • 因此將1000萬借給萬達,收回3000萬借給萬科或者恒大都可以?
  • 訪問順序 萬達 萬科 恒大;萬達 恒大 萬科

例1

例2?

死鎖的檢測與解除

死鎖定理和資源分配圖

  • 化簡 如果可以化簡到最簡則無死鎖
  • 不能化簡到最簡模式則檢測到死鎖,進行下一步解除死鎖,1,資源剝奪法;2,報銷進程法;3,進程回退法

資源分配圖

  • 圓圈代表進程
  • 長方形代表一類資源的容器
  • 長方形中的圓圈,代表該類資源,數量代表資源的數目
  • 邊 :從長方形指向圓圈,代表已分配邊;圓圈指向長方形,代表申請邊,請求邊

  • 尋找圓圈進程,依次嘗試,判斷p1的申請邊(從圓圈指出的邊)是否都可以得到滿足,滿足則刪除,不滿足則尋找下一個圓圈進程

死鎖的解除

  • 資源剝奪法?
  • 撤銷進程法 進程停止運行
  • 進程回退法 進行由運行80%出現死鎖,進程回退到70%等待,繼續執行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446752.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446752.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446752.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 力扣劍指Offer16-數值的整數次方

題目詳情 /* * 實現函數double Power(double base, int exponent), * 求base的exponent次方。不得使用庫函數,同時不需要考慮大數問題。示例 1: 輸入: 2.00000, 10 輸出: 1024.00000示例 2: 輸入: 2.10000, 3 輸出: 9.26100 * 示例 3: 輸入: 2.00000, -…

Android Glide圖片加載框架(四)回調與監聽

文章目錄Android Glide圖片加載框架系列文章 Android Glide圖片加載框架(一)基本用法 Android Glide圖片加載框架(二)源碼解析之with() Android Glide圖片加載框架(二)源碼解析之load() Android Glide圖…

算法章節 數組、鏈表、棧、隊列

數組 概念與特性 1,數組是線性表,用一組連續的內存空間存儲?組具有相同類型的數據 2,最大的特性是?持按照下標O(1)時間復雜度內快速訪問數組元素 3,?維數組尋址公式:a[i]_addr base_addr i * data_type_size 操作…

武忠祥.高等數學.基礎課-第一章函數 極限 連續P10

sin(1/x) 詳細解析網址 1.圖像 2.極限 x–>0時,函數極限不存在 sin2x 詳細作圖網址 1.圖像 2.周期為Π f(x)周期為T,f(axb)周期為T/|a| 所以sinx周期為2Π,sin2x周期為2Π/2Π |sinx| 詳細講解網址 1.圖像 2.周期:Π 3.絕對值 (1)y|sinx|的圖…

Java命令:jstat — 查看JVM的GC信息

文章目錄一、簡介二、常用命令1、jstat -class pid : class loader行為統計2、jstat -compiler pid : JIT編譯器行為統計3、jstat -gc pid 5000 20 : 垃圾回收堆行為統計4、jstat -gccapacity pid 5000 20 : 堆內存統計5、jstat -gcutil pid 5000 20 : 總結垃圾回收統計6、jsta…

算法章節 遞歸、排序、?分查找

遞歸 概念與特性函數調?函數?身的編程?式叫做遞歸,調?為”遞“,返回為”歸“三個條件1. ?個問題的解可以分解為多個?問題的解; 2. 分解之后的?問題,除了數據規模不同,求解思路跟原問題相同; 3. 存在…

codeforces 50A-C語言解題報告

50A題目網址 解題報告-others 題目解析 1.輸入n x m大小的木板,使用21大小的多米諾去填滿,求最多的多米諾數目 2.通過分析把木板分為奇數和偶數的情況 1)有一邊是偶數的情況: 使用2去填滿 2)兩個邊都是奇數 奇數-1偶數 還是讓木板的(奇數-1)邊去和2平行,再加上 (m-1)/2(n/1)…

Java命令:jps — 查看進程信息

文章目錄一、簡介二、常用命令1、jps2、jps -l3、jps -q4、jps -m5、jps -v6、jps失效一、簡介 JVM Process Status Tool,顯示指定系統內所有的HotSpot虛擬機進程。 功能: 顯示當前所有java進程pid的命令,我們可以通過這個命令來查看到底啟…

操作系統概述 記錄操作系統相關知識

操作系統 現代計算機系統由一個或多個處理器、主存、打印機、鍵盤、鼠標、顯示器、網絡接口以及各種輸入/輸出設備構成。上面提到的這些東西都屬于硬件資源,用戶不會直接和硬件進行交互,計算機安裝了一層軟件,這層軟件能夠通過響應用戶輸入的…

2014年英語一作文partA

作文講解網址 題目 Write a letter of about 100 words to the president of your university, suggesting how to improve students’ physical condition. You should include the details you think necessary. You should write neatly on the ANSWER SHEET. Do not sign…

JDK工具使用大全

文章目錄一、簡介一、簡介 在JDK的bin目錄下有很多命令行工具: 常用工具使用詳解如下: Java命令:jps — 查看進程信息 Java命令:jstack — 獲取線程dump信息 Java命令:jmap — 打印指定進程的共享對象內存映射或…

Linux進程 excel族函數的用法

介紹 使用fork創建一個進程之后,經常會在新進程中調用exec函數執行別的程序當前進程調用exec函數之后,這個進程會被完全替代換成新的程序,即便如此仍然是同一個進程,進程ID不變函數族 execl execlp execle execvp execvpe頭文件 …

codeforces 118A-C語言解題報告

118A題目網址 題目解析 1.輸入一個英語字符串,要求把其中的元音字母刪去(元音是字母“A”、“O”、“Y”、“E”、“U”、“I”包括大小寫,其余的是輔音),把剩余的輔音字母全部變為小寫,并在每一個輔音字母之前加上一個. 如: 輸入: Codeforces 輸出: .c.d.f.r.c.s…

ArrayList和HashMap遍歷比較

目錄一、ArrayList遍歷方式1、普通for循環遍歷2、增強for循環遍歷3、Iterator迭代器遍歷4、三種方式比較二、Map遍歷方式1、增強for循環 keySet() 遍歷2、增強for循環 entrySet() 遍歷3、Iterator keySet() 遍歷4、Itorator entrySet() 遍歷5、四種方式比較三、java開發手冊…

C++primer 12章 動態內存和智能指針

C引入智能指針的目的 使用智能指針來管理動態分配的對象,當一個對象應該被釋放的時候,指向他的智能指針確保自動釋放它 內存分配 靜態內存:局部static對象、類static數據成員、定義在任何函數之外的變量棧內存:定義在函數內的非…

Mac下iTerm2的安裝與配置

目錄一、iTerm2簡介二、下載以及安裝三、iTerm2主題配置四、配置Oh My Zsh1、安裝方式(1)一鍵安裝(2)手動安裝3、切換zsh4、修改主題五、配置Meslo字體六、聲明高亮七、自動建議填充八、iTerm2快速隱藏和顯示九、iTerm2隱藏用戶名…

codeforces 282A-C語言解題報告

282A題目網址 題目解析 1.第一行輸入n(表示有n條語句都要執行),再輸入X,X(都表示X1),–X,X–(都表示X-1),最初X0,輸出X的值 2.使用字符數組去存放每一行的字符串,因為字符串,所以直接整體存入scanf("%s",c); 3.因為字符數組最后一個是’\0’去表示末尾,所以要開辟…

Java命令:jinfo — 查看進程參數

目錄一、簡介二、常用命令1、jinfo -flags pid : 打印當前指定java進程中已經設定的所有JVM參數信息2、jinfo -flag pid : 打印指定名稱的參數3、jinfo -flag [|-] pid : 打開或關閉參數4、jinfo -sysprops pid : 打印當前java進程中設定的系統環境參數一、簡介 jinfo 是 JDK …

C++primer第八章 IO庫 8.1 IO類

IO庫設施 istream (輸入流)類型,提供輸入操作。ostream (輸出流)類型,提供輸出操作。cin,—個 istream對象,從標準輸入讀取數據。cout, 一個ostream對象,向標準輸出寫入數據。cerr…

2014年英語一作文partB漫畫作文

題目 Write an essay of 160-200 words based on the following drawing.In your essay you should describe the drawing brieflyexplain its intended meaning,give your comments 做題點 1.使用三段式,第一段:圖片內容;第二段:圖片暗示;第三段:寫自己的評論 2.描述圖片…