λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
πŸ’» Computer Science/- Operating System

[운영체제] 12. κ΅μ°©μƒνƒœμ˜ κ°œλ…κ³Ό λ°œμƒ 원인

by Wonit 2019. 12. 9.

κ΅μ°©μƒνƒœμ˜ κ°œλ…

 

닀쀑 ν”„λ‘œκ·Έλž˜λ° μ‹œμŠ€ν…œμ—μ„œ ν”„λ‘œμ„ΈμŠ€κ°€ κ²°μ½” μΌμ–΄λ‚˜μ§€ μ•Šμ„ 사건을 κΈ°λ‹€λ¦¬λŠ” μƒνƒœκ°€ 되면 Deadlock, κ΅μ°©μƒνƒœμ— λΉ μ‘Œλ‹€κ³  ν•œλ‹€.

 

ν”„λ‘œμ„ΈμŠ€ ν•œ 개 이상이 κ΅μ°©μƒνƒœμ— 빠지면 ν”„λ‘œκ·Έλž¨μ΄ μ •μ§€λ˜μ–΄ 더 이상 μž‘μ—… μˆ˜ν–‰μ„ ν•˜μ§€ λͺ»ν•˜κ²Œ 되며, λ‹€λ₯Έ μž‘μ—…μ—λ„ 영ν–₯을 μ£Όκ²Œλ˜μ–΄ λ¬΄ν•œ λŒ€κΈ°λ‚˜ κΈ°μ•„ μƒνƒœλ³΄λ‹€ 더 μ‹¬κ°ν•œ 문제λ₯Ό μΌμœΌν‚¨λ‹€.

 

 

μœ„μ˜ 그림을 κ°„λž΅ν•˜κ²Œ μƒνƒœλ‘œ λ‚˜νƒ€λ‚΄λ©΄

 

  • ν”„λ‘œμ„ΈμŠ€ Aκ°€ μŠ€μΌ€λ„ˆ μ‚¬μš© κΆŒν•œ νšλ“

μŠ€μΌ€λ„ˆλŠ” ν”„λ‘œμ„ΈμŠ€ A μ—κ²Œλ§Œ κΆŒν•œμ„ ν• λ‹Ήν•˜μ˜€κ³  Aκ°€ ν• λ‹Ή ν•΄μ œν•˜κΈ° μ „ κΉŒμ§€λŠ” μŠ€μΌ€λ„ˆ μ‚¬μš© λΆˆκ°€

  • ν”„λ‘œμ„ΈμŠ€ AλŠ” CDμ—κ²Œ μ‚¬μš© κΆŒν•œ μš”μ²­

CDμ—κ²Œ μ‚¬μš© κΆŒν•œμ„ μš”μ²­ν•˜μ§€λ§Œ CDλŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ μ£Όλ„κΆŒμ„ λ„˜κ²Όκ³  λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ CDλ₯Ό ν• λ‹Ή ν•΄μ œν•˜κΈ° μ „ κΉŒμ§€ μ‚¬μš© λΆˆκ°€

  • ν”„λ‘œμ„ΈμŠ€ Bκ°€ CD μ‚¬μš© κΆŒν•œ νšλ“

cdλŠ” ν”„λ‘œμ„ΈμŠ€ Bμ—κ²Œ κΆŒν•œ ν• λ‹Ήν•˜μ˜€κ³  Bκ°€ ν•΄μ œ μ „ κΉŒμ§€ μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ„ μ‚¬μš© ν•˜μ§€ λͺ» 함.

  • ν”„λ‘œμ„ΈμŠ€ Bκ°€ μŠ€μΌ€λ„ˆ μ‚¬μš© κΆŒν•œ μš”μ²­

μŠ€μΊλ„ˆλŠ” ν”„λ‘œμ„ΈμŠ€ Aμ—κ²Œ ν• λ‹Ήν•˜μ—¬μ„œ BλŠ” μ‚¬μš© λΆˆκ°€.

 

μ΄λŸ°μ‹μœΌλ‘œ ν”„λ‘œμ„ΈμŠ€ A와 BλŠ” μ„œλ‘œ μžμ›μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ κΈ°λ‹€λ¦¬λŠ”λ° 두 ν”„λ‘œμ„ΈμŠ€λŠ” μ„œλ‘œ μ°¨λ‹¨λ˜μ–΄ μ˜μ›νžˆ κΈ°λ‹€λ¦¬κ²Œ λœλ‹€...

 

ν”„λ‘œμ„ΈμŠ€ μžμ› μ‚¬μš© μˆœμ„œ

 

κ΅μ°©μƒνƒœλ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ–΄λ–€ λ°©μ‹μœΌλ‘œ, μ–΄λ–€ μˆœμ„œλ‘œ μ‚¬μš©λ˜λŠ”μ§€ μ•Œμ•„μ•Ό ν•œλ‹€.

 

  1. μžμ› μš”μ²­: ν”„λ‘œμ„ΈμŠ€κ°€ ν•„μš”ν•œ μžμ›μ„ μš”μ²­ν•œλ‹€. μžμ›μ„ μ¦‰μ‹œ μ‚¬μš©ν•  수 있으면 μˆ˜λ½ν•˜μ§€λ§Œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ‚¬μš©μ€‘μ΄λ©΄ μš”μ²­μ΄ 끝날 λ•Œ κΉŒμ§€ λŒ€κΈ°

  2. μžμ› μ‚¬μš©: ν”„λ‘œμ„ΈμŠ€κ°€ μš”μ²­ν•œ μžμ›μ„ νšλ“ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

  3. μžμ› ν•΄μ œ: ν”„λ‘œμ„ΈμŠ€κ°€ μžμ› μ‚¬μš©μ„ 마치고 ν•΄λ‹Ή μžμ›μ„ λŒλ €μ€€λ‹€.

 

κ΅μ°©μƒνƒœμ˜ 예

 

컴퓨터 μ‹œμŠ€ν…œμ—μ„œ ꡐ착 μƒνƒœκ°€ λ°œμƒν•˜λŠ” μ˜ˆμ‹œλ₯Ό μ°Ύμ•„λ³΄μž.

 

 

μŠ€ν’€λ§ μ‹œμŠ€ν…œμ—μ„œ λ°œμƒν•˜λŠ” κ΅μ°©μƒνƒœ

λ””μŠ€ν¬μ— ν• λ‹Ήλœ μŠ€ν’€ κ³΅κ°„μ˜ 좜λ ₯을 μ™„λ£Œν•˜μ§€ λͺ»ν•œ μƒνƒœμ—μ„œ λ‹€λ₯Έ μž‘μ—…μ΄ μŠ€ν’€ 곡간을 λͺ¨λ‘ μ°¨μ§€ν•˜λ©΄ κ΅μ°©μƒνƒœκ°€ λ°œμƒν•œλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ„‰λ„‰ν•œ μŠ€ν’€ 곡간을 μ œκ³΅ν•˜λ©΄ λΉ„μš©μ΄ 많이 λ“€ μˆ˜λ°–μ— μ—†λ‹€. μ΄λ•ŒλŠ” 포화 μž„κ³„μΉ˜λ₯Ό μ„€μ •ν•˜μ—¬ κ΅μ°©μƒλŒ€λ₯Ό μ˜ˆλ°©ν•œλ‹€.

 

λ””μŠ€ν¬λ₯Ό κ³΅μœ ν•  λ•Œ λ°œμƒν•˜λŠ” κ΅μ°©μƒνƒœ

λ””μŠ€ν¬μ˜ 읽기와 μ“°κΈ°λ₯Ό λ™μ‹œμ— μˆ˜ν–‰ν•˜λ €κ³  ν•  λ•Œ 주둜 λ°œμƒν•˜λ©°, ν”„λ‘œμ„ΈμŠ€ Aκ°€ 읽기λ₯Ό μš”μ²­ν•˜κ³  ν”„λ‘œμ„ΈμŠ€ Bκ°€ μ“°κΈ°λ₯Ό μ„œλ‘œ μš”μ²­ν•œλ‹€λ©΄ κ΅μ°©μƒνƒœκ°€ λ°œμƒν•œλ‹€.

 

λ„€νŠΈμ›Œν¬μ—μ„œ λ°œμƒν•˜λŠ” κ΅μ°©μƒνƒœ

λ„€νŠΈμ›Œν¬μ—μ„œ λ©”μ‹œμ§€ 흐름을 μ œμ–΄ν•˜λŠ” ν”„λ‘œν† μ½œμ΄ μ—†μœΌλ©΄ λ°œμƒν•œλ‹€.

 

κ΅μ°©μƒνƒœμ˜ λ°œμƒ 쑰건

 

 

κ΅μ°©μƒνƒœ λ°œμƒ μ‘°κ±΄μ—λŠ” 4가지 쑰건이 μžˆλŠ”λ°, 1. μƒν˜Έλ°°μ œ 2. μ μœ μ™€ λŒ€κΈ° 3. 비선점 4.μˆœν™˜(ν™˜ν˜•)λŒ€κΈ° 이쀑 1

3λ²ˆμ€ 독립 쑰건이 λ§Œμ‘±ν•  λ•Œμ΄κ³  4λŠ” 13 쑰건이 λ§Œμ‘±ν•΄μ•Όλ§Œ λ°œμƒν•œλ‹€.

 

  1. μƒν˜Έ 배제

ν•œ λ²ˆμ— ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜λ§Œ μžμ›μ„ μ‚¬μš©ν•  수 μžˆμ–΄μ•Ό 함. μ‚¬μš© 쀑인 μžμ›μ„ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ‚¬μš©ν•˜λ €λ©΄ μš”μ²­ν•œ μžμ›μ΄ ν•΄μ œλ  λ•Œ κΉŒμ§€ κΈ°λ‹€λ €μ•Ό ν•œλ‹€.

  1. μ μœ μ™€ λŒ€κΈ°

μžμ›μ„ μ΅œμ†Œν•œ ν•˜λ‚˜ 정도 λ³΄μœ ν•˜κ³ , λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— ν• λ‹Ήλœ μžμ›μ„ μ–»μœΌλ €κ³  κΈ°λ‹€λ¦¬λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μžˆμ–΄μ•Ό 함.

  1. 비선점

μžμ›μ„ κ°•μ œλ‘œ λΊμ•„μ˜¬ 수 μ—†κ³ , μžμ›μ„ μ μœ ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ λλ‚˜μ•Ό ν•΄μ œν•œλ‹€.

  1. μˆœν™˜(ν™˜ν˜•) λŒ€κΈ°

λŒ€κΈ° ν”„λ‘œμ„ΈμŠ€ 집합이 μžˆμ„λ•Œ μ§‘ν•©μ—λŠ” A, B, CλΌλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μžˆλ‹€. κ·Έ ν”„λ‘œμ„ΈμŠ€κ°€ κ°–κ³ μžˆλŠ” μžμ›μ„ RA, RB, RC라고 ν–ˆμ„ λ•Œ, B ν”„λ‘œμ„ΈμŠ€κ°€ RCλ₯Ό Cν”„λ‘œμ„ΈμŠ€κ°€ RAλ₯Ό μš”κ΅¬ν•  λ•Œ 각각 μžμ›μ„ μ–»μœΌλ €κ³  κΈ°λ‹€λ¦¬λŠ” 것을 μˆœν™˜ λŒ€κΈ°λΌκ³  ν•œλ‹€.

 

κ΅μ°©μƒνƒœμ˜ ν‘œν˜„

 

κ΅μ°©μƒνƒœλ₯Ό ν‘œν˜„ν•  λ•ŒλŠ” μš”μ²­ μ—°κ²°μ„ κ³Ό ν• λ‹Ή μ—°κ²°μ„ μœΌλ‘œ ν‘œν˜„ν•˜λ©° κ΅¬λΆ„ν•œλ‹€.

 

 

κ΅μ°©μƒνƒœλ₯Ό μ˜ˆμƒν•  수 μžˆλŠ” 사이클

 

μš”μ²­ μ—°κ²°μ„ κ³Ό ν• λ‹Ή μ—°κ²°μ„ μ˜ μ—°κ²° μƒνƒœλ‘œ κ΅μ°©μƒνƒœκ°€ 일어날 수 μžˆλŠ”μ§€λ₯Ό νŒλ‹¨ν•  수 μžˆλŠ”λ°, λ‹€λ₯Έ 두 ν”„λ‘œμ„Έμ„œ 끼리 μžμ›μ˜ ν• λ‹Ήκ³Ό μš”μ²­μ΄ μ„œλ‘œλ₯Ό 가리킨닀면 κ΅μ°©μƒνƒœκ°€ 일어날 수 μžˆμŒμ„ μ•”μ‹œν•œλ‹€.

 

 

μœ„μ™€ 같은 상황을 κ΅μ°©μƒνƒœλΌκ³  μΈμ‹ν•˜κ³  ν”„λ‘œμ„ΈμŠ€κ°€ μžμ›μ„ ν•΄μ œν•˜λ©΄ ν• λ‹Ή 연결선이 ν•΄μ œλœλ‹€.

 

κ΅μ°©μƒνƒœκ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ” 사이클

 

사이클이 μ‘΄μž¬ν•œλ‹€κ³  λͺ¨λ“  것이 κ΅μ°©μƒνƒœλ₯Ό λœ»ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€. λ‹€μŒκ³Ό 같이 사이클이 μ‘΄μž¬ν•˜μ§€λ§Œ ν•΄μ œλ₯Ό ν•  수 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ 사이클에 μ‘΄μž¬ν•œλ‹€λ©΄ κ΅μ°©μƒνƒœκ°€ μ•„λ‹ˆλ‹€.

 

 

  • R2λŠ” P1κ³Ό P2에 μžμ›μ„ ν• λ‹Ήν•œλ‹€.
  • P1은 R1μ—κ²Œ μžμ›μ„ μš”μ²­ν•œλ‹€.
  • R1은 P2에 μžμ›μ„ ν• λ‹Ήν•œλ‹€.
  • P2λŠ” R3에 μžμ›μ„ μš”μ²­ν•œλ‹€.
  • R3λŠ” P3에 μžμ›μ„ ν• λ‹Ήν•œλ‹€.
  • P3λŠ” R2μ—κ²Œ μžμ›μ„ μš”μ²­ν•œλ‹€.

 

μœ„μ™€ 같은 상황일 λ•ŒλŠ” μžμ›μ„ μš”μ²­ν•˜λŠ” P2κ°€ μžˆλŠ”λ° P3λŠ” μ–Έμ œλ“  R2의 μžμ›μ˜ ν•΄μ œλ₯Ό μš”μ²­ν•  수 있기 λ•Œλ¬Έμ— κ΅μ°©μƒνƒœλΌκ³  ν•˜μ§€ μ•ŠλŠ”λ‹€.

λŒ“κΈ€