Escalonamento de Processos em Sistemas Distribuídos: Uma Visão Geral

Tamanho: px
Começar a partir da página:

Download "Escalonamento de Processos em Sistemas Distribuídos: Uma Visão Geral"

Transcrição

1 Escalonamento de Processos em Sistemas Distribuídos: Uma Visão Geral Tiago Roberto C. da Silva Instituto de Informática Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal Porto Alegre RS Brasil Abstract. This paper intends to be an overview in the topic of distributed scheduling, presenting its basic concepts and its taxonomy, and dealing with the problem since its most restricted form to the general scheduling problem. It will also present some analysis over some distributed scheduling algorithms. Resumo. Este artigo pretende ser uma visão geral sobre o tópico de escalonamento distribuído, apresentando seus conceitos básicos e sua taxonomia, lidando com o problema desde sua forma mais restrita até o problema geral de escalonamento. Também apresentará análises de alguns algoritmos de escalonamento distribuído. 1. Introdução Sistemas distribuídos oferecem uma alta capacidade teórica de processamento. No entanto, para se tirar proveito dessa capacidade, deve-se ser capaz de se designar tarefas aos processadores componentes desses sistemas de modo que o tempo de execução da aplicação como um todo seja o menor possível. Tendo isso em mente, um escalonador distribuído é um componente gerenciador de recursos cujo foco é distribuir a carga do sistema entre seus componentes de modo que seu desempenho geral seja maximizado. De acordo com [Singhal e Shivaratri 1994], porque redes WAN têm atrasos de comunicação muito altos, escalonamento distribuído é mais adequado a redes locais. Escalonamento distribuído é um dos problemas mais desafiadores na computação paralela e distribuída. Segundo [El-Rewini, Lewis, e Ali 1994], é sabido ser esse problema NP-completo em sua forma geral e em diversos casos restritos, sendo que algoritmos ótimos são encontrados em apenas poucas situações. Por esse motivo, para se resolver o problema geral em um tempo razoável são necessários métodos heurísticos, baseados em parâmetros que afetam o comportamento do sistema, que garantem apenas uma solução próxima à ótima. Os algoritmos de escalonamento partem do princípio de que o programa paralelo é uma coleção de tarefas que podem ser executadas fora de ordem, dadas as restrições de precedência entre as mesmas. Caso não existam essas restrições, o problema de escalonamento é conhecido como problema de alocação de tarefas [El-Rewini e Lewis 1998] [El-Rewini, Lewis, e Ali 1994]. Uma apresentação dos componentes de um escalonador distribuído pode ser vista na seção 2. A seção 3 apresenta uma proposta de classificação dos diferentes tipos de

2 algoritmos desenvolvidos para se tratar esse problema. Na seção 4, são apresentados os casos onde pelo menos uma solução ótima para o escalonamento distribuído é conhecida. Na seção 5, começará a ser considerado o tempo gasto com a comunicação entre os processos na abordagem do problema, que era ignorada até agora e é um dos pontos-chave no escalonamento em um sistema real. Nesta seção, alguns sistemas de heurística utilizados em algoritmos são apresentados. Até a seção 5, todos os algoritmos discutidos executam sobre uma representação estática das tarefas componentes do programa em um grafo; na seção 6, são apresentadas situações onde uma abordagem dinâmica para problema de escalonamento obtém melhores resultados. Por último, na seção 7, são apresentadas as considerações finais. 2. Componentes de um escalonador distribuído Segundo [Singhal e Shivaratri 1994], um algoritmo distribuído tem quatro componentes, a saber: Política de transferência determina se um nodo está em um estado propício para participar do escalonamento. Geralmente, é implementada como um monitor da fila de tarefas designadas ao processador: caso seu tamanho ultrapasse um limiar T, a política decide que ele é um emissor de tarefas; caso seja inferior a que T, ele é um receptor de tarefas; Política de seleção determina quais tarefas serão escalonadas pelo sistema; Política de alocação determina para qual nodo uma tarefa selecionada para transferência será designada, baseando-se comumente na política de polling, onde os nodos são consultados pelo escalonador para verificar se eles estão aptos para fazer a distribuição de carga ou não; Política de coleta de informações determina como, quando e de que forma as informações correspondentes ao estado do sistema serão coletadas, sendo implementada comumente tanto como periódica quanto como orientada à demanda (isto é, quando um nodo se torna emissor ou receptor). Baseado nos dados informados por cada uma das políticas descritas acima, o algoritmo de escalonamento toma suas decisões. Além disso, também segundo [Singhal e Shivaratri 1994], um escalonador distribuído deve ser escalável, produzindo resultados em tempos próximos para pouca e muita carga de trabalho; transparente, no sentido de que deve mascarar a localização das tarefas para o usuário; determinista, produzindo os mesmos resultados independentemente de onde as tarefas se encontram e da política de escalonamento utilizada; não-degradante, no sentido de que não deve sobrecarregar processadores de trabalho quando houver processadores com pouca ou nenhuma carga; e heterogêneos, no sentido de que devem ser capazes de distinguir entre diferentes tipos de hardware e tomar as decisões ótimas para cada tipo. Certamente, o requerimento heterogeneidade é o mais difícil de ser obtido, pois acrescenta complicações nas decisões a serem tomadas pelo escalonador, como, segundo [Silberschatz e Galvin 1999], por exemplo, a restrição de que uma determinada tarefa t só possa ser executada no ambiente que contenha o conjunto de instruções de t, ou ainda, a exigência de que o escalonador deve levar em conta a capacidade de

3 processamento de cada nodo para estimar individualmente o tempo de execução da tarefa nesse nodo e decidir se ele é a melhor opção para executar uma dada tarefa. Por estes motivos, as pesquisas estão focadas primariamente em modelos de sistemas homogêneos [El-Rewini e Lewis 1998]. 3. Taxonomia Como mencionado anteriormente, o problema irrestrito de escalonamento distribuído é NP-completo. Na busca por meios de se explorar da melhor maneira possível os recursos de um sistema distribuído em um tempo viável, um grande número de técnicas e metodologias foi desenvolvido e, juntamente com elas, diversas tentativas de classificá-las e organizá-las [Casavant e Kuhl 1988]. Considerando isso, [Casavant e Kuhl 1988] propuseram uma taxonomia que tenta particionar o universo de algoritmos da melhor maneira possível, sendo referenciada também por [El-Rewini, Lewis, e Ali 1994]. Essa taxonomia consiste de uma representação em árvore da hierarquia de algoritmos distribuídos e de uma série de complementações à mesma. Aqui é apresentada a taxonomia principal e alguns dos critérios de complemento de [Casavant e Kuhl 1988], bem como alguns critérios complementares propostos por outros autores Apresentação da taxonomia Uma esquematização desta taxonomia é apresentada na figura 1 e discutida a seguir. Figura 1. Esquematização da taxonomia principal de [Casavant e Kuhl 1988]. A diferenciação entre local e global é trivial; a divisão mais significativa é a em estática e dinâmica, e diz respeito a quando as decisões de escalonamento serão tomadas. Diz-se a mais importante porque há casos onde algoritmos dinâmicos são muito mais efetivos do que estáticos [El-Rewini, Lewis, e Ali 1994]. Em ambos os casos, o processo a ser executado é dividido em tarefas, e a precedência entre essas tarefas é representada por um grafo; no entanto, nos algoritmos estáticos, assume-se que todas as informações sobre as tarefas são conhecidas antes do tempo de execução, enquanto que nos algoritmos dinâmicos é assumido que pouco a priori se sabe sobre as necessidades da tarefa, como desvios condicionais, iterações em um laço de execução ou até mesmo o ambiente em que ela será executada. No caso da divisão entre ótimo e subótimo, no primeiro caso se considera que todo o conhecimento relacionado ao estado do sistema e às necessidades do processo são conhecidos quando do momento do escalonamento, enquanto que, quando algum destes problemas é computacionalmente intratável ou não pode ser medido com certa precisão,

4 uma abordagem subótima é estimada. Seguindo-se por este caminho, chega-se à divisão entre aproximada e heurística. Numa solução aproximada, utiliza-se o modelo formal padrão do processo e se busca a primeira solução considerada razoável no espaço de soluções possíveis, enquanto que uma solução heurística faz assunções realistas sobre o conhecimento a priori das tarefas baseadas em parâmetros que afetam o sistema como um todo, obtendo em um tempo menor do que o exponencial uma solução próxima à ótima. Em seguida, podem-se ver as categorias básicas de algoritmos usados nesses tipos de escalonamento, isto é, algoritmos baseados em teoria dos grafos ou teoria das filas, em programação matemática e em enumeração no espaço de soluções, que são comuns tanto à abordagem ótima quanto à subótima aproximada. Voltando-se na hierarquia, chega-se à divisão entre distribuído e não-distribuído, que basicamente indica se a responsabilidade pelo escalonamento reside em um único processador, que escalona as tarefas e direciona-as para os demais processadores, ou se essa decisão é fisicamente distribuída entre os processadores componentes do sistema. A última divisão diz respeito a trabalho cooperativo ou não-cooperativo. No primeiro, as decisões são tomadas cooperativamente entre os processadores; no último, cada processador toma uma decisão independentemente dos demais, baseado apenas em parâmetros locais, ou seja, a melhor decisão local. Note que o nodo cooperativo da árvore também se subdivide em ótimo e subótimo, tratados anteriormente Complementações à taxonomia Juntamente com essa taxonomia, os algoritmos ainda podem ser classificados de acordo com mais uma série de critérios, sendo aqui apresentados dois exemplos de acordo com [Casavant e Kuhl 1988]: Se os parâmetros usados para se implementar o escalonamento mudam dinamicamente de acordo com o comportamento do sistema, o algoritmo é dito adaptativo; caso contrário, é dito não-adaptativo; Se, ao designar uma tarefa a um processador, essa tarefa não possa migrar para outros processadores no escalonamento, diz-se que o algoritmo é uma-vez designante; caso a tarefa possa migrar entre processadores, é dito dinamicamente designante. Aqui é importante notar que, se o algoritmo for dinamicamente designante, além da tarefa deverá ser realocado também todo seu contexto, e todos os dados em cache referentes a essa tarefa serão perdidos, gerando uma alta taxa de cache miss sempre que um processo for migrado entre processadores [Singhal e Shivaratri 1994]. Além disso, [Singhal e Shivaratri 1994] explicitam melhor a diferenciação entre outras duas classes de algoritmos, a saber: Se o algoritmo tenta compartilhar a carga de trabalho entre os processadores, transferindo tarefas de um nodo sobrecarregado para outro com pouco ou nenhum trabalho, ele é chamado de compartilhador de carga; se ele tenta antecipar estes estados de processamento concentrado em alguns nodos, tentando distribuir as tarefas igualmente entre os processadores, ele é chamado de balanceador de carga. Ainda, recentemente, uma nova área de pesquisa, chamada de Teoria da Carga Divisível, está sendo desenvolvida [Bharadwaj, Ghose, Mani, e Robertazzi 1996]. Foi

5 constatado que, em tarefas computacionalmente intensivas e que consistem em grandes volumes de dados sendo processados independentemente podem ser divididas dinamicamente em tempo de escalonamento para melhor aproveitar esse paralelismo de dados. Pesquisas nessa área estão voltadas em como identificar as relações entre os dados sendo processados em uma tarefa e, usando esse conhecimento, juntamente com informações paramétricas do sistema, particionar essas tarefas em segmentos de tamanho ótimo para cada processador. Sendo assim, os algoritmos ainda podem ser divididos entre os que realizam essa divisão e os que não a realizam. 4. Soluções ótimas para o problema de escalonamento distribuído Não se considerando a comunicação entre as tarefas, algoritmos polinomiais podem ser encontrados em apenas três casos: quando o grafo de tarefas é uma árvore, quando o grafo é uma ordem de intervalos, ou quando há apenas dois processadores disponíveis [El-Rewini, Lewis, e Ali 1994] [El-Rewini e Lewis 1998]. Em todos os casos, é assumido que todas as tarefas têm o mesmo tempo de execução, unitário. Outros pontos comuns entre os algoritmos são que todos incluem algum tipo de designação de prioridade às tarefas; o escalonamento é feito sobre uma lista de tarefas ordenadas em uma ordem decrescente de prioridade; e uma tarefa é considerada pronta para ser executada quando todas as suas predecessoras no grafo de tarefas já tiverem sido executadas. Para todos os algoritmos apresentados nessa seção, pode-se referir a [El-Rewini, Lewis, e Ali 1994] para provas de que os mesmos produzem resultados ótimos Grafo de tarefas como uma árvore Caso o grafo seja uma árvore, ele ainda deve ter a propriedade de que ou cada tarefa tem no máximo um predecessor imediato ou no máximo um sucessor imediato. Para essas limitações, pode ser obtido um algoritmo que executa em tempo linear em relação ao número de tarefas, cuja estratégia geral é encontrar o caminho entre o nodo de prioridade mais alta (a última folha da árvore) e o de prioridade mais baixa (a raiz da árvore), garantidamente único. Esse algoritmo é apresentado abaixo [El-Rewini, Lewis, e Ali 1994] [El-Rewini e Lewis 1998] [Kwong e Ahmad 1999] Algoritmo 1) A distância entre cada nodo da árvore e a raiz é calculada e usada como a prioridade da tarefa. 2) Insira na lista de tarefas aptas a executar todas as tarefas sem predecessores ou cujos predecessores terminaram sua execução. 3) Sempre que um processador se tornar disponível, retire a tarefa de maior prioridade da lista e designe-a a esse processador. 4) Repita os passos 2) e 3) até que a lista esteja vazia. Pode-se ver claramente que esse algoritmo tem uma complexidade linear em função do número de nodos da árvore, já que cada nodo é visitado uma única vez. Pode-se ver pela estrutura do algoritmo que um caso ótimo também pode ser encontrado quando cada tarefa executa em um período arbitrário de tempo, sendo sua complexidade

6 igual a O[ (1 + (m -1)T l ) / T t ], onde m é o número de processadores, T l é o tempo de execução da tarefa mais longa e T t é o tempo total de execução das tarefas [El-Rewini, Lewis, e Ali 1994]. A idéia desse algoritmo é dividir as tarefas com tempo de execução não unitário em tarefas de tempo unitário [Kwong e Ahmad 1999] Grafo de tarefas como uma ordem intervalar Um grafo é dito uma ordem intervalar quando todos os seus elementos podem ser mapeados para intervalos na reta real, e dois elementos só estão relacionados se os intervalos correspondentes não se sobrepõem. Caso o grafo de tarefas seja uma ordem intervalar, ele apresenta a propriedade de que, dados um par de tarefas intervalarmente ordenadas u e v, ou os sucessores de u são também sucessores de v ou os sucessores de v são sucessores de u. Essa propriedade, aliada à restrição de que todas as tarefas têm o mesmo tempo de execução, torna possível o uso de um simples algoritmo guloso de complexidade O(n + e) para que se possa criar uma lista ótima de escalonamento, onde n é o número de tarefas e e é o número de arestas na ordem intervalar (desde que o grafo seja direcionado e acíclico), podendo-se utilizar o mesmo algoritmo da seção para se resolver de maneira ótima o problema do escalonamento [El-Rewini e Lewis 1998] [Kwong e Ahmad 1999]. Quando a restrição de tempo unitário de tarefas é relaxada, o problema torna-se NP-completo [Kwong e Ahmad 1999] Escalonamento para dois processadores Por último, caso o grafo de tarefas seja arbitrário, direcionado e acíclico, todas as tarefas tenham o mesmo tempo de execução e haja apenas dois processadores disponíveis, um algoritmo de tempo polinomial pode ser obtido [El-Rewini, Lewis, e Ali 1994] [Kwong e Ahmad 1999] Algoritmo 1) Defina a prioridade do nodo de saída de grafo como sendo igual a 1. 2) Assuma que as prioridades 1, 2,..., j-1 já tenham sido atribuídas. Seja S o conjunto de tarefas ainda sem prioridades definidas cujos sucessores já tenham prioridades definidas. Selecione um elemento de S para ser designada a prioridade j da seguinte maneira: 2.1) Defina l(x) como a seqüência decrescente de inteiros formados ordenandose o conjunto das prioridades dos sucessores imediatos de x. 2.2) Assuma x como um elemento de S tal que para todos os demais x em S, l(x) <= l(x ), lexicograficamente. Defina a prioridade j à tarefa x. 3) Depois de a todas as tarefas terem sido designadas prioridades, use a lista de tarefas ordenada de forma decrescente com relação à prioridade no escalonamento. Partindo da primeira tarefa na lista, designe cada tarefa para o processador que permite o menor tempo de início para a execução da tarefa entre os dois processadores disponíveis. Basicamente, o algoritmo funciona designando prioridades aos nodos do grafo de tarefas partindo do nodo de saída do grafo e subindo em direção aos nodos de entrada, considerando como candidato para a designação da próxima prioridade como um nodo que já tenha tido todos os seus sucessores rotulados. Depois que todos os nodos já têm

7 uma prioridade, a lista mencionada é criada, e o escalonamento ótimo é obtido escalonando-se as tarefas dessa lista aos processadores ociosos. A complexidade do algoritmo é O(n 2 ) porque os processos de construção da lista e de escalonamento são executados com esse tempo [Kwong e Ahmad 1999]. Uma prova de que esse algoritmo computa o escalonamento ótimo pode ser vista em [El-Rewini, Lewis, e Ali 1994]. [Kwong e Ahmad 1999] mencionam um algoritmo com complexidade menor para tratar desse problema. Essa diminuição de complexidade se dá a partir da observação de que os rótulos de um conjunto de nodos de mesma altura no grafo dependem apenas de seus sucessores. Assim, ao invés de se construir a informação de ordenação desde o primeiro nodo, o processo de rotulação pode inferir tal informação visitando seus sucessores diretos. 5. Considerando a comunicação entre as tarefas Em sistemas reais, a comunicação entre as tarefas é um fator determinante para o desempenho da aplicação, e, portanto, não pode ser desprezada pelo escalonador distribuído. De fato, para se obter o maior desempenho desses sistemas, o escalonador deve buscar o melhor comprometimento entre paralelismo e atrasos devidos à comunicação [Chrétienne e Picouleau 1997]. O problema da comunicação já se mostra presente no momento na divisão da aplicação em tarefas [El-Rewini e Lewis 1998]: uma tarefa pode ser tão pequena quanto uma única instrução ou tão grande quanto um programa inteiro; no entanto, se a tarefa for grande demais, o paralelismo é reduzido, porque tarefas potencialmente paralelas estariam agrupadas, executando seqüencialmente em um único processador, e, se a tarefa é muito pequena, mais overhead na forma de comunicação entre essas tarefas é adicionado ao tempo de execução total. Além disso, se a abordagem de [Bharadwaj, Ghose, Mani, e Robertazzi 1996] estiver sendo usada, isto é, se o escalonador particiona dinamicamente uma tarefa para aumentar seu paralelismo, designando cada parte a processadores diferentes, deve-se verificar se o paralelismo ganho com o particionamento dinâmico da tarefa supera em desempenho o atraso de comunicação que pode potencialmente existir entre as partes e que será somado ao tempo de execução total, o que aumenta a complexidade desse tipo de escalonador. Além disso, uma escolha crítica quando se trata a comunicação em escalonadores distribuídos é a do modelo a ser escolhido para se computar o custo da comunicação entre as tarefas [El-Rewini e Lewis 1998] Algoritmos ótimos considerando-se comunicação entre as tarefas Segundo [El-Rewini e Lewis 1998] e [El-Rewini, Lewis, e Ali 1994], apenas dois casos de algoritmos ótimos são conhecidos, também para situações extremamente restritas: o primeiro caso é quando o grafo é uma árvore com as mesmas propriedades da árvore tratada na seção 4.1., e há apenas dois processadores disponíveis, gerando um algoritmo de complexidade O(n 2 ), onde n é o número de tarefas [El-Rewini e Lewis 1998]; ou quando o grafo é uma ordem intervalar com as mesmas propriedades mencionadas na seção 4.2., onde se consegue um algoritmo de complexidade O(e + nm), sendo e o número de arcos na relação de ordem, n o mesmo mencionado anteriormente e m o número de processadores [El-Rewini e Lewis 1998]. As provas de que esses algoritmos

8 produzem soluções ótimas e mais detalhes referentes a eles podem ser obtidas em [El- Rewini e Lewis 1998]. Em ambos os casos, são assumidos que o tempo de execução da tarefa é uma unidade de tempo, que a comunicação entre tarefas no mesmo processador é nula, que a comunicação entre tarefas em processadores diferentes é uma unidade de tempo, e que uma tarefa pode ser designada a um processador para execução enquanto esse processador está realizando comunicação Heurísticas Pode-se notar que as restrições necessárias para que o problema seja tratável são muito severas, e não condizem com características de sistemas reais. No entanto, se tais restrições são relaxadas, o problema foge do escopo ótimo devido a sua alta complexidade. Por esse motivo, uma abordagem subótima do problema é necessária, e pesquisas recentes têm dado ênfase a técnicas heurísticas para tanto, que produzem soluções em tempo menor do que exponencial, mas não garantidamente ótimas [El- Rewini e Lewis 1998] [El-Rewini, Lewis, e Ali 1994]. A efetividade dessas heurísticas depende de diversos parâmetros da aplicação e do sistema distribuído, significando que uma heurística que funciona razoavelmente bem em um sistema pode não funcionar tão bem em outro. Por esse motivo, um grande número de heurísticas tem sido proposto, cada um para trabalhar em sistemas de características diferentes [El-Rewini, Lewis, e Ali 1994]. Entre as heurísticas propostas, a que encontra maior aceitação nos algoritmos de escalonamento distribuído é chamada de heurística de escalonamento em lista, e recebeu vários melhoramentos desde que foi proposta [El-Rewini, Lewis, e Ali 1994] [Chrétienne e Picouleau 1997]. Esta técnica consiste em designar prioridades às tarefas e colocá-las em uma lista ordenada de forma decrescente em relação a essas prioridades, sendo sempre a tarefa de maior prioridade escalonada primeiro. Uma vez que uma tarefa seja selecionada para escalonamento, um critério de seleção de processadores deve se seguir, para se identificar para qual processador dentro do grupo de trabalho a tarefa será designada. Algoritmos diferem em como atribuir prioridades às tarefas e/ou em qual critério é utilizado na seleção do processador [El-Rewini e Lewis 1998] [El- Rewini, Lewis, e Ali 1994] Algoritmo de heurística geral de escalonamento em lista com comunicação 1) A cada nodo do grafo de tarefas é designada uma prioridade. Uma lista de tarefas aptas à execução é criada inserindo-se nela cada tarefa do grafo que não tem predecessores imediatos (isto é, é um nodo de entrada do grafo e, portanto, sua execução não depende da execução prévia de outras tarefas). Essa lista é organizada de forma decrescente em relação ao número de prioridade das tarefas. 2) Enquanto essa lista não está vazia, faça o seguinte: 2.1) Retire a tarefa de maior prioridade do topo da lista. 2.2) Selecione um processador para o qual será designada a tarefa e designe-a para esse processador. 2.3) Insira um sucessor na lista de tarefas aptas depois de todos os seus predecessores imediatos terem terminado sua execução.

9 Esse algoritmo tenta minimizar o tempo total gasto para se executar todas as tarefas minimizando o tempo de finalização de cada tarefa designada [El-Rewini, Lewis, e Ali 1994]. Como dito anteriormente, várias derivações deste algoritmo são obtidas modificando-se a forma de como as prioridades são designadas às tarefas e/ou a forma de seleção do processador em que a tarefa será executada. Por exemplo, uma derivação dessa heurística pode designar prioridades baseada no comprimento do mais longo caminho a um nodo de saída do grafo de tarefas, enquanto que outra pode utilizar o número de sucessores de um nodo para tanto. Similarmente, o melhor tempo de início de uma tarefa e o melhor tempo de término podem ser usados como critério de seleção do processador [El-Rewini e Lewis 1998]. A escolha é dependente das especificações do sistema e das necessidades da aplicação. Para uma descrição mais detalhada do algoritmo, verifique [El-Rewini, Lewis, e Ali 1994] Melhoramentos da heurística de escalonamento em lista Nesta subseção serão citados alguns melhoramentos propostos para o caso genérico da heurística tratada anteriormente, baseando-se em [El-Rewini, Lewis, e Ali 1994] e em [Chrétienne e Picouleau 1997] Heurística de escalonamento incisivo O melhoramento proposto aqui é uma modificação da rotina que designa uma tarefa a um processador, que faz uso do tempo ocioso desse processador tentando designar tarefas prontas a essas fatias de tempo ociosas, otimizando seu uso e diminuindo o tempo total necessário à execução da aplicação como um todo Heurística de escalonamento duplo Essa heurística propõe executar múltiplas instâncias de uma tarefa para reduzir o custo de comunicação, executando-se, por exemplo, tarefas emissoras de mensagens e tarefas receptoras de mensagens em um mesmo processador, transferindo o problema de comunicação interprocessador para um problema intraprocessador, com um atraso muito menor. Conseqüentemente, também age diminuindo o tempo de início de tarefas sucessoras de um nodo único: quando as instâncias dessa tarefa multiplicada terminam, todos os seus sucessores diretos já estão aptos a executar Heurística de mapeamento O melhoramento dessa heurística consiste em considerar diversos parâmetros do sistema para o qual é projetado para guiar as decisões do escalonamento. É, portanto, uma versão adaptativa do algoritmo de escalonamento em lista Alternativas à heurística de escalonamento em lista Entre as diversas propostas de heurísticas alternativas à de escalonamento em lista, a mais aceita é a de heurísticas de clustering [El-Rewini, Lewis, e Ali 1994] [El-Rewini e Lewis 1998]. A idéia por trás desse tipo de heurística é dividir o processo de escalonamento em duas fases: designação de processadores, que é o processo de alocar um conjunto de tarefas a cada processador do sistema; e ordenamento de tarefas, que é

10 o processo de escalonar as tarefas alocadas em cada processador. Clustering pode ser definido como o processo de mapear nodos do grafo de tarefas em clusteres rotulados, sendo que todas as tarefas pertencentes ao mesmo cluster devem executar no mesmo processador. O algoritmo geral é executado sobre diversas sementes, representado os clusteres iniciais; sobre estas sementes são executadas operações de melhoramento que visam o crescimento ótimo do cluster. Infelizmente, o problema de se obter um clustering ótimo é NP-completo, sendo necessárias, portanto, heurísticas que orientem o processo. Essas heurísticas diferem em onde as sementes iniciais se localizam e em quais operações de melhoramento e expansão do cluster são aplicadas a elas. [El- Rewini, Lewis, e Ali 1994] apresentam várias opções de heurísticas de clustering. É importante salientar que, sendo as técnicas heurísticas dependentes do sistema e da aplicação, não se pode afirmar com certeza que uma heurística é superior a outra no caso geral, apenas em sistemas e aplicações específicas. 6. Abordagem dinâmica A idéia básica dos algoritmos dinâmicos é realizar o escalonamento de aplicações representadas como grafos não-determinísticos, isto é, onde há parâmetros no grafo que não podem ser estimados antes do início da execução da tarefa, sendo necessário se coletar esses dados durante a execução das tarefas para guiar o escalonador. Nesse contexto, há quatro casos a considerar [El-Rewini, Lewis, e Ali 1994]: Grafos com desvios condicionais modelam um programa contendo desvios condicionais, que só podem ser avaliados durante a execução do programa, fazendo com que subprogramas inteiros (possivelmente vários nodos do grafo de tarefas) não sejam executados; Grafos com ciclos ocorrem sempre que há um laço no programa, não sendo possível se saber a priori quantas vezes o corpo do laço será executado (note que este é um caso específico de grafos com desvios condicionais); Tempo de execução variável ocorre sempre que o tempo de execução da tarefa depende de dados fornecidos na entrada do programa ou de predicados calculados durante sua execução; Tempo de comunicação variável ocorre sempre que mensagens de tamanho variável são trocadas, ou quando a comunicação entre os diversos pares de processadores tem durações diferentes. Em todos esses casos, métodos estáticos também podem ser aplicados, tentando-se prever o comportamento da aplicação antes de sua execução; no entanto, essa abordagem pode prejudicar a qualidade do escalonamento produzido caso um erro de predição ocorra [El-Rewini e Lewis 1998]. Apesar de serem os mais adequados para os casos de grafos não-determinísticos, algoritmos dinâmicos consomem muito tempo e recursos, o que leva a um overhead no tempo de execução do programa, alem do que podem gerar task trashing, quando uma tarefa é movida continuamente entre processadores, desperdiçando ainda mais tempo. Por esses motivos, o uso de técnicas dinâmicas deve ser usado com precaução [El- Rewini, Lewis, e Ali 1994] [El-Rewini e Lewis 1998].

11 A abordagem mais elementar ao escalonamento dinâmico assume nenhum conhecimento prévio sobre o programa paralelo. Nesta abordagem, um dos processadores é dedicado à execução do escalonamento, mantendo uma fila FIFO de tarefas aptas à execução e designando tarefas às filas FIFO locais dos demais processadores. Então, cada processador executa as tarefas de sua fila de espera, fazendo requisições de novas tarefas ao processador escalonador sempre que necessário. Essas requisições são enfileiradas e usadas no próximo ciclo de escalonamento. A maior desvantagem da proposta baseada em listas FIFO é sua simplicidade, que resulta em um escalonamento distante do ótimo. Uma melhora neste algoritmo é obtida quando se tenta balancear a carga entre os processadores do sistema, adicionando-se constantes de carga à heurística básica. Essas constantes requerem esforço adicional, mas podem reduzir o overhead no sistema. Uma heurística com constantes de balanceamento tenta balancear a carga dos processadores periodicamente migrando tarefas de uma fila local de espera para outra. Para evitar a ocorrência de task trashing, a heurística de rebalanceamento aplicada é dada pelo algoritmo a seguir. 1) Inicialmente, as tarefas são distribuídas a todos os processadores possíveis até que todas as tarefas estejam disseminadas pelo sistema ou que não haja mais requisições a processar. 2) Em seguida, se computa a carga média do tamanho em unidades de tempo das filas de trabalho da vizinhança direta de processadores topologicamente interconectados, baseando-se nos tempos de execução das tarefas dessa vizinhança. 3) Tenta-se mover tarefas de uma fila à outra dentro da vizinhança de tal modo que a carga de cada fila é tornada a mais próxima possível da média da vizinhança. As tarefas não são movidas a menos que as cargas de trabalho individuais dos processadores sejam tornadas mais próximas dessa média. As médias das vizinhanças são feitas ao mesmo tempo de forma distribuída no sistema de processadores e, mesmo que o balanceamento de carga seja feito em vizinhos locais, caracterizando um algoritmo não-cooperativo de acordo com a taxonomia proposta, como as vizinhanças são sobrepostas, a revisão da carga se propaga por todo o sistema. Outras vantagens desta heurística sobre a original FIFO são ela ser distribuída, e, portanto, mais escalável; ser adaptativa em relação à carga do sistema, corrigindo-se caso uma decisão errada seja tomada (novamente devido à sobreposição das vizinhanças); e realizar periodicamente o realinhamento de carga, reduzindo, assim, o overhead do sistema. Uma abordagem híbrida, combinando-se métodos estáticos e dinâmicos, também pode ser aplicada. Essa técnica funciona escalonando-se estaticamente o máximo possível do grafo de tarefas, executando correções dinâmicas durante sua execução, como, por exemplo, fazer com que as tarefas garantidamente executáveis sejam escalonadas estaticamente, e, as demais, dinamicamente. Pesquisas nesta área têm se focado em escalonamento de grafos não-determinísticos em relação a desvios condicionais [El- Rewini, Lewis, e Ali 1994].

12 7. Considerações finais Este artigo objetivava fornecer uma visão geral sobre o estado da arte em escalonamento distribuído, partindo do caso mais simples até heurísticas relativamente avançadas e algoritmos dinâmicos. Ao término da leitura deste, espera-se que o leitor tenha adquirido um conhecimento básico dos conceitos principais referentes ao assunto, bem como tenha adquirido noções referentes às diferenças entre os algoritmos estáticos e dinâmicos, e tenha compreendido a necessidade de heurísticas no tratamento computacional do problema. Para se exemplificar cada uma das classes apresentadas, sempre que possível foram apresentados e discutidos algoritmos que tentam solucionar o problema; quando não era possível se transcrever um algoritmo seja pela sua complexidade, seja pela sua extensão, uma referência ao algoritmo é indicada. Referências Casavant, T. L. e Kuhl, J. G. (1988) A Taxonomy of Scheduling in General-Purpose Distributed Computing Systems, Em IEEE Transactions on Software Engineering, páginas , IEEE Press. El-Rewini, H., Lewis, T. G. e Ali, H. H. (1994) Task Scheduling in Parallel and Distributed Systems, Prentice Hall, 1ª edição. Singhal, M. e Shivaratri, N (1994), Advanced Concepts in Operating Systems: Distributed, Database and Multiprocessor Operating Systems, McGraw-Hill Inc., 1ª edição. Bharadwaj, V., Ghose, D., Mani, V. e Robertazzi, T. G. (1996) Scheduling Divisible Loads in Parallel and Distributed Systems, IEEE Computer Society Press, 1ª edição. Chrétienne, P. e Picouleau, C. (1997) Scheduling with Communication Delays: A Survey, Em: Scheduling Theory and its Applications, Editado por Philippe Chrétienne, Edward G. Coffman Jr., Jan Karel Lenstra e Zhen Liu, John Wiley & Sons, France. El-Rewini, H. e Lewis, T. G. (1998), Distributed and Parallel Computing, Manning, 1ª edição. Kwong, Y. K. e Ahmad, I. (1999) Static Scheduling Algorithms for Allocating Directed Task Graphs to Multiprocessors, EM: ACM Computing Surveys, vol 31. n 4. Silberschatz, A. e Galvin, P. B. (1999) Operating System Concepts, John Willey & Sons, 5ª edição.

Desempenho de computação paralela

Desempenho de computação paralela Desempenho de computação paralela o paralelismo existente na aplicação decomposição do problema em subproblemas menores a alocação destes subproblemas aos processadores o modo de acesso aos dados: a existência

Leia mais

Scheduling and Task Allocation ADVANCED COMPUTER ARCHITECTURE AND PARALLEL PROCESSING Hesham El-Rewini 2005 Capítulo 10 Autor...: Antonio Edson Ceccon Professor..: Prof. Heitor Silvério Lopes Apresentação

Leia mais

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global GERÊNCIA DE RECURSOS Escalonamento Global Além de prover comunicação, recursos de acesso a rede, memória compartilhada, sistemas de arquivos distribuídos, um sistema operacional distribuído tem que poder

Leia mais

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global GERÊNCIA DE RECURSOS Escalonamento Global Além de prover comunicação, recursos de acesso a rede, memória compartilhada, sistemas de arquivos distribuídos, um sistema operacional distribuído tem que poder

Leia mais

Sistemas Operacionais. Gerência de Processador

Sistemas Operacionais. Gerência de Processador Sistemas Operacionais Gerência de Processador Sumário 1. Introdução 2. Funções Básicas do Escalonamento 3. Critérios de Escalonamento 4. Escalonamento 1. Não-Preemptivo 2. Preemptivo 5. Políticas de Escalonamento

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 10: Escalonadores Preemptivos Diego Passos Última Aula Escalonadores Não-Preemptivos Escalonadores não-preemptivos agem: Quando um processo requisita E/S. Quando

Leia mais

Toward an Architecture-Independent Analysis of Parallel Algorithms

Toward an Architecture-Independent Analysis of Parallel Algorithms 1/22 Introdução O algoritmo de aproximação Aplicações em Problemas Concretos Problemas Abertos Referências Toward an Architecture-Independent Analysis of Parallel Algorithms Mijail Gamarra Holguin 18 de

Leia mais

6 ESCALONAMENTO DE CPU

6 ESCALONAMENTO DE CPU 6 ESCALONAMENTO DE CPU O escalonamento de CPU é ponto chave da multiprogramação. Ela permite que haja mais de um processo em execução ao mesmo tempo. Em ambientes com um único processador, o escalonador

Leia mais

Teoria dos Grafos Aula 14

Teoria dos Grafos Aula 14 Teoria dos Grafos Aula 14 Aula passada MST Aula de hoje Construção de algoritmos Paradigma guloso Escalonando tarefas no tempo (interval scheduling) Projetando Algoritmos Dado um problema P, como projetar

Leia mais

Escalonamento usando múltiplos períodos

Escalonamento usando múltiplos períodos 3 Escalonamento usando múltiplos períodos O escalonamento usando múltiplos períodos consiste em dividir a carga total em fragmentos de carga e enviá-las a cada processador mais de uma vez, segundo períodos.

Leia mais

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

Notas da Aula 10 - Fundamentos de Sistemas Operacionais Notas da Aula 10 - Fundamentos de Sistemas Operacionais 1. Escalonadores preemptivos Escalonadores preemptivos são aqueles que têm a capacidade de interromper a execução de um processo para realizar alterações

Leia mais

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano Desenvolvimento de Aplicações Paralelas (gec.di.uminho.pt/lesi/ap10203/aula06aplicaçõespar.pdf) João Luís Ferreira Sobral Departamento

Leia mais

Uma Abordagem para o Escalonamento Estático de Tarefas em Multiprocessadores Baseada em Autômatos Celulares

Uma Abordagem para o Escalonamento Estático de Tarefas em Multiprocessadores Baseada em Autômatos Celulares Uma Abordagem para o Escalonamento Estático de Tarefas em Multiprocessadores Baseada em Autômatos Celulares Autor: Murillo G. Carneiro 1, Orientadora: Gina M. B. Oliveira 1 1 Programa de Pós-Graduação

Leia mais

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend Concorrência Nos sistemas Monoprogramáveis somente um programa pode estar em execução por vez, permanecendo o processador dedicado a esta única tarefa. Os recursos como memória, processador e dispositivos

Leia mais

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período Redes de Computadores Fundamentos de Sistemas Operacionais - 2º Período PARTE III: GERÊNCIA DE RECURSOS SUMÁRIO 8. GERÊNCIA DO PROCESSADOR: 8.1 Introdução; 8.2 Funções Básicas; 8.3 Critérios de Escalonamento;

Leia mais

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Pensando em Paralelo Pensar em paralelo é uma tarefa que exige disciplina

Leia mais

Estudo Comparativo de Algoritmos de Escalonamento para Grades Computacionais

Estudo Comparativo de Algoritmos de Escalonamento para Grades Computacionais Estudo Comparativo de Algoritmos de Escalonamento para Grades Computacionais Alvaro Henry Mamani Aliaga e Alfredo Goldman Instituto de Matemática e Estatística Departamento de Ciência da Computação Universidade

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 19: Memória Virtual: Introdução Diego Passos Última Aula Paginação Método de gerenciamento de memória mais usado hoje. Espaço de endereçamento de um processo é

Leia mais

Notas da Aula 11 - Fundamentos de Sistemas Operacionais

Notas da Aula 11 - Fundamentos de Sistemas Operacionais Notas da Aula 11 - Fundamentos de Sistemas Operacionais 1. Escalonamento de Tempo Real Em sistemas de tempo real, o objetivo principal do escalonador é garantir que todos os processos sejam executados

Leia mais

Estruturas de Dados Grafos

Estruturas de Dados Grafos Estruturas de Dados Grafos Prof. Eduardo Alchieri (introdução) Grafo é um conjunto de pontos e linhas que conectam vários pontos Formalmente, um grafo G(V,A) é definido pelo par de conjuntos V e A, onde:

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 8 Suporte do sistema operacional slide 1 Objetivos e funções Conveniência: Tornar o computador mais fácil de usar. Eficiência:

Leia mais

Implementação de um escalonador de processos em GPU

Implementação de um escalonador de processos em GPU Implementação de um escalonador de processos em GPU Guilherme Martins guilhermemartins@usp.br 6 de abril de 2017 Guilherme Martins (guilhermemartins@usp.br) Implementação de um escalonador de processos

Leia mais

Problemas de otimização

Problemas de otimização Problemas de otimização Problemas de decisão: Existe uma solução satisfazendo certa propriedade? Resultado: sim ou não Problemas de otimização: Entre todas as soluções satisfazendo determinada propriedade,

Leia mais

Modelos para Concorrência

Modelos para Concorrência Modelos para Concorrência Modelos para descrição de concorrência Programa Interdisciplinar de Pós Graduação em Computação Aplicada Universidade do Vale do Rio dos Sinos Gerson Cavalheiro Processamento

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 9: Escalonadores Não- Preemptivos Diego Passos Última Aula Escalonamento O que é escalonamento. Objetivos dos escalonadores. Vazão. Eficiência. Tempo de resposta...

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 11: Escalonadores: Estudos de Caso Diego Passos Últimas Aulas Escalonadores Escalonadores não-preemptivos: FIFO. SJF (com e sem previsão). Escalonadores preemptivos:

Leia mais

Sistemas Operacionais

Sistemas Operacionais Introdução Sistemas Operacionais Gerência do processador (Escalonamento na prática) Aula 06 Sistemas atuais tem uma série de particularidades Multiprocessadores e multicore Existência de memória cache

Leia mais

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP Introdução Memória Compartilhada e Distribuída _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP Um sistema de memória compartilhada faz a memória física global de um sistema igualmente

Leia mais

Sistemas Operacionais

Sistemas Operacionais Introdução Sistemas Operacionais Gerência do processador (Escalonamento na prática) Aula 06 Sistemas atuais tem uma série de particularidades Multiprocessadores e multicore Existência de memória cache

Leia mais

Seminário de Robótica Bruno de Abreu Silva

Seminário de Robótica Bruno de Abreu Silva Seminário de Robótica Bruno de Abreu Silva 1 Introdução Conceitos gerais Métodos de planejamento de rotas 2 Dadas as configurações inicial e final de um robô, descobrir uma sequência de movimentos a ser

Leia mais

Gerência de memória III

Gerência de memória III Gerência de memória III Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2016 1 / 45 Sumário 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas

Leia mais

Gerência de Recursos. Gerência do Processador

Gerência de Recursos. Gerência do Processador Gerência de Recursos Gerência do Processador Escalonamento Não-Preemptivos e Preemptivos Preempção - possibilidade de o SO interromper um processo em execução e substituí-lo por um outro. O Escalonamento

Leia mais

Notas da Aula 2 - Fundamentos de Sistemas Operacionais

Notas da Aula 2 - Fundamentos de Sistemas Operacionais Notas da Aula 2 - Fundamentos de Sistemas Operacionais 1. Ciclo de Vida de um Processo Todo processo passa por 3 fases durante sua vida: criação, execução e término. Um processo pode ser criado por outro

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Escalonamento CPU Um vez escalonado, o processo utiliza o processador, de modo: Não preemptivo (FIFO, SJF, Cooperativo) Término

Leia mais

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador 1 Introdução 1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador possa resolver problemas de forma automática

Leia mais

Escalonamento de Tarefas Divisíveis em Redes Estrela

Escalonamento de Tarefas Divisíveis em Redes Estrela Escalonamento de Tarefas Divisíveis em Redes Estrela Elbio Renato Torres Abib 1, Celso Carneiro Ribeiro 2 1 Departamento de Informática União Pioneira de Integração Social SEPS 712/912, Conj. A - Asa Sul

Leia mais

Gerência do Processador. Adão de Melo Neto

Gerência do Processador. Adão de Melo Neto Gerência do Processador Adão de Melo Neto 1 Introdução Sistemas Multiprogramáveis: Múltiplos processos podem permanecer na memória principal compartilhando o uso da CPU. POLÍTICA DE ESCALONAMENTO Como

Leia mais

Preliminares. Profa. Sheila Morais de Almeida. agosto

Preliminares. Profa. Sheila Morais de Almeida. agosto Preliminares Profa. Sheila Morais de Almeida DAINF-UTFPR-PG agosto - 2016 Algoritmos Definição - Skiena Algoritmo é a ideia por trás dos programas de computador. É aquilo que permanece igual se o programa

Leia mais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura de Computadores. Processamento Paralelo Arquitetura de Computadores Processamento Paralelo 1 Multiprogramação e Multiprocessamento Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple

Leia mais

Gerência do Processador. Adão de Melo Neto

Gerência do Processador. Adão de Melo Neto Gerência do Processador Adão de Melo Neto 1 Introdução Sistemas Multiprogramáveis: Múltiplos processos podem permanecer na memória principal compartilhando o uso da CPU. POLÍTICA DE ESCALONAMENTO São um

Leia mais

Organização. 1. Introdução 2. Medidas de Similaridade. hierárquicos, de partição) 4. Critérios numéricos para definir o número de clusters

Organização. 1. Introdução 2. Medidas de Similaridade. hierárquicos, de partição) 4. Critérios numéricos para definir o número de clusters Organização. Introdução 2. Medidas de Similaridade 3. Métodos de Agrupamento (métodos hierárquicos, de partição) 4. Critérios numéricos para definir o número de clusters Métodos de Partição Cada exemplo

Leia mais

Processos. Aula Passada. Aula Passada (2) Ciclos de CPU e de I/O (1)

Processos. Aula Passada. Aula Passada (2) Ciclos de CPU e de I/O (1) Aula Passada Processos (Aula 6) Escalonamento de Processos O SO gerencia os recursos do sistema de computação em benefício dos processos Para isso, mantem estruturas de controles Tabelas (memória, I/O,

Leia mais

Sistemas Operacionais

Sistemas Operacionais Brainstormig Sistemas Operacionais Processos e multiprogramação Aula 2 Quais são os componentes de um programa? Como podemos representar um programa em execução? Onde ele inicia a executar? Como se mapeia

Leia mais

Executivo Cíclico. Executivo Cíclico Introdução. Sistemas de Tempo Real: Executivo Cíclico Exemplo. Executivo Cíclico Introdução

Executivo Cíclico. Executivo Cíclico Introdução. Sistemas de Tempo Real: Executivo Cíclico Exemplo. Executivo Cíclico Introdução Sistemas de Tempo Real: Executivo Cíclico Rômulo Silva de Oliveira Departamento de Automação e Sistemas - DAS UFSC romulo.deoliveira@ufsc.br http://www.romulosilvadeoliveira.eng.br Setembro/201 1 Também

Leia mais

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3 Algoritmo Aproximação Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3 Heurísticas para Problemas NP- Completo Heurística: algoritmo que pode produzir um bom resultado (ou até a solução ótima),

Leia mais

Gerência de memória II

Gerência de memória II Gerência de memória II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 48 Sumário 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas

Leia mais

Sistemas Operacionais de Tempo Real. Prof. Andre Luis Meneses Silva

Sistemas Operacionais de Tempo Real. Prof. Andre Luis Meneses Silva Sistemas Operacionais de Tempo Real Prof. Andre Luis Meneses Silva andreluis.ms@gmail.com O que é um Sistema Operacional? Provê um ambiente para execução de programas. Abstração de processos para multitarefa/

Leia mais

Estudo Comparativo de Técnicas de Escalonamento de Tarefas Dependentes para Grades Computacionais

Estudo Comparativo de Técnicas de Escalonamento de Tarefas Dependentes para Grades Computacionais Estudo Comparativo de Técnicas de Escalonamento de Tarefas Dependentes para Grades Computacionais Candidato Alvaro Henry Mamani Aliaga 1 Orientador Alfredo Goldman Instituto de Matemática e Estatística

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Processos - Parte 3 Prof. Dr. Fábio Rodrigues de la Rocha (Processos - Parte 3) 1 / 19 Algoritmos de Escalonamento Nas aulas anterior vimos o ESCALONADOR, que é uma parte do SO responsável

Leia mais

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data) Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto

Leia mais

Ar qu it e t u r a a de e Sist e m a s Ope r a cion a is Fa bia n o o Ut iy a m a Ca pít u lo o 8 Ge r ê n cia a do o Pr oce ssa dor

Ar qu it e t u r a a de e Sist e m a s Ope r a cion a is Fa bia n o o Ut iy a m a Ca pít u lo o 8 Ge r ê n cia a do o Pr oce ssa dor Arquitetura de Sistem as Operacionais Fabiano Utiyam a Capítulo 8 Gerência do Processador 8/1 I ntrodução Com o surgimento dos sistemas multiprogramáveis, nos quais múltiplos processos poderiam permanecer

Leia mais

Gerência de Memória. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 45

Gerência de Memória. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 45 Gerência de Memória Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2016 1 / 45 Sumário 1 Introdução 2 Espaços de endereçamento 3 Realocação estática e

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Eduardo Ferreira dos Santos Engenharia de Computação Centro Universitário de Brasília UniCEUB Abril, 2016 1 / 20 Sumário 1 Estrutura dos Sistemas Operacionais 2 System Calls 2 / 20

Leia mais

Processos. Escalonamento de Processos

Processos. Escalonamento de Processos Processos Escalonamento de Processos Objetivos do Escalonamento Maximizar a taxa de utilização da UCP. Maximizar a vazão ( throughput ) do sistema. Minimizar o tempo de execução ( turnaround ). Turnaround:

Leia mais

Processos. Objetivos do Escalonamento. Políticas de Escalonamento. Algoritmos de Escalonamento. Maximizar a taxa de utilização da UCP.

Processos. Objetivos do Escalonamento. Políticas de Escalonamento. Algoritmos de Escalonamento. Maximizar a taxa de utilização da UCP. Objetivos do Escalonamento Maximizar a taxa de utilização da UCP. Processos Maximizar a vazão ( throughput ) do sistema. Minimizar o tempo de execução ( turnaround ). Turnaround: tempo total para executar

Leia mais

Sistemas de Computação. Processos e escalonamento

Sistemas de Computação. Processos e escalonamento Processos e escalonamento Sistema operacional Programa que age como intermediário entre o usuário de um computador e o hardware Objetivos: Executar programas do usuário e facilitar a resolução de problemas

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Thaís Vasconcelos Batista UFRN DIMAp http://www.dimap.ufrn.br/~thais thais@ufrnet.br Programa do Curso INTRODUÇÃO Conceitos Básicos Sistemas em Rede X Sistemas Distribuídos Necessidade

Leia mais

Sistemas de Informação. Sistemas Operacionais

Sistemas de Informação. Sistemas Operacionais Sistemas de Informação Sistemas Operacionais PROCESSOS E THREADS PARTE III SUMÁRIO 4. GERÊNCIA DO PROCESSADOR: 4.1 Introdução; 4.2 Funções Básicas; 4.3 Critérios de Escalonamento; 4.4 Escalonamentos Não-Preemptivos

Leia mais

Conceitos Básicos dos Sistemas de Tempo Real

Conceitos Básicos dos Sistemas de Tempo Real Conceitos Básicos dos Sistemas de Tempo Real Rômulo Silva de Oliveira Edição do Autor, 2018 www.romulosilvadeoliveira.eng.br/livrotemporeal Outubro/2018 1 Sistemas computacionais com requisitos de tempo

Leia mais

Escalonamento de processos. Grupo 7. Levi Arão Xavier Marcel Eduardo Del Dottore

Escalonamento de processos. Grupo 7. Levi Arão Xavier Marcel Eduardo Del Dottore Escalonamento de processos Grupo 7 Levi Arão Xavier Marcel Eduardo Del Dottore Orientador: Prof. Dr. Norian Marranghello São José do Rio Preto, 02 de Maio de 2002 Sumário 1 Introdução 2 Modelos de Escalonamento

Leia mais

Replicação em sistemas web

Replicação em sistemas web Sistemas Distribuídos maio de 2015 Servidores Web tolerância a falhas desempenho/escalabilidade desempenho: uso de servidores mais potentes (scale-up x scale-out) caching Servidores Web tolerância a falhas

Leia mais

Teoria da Computação. Complexidade computacional classes de problemas

Teoria da Computação. Complexidade computacional classes de problemas Teoria da Computação Complexidade computacional classes de problemas 1 Universo de problemas Problemas indecidíveis ou não-computáveis Não admitem algoritmos Problemas intratáveis Não admitem algoritmos

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais

Sistemas Operacionais. Escalonamento de processos

Sistemas Operacionais. Escalonamento de processos Sistemas Operacionais Escalonamento de processos 1 Escalonamento de Processos Sistemas Interativos Algoritmos para Sistemas Interativos: First-Come-First-Served (FIFO) Round-Robin; Prioridade; Múltiplas

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 10 Escalonamento Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: Prof. SO José - Prof. Juan Edilberto Espantoso Silva Sumário Introdução

Leia mais

Otimização Combinatória - Parte 4

Otimização Combinatória - Parte 4 Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional

Leia mais

2 Definição do Problema

2 Definição do Problema Definição do Problema. Formulação Matemática O problema do Fluxo Máximo entre todos os pares de nós surge no contexto de redes, estas representadas por grafos, e deriva-se do problema singular de fluxo

Leia mais

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 09. Escalonadores. Conceito, escalonamento, filas de escalonamento e tipos de escalonadores.

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 09. Escalonadores. Conceito, escalonamento, filas de escalonamento e tipos de escalonadores. INTRODUÇÃO AOS SISTEMAS OPERACIONAIS setembro/2013 SEMANA 09 Escalonadores. Conceito, escalonamento, filas de escalonamento e tipos de escalonadores. 1 - Introdução A entidade responsável pelo escalonamento

Leia mais

Algoritmo de Roteamento

Algoritmo de Roteamento Universidade Federal Do Piauí(UFPI) Colégio Técnico De Teresina(CTT) Professor:Valdemir Reis Disciplina: Redes de Computadores Algoritmo de Roteamento Aline Fernandes João Alberto Mesquita José Pinheiro

Leia mais

Escalonamento de Aplicações BoT em Ambiente de Nuvem

Escalonamento de Aplicações BoT em Ambiente de Nuvem Escalonamento de Aplicações BoT em Ambiente de Nuvem Maicon Ança dos Santos 1 Fernando Angelin 1 Gerson Geraldo H. Cavalheiro 1 1 Universidade Federal de Pelotas {madsantos,fangelin,gerson.cavalheiro}@inf.ufpel.edu.br

Leia mais

Introdução Ferramentas Unix MapReduce Outras Ferramentas. Batch Processing. Fabiola Santore. Universidade Federal do Paraná

Introdução Ferramentas Unix MapReduce Outras Ferramentas. Batch Processing. Fabiola Santore. Universidade Federal do Paraná Fabiola Santore Universidade Federal do Paraná Sumário 1. Introdução 2. Ferramentas Unix 2.1 Análise de log 2.2 Filosofia Unix 3. MapReduce 3.1 Procedimento 3.2 Reduce: Joins e Agrupamento 3.3 Análise

Leia mais

Sistemas de Tempo-Real

Sistemas de Tempo-Real Aula 5 Escalonamento usando prioridades fixas Escalonamento on-line com prioridades fixas O critério Rate-Monotonic limite de utilização de CPU Os critérios Deadline-Monotonic e prioridades fixas arbitrárias

Leia mais

Introdução à Computação: Sistemas de Computação

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

Equivalência de Fluxos e Modelagem Hierárquica. Profa. Jussara M. Almeida 1 o Semestre de 2014

Equivalência de Fluxos e Modelagem Hierárquica. Profa. Jussara M. Almeida 1 o Semestre de 2014 Equivalência de Fluxos e Modelagem Hierárquica Profa. Jussara M. Almeida 1 o Semestre de 2014 Modelagem Hierárquica Modelos mais sofisticados que podem incluir detalhes adicionais do sistema sendo representado

Leia mais

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES João Ricardo Kohler Abramoski (PAIC/FUNDAÇÃO ARAUCÁRIA), Sandra Mara Guse Scós Venske (Orientadora), e-mail: ssvenske@unicentro.br

Leia mais

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira Ementa e Objetivos Ementa: Análise de Algoritmos: Notação O e Análise Assintótica.

Leia mais

Introdução a Sistemas Operacionais. Adão de Melo Neto

Introdução a Sistemas Operacionais. Adão de Melo Neto Introdução a Sistemas Operacionais Adão de Melo Neto 41 Definição de SO Sistema Operacional É um conjunto de rotinas (programa) executado pelo processador que controla o funcionamento do computador como

Leia mais

Escalonamento (Tarefas Esporádicas)

Escalonamento (Tarefas Esporádicas) Universidade Federal do Amazonas Faculdade de Tecnologia Escalonamento (Tarefas Esporádicas) Lucas Cordeiro lucascordeiro@ufam.edu.br Notas de Aula Baseado nas notas de aula do Prof. Francisco Vasques,

Leia mais

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016 NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016 Metaheurística: São técnicas de soluções que gerenciam uma interação entre técnicas de busca local e as estratégias de nível superior para criar um processo de

Leia mais

Otimização Combinatória - Parte 3

Otimização Combinatória - Parte 3 Graduação em Matemática Industrial Otimização Combinatória - Parte 3 Prof. Thiago Alves de Queiroz Unidade de Matemática e Tecnologia - CAC/UFG 2/2016 Thiago Queiroz (DM) Parte 3 2/2016 1 / 23 Problemas

Leia mais

23/05/12. Consulta distribuída. Consulta distribuída. Objetivos do processamento de consultas distribuídas

23/05/12. Consulta distribuída. Consulta distribuída. Objetivos do processamento de consultas distribuídas Processamento de Consultas em Bancos de Dados Distribuídos Visão geral do processamento de consultas IN1128/IF694 Bancos de Dados Distribuídos e Móveis Ana Carolina Salgado acs@cin.ufpe.br Bernadette Farias

Leia mais

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru 1 Introdução Atualmente a demanda pela construção de novos sistemas de software tem aumentado. Junto com esse aumento também cresce a complexidade das soluções que estão sendo desenvolvidas, o que torna

Leia mais

Um Algoritmo de Escalonamento com Intercalação de Processos em Grades Computacionais

Um Algoritmo de Escalonamento com Intercalação de Processos em Grades Computacionais 6 Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos 413 Um Algoritmo de Escalonamento com Intercalação de Processos em Grades Computacionais Luiz F. Bittencourt, Edmundo R. M. Madeira

Leia mais

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação MULTIPROCESSADORES

Leia mais

Davidson Rodrigo Boccardo

Davidson Rodrigo Boccardo Fundamentos em Sistemas de Computação Davidson Rodrigo Boccardo flitzdavidson@gmail.com Componentes de um SO Gerenciamento de Processos Sistema de Arquivos Gerenciamento de Entrada/Saída Gerenciamento

Leia mais

PCC173 - Otimização em Redes

PCC173 - Otimização em Redes PCC173 - Otimização em Redes Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 31 de maio de 2017 Marco Antonio M. Carvalho

Leia mais

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Casos de Teste e Cenários de Teste Técnicas de Teste Técnica de Teste Estrutural 2 Casos

Leia mais

Davidson Rodrigo Boccardo

Davidson Rodrigo Boccardo Gerenciamento de processos Davidson Rodrigo Boccardo flitzdavidson@gmail.com Revisão Critérios de alocação: Utilização da CPU Produtividade (Throughput) Número de processos finalizados por unidade de tempo

Leia mais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns

Leia mais

Barramento. Prof. Leonardo Barreto Campos 1

Barramento. Prof. Leonardo Barreto Campos 1 Barramento Prof. Leonardo Barreto Campos 1 Sumário Introdução; Componentes do Computador; Funções dos Computadores; Estrutura de Interconexão; Interconexão de Barramentos Elementos de projeto de barramento;

Leia mais

4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos

4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos 46 4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos Para definir a representação de um modelo para problemas de planejamento

Leia mais

Buscas Informadas ou Heurísticas - Parte II

Buscas Informadas ou Heurísticas - Parte II Buscas Informadas ou Heurísticas - Parte II Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Graduação em Ciência da Computação / 2006 FUNÇÕES HEURÍSTICAS - 1/7 FUNÇÕES HEURÍSTICAS - 2/7 Solução

Leia mais

Escalonamento de processos

Escalonamento de processos de processos Carlos Gustavo A. da Rocha Nos computadores atuais frequentemente temos vários processos (threads) competindo por um pequeno número de CPUs Nestes casos uma escolha deve ser feita de qual

Leia mais

Algoritmo CLIQUE (Clustering In QUEst)

Algoritmo CLIQUE (Clustering In QUEst) Algoritmo CLIQUE (Clustering In QUEst) Marcelo Camacho de Souza Nº USP: 3199616 Roteiro Algoritmo CLIQUE Exemplo Prático Complexidade Computacional Vantagens e Desvantagens Autores (IBM Almaden Research

Leia mais

Um Estudo sobre Algoritmos de Escalonamento para Grids Computacionais

Um Estudo sobre Algoritmos de Escalonamento para Grids Computacionais Um Estudo sobre Algoritmos de Escalonamento para Grids Computacionais Carlos Fran F. Dantas 1, Sebastião Emídio A. Filho 1 1 Departamento de Informática Universidade do Estado do Rio Grande do Norte (UERN)

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Motivação Aplicações Motivam Possibilita Engenharia Motivação! Aplicações cada vez mais complexas! Qual a técnica mais comum para redução de complexidade? " Modularização Dividir

Leia mais

5 Usando as Representações de Design Rationale

5 Usando as Representações de Design Rationale 5 Usando as Representações de Design Rationale Como mencionamos anteriormente, representar design rationale em uma linguagem formal usando o modelo formal dos artefatos nos permite atribuir semântica ao

Leia mais

Chamadas de Sistema (SYSCALL)

Chamadas de Sistema (SYSCALL) Chamadas de Sistema (SYSCALL) Eduardo Ferreira dos Santos Engenharia de Computação Centro Universitário de Brasília UniCEUB Abril, 2016 1 / 26 Sumário 1 Estrutura dos Sistemas Operacionais 2 System Calls

Leia mais

Algoritmos e Estruturas de Dados II. Trabalho Prático 2

Algoritmos e Estruturas de Dados II. Trabalho Prático 2 Algoritmos e Estruturas de Dados II Entrega: 01/10/09 Devolução: 22/10/08 Trabalho individual Prof. Jussara Marques de Almeida Trabalho Prático 2 Simulação é uma técnica muito utilizada para avaliação

Leia mais