교착 상태

교착 상태는 프로그램이 계속 실행하는 데 필요한 리소스에 접근할 수 없는 상태입니다. 활성 상태인 애플리케이션에서 교착 상태가 발생하면 프로그램이 "멈추거나" 응답하지 않을 수 있습니다.

저장되었거나 캐시된 데이터와 같은 리소스는 프로그램 내 특정 프로세스가 접근할 때 잠길 수 있습니다. 데이터를 잠그면 다른 프로세스가 데이터를 너무 일찍 덮어쓰는 것을 방지할 수 있습니다. 프로세스 또는 쿼리가 잠긴 데이터에 접근해야 하지만 데이터를 잠근 프로세스가 잠금을 해제하지 않으면 교착 상태가 발생할 수 있습니다.

예를 들어 다음과 같은 상황에서는 두 프로세스 사이에 교착 상태가 발생합니다.

  • 프로세스 1이 프로세스 2에 리소스 B를 요청합니다.
  • 프로세스 2가 실행되는 동안 리소스 B가 잠깁니다.
  • 프로세스 2가 실행을 완료하려면 프로세스 1의 리소스 A가 필요합니다.
  • 프로세스 1이 실행되는 동안 리소스 A가 잠깁니다.

그 결과 프로세스 1과 프로세스 2가 서로 완료되기를 기다리게 됩니다. 어느 프로세스도 다른 프로세스가 완료될 때까지 계속 실행할 수 없으므로 교착 상태가 발생합니다.

교착 상태 방지

개발자는 프로그래밍 논리에서 잠금 조건을 피하여 교착 상태를 방지할 수 있습니다. 예를 들어 두 프로세스가 서로에게 의존하도록 하는 대신, 다른 스레드가 리소스를 필요로 하기 전에 각 스레드가 완료되도록 소스 코드를 작성할 수 있습니다. 필요할 때 데이터에 접근할 수 있도록 하면 프로그래머는 애플리케이션이 멈추거나 충돌하는 것을 방지할 수 있습니다.

NOTE: 둘 이상의 쿼리가 데이터베이스에서 실행될 때도 교착 상태가 발생할 수 있습니다. 트랜잭션 데이터베이스는 활성 레코드를 잠가 다른 쿼리가 해당 레코드에 접근하지 못하게 합니다. 프로세스가 잠긴 레코드에 접근할 수 없으면 데이터베이스 교착 상태가 발생할 수 있습니다.

업데이트됨 January 18, 2020 작성: Per C.

quiz지식 테스트하기

Big Sur was also known as which version of macOS?

A
macOS 9
0%
B
macOS 10
0%
C
macOS 11
0%
D
macOS 12
0%
Correct! Incorrect!     View the Big Sur definition.
More Quizzes →

Tech Terms 컴퓨터 사전

이 페이지의 교착 상태에 대한 정의는 TechTerms.com의 저자가 작성한 원본 정의입니다. 이 페이지를 참조하거나 이 정의를 인용하려면 정의 바로 아래에 있는 녹색 인용 표시줄을 사용하세요.

저희의 목표는 컴퓨터 용어를 이해하기 쉬운 방식으로 설명하는 것입니다. 게시하는 모든 정의에서 정확성과 간결함을 추구합니다. 이 정의에 대한 피드백이 있거나 새로운 기술 용어를 제안하고 싶으시면 문의해 주세요.

Tech Terms 뉴스레터

매일 또는 매주 발행되는 뉴스레터로 기술 지식을 향상시키세요! 지금 구독하고 새로운 용어와 퀴즈를 이메일로 받아보세요.

무료 TechTerms 뉴스레터 구독하기

이메일을 얼마나 자주 받고 싶으신가요?

각 이메일에 포함된 링크를 통해 언제든지 구독을 취소하거나 수신 빈도를 변경할 수 있습니다. 질문이 있으신가요? 문의해 주세요.

참고: 뉴스레터는 영어로 발송됩니다.