閱覽室問題 / 圖書館問題


前言

閱覽室問題 / 圖書館問題是操作系統中P、V操作部分非常經典的問題!_


閱覽室問題 / 圖書館問題

1. 問題描述

有一閱覽室,讀者進入時必須先在一張登記表上進行登記,該表為每一座位列一表目,包括座號和讀者姓名。讀者離開時要消掉登記信號,閱覽室中共有100個座位。用PV操作控制這個過程。

2.問題分析

由於每個讀者都會進行一樣的操作:登記->進入->閱讀->撤銷登記->離開,所以建立一個讀者模型即可。
臨界資源有:座位,登記表。讀者間有座位和登記表的互斥關系,所以設信號量empty表示空座位的數量,初始為100,mutex表示對登記表的互斥訪問,初始為1。

3. P、V操作

Semaphore mutex = 1, empty = 100;
Reader():
While(true) {
    P(empty)           //申請空座位
    P(mutex)           //申請登記表
    //登記  
    V(mutex)           //釋放登記表
    //進入閱讀
    P(mutex)            //申請登記表
    //撤銷登記
    V(mutex)            //釋放登記表
    V(empty)            //釋放座位
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM