<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    嵌入式 GDB調試死鎖示例

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    死鎖:一種情形,此時執行程序中兩個或多個線程發生永久堵塞(等待),每個線程都在等待被  

    其他線程占用并堵塞了的資源。例如,如果線程A鎖住了記錄1并等待記錄2,而線程B鎖住了記錄2并等待記錄1,這樣兩個線程就發生了死鎖現象。   gdb調試死鎖的方法: gdb  attach pid thread apply all bt   找到_lll_lock_wait 鎖等待的地方。 然后查找該鎖被哪個線程鎖住了。 例如:   查看哪個線程擁有互斥體 (gdb) print AccountA_mutex $1 = {__m_reserved = 2, __m_count = 0, __m_owner = 0x2527, __m_kind = 0, __m_lock = {__status = 1, __spinlock = 0}} (gdb) print 0x2527 $2 = 9511 (gdb) print AccountB_mutex $3 = {__m_reserved = 2, __m_count = 0, __m_owner = 0x2529, __m_kind = 0, __m_lock = {__status = 1, __spinlock = 0}} (gdb) print 0x2529 $4 = 9513 (gdb) 從上面的命令中,我們可以看出AccontA_mutex是被線程 5(LWP 9511)加鎖(擁有)的,而AccontB_mutex是被線程 3(LWP 9513)加鎖(擁有)的。   找出死鎖的地方,對應檢查代碼就可以了。死鎖大多是對鎖的使用發生交叉所致的,解決死鎖的方法常有:

    有序資源分配法

    <span style="font-family:Courier New;font-size:12px;">是操作系統中預防死鎖的一種算法,這種算法資源按某種規則系統中的所有資源統一編號(例如打印機為1、磁帶機為2、磁盤為3、等等),申請時必須以上升的次序。
    系統要求申請進程:  
    1、對它所必須使用的而且屬于同一類的所有資源,必須一次申請完;  
    2、在申請不同類資源時,必須按各類設備的編號依次申請。
    例如:進程PA,使用資源的順序是R1,R2; 
               進程PB,使用資源的順序是R2,R1;
    若采用動態分配有可能形成環路條件,造成死鎖。  
    采用有序資源分配法:R1的編號為1,R2的編號為2;  
    PA:申請次序應是:R1,R2  
    PB:申請次序應是:R1,R2  
    這樣就破壞了環路條件,避免了死鎖的發生。
    另外,還有死鎖避免,死鎖檢測與恢復等。 </span>

    銀行家算法

    我們可以把操作系統看作是銀行家,操作系統管理的資源相當于銀行家管理的資金,進程向操作系統請求分配資源相當于用戶向銀行家貸款。 為保證資金的安全,銀行家規定: (1) 當一個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客; (2) 顧客可以分期貸款,但貸款的總數不能超過最大需求量; (3) 當銀行家現有的資金不能滿足顧客尚需的貸款數額時,對顧客的貸款可推遲支付,但總能使顧客在有限的時間里得到貸款; (4) 當顧客得到所需的全部資金后,一定能在有限的時間里歸還所有的資金. 操作系統按照銀行家制定的規則為進程分配資源,當進程首次申請資源時,要測試該進程對資源的最大需求量,如果系統現存的資源可以滿足它的最大需求量則按當前的申請量分配資源,否則就推遲分配。當進程在執行中繼續申請資源時,先測試該進程本次申請的資源數是否超過了該資源所剩余的總量。若超過則拒絕分配資源,若能滿足則按當前的申請量分配資源,否則也要推遲分配。 RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全