동기화 (Synchronization) 이슈

zzzzzang_gu·2023년 3월 15일

cs이론

목록 보기
8/13

쓰레드의 동기화란?

작업들 사이에 실행 시기를 맞추는 것, 여러 스레드가 동일한 자원(데이터)에 접근시 동기화 이슈 발생(동일 자원을 여러 스레드가 동시 수정시, 각 스레드 결과에 영향을 준다.) -> Context Switching에 의해 발생


동기화 이슈 해결 방안

Mutual exclusion (상호 배제) 기법

스레드는 프로세스 모든 데이터에 접근할 수 있으니 어느 한 스레드가 특정 데이터를 변경하려ㅓ 할 때 다른 스레드가 접근하지 못하게 막는 기법

  • 임계 자원 (Critical resource) : 동시에 읽고 쓰게되는 데이터
  • 임계 영역 (Critical section) : 임계자원을 읽고 쓰는 코드

Mutex와 세마포어(Semaphore)

임계 영역에 대한 접근을 막기 위한 Locking 메커니즘이 필요

  • Mutex(binary semaphore) : 임계구역에 하나의 스레드만 들어갈 수 있음

  • Semaphore : 임계구역에 여러 스레드가 들어갈 수 있음


쓰레드의 교착상태와 기아상태

교착상태 (dead lock)

배치처리 시스템에서는 발생하지 않는 문제,프로세스/스레드 둘 다 교착상태가 일어날 수 있음

무한 대기 상태 : 2개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 다은 단게로 진행하지 못하는 상태

OS가 일정 시간 응답이 없으면 강제로 종료시킨다.

기아상태(starvation)

특정 프로세스의 우선순위가 낮아서 한번도 기회를 얻지 못해, 실행을 못하는 상태

프로세스 우선 순위를 수시로 변경해, 각 프로세스가 높은 우선순위를 가질 기회를 주기, 오래 기다린 프로세스의 우선순위를 높여주기, 우선순위가 아닌 요청 순서대로 처리하는 FIFO 기반 요청큐 사용

0개의 댓글