郝亞洲 李文敏
計算機操作系統(tǒng)原理課程是計算機科學與技術及相關專業(yè)的核心課程,歷來為計算機及信息學科所重視。操作系統(tǒng)原理課程中重要的一環(huán)就是進程間的通信問題。而“讀者-寫者”問題更是進程間通信的經典,學好它不僅可使學生鞏固理論學習的概念、原理、設計及算法,同時也可培養(yǎng)軟件開發(fā)所應有的系統(tǒng)結構設計和軟件工程素養(yǎng)。
操作系統(tǒng);文件系統(tǒng);功能調用
1.問題的提出及論文的目的
在Windows7環(huán)境下,創(chuàng)建一個控制臺進程,此進程包含n個線程。用這n個線程來表示n個讀者或寫者。每個線程按相應測試數(shù)據(jù)文件的要求進行讀寫操作。用信號量機制分別實現(xiàn)讀者優(yōu)先和寫者優(yōu)先問題。
通過分析并實現(xiàn)經典的“讀者-寫者”問題,鞏固對線程及其同步機制的學習效果,加深對相關基本概念的理解,并讓讀者了解如何將基本原理和實際設計有機的結合。
2.設計思路
可以將所有讀者和所有寫者分別存于一個讀者等待隊列和一個寫者等待隊列中,每當讀允許時,就從讀者隊列中釋放一個或多個讀者線程進行讀操作;每當寫允許時,就從寫者隊列中釋放一個寫者線程進行寫操作。
讀者優(yōu)先。讀者優(yōu)先指的是除非有寫者在寫文件,否則讀者不需要等待。所以可以用一個整數(shù)變量Read count記錄當前的讀者數(shù)目,用于確定是否需要釋放正在等待的寫者進程(當Read count=0時,表明所有的讀者讀完,需要釋放寫者等待隊列中的一個寫者)。每當一個讀者開始讀文件時,必須修改Read count變量。……