OS

【OS】同期の例

同期の詳細は次の記事をご覧ください!
【OS】同期の例 https://tomostudyblog.com/operating-system-7/ 同期の問題 Bounded-Bu...

同期の問題

Bounded-Buffe (Producer-Consumer ) 問題

n個のバッファーがあり、それぞれ一つのアイテムを保存できる。

変数

mutexは1に初期化する
fullは0に初期化する
emptyはnに初期化する
※fullとemptyはcounting semaphoreと呼ばれている。

生産者の構造

消費者の構造

 

Readers and Writers 問題

Readers

データセットを読み込むだけで、アップデートはできない

Writers

読み込みと書き込みが実行できる

問題

複数のReaderが同時に読み込むことは可能
一人の Writerだけが一度に共有データにアクセスできる。

共有データ

rw_mutex:最初1に初期化されている。
mutex:最初1に初期化されている。
read_cont:最初0に初期化されている。

Writerプロセスの構造

Readerプロセスの構造

First variation – no reader kept waiting unless writer has permission to use shared object

Second variation – once writer is ready, it performs the write ASAP

Both may have starvation leading to even more variations

Problem is solved on some systems by kernel providing

reader-writer locks

Dining-Philosophers 問題

哲学者は思考と食事を交互にし、はしを一本ずつ合計2本とってボウルから料理を食べ始まる。料理を食べるためには、箸を両方とる必要がある。食べ終わったらはしをもとに戻す。

 

5人の哲学者と5本の箸がある。

philosopher iの構造

解決法

それぞれのphilosopher iは次の順序で実行します。