2025/01/15 2

교착 상태(Deadlock) 및 은행원 알고리즘(Banker’s Algorithm)

데드락(Deadlock)은 두 개 이상의 프로세스나 스레드가 서로가 점유한 자원을 기다리며 영원히 진행되지 못하는 상태를 의미데드락 발생 조건 (Coffman Conditions)데드락은 다음 4가지 조건이 모두 동시에 성립할 때 발생상호 배제 (Mutual Exclusion): 한 번에 하나의 프로세스만 자원을 사용할 수 있다.자원이 공유가 불가능하다면, 다른 프로세스는 그 자원이 해제될 때까지 기다려야 한다.점유 및 대기 (Hold and Wait): 자원을 점유한 상태에서 다른 자원을 요청하며 대기한다.예를 들어 Process1이 Resource 1을 점유하면서 Resource 2를 요청해서 기다리는 경우비선점 (No Preemption): 이미 할당된 자원을 강제로 빼앗을 수 없다.자원을 점유한 ..

Critical Section / 세마포어(Semaphore) / 뮤텍스(Mutex)

임계 영역(Critical Section)임계 구역(Critical Section)은 공유 자원(Shared Resource)에 여러 스레드나 프로세스가 동시에 접근할 경우 문제가 발생할 수 있는 프로그램의 코드 영역을 의미한다.❗문제 발생 공유 자원은 여러 프로세스/스레드가 동시에 접근할 경우 임계 구역 안에서 데이터 불일치 또는 경쟁 상태(Race Condition)를 초래할 수 있다.임계 구역 문제를 해결하려면 한 번에 하나의 스레드만 해당 코드 영역에 진입하도록 제한해야 한다.🛠️ 해결 방법뮤텍스(Mutex), 세마포어(Semaphore) 등의 동기화 메커니즘을 사용하여 한 번에 하나의 스레드만 임계 구역에 접근하도록 보장한다.💡 이해하기 쉬운 예시은행 계좌에서 두 개의 ATM 스레드가 동시에..