Задания
Версия для печати и копирования в MS Word
Тип 22 № 76690
i

В ком­пью­тер­ной си­сте­ме не­об­хо­ди­мо вы­пол­нить не­ко­то­рое ко­ли­че­ство задач, ко­то­рые могут вы­пол­нять­ся па­рал­лель­но или по­сле­до­ва­тель­но. Для за­пус­ка не­ко­то­рых задач не­об­хо­ди­мы дан­ные, ко­то­рые по­лу­ча­ют­ся как ре­зуль­та­ты вы­пол­не­ния дру­гой за­да­чи  — по­став­щи­ка дан­ных. Если за­ви­си­мая за­да­ча по­лу­ча­ет дан­ные от дру­гой за­да­чи (по­став­щи­ка дан­ных), то вы­пол­не­ние за­ви­си­мой за­да­чи не может на­чать­ся рань­ше за­вер­ше­ния за­да­чи по­став­щи­ка. Дли­тель­ность вы­пол­не­ния за­да­чи не за­ви­сит от дру­гих па­рал­лель­но вы­пол­ня­е­мых задач, при­оста­нов­ка вы­пол­не­ния не до­пус­ка­ет­ся.

Для вы­пол­не­ния не­ко­то­рых задач в си­сте­ме не­об­хо­ди­мо за­пу­стить не­сколь­ко па­рал­лель­но вы­пол­ня­е­мых про­цес­сов. Все такие про­цес­сы за­пус­ка­ют­ся в мо­мент стар­та со­от­вет­ству­ю­щей за­да­чи и за­кан­чи­ва­ют­ся в мо­мент её за­вер­ше­ния.

В таб­ли­це пред­став­ле­ны иден­ти­фи­ка­тор (ID) каж­дой за­да­чи, её дли­тель­ность в се­кун­дах и ко­ли­че­ство про­цес­сов, а также ID по­став­щи­ка дан­ных для за­ви­си­мых задач. Для не­за­ви­си­мых задач в ка­че­стве ID по­став­щи­ка дан­ных ука­зан 0.

Од­но­вре­мен­но может вы­пол­нять­ся не более 5 про­цес­сов. За­да­ча может стар­то­вать толь­ко, если воз­мо­жен за­пуск всех не­об­хо­ди­мых для этой за­да­чи про­цес­сов. На­при­мер, если в какой-то мо­мент вре­ме­ни вы­пол­ня­ет­ся 4 про­цес­са, то можно на­чать вы­пол­не­ние за­да­чи, тре­бу­ю­щей за­пус­ка од­но­го про­цес­са, но нель­зя на­чать вы­пол­не­ние за­да­чи, тре­бу­ю­щей за­пус­ка двух и более про­цес­сов.

Если в какой-то мо­мент к за­пус­ку го­то­вы не­сколь­ко задач, в первую оче­редь за­пус­ка­ет­ся за­да­ча с мень­шим ID.

За какое время будут вы­пол­не­ны все за­да­чи?

В от­ве­те на­пи­ши­те число  — тре­бу­е­мое время в се­кун­дах.

За­да­ние 22

Спрятать решение

Ре­ше­ние.

До­ба­вим в таб­ли­цу стол­бец «Время окон­ча­ния про­цес­са» и за­пи­шем туда дли­тель­но­сти не­за­ви­си­мых про­цес­сов. Затем рас­счи­та­ем время окон­ча­ния за­ви­си­мых про­цес­сов. В ре­зуль­та­те по­лу­чим таб­ли­цу.

На­ри­су­ем время вы­пол­ня­е­мых про­цес­сов. Если ко­ли­че­ство тре­бу­е­мых про­цес­сов более 1, по­кра­сим про­цесс в крас­ный цвет:

Нач­нем дви­гать впра­во про­цес­сы так, чтобы все­гда было толь­ко 4 вы­пол­ня­е­мых про­цес­са. Пер­вы­ми будут вы­пол­нять­ся про­цес­сы 1,2 и 3. Боль­ше за­пу­стить про­цес­сов нель­зя, так как 1 и 2 про­цес­сы за­ни­ма­ют по 2 про­цес­са. Как толь­ко за­вер­шить­ся самый ко­рот­кий про­цесс (в этой за­да­че про­цесс 3), за­пус­ка­ем сле­ду­ю­щий про­цесс. Пом­ним, что за­пу­щен­ный про­цесс дол­жен иметь ми­ни­маль­ный ID. За­пус­ка­ем сле­ду­ю­щий по ID про­цесс 5. Рас­став­ля­ем далее про­цес­сы, следя за тем, чтобы од­но­вре­мен­но вы­пол­ня­лось не более 5 про­цес­сов (с уче­том ко­ли­че­ства про­цес­сов), за­пус­ка­лись не­за­ви­си­мые про­цес­сы от те­ку­щих и с ми­ни­маль­ным ID. По­лу­ча­ем сле­ду­ю­щую таб­ли­цу:

Все про­цес­сы будут вы­пол­не­ны за 34 мс.

Ответ: 34.