관리 메뉴

Tech Log πŸ› οΈ

λ°λ“œλ½μ΄ λ°œμƒν•˜λŠ” μ΄μœ μ™€ ν•΄κ²° μ „λž΅ λ³Έλ¬Έ

Computer Science/운영체제

λ°λ“œλ½μ΄ λ°œμƒν•˜λŠ” μ΄μœ μ™€ ν•΄κ²° μ „λž΅

sehaan 2024. 1. 3. 01:12

1. λ°λ“œλ½μ΄λž€?

λ°λ“œλ½μ΄λž€ λ‘κ°œ μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€ ν˜Ήμ€ μŠ€λ ˆλ“œκ°€ μ„œλ‘œκ°€ 가진 λ¦¬μ†ŒμŠ€λ₯Ό κΈ°λ‹€λ¦¬λŠ” μƒνƒœμ΄λ‹€.

이런 μƒνƒœκ°€ λ°œμƒν•˜λ©΄ μ„œλ‘œκ°€ μ›ν•˜λŠ” μžμ›μ„ 얻지 λͺ»ν•΄μ„œ 처리 μƒνƒœκ°€ λ§ˆλΉ„λ˜λŠ” ν˜„μƒμ΄ λ°œμƒν•œλ‹€.

 

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€/μŠ€λ ˆλ“œ ν™˜κ²½ , 레이슀 μ»¨λ””μ…˜ ν™˜κ²½μ—μ„œ λ°œμƒν•˜λ©° μ—¬λŸ¬ 쑰건이 λ³΅ν•©μ μœΌλ‘œ μž‘μš©ν•΄μ„œ λ°λ“œλ½μ΄ λ°œμƒν•œλ‹€.

2. λ°λ“œλ½μ΄ λ°œμƒν•˜λŠ” 이유

μ•žμ„œ λ°λ“œλ½μ€ μ—¬λŸ¬ 쑰건이 λ³΅ν•©μ μœΌλ‘œ μž‘μš©ν•΄μ•Όν•œλ‹€κ³  ν•˜μ˜€λ‹€. κ·Έ 쑰건은 크게 4가지가 μžˆλ‹€.

 

1. μƒν˜Έλ°°μ œ(Mutual Exclusion)

레이슀 μ»¨λ””μ…˜ ν™˜κ²½μ—μ„œ 곡유 μžμ›λ“€μ„ κ³΅μœ ν•΄μ„œ μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ— λ°œμƒν•œλ‹€.

예λ₯Ό λ“€μ–΄, μ°¨λŸ‰λ“€μ΄ 차선듀을 κ³΅μœ ν•΄μ„œ μ‚¬μš©ν•˜κ²Œ λœλ‹€λ©΄ μ΄λŠ” 곧 κ΅ν†΅μ‚¬κ³ λ‘œ 이루어진닀.

이 쑰건은 λ‹Ήμ—°νžˆ 보μž₯λ˜μ–΄μ•Όλ˜λŠ” 것이닀.

 

2. 점유 λŒ€κΈ° (Hold and Wait)

ν”„λ‘œμ„ΈμŠ€κ°€ 이미 ν•˜λ‚˜ μ΄μƒμ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ·¨λ“ν•œ μƒνƒœμ—μ„œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ‚¬μš©ν•˜κ³  μžˆλŠ” λ¦¬μ†ŒμŠ€λ₯Ό μΆ”κ°€λ‘œ κΈ°λ‹€λ¦¬λŠ” 것이닀.

점유(Hold)ν•œ μƒνƒœλ‘œ λ‹€λ₯Έ λ¦¬μ†ŒμŠ€λ₯Ό λŒ€κΈ°(wait) ν•œλ‹€λŠ” κ°œλ…μ΄λ‹€.

 

μ°¨λŸ‰μ΄ 1차선을 μ μœ ν•˜κ³  μžˆλŠ” μƒν™©μ—μ„œ 2μ°¨μ„ κΉŒμ§€ μ μœ ν•΄μ•Όν•œλ‹€λ©΄, κ·Έ λ™μ•ˆμ€ λ‹€λ₯Έ μ°¨λŸ‰λ“€μ΄ 1차선을 μ μœ ν•˜μ§€ λͺ»ν•  것이닀.

ν•˜μ§€λ§Œ μ–΄λ–€ μ°¨λŸ‰μ΄ κΌ­ 1차선에 κ°€μ•Όν•œλ‹€λ©΄ μ΄λŠ” 곧 μ²˜λ¦¬κ°€ λ§ˆλΉ„λ˜λŠ” λ°λ“œλ½μ„ μœ λ°œν•  수 μžˆλ‹€.

 

3. 비선점

λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œλ‚˜ CPU μžμ›μ„ μž„μ˜λ‘œ κ°€μ Έμ˜¬ 수 μžˆλ‹€. 즉 ν˜„μž¬ μžμ›(λ¦¬μ†ŒμŠ€)을 μ μœ ν•˜κ³  μžˆλŠ” 자만이 λ¦¬μ†ŒμŠ€λ₯Ό λ°˜ν™˜ν•  수 μžˆλ‹€.

 

2차선에 μžˆλŠ” μ°¨λŸ‰μ΄ 1차선에 μžˆλŠ” μ°¨λŸ‰μ„ μ–΅μ§€λ‘œ λŒμ–΄λ‚΄λ €μ„œ μ μœ ν•  수 μ—†λŠ” 것과 같은 κ°œλ…μ΄λ‹€.

 

4. μˆœν™˜ λŒ€κΈ°

말 κ·ΈλŒ€λ‘œ μ„œλ‘œκ°€ μ„œλ‘œμ˜ μžμ›μ„ 기닀리고 μžˆλŠ” 것이닀.

 

이 4가지 쑰건이 μΆ©μ‘±λ˜μ–΄μ•Ό λ°λ“œλ½μ΄ λ°œμƒν•œλ‹€κ³  ν•  수 μžˆλ‹€!

 

3. λ°λ“œλ½ ν•΄κ²° μ „λž΅

λ°λ“œλ½ 방지

4가지 쑰건으둜 인해 λ°λ“œλ½μ΄ λ°œμƒν•œλ‹€λ©΄, μ—­λ°œμƒμœΌλ‘œ 4가지 상황이 μΆ©μ‘±λ˜μ§€ μ•Šκ²Œ μ‹œμŠ€ν…œμ„ λ””μžμΈν•˜λŠ” 것이닀.

 

첫번째둜 λ¦¬μ†ŒμŠ€λ₯Ό 곡유 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 방법이 μžˆλ‹€.

ν•˜μ§€λ§Œ 이 방법은 μ• μ΄ˆμ— ν˜„μ‹€ κ°€λŠ₯성이 μ—†λ‹€. μ™œλƒν•˜λ©΄ 레이슀 μ»¨λ””μ…˜ ν™˜κ²½μ—μ„œ μžμ›μ„ κ³΅μœ ν•œλ‹€λŠ” κ±°λŠ” 맀우 μœ„ν—˜ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

λ˜ν•œ IO κ΄€λ ¨ λ¦¬μ†ŒμŠ€λ“€μ€ μ• μ΄ˆμ— λ™μ‹œμ— 싀행될 μˆ˜κ°€ μ—†κΈ° λ•Œλ¬Έμ— ν˜„μ‹€ κ°€λŠ₯성이 μ—†λ‹€κ³  ν•  수 μžˆλ‹€.

 

λ‘λ²ˆμ§Έλ‘œλŠ” 점유 λŒ€κΈ° μƒνƒœλ₯Ό λ§Œλ“€μ§€ μ•ŠλŠ” 것이닀.

μžμ›μ„ μ μœ ν•œ μƒνƒœμ—μ„œ λ‹€λ₯Έ μžμ›μ„ λŒ€κΈ°ν•˜λ©΄μ„œ λ¬Έμ œκ°€ λ˜λŠ” 것이라면, μ• μ΄ˆμ— λͺ¨λ“  μžμ›μ„ μ μœ ν•œ μƒνƒœμ—μ„œλ§Œ μ‹€ν–‰ν•˜κ²Œλ” ν•˜μ—¬μ„œ

ν•΄λ‹Ή μƒνƒœλ₯Ό λ§Œλ“€μ§€ μ•ŠμœΌλ©΄ λœλ‹€. 즉 "hold(점유)ν•œ μ±„λ‘œ wait(λŒ€κΈ°)ν•˜μ§€λ§ˆ!" λ°©μ‹μ˜ ν•΄κ²° 방법이닀.

 

μ„Έλ²ˆμ§ΈλŠ” λŒ€κΈ° μƒνƒœμ—μ„œ μžμ›μ„ μ–‘λ³΄ν•˜λ„λ‘ ν•˜λŠ” 것이닀.

λ§Œμ•½ μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€κ°€ μžμ›μ„ μ μœ ν•œ μƒνƒœμ—μ„œ λ‹€λ₯Έ μžμ›μ„ 기닀리고 μžˆλŠ” μƒνƒœλΌλ©΄, ν˜„μž¬ μ μœ ν•˜κ³  μžˆλŠ” μžμ›μ„ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ 양보할 수 μžˆλ‹€.

μ΄λŠ” 락을 자발적으둜 λ°˜ν™˜ν•˜λŠ” λͺ¨λ‹ˆν„° 방식과 μœ μ‚¬ν•˜λ‹€.

https://cb036133.tistory.com/178

 

λͺ¨λ‹ˆν„°μ˜ λ™μž‘ 방식과 μžλ°”μ—μ„œμ˜ λͺ¨λ‹ˆν„°

λͺ¨λ‹ˆν„°λž€? λͺ¨λ‹ˆν„°λŠ” μŠ€λ ˆλ“œκ°€ mutexλ₯Ό 보μž₯ν•  수 μžˆλ„λ‘ ν•˜λŠ” 동기화 λ©”μ»€λ‹ˆμ¦˜μ΄λ‹€. 쑰건에 λ”°λΌμ„œ μŠ€λ ˆλ“œλ₯Ό waiting μƒνƒœλ‘œ μ „ν™˜μ‹œν‚€λŠ”λ° 이λ₯Ό cooperation이라고 ν•œλ‹€. mutex - 락을 가지고 μžˆλŠ” 슀레

cb036133.tistory.com

 

λ„€λ²ˆμ§ΈλŠ” λͺ¨λ“  λ¦¬μ†ŒμŠ€μ— μˆœμ„œμ²΄κ³„λ₯Ό λΆ€μ—¬ν•΄μ„œ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ λ¦¬μ†ŒμŠ€λ₯Ό μš”μ²­ν•˜λŠ” 것이닀.

λ§Œμ•½ 4번 λ¦¬μ†ŒμŠ€λ₯Ό μ μœ ν–ˆλ‹€λ©΄ λ‹€μŒ λ¦¬μ†ŒμŠ€λŠ” 4번 λ¦¬μ†ŒμŠ€λ³΄λ‹€ 큰 λ¦¬μ†ŒμŠ€λ₯Ό μ μœ ν•΄μ•Όν•œλ‹€.

μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ μˆœν™˜ μ°Έμ‘°λ₯Ό 없앨 수 μžˆλ‹€.

 

λ°λ“œλ½ νšŒν”Ό

λ°λ“œλ½μ΄ λ°œμƒν•  것 같은 상황 자체λ₯Ό νšŒν”Όν•˜λŠ” 것이닀. 이λ₯Ό μœ„ν•œ λŒ€ν‘œμ μΈ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ 은행원 μ•Œκ³ λ¦¬μ¦˜μ΄ μžˆλ‹€.

은행원 μ•Œκ³ λ¦¬μ¦˜μ΄λž€, 총 μžμ›μ˜ μ–‘κ³Ό ν˜„μž¬ ν• λ‹Ήν•œ μžμ›μ˜ 양을 κΈ°μ€€μœΌλ‘œ μ•ˆμ • λ˜λŠ” λΆˆμ•ˆμ • μƒνƒœλ‘œ λ‚˜λˆ„κ³  μ•ˆμ • μƒνƒœλ₯Ό μœ μ§€ν•˜λ„λ‘ μžμ›μ„ ν• λ‹Ήν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€.

 

μ•ˆμ • μƒνƒœ: λ°λ“œλ½μ΄ λ°œμƒν•˜μ§€ μ•Šμ•˜κ³  ν”„λ‘œμ„ΈμŠ€μ˜ μ΅œλŒ€ μžμ› μš”κ΅¬λŸ‰μ„ μš΄μ˜μ²΄μ œκ°€ μΆ©μ‘±μ‹œν‚¬ 수 μžˆλŠ” μƒνƒœ

λ°λ“œλ½ 감지와 볡ꡬ

μš°μ„  λ°λ“œλ½μ„ ν—ˆμš©ν•΄μ£Όκ³  λ°λ“œλ½μ΄ λ°œμƒν•œλ‹€λ©΄ λ³΅κ΅¬ν•œλ‹€.

 

볡ꡬ μ „λž΅μ€ 크게 2가지이닀.

λ¨Όμ € λ°λ“œλ½μ΄ κ±Έλ¦° ν”„λ‘œμ„ΈμŠ€λ“€μ„ μ’…λ£Œμ‹œν‚€λŠ” 것이닀.

μ΄λ•Œ ν”„λ‘œμ„ΈμŠ€λ“€μ„ ν•˜λ‚˜μ”© μ’…λ£Œμ‹œν‚€κ±°λ‚˜, λͺ¨λ‘ ν•œκΊΌλ²ˆμ— μ’…λ£Œμ‹œν‚¬ μˆ˜λ„ μžˆμ§€λ§Œ 이 방법은 μ΅œν›„μ˜ 방법이닀. 

μ΄λ ‡κ²Œ κ°•μ œ μ’…λ£Œλ₯Ό ν•˜κ²Œ 되면 κ·Έλ™μ•ˆμ˜ 진행 상황을 μžƒκ²Œ λ˜λŠ” 리슀크λ₯Ό 감내해야 ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

그리고 λ‹€λ₯Έ 방법은 μΌμ‹œμ μœΌλ‘œ 선점을 ν—ˆμš©ν•΄μ£ΌλŠ” 것이닀.

μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ 꽁꽁 λ¬Άμ—¬μžˆλ˜ ν”„λ‘œμ„ΈμŠ€/μŠ€λ ˆλ“œ 듀이 κ·Έλ‚˜λ§ˆ 진행될 수 μžˆλ‹€.

 

λ°λ“œλ½ λ¬΄μ‹œ

말 κ·ΈλŒ€λ‘œ λ°λ“œλ½μ΄ μΌμ–΄λ‚˜λ˜ 말건 μ‹ κ²½ μ•ˆμ“°λŠ” 것이닀. κ½€ λ§Žμ€ μš΄μ˜μ²΄μ œμ—μ„œ ν•΄λ‹Ή 방식을 μ‚¬μš©ν•˜κ³  μžˆλ‹€.

μ™œλƒν•˜λ©΄ λ°λ“œλ½μ€ 맀우 λ“œλ¬Όκ²Œ μΌμ–΄λ‚˜κΈ° λ•Œλ¬Έμ— 이λ₯Ό μ²˜λ¦¬ν•˜λŠ” λΉ„μš©μ΄ 더 크기 λ•Œλ¬Έμ΄λ‹€.

사싀 ν˜„μ‹€μ—μ„œλ„ 컴퓨터가 λ©ˆμΆ”λ©΄ λŒ€λΆ€λΆ„μ˜ μ‚¬μš©μžλ“€μ€ 껐닀 킨닀.