2014-08-31 5 views
0

나는 논리적으로 작업 풀 (각 작업에는 작동하는 개별 시간 슬라이스가 있음)을 생성하는 알고리즘을 정의하려고합니다. 및 시스템 시계없이 관리 .시스템 시계를 사용하지 않고 작업 관리

내가 직면 한 문제는 취한 각 접근 방식을 통해 높은 시간 조각이있는 작업이 굶어 죽었다는 것입니다.

내가 시도한 것은 한 쌍의 작업/(int) "시간"이 포함 된 작업 벡터를 만드는 것입니다. 가장 낮은 "시간"을 가진 벡터를 먼저 정렬하고 & 다음 0으로 각 작업을 반복하고 실행했습니다. 전체 벡터를 반복하면서 각 작업의 "시간"을 줄였습니다.

"문제"에 대한 더 나은 접근 방법이 있습니까? 내 접근 방식으로, 확실히 시작됩니다.

+0

"시간"값의 정의는 무엇입니까? 처음에는 각 작업에 대해 어떻게 설정됩니까? 늘릴 수 있습니까? –

+0

더 자세히 설명하겠습니다. Vector = {Task1 | int time = 12, Task2 | int time = 10} 그래서 Task2가 먼저 실행되고 2 번 더 "틱"Task1이 실행됩니다. 인수를 위해서 나는 시스템 시간 (시계)을 우선 순위에 사용할 수 없다. – Erez

+0

더 정확한 defenition : "시스템 시간 (시계)을 사용하는 옵션없이 작업을 관리하기위한 시스템 설계" – Erez

답변

1

관리 작업에는 시스템 시계가 필요하지 않을 수도 있습니다. 각 작업 간의 우선 순위를 결정하고 우선 순위에 따라 각 작업을 실행하는 방법을 찾아야합니다.

다른 작업을 실행하기 위해 작업을 일시 중지 한 다음 일시 중지 된 작업에 새 우선 순위를 설정해야 할 수 있습니다. 이 기능 (멀티 태스킹)은 이벤트 (일반적으로 시계 시간이지만, 온도 나 원숭이가 버튼을 누르거나 다른 프로세스가 신호를 보내는 것과 같은 다른 이벤트를 사용할 수 있음)를 기반으로 인터럽트가 필요합니다.

당신은 문제가 더 높은 타임 슬라이스가있는 배가 굶주리고 있다고 말합니다. 각 작업의 '시간'을 줄이면 '시간'이 음수가되지 않는다고 가정 할 때 더 높은 시간 조각 작업은 결국 0뿐 아니라 다른 모든 작업에도 적용됩니다.

관련 문제