๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Group_Study/Operating System

[3์ฃผ์ฐจ] Mutual Exclusion Solutions (Language-Level solution)

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 12. 21.

Mutual Exclusion Solutions (Language-Level solution)

High-level Mechanism

โœ” Monitor
โœ” Path expressions
โœ” Serializers
โœ” Critical region, conditional critical region

โœ” Language-level constructs
โœ” Object-Oriented concept๊ณผ ์œ ์‚ฌ
โœ” ์‚ฌ์šฉ์ด ์‰ฌ์›€

Monitor

โœ” ๊ณต์œ  ๋ฐ์ดํ„ฐ์™€ Critical section์˜ ์ง‘ํ•ฉ
โœ” Conditional variable
- wait(), signal(), operations

Monitor์˜ ๊ตฌ์กฐ

โœ” Entry queue(์ง„์ž… ํ)

  • ๋ชจ๋‹ˆํ„ฐ ๋‚ด์˜ proceure ์ˆ˜๋งŒํผ ์กด์žฌ

โœ” Mutual exclusion

  • ๋ชจ๋‹ˆํ„ฐ ๋‚ด์—๋Š” ํ•ญ์ƒ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ง„์ž… ๊ฐ€๋Šฅ

โœ” Information hiding(์ •๋ณด ์€ํ)

  • ๊ณต์œ  ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‹ˆํ„ฐ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

โœ” Condition queue(์กฐ๊ฑด ํ)

  • ๋ชจ๋‹ˆํ„ฐ ๋‚ด์˜ ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ

โœ” Signaler queue(์‹ ํ˜ธ์ œ๊ณต์ž ํ)

  • ๋ชจ๋‹ˆํ„ฐ์— ํ•ญ์ƒ ํ•˜๋‚˜์˜ ์‹ ํ˜ธ์ œ๊ณต์ž ํ๊ฐ€ ์กด์žฌ
  • signal() ๋ช…๋ น์„ ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„์‹œ ๋Œ€๊ธฐ

Monitor - ์ž์› ํ• ๋‹น ๋ฌธ์ œ

โœ” ๋ชจ๋“ˆ ๋ณ„๋กœ ready queue ์กด์žฌ
โœ” ํŠน์ • ์ด๋ฒคํŠธ ๊ธฐ๋‹ค๋ฆฌ๋Š” condition queue
โœ” condition queue๋ฅผ ๊นจ์›Œ์ค„(์‹ ํ˜ธ ์ œ๊ณต) Signaler queue

์ž์›ํ• ๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค

์ดˆ๊ธฐ ์ƒํƒœ

โœ” ์ž์› R ์‚ฌ์šฉ ๊ฐ€๋Šฅ
โœ” Monitor์•ˆ์— ํ”„๋กœ์„ธ์Šค ์—†์Œ

state 1

โœ” ํ”„๋กœ์„ธ์Šค P_j๊ฐ€ ๋ชจ๋‹ˆํ„ฐ ์•ˆ์—์„œ ์ž์› R์„ ์š”์ฒญ

state 2

โœ” ์ž์› R์ด P_j์—๊ฒŒ ํ• ๋‹น
โœ” ํ”„๋กœ์„ธ์Šค P_k๊ฐ€ R ์š”์ฒญ, P_m ๋˜ํ•œ R ์š”์ฒญ

state 3

โœ” P_j๊ฐ€ R๋ฐ˜ํ™˜
โœ” R_Free.signal() ํ˜ธ์ถœ์— ์˜ํ•ด P_k๊ฐ€ wakeup

state 4

โœ” ์ž์› R์ด P_k์—๊ฒŒ ํ• ๋‹น
โœ” P_j๊ฐ€ ๋ชจ๋‹ˆํ„ฐ ์•ˆ์œผ๋กœ ๋Œ์•„์™€์„œ, ๋‚จ์€ ์ž‘์—… ์ˆ˜ํ–‰

Producer-Consumer problem

Reader-Writer Problem

โœ” reader/writer ํ”„๋กœ์„ธ์Šค๋“ค ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ ๊ธฐ๋ฒ•
โœ” writer ํ”„๋กœ์„ธ์Šค์— ์˜ํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์‹œ์—๋งŒ ์ƒํ˜ธ ๋ฐฐ์ œ ๋ฐ ๋™๊ธฐํ™” ํ•„์š”

โœ” ๋ชจ๋‹ˆํ„ฐ ๊ตฌ์„ฑ

  • ๋ณ€์ˆ˜ 2๊ฐœ
    • ํ˜„์žฌ ์ฝ๊ธฐ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” reader ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜
    • ํ˜„์žฌ writer ํ”„๋กœ์„ธ์Šค๊ฐ€ ์“ฐ๊ธฐ ์ž‘์—…์„ ์ง„ํ–‰ ์ค‘์ธ์ง€ ํ‘œ์‹œ
  • ์กฐ๊ฑด ํ 2๊ฐœ
    • reader/writer ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
  • ํ”„๋กœ์‹œ์ ธ 4๊ฐœ
    • reader(writer) ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฝ๊ธฐ(์“ฐ๊ธฐ) ์ž‘์—…์„ ์›ํ•  ๊ฒฝ์šฐ์— ํ˜ธ์ถœ, ์ฝ๊ธฐ(์“ฐ๊ธฐ) ์ž‘์—…์„ ๋งˆ์ณค์„ ๋–„ ํ˜ธ์ถœ

Dining Philosopher Problem

โœ” 5๋ช…์˜ ์ฒ ํ•™์ž
โœ” ์ฒ ํ•™์ž๋“ค์€ ๋‘ ๊ฐ€์ง€ ์ผ๋งŒ ๋ฐ˜๋ณต: ์ƒ๊ฐํ•˜๋Š” ์ผ/์ŠคํŒŒ๊ฒŒํ‹ฐ๋ฅผ ๋จน๋Š” ์ผ
โœ” ๊ณต์œ ์ž์›: ์ŠคํŒŒ๊ฒŒํ‹ฐ, ํฌํฌ
โœ” ์ŠคํŒŒ๊ฒŒํ‹ฐ๋ฅผ ๋จน๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ขŒ์šฐ ํฌํฌ 2๊ฐœ ๋ชจ๋‘ ๋“ค์–ด์•ผ ํ•œ๋‹ค


์ฝ”๋“œ๋กœ ๊ตฌํ˜„

ํŠน์ง•

โœ” ์žฅ์ 

  • ์‚ฌ์šฉ์ด ์‰ฝ๋‹ค
  • Deadlock ๋“ฑ error ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ๋‹ค

โœ” ๋‹จ์ 

  • ์ง€์›ํ•˜๋Š” ์–ธ์–ด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ OS๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค
    • critical section ์ ‘๊ทผ์„ ์œ„ํ•œ ์ฝ”๋“œ ์ƒ์„ฑ

๋Œ“๊ธ€