計算機操作系統讀者和寫者模型的簡單介紹以及思考

讀者和寫者

  • 讀寫兩組進程,共享一個文件,多個讀者可以同時訪問文件,多個寫者不可以同時訪問文件,寫者和讀者也不可以同時訪問文件
  • 共享讀;獨占寫
  • 特征:1,資源被誰占有;2,寫者改變資源,讀者不改變資源
  • 分析:寫者關心文件是否被占有;讀者作為一個團體去讀文件,第一個人關心文件是否被占有;讀者團中間的人增加讀者團的人數;最后一個讀者需要釋放文件

semaphore mutex = 1;讀者i(){while(1){p(mutex);if (read_count == 0){p(s);}read_count++;v(mutex);p(mutex);count--;v(mutex);if (read_count == 0){v(s);}}
}寫者i(){while(1){p(s);寫操作;v(s);}
}

?例題

  • 一根繩子橫跨峽谷兩邊,猴子通過繩索過峽谷,只要朝著相同方向,同一時刻可以通過多只猴子,但是如果是相反的方向,同時有猴子通過就會產生死鎖,如果一只猴子想過峽谷,必須看是否有相反方向的猴子通過繩索,請使用pv操作解決問題
  • 猴子屬性分為 第一只 中間 最后一只
  • 代碼
semaphore mutex = 1;
semaphore s = 1;//橋
左邊猴子(){while(1){p(mutex);if (left_count == 0){p(s);}left_count++;v(mutex);過橋;p(mutex);left_count--;if (left_count == 0){v(s);}v(mutex);}
}

生產者和消費者 以及 讀者和寫者之間的區別

  • 資源的影響 消費者會改變資源;但是讀者不會改變資源
  • 讀者表現一個團體的性質,需要計數,按照屬性分為 第一個 中間的人 和 最后一個人;生產者和消費者計數是對資源的利用和剩余進行計數。

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

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

相關文章

Android Glide圖片加載框架(二)源碼解析之into()

文章目錄一、前言二、源碼解析1、into(ImageView)2、GlideContext.buildImageViewTarget()3、RequestBuilder.into(Target,RequestListener,RequestOptions);4、RequestBuilder.buildRequest()5、SingleRequest.obtain()6、isEquivalentTo()、isSkipMemoryCacheWithCompletePre…

codeforces 158A-C語言解題報告

158A題目網址 題目解析 1.輸入n個選手,和第k個參考選手 再輸入每一個選手的比賽成績 2.輸出比賽成績>第k個選手的入選人數 3.n,k都是從1開始計算的 4.因為要比較所有的選手與第k個選手,所以使用數組,而且要使用兩個循環(第一個輸入數據,第二個比較成績) 5.不要忘記scanf都…

通過字符串的方式讀取文件的內容

代碼 std::ifstream file("1.txt");std::stringstream data;data << file.rdbuf();printf(data.str().c_str());file.close(); 頭文件 #include <cstdio> #include <cstdlib> #include <fstream> #include <sstream>

2014年考研英語一翻譯知識點

題目講解網址 總結 1.做翻譯題,不用看句子前后的地方,直接看要翻譯的部分 2.多根據語境去翻譯 3.如果是不認識的單詞,一般都是我們平常經常使用/說的詞的代替高級詞 題目句子 It is also the reason why when we try to describe music with words, all wecan do is articul…

Android Glide圖片加載框架(三)緩存機制

文章目錄一、緩存簡介二、緩存用法內存緩存方式磁盤緩存方式三、緩存KEY四、內存緩存內存緩存流程五、磁盤緩存磁盤緩存流程Android Glide圖片加載框架系列文章 Android Glide圖片加載框架&#xff08;一&#xff09;基本用法 Android Glide圖片加載框架&#xff08;二&#…

計算機操作系統 死鎖問題

概念 條件是基礎&#xff0c;在一定的原因下&#xff0c;產生結果死鎖三胞胎 死鎖 僵持&#xff0c;消耗時間&#xff0c;雙方都占用了部分資源&#xff0c;不釋放活鎖 雙方互相謙讓&#xff0c;都不占用資源饑餓 謙讓的一方一直等待&#xff0c;無法占有資源&#xff0c;導致…

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

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

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

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

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

數組 概念與特性 1&#xff0c;數組是線性表&#xff0c;用一組連續的內存空間存儲?組具有相同類型的數據 2&#xff0c;最大的特性是?持按照下標O(1)時間復雜度內快速訪問數組元素 3&#xff0c;?維數組尋址公式&#xff1a;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.絕對值 &#xff08;1&#xff09;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…

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

遞歸 概念與特性函數調?函數?身的編程?式叫做遞歸&#xff0c;調?為”遞“&#xff0c;返回為”歸“三個條件1. ?個問題的解可以分解為多個?問題的解&#xff1b; 2. 分解之后的?問題&#xff0c;除了數據規模不同&#xff0c;求解思路跟原問題相同&#xff1b; 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&#xff0c;顯示指定系統內所有的HotSpot虛擬機進程。 功能&#xff1a; 顯示當前所有java進程pid的命令&#xff0c;我們可以通過這個命令來查看到底啟…

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

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

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目錄下有很多命令行工具&#xff1a; 常用工具使用詳解如下&#xff1a; Java命令&#xff1a;jps — 查看進程信息 Java命令&#xff1a;jstack — 獲取線程dump信息 Java命令&#xff1a;jmap — 打印指定進程的共享對象內存映射或…

Linux進程 excel族函數的用法

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

codeforces 118A-C語言解題報告

118A題目網址 題目解析 1.輸入一個英語字符串,要求把其中的元音字母刪去(元音是字母“A”、“O”、“Y”、“E”、“U”、“I”包括大小寫&#xff0c;其余的是輔音),把剩余的輔音字母全部變為小寫,并在每一個輔音字母之前加上一個. 如: 輸入: 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開發手冊…