5주차 컴퓨터 네트워크

민주·2023년 11월 14일
0

CS

목록 보기
11/22

Race Condition

Storage-box를 공유하는 Execution-box가 여럿 있는 경우 데이터의 불일치 문제를 발생시킬 수 있음.

  • kernel 수행 중 인터럽트 발생 시
  • Process 가 system call을 하여 kernel mode로 수행중인데, context switch 가 일어나는 경우
  • Multiprocesser에서 shared memory 내의 kernel data

kernel 수행 중 인터럽트 발생 시

kernel 사이의 context switch 상황 => 둘 다 같은 주소 공간을 공유해서 일어난 문제

=> 커널 모드의 수행이 끝나기 전에는 인터럽트를 받지 않도록 하는 방법(disable/enable)으로 해결 가능

Process 가 system call을 하여 kernel mode로 수행중인데, context switch 가 일어나는 경우

시스템 콜을 하는 중에 커널 주소 공간 데이터에 접근하여 cpu를 preempt.

=> 커널 모드에서 수행중일 때는 CPU를 preempt 하지 않고, 사용자 모드로 돌아갈 때 preempt를 한다.

Multiprocesser에서 shared memory 내의 kernel data

여러 개의 cpu가 함께 작동할 때, 어떤 cpu가 마지막으로 count&store 했는지에 따라 결과값이 달라진다.

=>
1. 한번에 하나의 CPU만 커널에 들어갈 수 있게
=> 비효율적임. 사용❌
2. 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대해 lock/unlock

결론

  • 공유 데이터의 동시 접근은 데이터 불일치를 야기시킬 수 있다.
    => 데이터의 일관성 유지를 위해 협력 프소세스 간의 실행순서를 정리해주는 매커니즘이 필요하다.
  • race condition 상황에서 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라진다.
  • 이러한 race condition을 막기 위해서 concurrent process는 동기화(synchronize)되어야 한다.

The Critical-Section Problem

critical section : 코드 상에서 Race condition이 발생할 수 있는 특정 부분(공유 데이터를 접근하는 코드 부분)

해결 방법

  1. Mutual Exclusion
  2. Progress
  3. Bounded Waiting

Dining-Philosophers Problem

  • 5명의 철학자가 원탁에 둘러앉아있고, 젓가락은 5개만
  • 각 철학자는 식사를 하기를 원하고, 철학자가 식사를 하기 위해서는 양쪽 젓가락을 모두 집어야 함

Deadlock

만약 모든 철학자가 식사를 하기를 원해서 각자 왼쪽에 있는 젓가락을 들었다면, 더 이상 아무런 작업도 수행할 수 없음

=> 4명의 철학자만이 테이블에 동시에 앉도록 제한

  • 젓가락을 두 개 집을 수 있을 때만 젓가락을 집도록 제한
  • 짝수/홀수 철학자는 왼쪽/오른쪽 젓가락을 먼저 집도록 제한
profile
일단 가보면 뭐든 있겠지

0개의 댓글