操作系統實驗二:進程、線程之間的同步

二、進程、線程之間的同步

1。生產者消費者問題(信號量+mutex)

參考教材中的生產者消費者算法,創建5個進程,其中兩個進程爲生產者進程,3個進程爲消費者進程。一個生產者進程試圖不斷地在一個緩衝中寫入大寫字母,另一個生產者進程試圖不斷地在緩衝中寫入小寫字母。3個消費者不斷地從緩衝中讀取一個字符並輸出。爲了使得程序的輸出易於看到結果,仿照閱讀材料中的實例程序,分別在生產者和消費者進程的合適的位置加入一些隨機睡眠時間。

可選的實驗:在上面實驗的基礎上實現部分消費者有選擇地消費某些產品。例如一個消費者只消費小寫字符,一個消費者只消費大寫字母,而另一個消費者則無選擇地消費任何產品。消費者要消費的產品沒有時,消費者進程被阻塞。注意緩衝的管理。

2。用信號量和mutex方式實現睡覺的理髮師問題

3。讀者寫者問題

教材和相關的閱讀材料中對讀者寫者問題算法均有描述,但這個算法在不斷地有讀者流的情況下,寫者會被阻塞。編寫一個寫者優先解決讀者寫者問題的程序,其中讀者和寫者均是多個進程,用信號量作爲同步互斥機制。

 

發佈了22 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章