2012-10-03 2 views
0

운영체제 개념을 수정하려고하는데 혼란이 있습니다. 프로세스가 자체 주소 공간을 가진 스레드라는 것을 알고 있습니다.스레드 및 프로세스

1) 교착 상태는 스레드 또는 프로세스에 의해서만 발생합니까? (스레드는 프로세스의 스택을 공유합니다. 다른 프로세스는 스택이 다릅니다).

2) 단일 프로세스로 교착 상태가 발생할 수 있습니까? 또는 교착 상태가 발생하는 데 하나 이상의 프로세스가 필요합니까?

이것이 올바른 질문인지 확실하지 않습니다. 그렇지 않은 경우 알려 주시면 질문을 삭제하겠습니다.

+0

IMO 프로세스는 자체 주소 공간이있는 스레드가 아니며 리소스 (데이터, 주소 공간)를 경유하고 활동 (스레드)을 실행하는 환경과 비슷합니다. – Apokal

답변

2

스레드와 프로세스는 잠금하려는 항목에 따라 교착 상태가 될 수 있습니다. 잠금하려는 리소스가 프로세스 내에서 공유되는 리소스 (예 : 중요 섹션) 인 경우 스레드가 교착 상태에 빠질 수 있습니다. 반면에 전역 적으로 공유되는 리소스 (예 : 뮤텍스)는 프로세스가 교착 상태에 빠질 수 있습니다. 2)의 경우, 둘 이상의 프로세스가 교착 상태가 발생하기 위해 (전역 적으로) 공유 자원을 잠그려고 시도해야하므로 둘 이상의 프로세스가 관련되어야합니다.

2

답변은 질문 자체에 있습니다. 각 프로세스에는 스택이 있으며 프로세스에서 생성 된 모든 스레드는 스택을 공유합니다. 동일한 프로세스의 두 스레드가 다른 스레드가 다른 스레드의 잠금을 대기하고 교착 상태가 발생하기를 기다리는 자원 (data, comm, ...)을 요청할 때마다.

답 : 1)에 대한
:
스레드가 2)에 대한 부모 프로세스 내에서 공정 및 프로세스 원인 교착 상태에서 교착 상태 (대부분의 경우 OS)
원인 :
예 단일 프로세스 교착 상태가 발생할 수 있습니다.

+0

이것은 정확하지 않습니다. 스레드는 포함 프로세스의 주소 공간을 공유하지만 각 스레드는 고유 한 개인 스택을가집니다. – Tudor

+0

교착 상태를 일으키는 한 스레드의 예를 들려 줄 수 있습니까? 온라인에서 찾거나 생각할 수 없습니다. :) – rgamber

관련 문제