日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统课设--使用信号量解决生产者/消费者同步问题

發(fā)布時間:2025/3/21 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统课设--使用信号量解决生产者/消费者同步问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

山東大學操作系統(tǒng)課設(shè)lab3

  • 實驗三 使用信號量解決生產(chǎn)者/消費者同步問題(lab3)
    • 實驗?zāi)康?/li>
      • 理解Nachos的信號量是如何實現(xiàn)的
      • 生產(chǎn)者/消費者問題是如何用信號量實現(xiàn)的
      • 在Nachos中是如何創(chuàng)建并發(fā)線程的
      • 在Nachos下是如何測試和debug的

實驗三 使用信號量解決生產(chǎn)者/消費者同步問題(lab3)

實驗?zāi)康?/h2>

使用操作系統(tǒng)信號量機制,編寫程序解決生產(chǎn)者/消費者同步問題。

理解Nachos的信號量是如何實現(xiàn)的

信號量問題主要是對信號量的的占用。分為兩個角色來考慮信號量,一個是生產(chǎn)者,一個是消費者。

生產(chǎn)者/消費者問題是如何用信號量實現(xiàn)的

生產(chǎn)者負責生產(chǎn)message;等待buffer中是否有空位;獲取互斥鎖;將一條message放入buffer中;釋放互斥鎖; buffer中message++。
消費者等待通知有Message;獲取互斥鎖;取出一條message;釋放互斥鎖;buffer中message–。

在Nachos中是如何創(chuàng)建并發(fā)線程的

常規(guī)操作:
#include <fcntl.h>//訪問權(quán)限、創(chuàng)建文件模式、非阻塞標記
#include <stdlib.h>//定義了五種類型、一些宏和通用工具函數(shù)。
#include <unistd.h>//提供對 POSIX 操作系統(tǒng) API 的訪問功能的頭文件的名稱
主要程序在prodcons.cc中
定義3個信號量;2個資源信號量,nempty,full;1個互斥信號量,mutex。

獲取互斥鎖,放入message,釋放互斥鎖。

獲取互斥鎖,取出message,釋放互斥鎖。

在構(gòu)造函數(shù)Prodscon中初始化信號量和生產(chǎn)者、消費者數(shù)組


在Nachos下是如何測試和debug的

./nachos相當于執(zhí)行.exe;進入桌面 cd ~/Desktop/
實驗結(jié)果沒有打印出來,而是生成了兩個文件tmp_0.tmp_1。兩個文件分別對應(yīng)兩個消費者讀到的信息,信息中會記錄生產(chǎn)者的名稱。tmp_0、tmp_1如下:

但是這樣只是tmp_0里有生產(chǎn)者的記錄而已,tmp_1里沒有。我詢問了同學,他告訴我要加random seed,于是我去搜了一下隨機種子的含義及用法。-rs參數(shù)讓nachos的線程隨機yield,讓出cpu。我修改了命令:./nachos -rs 100,結(jié)果tmp_0,tmp_1如下:


我再次修改了命令:./nachos -rs 12553,結(jié)果tmp_0,tmp_1如下:


但是感覺對-rs的作用還是不是特別懂。

總結(jié)

以上是生活随笔為你收集整理的操作系统课设--使用信号量解决生产者/消费者同步问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。