2010-12-20 8 views

답변

0

교착 상태는 동기화 프로그램을 사용하여 멀티 스레드 프로그램을 프로그래밍 할 때 자주 발생하며 수행중인 작업을 모릅니다.

스레드를 깨우기 위해 동일한 뮤텍스가 필요하면 스레드를 대기 상태로두기 전에 항상 뮤텍스를 릴리스해야합니다. 이는 그저 작은 예제 일뿐입니다.

+0

교착 상태가 발생하는 실제 예제 응용 프로그램을 제공 할 수 있습니까? – pappa

+0

2 개의 코드가 동일한 뮤텍스와 다른 메커니즘을 사용하는 2 개의 스레드에서 실행되는 응용 프로그램을 만드십시오. 세마포어는 간단합니다. 뮤텍스를 해제하지 않고 세마포를 기다리면 교착 상태가됩니다. –

0

나는 같은 질문을하고 있었다. 내 교과서에서이 문제를 발견했습니다.

비용은 중요한 고려 사항 중 하나입니다. 교착 상태 가능성을 무시하면 은 다른 접근 방식보다 저렴합니다. 많은 시스템에서 교착 상태가 자주 발생하지 않으므로 (예 : 1 년에 한 번) 다른 방법의 추가 비용이 으로 보일 수도 있습니다.

또한 발생하는 경우 시스템이 조금 느려지고 결국 다시 시작해야한다고 언급합니다. 우리 모두가 잘 알고있는 것. 교과서 견적은 Brian, W.의 운영 체제 기본 사항 323 페이지에 있습니다.

하지만 Joao가 언급했듯이 양질의 코드를 만드는 것은 개발자의 몫입니다. 그래서 이론 상으로는 많은 정크 프로그램을 실행하고 있다면 교착 상태에 직면 할 수 있습니다.

0

사용자 프로그램의 다중 스레드 프로세스에서 교착 상태가 발생하면 사용자 응용 프로그램이 작동하지 않게되고 운영 체제의 교착 상태와 관련이 없습니다. 커널이 부적절한 방식으로 자원을 할당하면 운영 체제에서 교착 상태가 발생합니다. 이는 매우 드물게 발생합니다. 빈도는 1 년에 한 번이므로 Windows 및 Unix와 같은 널리 사용되는 운영 체제는 타조를 해결하여 데드락을 무시합니다.

관련 문제