Tech

Diary

Lecture

About Me

개발중

상호배제와 데드락

JeongSeulho

2025년 01월 04일

준비중...
클립보드로 복사

프로세스 동기화

  • 서로 다른 프로세스가 공유하는 자원을 접근하는 순서에 따라 결과가 달라짐
  • 프로세스가 동시에 사용하면 안되는 영역을 임계영역이라 함

상호배제

  • 여러 프로세스가 동시에 임계영역에 들어가지 못하도록 하는 것
  • 조건
    1. 임계영역에는 동시에 하나의 프로세스만 접근
    2. 여러 요청에도 하나의 프로세스의 접근만 허용
    3. 임계구역에 들어간 프로세스는 빠르게 나갈 수 있어야 함

세마포어

  • 세마포어라는 변수를 열쇠로 사용하여 임계영역에 1개의 프로세스만 들어가도록 함
  • 세마포어 과정
    1. 임계영역 접근이 OS에게 세마포어(열쇠)를 받고 임계영역에 진입
    2. 임계영역을 빠져나오면 세마포어를 반환
    3. 임계영역에 프로세스가 있다며 다른 프로세스는 세마포어(열쇠)가 없어 임계영역에 진입하지 못함
  • 세마포어 반환을 누락하면 데드락 발생

모니터

  • OS가 아닌 프로그래밍 언어 수준에서 상호배제를 제공

데드락

  • 데드락이 일어나는 조건
    1. 상호배제 : 1개의 프로세스만 점유 가능
    2. 비선점 : 다른 프로세스가 강제로 자원을 뺏을 수 없음
    3. 점유대기 : 자원을 점유하고 있는 프로세스가 다른 자원을 기다림
    4. 순환대기 : 프로세스간의 필요한 자원을 기다리는 화살표가 원형을 이룸
  • 데드락 발생 시 롤백으로 해결

은행원 알고리즘

  • 데드락을 예방하는 알고리즘
  • 자원을 요청할 때 해당 자원을 준 이후 데드락이 발생할 확률이 있을지 미리 검사
  • 데드락 발생 확률이 존재하면 다른 프로세스에세의 자원 반환을 기다림