Skip to content

Commit

Permalink
20240513
Browse files Browse the repository at this point in the history
20240513
  • Loading branch information
BambooStreet committed May 13, 2024
1 parent 2c35af1 commit 9d9fa94
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 0 deletions.
62 changes: 62 additions & 0 deletions _posts/2024-05-13-스레드동기화3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: 스레드 동기화3
author: BambooStreet
date: 2024-05-13 00:34:00 +0800
categories: [운영체제, 스레드 동기화]
tags: [favicon]
---

# 생산자 소비자 문제


### 생산자 소비자 문제 사례

![생산자소비자문제사례](assets/img/posts/20240513/생산자소비자문제사례.png)
<br>
<br>

생산자-소비자 관계에서 비디오 버퍼는 임계구역이다.


생산자, 소비자 스레드가 접근할 때, 임계구역에서 상호 배제가 일어나야 한다.


밑에는 1:3 관계이다. 촬영장 카메라, 프레임 단위로 읽고 디코딩 해서 적절한 네트워크 통해서 전송

약간의 복잡한 메커니즘..? 위에꺼와 비교해서



### 생산자 소비자 문제란?
![생산자소비자문제](assets/img/posts/20240513/생산자소비자문제.png)
<br>
<br>
* 공유버퍼를 사이에 두고, 공유버퍼에 데이터를 공급하는 생산자들과, 데이터를 읽고 소비하는 소비자들이, 공유버퍼를 문제 없이 사용하도록 생산자와 소비자를 동기화시키는 문제



### 생산자 소비자 문제의 3가지 문제
1. 상호 배제 해결(생산자, 소비자들의 공유버퍼에 대한 상호 배제)
2. 비어있는 공유 버퍼 문제(비어 있는 공유버퍼를 소비자가 읽을 때)
3. 꽉 찬 공유버퍼 문제(꽉 찬 공유버퍼에 생산자가 쓸 때)


### 비어있는 버퍼 문제 해결
* 세마포 R 활용(읽기 가능한 버퍼 개수) : 버퍼가 비어 있는지 살피는 P/V 연산으로 해결

![비어있는버퍼문제해결](assets/img/posts/20240513/비어있는버퍼문제해결.png)
<br>
<br>

* 세마포 W 활용(쓰기 가능한 버퍼 개수) : 버퍼가 꽉 차 있을 때 처리하는 P/V 연산으로 해결

![가득찬공유버퍼문제해결](assets/img/posts/20240513/가득찬공유버퍼문제해결.png)
<br>
<br>


### 생산자와 소비자 알고리즘

![생산자소비자알고리즘](assets/img/posts/20240513/생산자소비자알고리즘.png)
<br>
<br>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9d9fa94

Please sign in to comment.