728x90
반응형
˙Dead-Lock(데드-락)
두 개 이상의 작업(프로세스 혹은 스레드 등)이 상대방의 작업이 끝나기만을 기다리고 있는 상태로, 하나의 경로 아래 아무것도 하지 못하고 상대방이 비켜 줄 때까지 무한하게 대기하는 경우를 말한다.
˙Live-Lock(라이브-락)
두 개 이상의 작업(프로세스 혹은 스레드 등)이 상대방의 행동에 영향을 받으면서 진행되고 있는 상태로, 작업 간의 신호가 서로 맞지 않아 맞을 때까지 진행하지 못해서 마치 행동은 하고 있지만 작업이 Block 된 것처럼 보이는 상태를 말한다. 즉, 하나의 경로 아래 작업들이 서로 같은 방향으로 움직이기 때문에 지나가지 못하는 경우와 같다.
˙Spin-Lock(스핀-락)
임계 영역*이 있고, 한 스레드가 크리티컬 Lock을 가지고 있다면 해당하는 Lock이 반환될 때까지 확인하며 기다리는 상태로, Lock이나 Uni-Lock이 자주 일어나는 곳에서는 콘텍스트 스위칭(Context Switching)*을 하지 않고 루프를 돌기 때문에 효율적이다. Lock이 생각보다 길게 유지된다면, 나머지 Blocking 상태의 스레드들이 무한 루프를 돌기 때문에 CPU를 낭비하는 경우가 발생될 수 있다.
* 임계 영역 : 점유된 자원 영역에 대하여 접근할 때 점유하고 있는 프로세스는 접근하기 전 정상적으로 종료되어야 하는 영역
* 콘텍스트 스위칭(Context Switching) : 프로그램을 중단하고 다른 프로그램의 실행을 재개할 때, 환경을 다시 설정하는 행위
728x90
반응형
'끄적대기' 카테고리의 다른 글
Blocking Socket, Non-Blocking Socket (0) | 2022.03.24 |
---|---|
콘텍스트 스위칭(Context Switching) (0) | 2022.03.24 |
PostgreSQL EXCEPT 차집합 조회 (0) | 2022.03.24 |
HTTP REST API (0) | 2022.03.24 |
GIT을 다루는 용어 (0) | 2022.03.24 |