• Nenhum resultado encontrado

O Nível Virtual

2.1 O Escalonamento   Definição e Caracterização do Problema

2.1.4 Caracterização dos Processos

No caso de processadores dedicados, o conjunto de tarefas é tipicamente particionado em subconjuntos denominados processos (jobs), colocando-se o problema assim:

• Há um conjunto de n processos  ={J1,J2,...,Jn};

• Cada processo Jj é um conjunto de kj tarefas Jj=

j

, com 

j

={O1j,Oj2,...,Ojkj}; • As tarefas usam, ou são processadas por, processadores de um conjunto de m

Os seguintes parâmetros são normalmente usados para caracterizar os processos e as suas tarefas:10

• Cada processo Jj tem um tempo de chegada, data de chegada, ou data de lançamento

(ready time, ready date, ou release date) rj, correspondente ao tempo a partir do qual Jj

estará disponível para ser processado;11

• Cada processo Jj tem uma data limite, ou data de entrega (due date) dj, que é o tempo

até ao qual o processamento de Jj deverá terminar, sendo rj≤dj;

• A cada processo pode associar-se uma prioridade, peso, ou importância, wj (significa uma

criticalidade, ou urgência relativa, em terminar a execução do processo); • Para cada tarefa Oji há uma duração, ou tempo de processamento, fixa, pji;

• Poderá ser especificada uma ordem, ou restrição temporal de precedência, entre tarefas de cada processo; para indicar que Oja precede O

j

b (e que, portanto, O j

b só poderá iniciar-se

após Oja terminar) escreve-se Oja«Ojb. Os parâmetros rj, dj e p

j

i são números inteiros

12

e wj é um número positivo. As restrições

temporais de precedência, quando existem, podem ser expressas na forma de um grafo acíclico direccionado cujos nós representam tarefas e cujos arcos representam as precedências temporais a respeitar, sem arcos transitivos, denominado grafo de precedências. Na Figura 2-1 e na Figura 2-2 dão-se exemplos de grafos de precedências. Esta forma de representação usada no grafo de precedências é designada por actividade-em-nó (activity-on-node) ou AON. Uma forma alternativa de representação, por vezes utilizada, é a de actividade-em-arco (activity-on-arc) ou AOA, em que os arcos do grafo correspondem a tarefas e os nós correspondem a tempos de eventos de início e de fim de tarefas.

Temos ainda a considerar que:

• Podem existir acumuladores ou áreas de armazenamento intermédias (buffers) entre os processadores em cada processo, que se assume terem capacidade de acumulação ilimitada (um processo, após terminado o processamento num processador pode esperar até que o processamento no processador seguinte se inicie); alternativamente pode assumir-se a propriedade (dos processos) de sem-espera (no-wait) se os acumuladores têm capacidade zero (neste caso, o processos não podem esperar entre dois processadores consecutivos);

10

Os parâmetros aqui descritos para processos aplicam-se também a tarefas individuais, nomeadamente quando o conjunto de tarefas não é particionado em processos (nesse caso será k=n).

11

Na literatura de escalonamento as designações ready date (ou ready time) e release date (ou release time) são usadas, aparentemente, com o mesmo significado (ver, por exemplo, [Morton 1993], [Blazewicz 1994], [Rabelo 1997], [Brucker 1998]). Em [Hildum 1994], página 4, no entanto, ready time é definido como sendo o tempo no qual se pretende que um processo esteja disponível para processamento (em complementaridade, a

due date é definida como sendo o tempo no qual se pretende que um processo termine o seu processamento) e release time é definido como sendo o tempo no qual um processo fica efectivamente disponível para

processamento (em complementaridade, a completion time é definida como sendo o tempo no qual um processo termina efectivamente o seu processamento).

12

Como é dito em [Blazewicz 1994] esta suposição não é tão restritiva como pode parecer, já que é equivalente a permitir, para aqueles parâmetros, valores racionais arbitrários.

• As tarefas podem, ou não, ser interrompidas e retomadas mais tarde (no mesmo processador ou noutro). No primeiro caso o escalonamento é dito preemptivo, ou com

preempção, no outro caso não preemptivo, ou sem preempção;

• Cada tarefa necessita de um único processador de (para o qual poderão, ou não, existir várias alternativas) e, possivelmente, de recursos adicionais de  , cujos requerimentos são

predeterminados.

Podemos ainda caracterizar os processos quanto ao modelo de processamento. Para processadores dedicados existem, basicamente, dois modelos possíveis [Kan 1976], [Blazewicz 1994], [Brucker 1998]:13

1. Processamento contínuo (flow shop) - O número de tarefas por processo kj, é igual ao

número de processadores m, e as tarefas usam os processadores sempre pela mesma ordem. Quer dizer, para cada processo Jj, é executada primeiro a tarefa O

j

1 no processador P1,

depois a tarefa Oj2 no processador P2, etc., por último a tarefa O

j

m no processador Pm. Uma

variante deste modelo designada por processamento aberto (open shop) não tem restrições de precedência predeterminadas;

2. Processamento intermitente (job shop) - O número e a ordem de execução das tarefas pode variar de processo para processo (embora seja fixo à partida).

No caso dos processadores dedicados o grafo de precedências é limitado a uma cadeia, já que a ordem de execução das tarefas é uma ordem linear.14 No contexto típico da produção industrial, o processamento contínuo é o tipo de processamento característico em linhas de montagem e indústrias de processo (refinarias, siderurgias, etc.) e o processamento intermitente o da produção por lotes e produção unitária. Os dois modelos são graficamente exemplificados, na forma de grafos de precedências (do tipo AON), na Figura 2-1.

13

Com maior detalhe, poderiam ainda considerar-se outros casos possíveis, além dos descritos, como os de ambientes mistos e ambientes flexíveis (com alto nível de automatização e integração entre máquinas, transporte e armazenamento).

14

Excepção feita ao modelo de processamento aberto.

Om11 O12 O11

...

On2 O1n

...

Omnn O22 O12

...

Om22

:

:

:

b) processamento intermitente ( m processadores; m1, m2,...,mn≤ m) P1 P2 P1 P2 P3 P1 P1 P2 Pm Om1 O12 O11

...

Omn On2 O1n

...

Om2 O22 O12

...

:

:

:

a) processamento contínuo ( m p r o c e s s a d o r e s ) P1 P1 P2 P2 Pm Pm

Figura 2-1- Grafos de precedências de processamento contínuo e de processamento intermitente. Cada nó Oij

representa uma tarefa de um processo Jj. Os arcos direccionados representam relações de precedência temporal

entre tarefas (arcos conjuntivos). Os arcos não direccionados adicionalmente incluídos, a traço leve, ligam nós de tarefas que usam o mesmo processador (arcos disjuntivos).

Um terceiro modelo de processamento, envolvendo qualquer tipo de recursos e qualquer tipo de restrições de precedência, pode ainda considerar-se:

3. Processamento com recursos constrangidos e precedências temporais gerais - Podem ser requeridos outro tipo de recursos (processadores dedicados ou não, recursos com capacidade de executar mais de uma tarefa de cada vez, recursos adicionais), sendo as restrições de precedência quaisquer.

O escalonamento frequentemente designado por escalonamento de projecto15 enquadra-se neste modelo. Na Figura 2-2 exemplifica-se este modelo através de um grafo de precedências (do tipo AON) de um projecto.

Este terceiro modelo pode ser considerado uma extensão natural do processamento intermitente em que se consideram envolvidos quaisquer tipos de recursos e quaisquer restrições de precedência [Morton 1993]. Embora este modelo genérico de processamento seja complexo16 não é, no entanto, difícil conceber aspectos realistas que possam ampliar ainda mais a sua complexidade, como sendo:

• Os processos poderem ter sequências de tarefas alternativas;

• A mesma tarefa ter processadores alternativos: por exemplo, quando uma tarefa deve ser executada numa qualquer máquina de um grupo de máquinas com características semelhantes (podendo, ou não, existir preferências por algumas uma delas);

• Ter em conta tempos de preparação de processadores e de recursos antes da execução de uma tarefa nele; os tempos de preparação poderão, ou não, variar conforme a sequência de tarefas escalonada no processador ou recurso; também os tempos de movimentação entre cada tarefa de um processo poderão ter de ser considerados;

• Uma tarefa poder ser interrompida (por exemplo, devido a uma avaria) e mais tarde concluída (escalonamento preemptivo);

15

Abrangido pelo que é frequentemente designado por planeamento e programação de projecto, planeamento

e controlo de projecto ou, simplesmente, planeamento de projecto.

16

A complexidade de processamento depende aqui fundamentalmente do número e ordem das tarefas. O modelo referido é aquele que mais desafia os métodos clássicos de obtenção de uma solução para o problema de escalonamento, por conduzir a modelos de optimização combinatória enormes e difíceis (ver [Graves 1981], [Shapiro 1993], [Blazewicz 1994]). O1 O2 O3 O4 O5 O7 O6 O8 P r o j e c t o

• O conjunto de processos não ser fixo, ou o conjunto de processadores não ser fixo.

2.1.5 Escalonamento e Representação de Escalonamentos

Para escalonar completamente todas as tarefas, há que associar a cada tarefa Oji um tempo de início sji, um valor inteiro a determinar ao construir o escalonamento. Um escalonamento é uma afectação de processadores do conjunto (e, possivelmente de recursos adicionais do conjunto  ) a todas as tarefas dos conjuntos 

j

, com tempos de início sji determinados para cada tarefa, que satisfazem as seguintes restrições [Blazewicz 1994]:

• Em cada momento cada processador está afectado no máximo a uma tarefa (se não está desocupado) e cada tarefa é processada por, ou usa, no máximo, um processador;

• Cada tarefa Oji é processada no intervalo [rj,∞] (isto é: s

j

i∈[rj,∞]) e termina;

• Para cada par de tarefas Oja e Ojb relacionadas por uma restrição de precedência Oja«Ojb, o processamento de Ojb não pode iniciar-se antes de O

j

a terminar (isto é, tem de ser:

sja+pja≤sjb);

• No caso de escalonamento não preemptivo nenhuma tarefa é interrompida; no caso de

escalonamento preemptivo o número de interrupções de cada tarefa é finito;

• São satisfeitas as restrições de recurso que houver.

Em problemas de escalonamento de processadores dedicados com restrições de precedência pode representar-se o problema de escalonamento através de um grafo denominado grafo

disjuntivo [Kan 1976], [Blazewicz 1994], [Brucker 1998].17

17

Para medidas regulares (ver adiante), este grafo contém, implicitamente, a solução óptima para o problema de escalonamento. O31 O21 O11 O23 O22 O12 S 3 1 3 0 1 2 2 T 0 P1 P2 P3 a r c o c o n j u n t i v o arco disjuntivo

Figura 2-3- Grafo disjuntivo de um problema de escalonamento com processadores P1, P2 e P3, processos J1={O 1 1,O 1 2,O 1 3} e J2={O 2 1,O 2 2,O 2

3}. As relações de precedência são: O 1 1«O 1 2, O 1 2«O 1 3, O 2 1«O 2 2 e

O22«O23. Os requerimentos de recurso são: O11 e O12 requerem 3 e 2 unidades de tempo em P1; O

1 2 e O

2 3

requerem ambas 1 unidade de tempo em P2; O

1 3 e O

2

Um grafo disjuntivo é um grafo de precedências que contém, adicionalmente, arcos não direccionados ligando todos os nós de tarefas que requerem o mesmo processador. Estes arcos são designados arcos disjuntivos; os arcos que representam as relações de precedência são também designados arcos conjuntivos. É usual incluir no grafo disjuntivo duas tarefas fictícias, de duração zero, cujos tempos de início delimitam o horizonte temporal de escalonamento. A título de exemplo representa-se, na Figura 2-3, o grafo disjuntivo de um problema de escalonamento com três processadores e dois processos; nesta figura, os nós S e T

representam as tarefas fictícias acima referidas e os números junto de cada nó representam as durações das tarefas. Também, na Figura 2-1 sugerem-se grafos disjuntivos (nos quais não estão incluídas as tarefas fictícias).

Para representar escalonamentos são usados gráficos de Gantt, ou mapas de Gantt. Estes têm tipicamente a forma de um gráfico de barras, com um dos eixos representado a dimensão tempo e o outro representado as máquinas (gráfico de Gantt de máquina) ou, alternativamente, os processos (gráfico de Gantt de processo). Na Figura 2-4-a) e na Figura 2-4-b) representam-se, respectivamente, o gráfico de Gantt de máquina e o gráfico de Gantt de processo para um escalonamento que é uma solução para o problema acima descrito.