2017-12-05 5 views
-2

사용 은행가 알고리즘,은행 알고리즘은 모든 그렇게 함께</strong>을 그들의 자원 <strong>을 포기 할 수

프로세스 (P1)의 경우를 처리하는 다른 프로세스 P2, P3, 단독으로 그것의 자원을 포기 P4 등으로 완료 할 수 없습니다 p1이 완료 될 수 있습니까?

아니면 할 수있는 일이 아닙니까?

+2

StackOverflow에 오신 것을 환영합니다. 도움말 설명서의 게시 지침을 읽고 따르십시오. [주제] (http://stackoverflow.com/help/on-topic) 및 [묻는 방법] (http://stackoverflow.com/help/how-to-ask) 여기를 참조하십시오. 물론 프로세스가 리소스를 포기할 수도 있습니다. 문제는 프로세스간에 허용되는 통신의 종류와 문제가있는 부분입니다. 프로세스에 대한 알고리즘 설명을 게시하는 데 실패 했으므로 작동하지 않는 코드는 말할 것도없고 도움을 줄 수있는 방법이 많지 않습니다. * 아직 *. – Prune

+0

@Prune 코드가 없습니다. 질문입니다. 아마도 내 질문을 잘못 해석 한 것입니까? – bhigg890

+2

그럼 명확히하십시오. 나는 문제가 불분명하다는 점을 몇 가지 설명했다. – Prune

답변

0

추상 프로세스 또는 Banker 's 알고리즘의 기능에 대해 질문하십니까?

추상적 인 프로세스라면 쉽게 할 수 있습니다. 신호 yield_all을 작성하고 각 프로세스가 해당 신호를 수신 할 때 자원을 양도하도록 코딩하십시오. 일부 마스터 프로세스는 P2, P3 및 P4 각각에 신호를 전송 한 다음 P1이 할당을 계속 진행하도록 허용해야합니다. 구현 세부 사항은 설계자가 결정합니다.


은행원 알고리즘에 대해 묻는다면, 나는 당신이 필요로하는 것이 무엇인지 분명하지 않습니다. 시스템이 여전히 safe state 인 경우가 아니면 할당을 진행할 수 없습니다. 각 프로세스는 나머지 시스템 가용성과 함께 어떤 순서로 종료 될 수 있습니다 (따라서 모든 자원을 반환 할 수 있습니다).

따라서 설명하는 상황에서 다른 프로세스가 리소스를 생성하도록하는 것은 유효한 작업이 아닙니다. 오히려 P1은 요청 된 자원을 할당하기 전에 다른 사람이 정상적으로 종료 할 때까지 기다려야합니다. 이것이 가능하지 않은 경우 시스템은 unsafe state입니다. 하나 이상의 이전 요청이 승인되어서는 안됩니다.

질문에 대한 답변이 있습니까?