[OS] Dead lock, Race condition

BaeRonui·2022년 2월 17일
0

OS

목록 보기
8/14
post-custom-banner

서론 : 식사하는 철학자 문제

5명의 철학자가 원탁에 앉아서 식사를 한다. 철학자들 사이에는 포크가 하나씩 있고, 철학자는 두개의 포크를 양손에 쥐어야지만 식사를 한다. 모든 철학자들이 동시에 왼쪽 포크를 집어들었을 경우를 생각해보자. 오른쪽 포크는 다른 철학자가 집어들었을 것이므로, 모든 철학자는 식사를 시작하지 못하고 평생동안 대기를 할것이다.

1. Dead lock

잘못된 자원관리로 인해 둘 이상의 process가 무한하게 대기하는 현상을 말한다.

발생 조건

  1. Mutual Exclusion
  2. Hold and Wait
  3. No preemption
  4. Circular wait

2. Race Condition

두 개 이상의 Concurrent 한 process/thread가 하나의 자원에 접근할 때, synchronization mechanism이 없다면 서로 경쟁을 하면서 의도하지 않는 결과가 나올 수 있는데, 이러한 상황을 Race condition 이라고 한다.

Critical Section

공유변수 영역이라고도 하는 Critical Section은 paraller computing에서 둘 이상의 thread가 동시에 접근해서는 안되는 공유 자원을 접근하는 코드 부분을 말한다.

즉, Race Condition은 이러한 Critical Section을 관리를 잘 못할 경우 발생한다고 이해할 수 있다. 이러한 Race Condition을 해결하기 위해서는 다음 3가지 조건을 만족해야 한다.

  1. Mutual Exclusion
  • Critical Section은 한번에 오직 하나의 process만 들어갈 수 있음
  1. Progress
  • Critical Section에 process가 없고, Critical Section에 들어가고 싶어하는 process가 있다면, 이것을 막지 말아야 한다.
  1. Bounded Waiting
profile
iOS / Swift 였던것 이젠 BE
post-custom-banner

0개의 댓글