컴퓨터 네트워크

TIL 20241113 (레이스 컨디션과 동기화)

j-coder 2024. 11. 13. 21:36

어제 들은 이론강의를 다시 보면서 간단하게 정리해보았다.

(레이스 컨디션과 동기화, 데드락의 개념과 간단한 주요사항)

레이스 컨디션

여러 스레드가 동시에 공유 자원에 접근하여 의도치 않은 결과과 나오는 상황

 

원인 공유 자원에 대한 동기화되지 않은 접근
문제점 예측 불가능한 동작, 데이터 손상, 프로그램 비정상 종료
방지 방법 뮤텍스(Mutex), 세마포어(Semaphore), 락 (Lock), 모니터 (Monitor)
뮤텍스 하나의 스레드가 자원을 사용 중일 때 다른 스레드의 접근을 막는다
세마포어 동시에 접근할 수 있는 스레드의 수를 제한한다
특정 코드 블록에 대해 스레드가 순차적으로 접근하도록 제한한다
모니터 락과 조건 변수를 결합하여 스레드가 특정 조건을 만족할 때까지 대기하도록 한다

 

 

데드락

여러 프로세스가 서로 자원을 기다리며 무한히 대기하는 상태

 

발생 조건 상호 배제, 점유 대기, 비선점, 환형 대기
예시 두 프로세스가 서로 다른 두 자원을 기다리는 경우
해결 방법 예방 (Prevention), 회피 (Avoidance), 탐지 및 복구 (Detection and Recovery)

 

예방방법

상호 배제 제거 자원을 공유하여 여러 프로세스가 동시에 사용 가능하게 한다
점유 대기 제거 자원을 점유한 상태에서 다른 자원을 기다리지 않도록 한다
비선점 제거 자원을 필요로 할 때 강제로 빼앗는다.
환형 대기 제거 자원 요청 순서를 고정하여 순환 대기를 방지한다

'컴퓨터 네트워크' 카테고리의 다른 글

TIL 20241102(멀티 쓰레딩)  (0) 2024.11.02
컴퓨터의 메모리  (0) 2024.10.14
컴퓨터 CPU  (0) 2024.10.14
TIL 240930 (흐름제어와 혼잡제어)  (0) 2024.09.30
OSI 응용계층  (0) 2024.09.25