어제 들은 이론강의를 다시 보면서 간단하게 정리해보았다.
(레이스 컨디션과 동기화, 데드락의 개념과 간단한 주요사항)
레이스 컨디션
여러 스레드가 동시에 공유 자원에 접근하여 의도치 않은 결과과 나오는 상황
원인 | 공유 자원에 대한 동기화되지 않은 접근 |
문제점 | 예측 불가능한 동작, 데이터 손상, 프로그램 비정상 종료 |
방지 방법 | 뮤텍스(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 |