CS

[운영체제] 프로세스 동기화, 데드락

jny0 2023. 10. 7. 11:37

 

동시성과 병렬성


동시성(병행성)

  • 하나의 코어에서 여러 작업을 번걸아가며 처리하는 방식
  • 빠른 CPU 처리속도로 여러 프로그램가 동시에 작동하는 것처럼 느낌
  • 문제점 - 프로세스간 메모리 공유 (잦은 콘텍스트 스위칭으로 인한 오버헤드)

 

병렬성

  • CPU가 여러개 있어서 각 CPU에서 작업을 동시에 처리하는 방식
  • 물리적인 시간 관점에서 실제로 여러 작업이 동시에 실행

 

 

프로세스 동기화


프로세스 동기화

  • 공유 자원에 여러 프로세스가 동시 접근해도 데이터의 일관성이 유지되도록하는 매커니즘

 

임계 영역

  • 공유 자원에 접근할 수 있고 접근 순서에 따라 결과가 달라지는 코드 영역

 

레이스 컨디션 (경쟁 상태)

  • 공유 자원에 여러 프로세스들이 동시에 접근해서 경쟁하는 상태
  • 최종 연산결과는 마지막에 공유 데이터를 다룬 프로세스가 누구인지에 따라 결정
  • 레이스 컨디션을 막기 위해 동기화가 필요
  • 예) 공유 메모리를 사용하는 프로세스 사이에서 커널 모드 수행 중 인터럽트가 발생하여 인터럽트 처리루틴이 수행되는 경우 커널 영역의 공유 데이터에 동시 접근이 발생

 

상호 배제

  • 어떤 프로세스가 임계 영역을 실행 중일 때 다른 프로세스가 임계 영역에 접근할 수 없도록하는 방법
  • 동기화 방법 중의 하나이고 상호배제 기법으로는 뮤텍스와 세마포어가 있음

 

뮤텍스

  • 락을 가진 프로세스만이 공유 자원에 접근할 수 있도록 하는 방법
  • 임계 영역에 접근한 프로세스가 락을 걸고 접근하지 못하는 프로세스는 락을 얻기 위해 대기하는 동안 락이 풀렸는지 반복문을 돌면서 확인
  • 프로세스가 대기 상태가 되지 않고 자원 사용 가능 여부를 확인하므로 프로세스가 빠르게 교체될 수 있음

 

세마포어

  • 공유 자원에 접근할 수 있는 프로세스의 수를 정해 접근을 제어하는 방법
  • 임계 영역에 접근할 수 있는 키의 개수를 지정하고 이중 하나를 가진 프로세스만에 임계 영역에 접근 가능
  • 이미 자원에 접근한 프로세스가 접근을 해제하면 다른 프로세스가 접근할 수 있도록 신호를 보내는 시그널링 매커니즘

 

모니터

  • 모니터는 프로그래밍 언어 레벨에서 동기화 기능을 제공
  • 모니터 내부에는 단 하나의 프로세스만이 존재할 수 있기 때문에 간편하게 동기화를 수행할 수 있음

 

 

데드락


데드락(교착 상태)

  • 2개 이상의 프로세스가 각각 자원을 가지고 있으면서 서로의 자원을 요구하며 기다리는 상태

 

데드락 발생 조건

  • 상호 배제 : 하나의 공유 자원에 하나의 프로세스만 접근 가능
  • 점유와 대기 : 프로세스가 고유 자원을 가지며 다른 프로세스 자원을 점유하기 위해 대기
  • 비선점 : 다른 프로세스에 할당된 자원을 뺏을 수 없다
  • 순환 대기 : 프로세스가 자신의 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구

 

데드락 회피 방법

  • 예방 : 앞의 4가지 조건 중 하나를 제거
  • 회피 : 할당되는 자원의 수를 조절하여 데드락 피함
  • 무시 : 개발자가 수동으로 프로세스를 종료
  • 검출 후 회복 : 자원할당 그래프를 사용해서 데드락 상태를 검출하여 해당 프로세스를 종료해서 데드락 회복

 

참고

기술 면접 대비 CS전공 핵심요약집 | 이수진 https://product.kyobobook.co.kr/detail/S000208504237