λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
the others/CS

[OS] ꡐ착 μƒνƒœ

by ciocio 2024. 11. 8.

πŸ“  ꡐ착 μƒνƒœλž€ ?

 

닀쀑 ν”„λ‘œμ„ΈμŠ€ ν™˜κ²½μ—μ„œ λ°œμƒν•  수 μžˆλŠ” μƒν˜Έ 배제 문제.

2개 μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ„œλ‘œμ˜ μžμ›μ„ 기닀리며 λ¬΄ν•œμ • λŒ€κΈ° μƒνƒœμ— λΉ μ§€λŠ” ν˜„μƒ.

 

 

ν”„λ‘œμ„ΈμŠ€ AλŠ” μž„κ³„ ꡬ역 μ§„μž… μ „ lock1 을 잠그고  (lock1 = true)

ν”„λ‘œμ„ΈμŠ€ BλŠ” μž„κ³„ ꡬ역 μ§„μž… μ „ lock2 λ₯Ό μž κΆœλ‹€. (lock2 = true)

λ§Œμ•½ ν”„λ‘œμ„ΈμŠ€ Aκ°€ lock2 κ°€ false κ°€ 되길 기닀리고,

ν”„λ‘œμ„ΈμŠ€ Bκ°€ lock1 이 false κ°€ 되길 κΈ°λ‹€λ¦°λ‹€λ©΄ ꡐ착 μƒνƒœκ°€ λ°œμƒν•˜κ²Œ λœλ‹€.

 

 

πŸ“  ꡐ착 μƒνƒœ λ°œμƒ 쑰건

 

ꡐ착 μƒνƒœλŠ” 4가지 쑰건이 λͺ¨λ‘ 좩쑱되면 λ°œμƒν•  κ°€λŠ₯성이 높아진닀.

 

1️⃣ μƒν˜Έ 배제 Mutual Exclusion

ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ μ‚¬μš©ν•˜λŠ” μžμ›μ„, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ‚¬μš©ν•  수 μ—†λŠ” 경우

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜μ˜ μžμ›μ„ λ…μ ν•œ 경우

 

2️⃣ μ μœ μ™€ λŒ€κΈ° Hold and Wait

μžμ›μ„ 할당받은 μƒνƒœμ—μ„œ λ‹€λ₯Έ μžμ›μ„ ν• λ‹Ήλ°›κΈ°λ₯Ό κΈ°λ‹€λ¦¬λŠ” μƒνƒœ

 

3️⃣ 비선점 Nonpreemption

λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ μœ ν•˜κ³  μžˆλŠ” μžμ›μ„ κ°•μ œλ‘œ 빼앗을 수 μ—†λŠ” μƒνƒœ

(μžμ›μ„ μ μœ ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ 슀슀둜 μžμ›μ„ ν•΄μ œν•  λ•ŒκΉŒμ§€ κΈ°λ‹€λ €μ•Ό 함)

 

4️⃣ μˆœν™˜(μ›ν˜•) λŒ€κΈ° Circular Wait

2개 μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ„œλ‘œκ°€ μ μœ ν•œ μžμ›μ„ μš”κ΅¬ν•˜λ©΄μ„œ μˆœν™˜μ μœΌλ‘œ λŒ€κΈ°ν•˜λŠ” μƒνƒœ

(ꡐ착 μƒνƒœ μ˜ˆμ‹œμ™€ μΌμΉ˜ν•˜λŠ” 상황)

 

ν”„λ‘œμ„ΈμŠ€ (Process) λž€ ?

운영 μ²΄μ œμ—μ„œ 싀행쀑인 ν”„λ‘œκ·Έλž¨. (1:1 맀칭)
ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ κ΄€λ¦¬λœλ‹€.
ν”„λ‘œκ·Έλž¨μ˜ ν˜•νƒœλŠ” λ‹€μ–‘ν•˜λ‹€. (λΈŒλΌμš°μ € κ°œλ³„ νƒ­, ν…μŠ€νŠΈ νŽΈμ§‘κΈ°...)

운영 μ²΄μ œλŠ” μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄
PCB (Process Control Block) κ΅¬μ‘°λ₯Ό μ‚¬μš©ν•œλ‹€.

 

μŠ€λ ˆλ“œ (Thread) λž€ ?

ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„
ν•œ ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜ μ΄μƒμ˜ μŠ€λ ˆλ“œλ₯Ό κ°€μ§ˆ 수 μžˆλŠ”λ°,
이λ₯Ό λ©€ν‹°μŠ€λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€ 라고 λΆ€λ₯Έλ‹€.

 

 

πŸ“  ꡐ착 μƒνƒœ ν•΄κ²° 방법

 

1️⃣ 예방

μ•žμ—μ„œ λ§ν•œ ꡐ착 μƒνƒœ ν•„μš” 쑰건 4가지 쀑 ν•œ 가지λ₯Ό μΆ©μ‘±ν•˜μ§€ λͺ»ν•˜κ²Œ ν•˜λŠ” 방법

 

βœ… μƒν˜Έ 배제 (Mutual Exclusion) λ₯Ό λ§‰λŠ”λ‹€λ©΄ ?

πŸ‘‰ 즉, ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ μ‚¬μš©ν•˜λŠ” μžμ›μ„ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ„ λ™μ‹œ μ‚¬μš©κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€λ©΄ ?

ν˜„μ‹€μ μœΌλ‘œ λͺ¨λ“  μžμ›μ˜ μƒν˜Έ 배제λ₯Ό μ—†μ• κΈ°λŠ” μ–΄λ ΅λ‹€.

 

βœ… μ μœ μ™€ λŒ€κΈ° (Hold and Wait) λ₯Ό λ§‰λŠ”λ‹€λ©΄ ?

πŸ‘‰ 즉, νŠΉμ • ν”„λ‘œμ„ΈμŠ€μ— μžμ›μ„ λͺ¨λ‘ ν• λ‹Ήν•˜κ±°λ‚˜,
     μ•„μ˜ˆ ν• λ‹Ήν•˜μ§€ μ•ŠλŠ” λ°©μ‹μœΌλ‘œ μš΄μ˜ν•œλ‹€λ©΄ ?

 

λ‹Ήμž₯ μžμ›μ΄ ν•„μš”ν•΄λ„ 기닀릴 μˆ˜λ°–μ— μ—†λŠ” ν”„λ‘œμ„ΈμŠ€μ™€,

μ‚¬μš©λ˜μ§€ μ•ŠμœΌλ©΄μ„œ μ˜€λž«λ™μ•ˆ ν• λ‹Ήλ˜λŠ” μžμ›μ„ λ‹€μˆ˜ μ–‘μ‚°ν•˜κΈ° λ•Œλ¬Έμ— 운영이 μ–΄λ ΅λ‹€.

λ˜ν•œ λ§Žμ€ μžμ›μ„ μ‚¬μš©ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ 맀우 λΆˆλ¦¬ν•΄μ§„λ‹€.

μžμ›μ„ 적게 μ‚¬μš©ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ— λΉ„ν•΄ λ™μ‹œμ— μžμ›μ„ μ‚¬μš©ν•  타이밍을 작기 μ–΄λ ΅κΈ° λ•Œλ¬Έ.

 

βœ… 비선점 (Nonpreemption) 을 λ§‰λŠ”λ‹€λ©΄ ?

πŸ‘‰ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ μœ ν•˜κ³  μžˆλŠ” μžμ›μ„ κ°•μ œλ‘œ 뺏을 수 μžˆλ‹€λ©΄ ?

 

μ„ μ ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλŠ” 일뢀 μžμ›μ— λŒ€ν•΄μ„œλŠ” νš¨κ³Όμ μ΄λ‹€.

κ·ΈλŸ¬λ‚˜ 선점이 μ•„μ˜ˆ λΆˆκ°€λŠ₯ν•œ μžμ›λ„ 있음. (ex. ν”„λ¦°ν„°κΈ°)

이런 경우λ₯Ό λͺ¨λ‘ λŒ€λΉ„ν•  수 없기에 μ–΄λ ΅λ‹€.

 

βœ… μˆœν™˜(μ›ν˜•) λŒ€κΈ° Circular Wait λ₯Ό μ—†μ•€λ‹€λ©΄ ?

πŸ‘‰ μ„œλ‘œ μ μœ ν•œ μžμ›μ„ μ„œλ‘œ λŒ€κΈ°ν•˜μ§€ μ•Šκ²Œ μˆœμ„œλ₯Ό μ •ν•΄ 순차적으둜 ν•΄κ²°ν•œλ‹€λ©΄ ?

 

μ•žμ„  방법 쀑 제일 ν˜„μ‹€μ μ΄μ§€λ§Œ

각 μžμ›μ„ μ–΄λ–»κ²Œ 효과적으둜 μ •λ ¬ν•΄μ„œ μ‚¬μš©ν•  κ²ƒμΈκ°€λŠ” ν•΄κ²°ν•˜κΈ° μ‰¬μš΄ λ¬Έμ œκ°€ μ•„λ‹˜.

 

 

2️⃣ νšŒν”Ό

ꡐ착 μƒνƒœκ°€ λ°œμƒν•˜μ§€ μ•Šμ„ μ •λ„λ‘œλ§Œ 쑰심 쑰심 μžμ›μ„ ν• λ‹Ήν•˜λŠ” 방법.

ν”„λ‘œμ„ΈμŠ€λ“€μ— λ°°λΆ„ν•  수 μžˆλŠ” μžμ›μ˜ 양을 κ³ λ €ν•˜μ—¬
ꡐ착 μƒνƒœκ°€ λ°œμƒν•˜μ§€ μ•Šμ„ μ •λ„μ˜ μ–‘λ§ŒνΌλ§Œ μžμ›μ„ λ°°λΆ„ν•˜λŠ” 방법.

μ•ˆμ „ μƒνƒœ safe state
λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€κ°€ μ •μƒμ μœΌλ‘œ μžμ›μ„ ν• λ‹Ήλ°›κ³  μ’…λ£Œλ  수 μžˆλŠ” μƒνƒœ

λΆˆμ•ˆμ „ μƒνƒœ unsafe state
ꡐ착 μƒνƒœκ°€ λ°œμƒν•  μˆ˜λ„ μžˆλŠ” μƒνƒœ

μ•ˆμ „ μˆœμ„œμ—΄ safe sequence
ꡐ착 μƒνƒœ 없이 ν”„λ‘œμ„ΈμŠ€λ“€μ—κ²Œ μ•ˆμ „ν•˜κ²Œ μžμ›μ„ ν• λ‹Ήν•  수 μžˆλŠ” μˆœμ„œ

 

μ•ˆμ „ μˆœμ„œμ—΄μ΄ μžˆλŠ” μƒνƒœ  πŸ‘‰  μ•ˆμ „ μƒνƒœ

μ•ˆμ „ μˆœμ„œμ—΄μ΄ μ—†λŠ” μƒνƒœ  πŸ‘‰  λΆˆμ•ˆμ „ μƒνƒœ

 

ꡐ착 μƒνƒœλ₯Ό νšŒν”Όν•˜κΈ° μœ„ν•΄μ„œλŠ” μ‹œμŠ€ν…œ μƒνƒœκ°€

μ•ˆμ „ μƒνƒœμ—μ„œ μ•ˆμ „ μƒνƒœλ‘œ μ›€μ§μ΄λŠ” κ²½μš°μ—λ§Œ μžμ›μ„ ν• λ‹Ήν•˜λ©΄ λœλ‹€.

 

 

3️⃣ κ²€μΆœ ν›„ 회볡

ꡐ착 μƒνƒœ λ°œμƒμ„ μΈμ •ν•˜κ³  사후에 μ‘°μΉ˜ν•˜λŠ” 방식

운영 μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μžμ›μ„ μš”κ΅¬ν•  λ•Œλ§ˆλ‹€ κ·Έλ•Œ κ·Έλ•Œ λͺ¨λ‘ ν• λ‹Ήν•˜λ©°,

ꡐ착 μƒνƒœ λ°œμƒ μ—¬λΆ€λ₯Ό 주기적으둜 κ²€μ‚¬ν•œλ‹€.

ꡐ착 μƒνƒœκ°€ κ²€μΆœλ˜λ©΄ κ·Έλ•Œ 회볡 ν”„λ‘œμ„ΈμŠ€λ₯Ό λ™μž‘μ‹œν‚¨λ‹€.

 

βœ… 선점을 ν†΅ν•œ 회볡

ꡐ착 μƒνƒœκ°€ 해결될 λ•ŒκΉŒμ§€ ν•œ ν”„λ‘œμ„ΈμŠ€μ”© μžμ›μ„ λͺ°μ•„μ£ΌλŠ” 방식.

λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œλΆ€ν„° μžμ›μ„ κ°•μ œλ‘œ λΉΌμ•—μ•„ ν•œ ν”„λ‘œμ„ΈμŠ€μ— 계속 ν• λ‹Ήν•΄μ€€λ‹€.

 

βœ… ν”„λ‘œμ„ΈμŠ€ κ°•μ œ μ’…λ£Œλ₯Ό ν†΅ν•œ 회볡

κ°€μž₯ λ‹¨μˆœν•˜μ§€λ§Œ ν™•μ‹€ν•œ 방법.

운영 μ²΄μ œλŠ” ꡐ착 μƒνƒœμ— 놓인 ν”„λ‘œμ„ΈμŠ€λ₯Ό λͺ¨λ‘ κ°•μ œμ’…λ£Œν•  μˆ˜λ„ 있고,

( ν•œ 방에 ꡐ착 μƒνƒœλ₯Ό ν•΄κ²°ν•˜μ§€λ§Œ

그만큼 λ§Žμ€ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μž‘μ—… 내역을 μžƒκ²Œ 될 수 있음 )

ꡐ착 μƒνƒœκ°€ μ—†μ–΄μ§ˆ λ•ŒκΉŒμ§€ ν•œ ν”„λ‘œμ„ΈμŠ€μ”© κ°•μ œ μ’…λ£Œν•  μˆ˜λ„ μžˆλ‹€.

( μž‘μ—… 내역을 μžƒλŠ” ν”„λ‘œμ„ΈμŠ€λŠ” μ΅œλŒ€ν•œ 쀄일 수 μžˆμ§€λ§Œ

ꡐ착 μƒνƒœκ°€ μ—†μ–΄μ‘ŒλŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” κ³Όμ •μ—μ„œ μ˜€λ²„ν—€λ“œ μ•ΌκΈ° κ°€λŠ₯ )

 

 

λ²ˆμ™Έ - 타쑰 μ•Œκ³ λ¦¬μ¦˜

ꡐ착 μƒνƒœλ₯Ό μ•„μ˜ˆ λ¬΄μ‹œν•˜λŠ” 방법도 μžˆλ‹€.

λ“œλ¬Όκ²Œ λ°œμƒν•˜λŠ” 잠재적 문제λ₯Ό λ¬΄μ‹œλ‘œ λŒ€μ²˜ ... 였호

( 완벽을 μΆ”κ΅¬ν•˜λŠ” κ³Όν•™μžλ‚˜ μˆ˜ν•™μž μž…μž₯μ—μ„œλŠ” 납득할 수 μ—†λŠ” 방식일지 λͺ¨λ₯΄λ‚˜,

문제 λ°œμƒμ˜ λΉˆλ„λ‚˜ 심각성에 따라 μ΅œλŒ€ νš¨μœ¨μ„ μΆ”κ΅¬ν•˜λŠ” μ—”μ§€λ‹ˆμ–΄ μž…μž₯μ—μ„œλŠ” μ ν•©ν•œ 방법일지도 )

λ°˜μ‘ν˜•

'the others > CS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

cs..  (0) 2024.11.13
cs  (0) 2024.11.11

λŒ“κΈ€