Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas de Tempo Real Material Teórico Responsável pelo Conteúdo: Prof. Dr. Cléber Silva Ferreira da Luz Revisão Textual: Prof.ª Esp. Kelciane da Rocha Campos Métodos de Escalonamento • Introdução; • Escalonamento Preemptivo e não Preemptivo; • Características de Escalonamento; • Escalonamento de Tarefas; • Conclusões e Resumo da Unidade. · Apresentar os principais algoritmos de escalonamento no âmbito de sistemas de tempo real distribuído. OBJETIVO DE APRENDIZADO Métodos de Escalonamento Orientações de estudo Para que o conteúdo desta Disciplina seja bem aproveitado e haja maior aplicabilidade na sua formação acadêmica e atuação profissional, siga algumas recomendações básicas: Assim: Organize seus estudos de maneira que passem a fazer parte da sua rotina. Por exemplo, você poderá determinar um dia e horário fixos como seu “momento do estudo”; Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma alimentação saudável pode proporcionar melhor aproveitamento do estudo; No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você também encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua interpretação e auxiliarão no pleno entendimento dos temas abordados; Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus- são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e de aprendizagem. Organize seus estudos de maneira que passem a fazer parte Mantenha o foco! Evite se distrair com as redes sociais. Mantenha o foco! Evite se distrair com as redes sociais. Determine um horário fixo para estudar. Aproveite as indicações de Material Complementar. Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma Não se esqueça de se alimentar e de se manter hidratado. Aproveite as Conserve seu material e local de estudos sempre organizados. Procure manter contato com seus colegas e tutores para trocar ideias! Isso amplia a aprendizagem. Seja original! Nunca plagie trabalhos. UNIDADE Métodos de Escalonamento Introdução Habitualmente, um sistema de tempo real recebe diversos eventos do ambiente ao mesmo tempo. A qual sistema deve responder? Em muitos casos, o sistema possui múltiplos recursos de processamento e múltiplos eventos para responder. Neste caso, devem-se escalonar os múltiplos eventos para serem processados pelos múltiplos recursos de processamento. Os múltiplos eventos são processados de forma paralela ou distribuída, isto é, simultaneamente. O primeiro passo é entender o que é um escalonamento. Problemas que envol- vem escalonamento ocorrem em diversas áreas. Por exemplo, problema de esca- lonamento ocorrem em hospitais, universidades, indústrias, entre outros. Em uni- versidades, o problema de escalonamento aparece na atribuição de aulas para os professores e na alocação de sala para as disciplinas. Na alocação de sala, é preciso alocar as salas para as disciplinas, tomando-se cuidado para não alocar uma mesma sala para duas disciplinas e seguindo-se algumas restrições preestabelecidas, como o horário das disciplinas. Em hospitais, o problema de escalonamento ocorre na alocação de salas para realizar cirurgias, alocação de médicos e enfermeiros para atender os pacientes, entre outras formas. De um modo geral, o problema de escalonamento é definido como se segue: dados y recursos e z tarefas, é preciso alocar os y recursos para as z tarefas, res- peitando-se uma série de restrições preestabelecidas, a fim de alcançar um objetivo final (TANENBAUM, 2003). O escalonamento visa otimizar a performance do sistema de acordo com um critério estabelecido no escalonamento. A otimização é realizada através da divisão da capacida- de de processamento entre os diversos recursos de processamento presentes no sistema de tempo real. Dividindo-se o processamento, o tempo de resposta é diminuído. Escalonamento aparece em diversas áreas e de formas variadas. Para um me- lhor entendimento sobre o conceito de escalonamento, é necessário o entendimen- to dos seguintes termos: • Recursos: podem ser entendidos como computadores, dispositivos, apare- lhos, máquinas, entre outros. • Tarefa: pode ser vista como um conjunto de operações que juntas completam uma rotina. • Escalonador: é o componente responsável por gerenciar os recursos e esca- lonar as tarefas para os mesmos. O escalonador é responsável por fornecer a solução de escalonamento das tarefas para os recursos disponíveis. • Escalonamento: o termo “escalonamento” caracteriza o processo de aloca- ção de recursos às tarefas como um todo. Uma solução de escalonamento mostra como o problema de alocação de recursos às tarefas pode ser resol- vido. As tarefas podem ser escalonadas dinamicamente, em tempo real, ou estaticamente, antes de começar a execução da aplicação. 8 9 Em sistemas de tempo real, os métodos de escalonamento devem garantir a priori que o sistema cumpra as suas metas temporais, isto é, que o sistema realize todas as tarefas no intervalo de tempo definido, ou seja, não pode haver perda de prazo. Habitualmente, o mecanismo de escalonamento do sistema de tempo real co- nhece o tempo de execução de todas as tarefas que devem ser realizadas, tanto para eventos periódicos, como para eventos esporádicos (ALMEIDA, 2013). Escalonamento Preemptivo e não Preemptivo Existem duas classificações de escalonamento, que são: • preemptivo; e • não preemptivo. Quando uma tarefa é escalonada para ser executada em um recurso de pro- cessamento e esta tarefa tem o direito de terminar todas as ações que ela precisa fazer, dizemos que o escalonamento é não preemptivo. Quando uma tarefa pode ser interrompida no momento de sua execução, isto é, ela não termina todas as suas ações, dizemos que o escalonamento é preemptivo. Em outras palavras, se um recurso pegar uma tarefa ele terá que a concluir (não preemptivo), ou se o mesmo começar a executar uma tarefa e logo depois houver uma substituição de tarefas, estamos falando de um escalonamento preemptivo. Características de Escalonamento Alguns termos são utilizados para caracterizar o escalonamento. Alguns desses termos são: • Turnaround Time: é o tempo que decorre entre o instante em que a tarefa é submetida para o recurso e o instante em que ela é concluída. • Tempo de Resposta: é o tempo que decorre entre a submissão de um pedido (evento) e o início da resposta. • Deadline: é o tempo no qual um determinado resultado de computação deve estar disponível, isto é, o prazo de tempo em que um evento deve ocorrer. Sempre que forem especificados deadlines, o critério de escalonamento deve garantir que os deadlines são cumpridos, caso não seja possível deve garantir que o mínimo número de deadlines seja ultrapassado. • Prioridade: cada tarefa é associada a uma determinada prioridade que lhe garante um tratamento diferenciado por parte do escalonador em relação às outras tarefas, isto é, aquela tarefa que possui uma prioridade maior será esca- lonada para ser executada antes que as outras. 9 UNIDADE Métodos de Escalonamento Escalonamento de Tarefas Um escalonamento de tarefas pode ser classificado em dois grupos: • Escalonamento Estático; e • Escalonamento Dinâmico. Essa classificação baseia-se nas regras de escalonamento quanto à consideração do estado atual da aplicação. Por exemplo, no escalonamento estático não são consideradas as alterações do estado atual da aplicação. Dessa forma, as tarefas são alocadas antes da execução da aplicação e a execução é feita em função do escalonamento estabelecido. O escalonamento dinâmico detecta alterações no estado atual da aplicação e ge- rencia os recursos com basenas informações atuais da aplicação. As tarefas são alo- cadas em tempo de execução, considerando-se as informações e condições da apli- cação. Um método de escalonamento implementa uma política de escalonamento. Na literatura, as políticas de escalonamento dinâmico mais comuns são: • FIFO; • HPF; • SJF; • HRN; • RR. Na política de escalonamento FIFO (First In First Out), as tarefas são colocadas em uma fila ordenada por ordem de chegada. Em FIFO, o escalonamento é feito obedecendo-se ao instante de chegada de cada tarefa, ou seja, a tarefa que ocupa o primeiro lugar na fila será a próxima a ser escalonada para o recurso. A tarefa escalonada recebe o uso do recurso até a sua finalização. Quando uma tarefa que estava em execução é finalizada, a próxima tarefa que se encontra na fila é, então, escalonada para utilizar o recurso. Este algoritmo possui a característica de ser fácil e simples para implementar. A política de escalonamento HPF (Highest Priority First), também chamado de escalonamento por prioridades, é uma variante do escalonamento FIFO. Em HPF, as tarefas em espera pelo recurso são organizadas em uma fila obedecendo à sua prioridade. Na fila, as posições são ocupadas por tarefas em ordem decrescente de prioridade. Com isso, a função de seleção para o escalonamento favorece as tarefas consideradas mais importantes. A política de escalonamento SJF (Shortest Job First) é um caso especial do HPF, em que o escalonamento é realizado em função do tempo de execução das tarefas. As tarefas em espera pelos recursos são organizadas em uma fila obede- cendo a seu tempo de execução. As tarefas com menores tempos de execução são colocadas na frente da fila. Dessa forma, as tarefas com menores tempos de 10 11 execução são escalonadas primeiro. Este algoritmo é considerado um algoritmo ótimo porque realiza uma pequena otimização no tempo de espera, tempo que as tarefas devem esperar para ser selecionadas. Este algoritmo também é usado essencialmente para escalonamento a longo prazo. A política de escalonamento HRN (Highest Response-Ratio Next) é uma ver- são mais eficiente do escalonamento SJF. Em HRN, é realizado um balanceamento entre a duração da tarefa e seu tempo de espera, de forma a compensar a espera excessiva de tarefas de maior duração. Neste algoritmo, cada tarefa é associada com uma prioridade. Os recursos de processamento são alocados para as tarefas com as maiores prioridades. Este escalonamento pode ser preemptivo ou não pre- emptivo. A prioridade é representada por um número inteiro positivo. A política de escalonamento RR (Round Robin) é uma política de escalonamen- to simples e elegante. Este algoritmo atribui uma fração de tempo para cada tarefa em partes iguais. Métodos de Escalonamentos de Tarefas Existem diversos métodos de escalonamento de tarefas na literatura. Nesta se- ção, são apresentados os métodos de escalonamento estático e os dinâmicos Self- -Scheduling e Guided. Algoritmos de Escalonamento Estático O algoritmo de escalonamento estático consiste em atribuir as tarefas aos recur- sos em tempo de compilação. Desta forma, antes de o processamento começar cada recurso de processamento já sabe quais tarefas terá que processar. Para um melhor entendimento, considere as 12 tarefas apresentadas na Figura 1. Cada tarefa possui um tempo de processamento em minuto - por exemplo, a tarefa 1 leva 7 minutos para ser processada. Já a tarefa 8 leva 17 minutos para ser processada, enquanto a tarefa 12 leva 17 minutos para ser processada. Tarefas 5 6 7 8 9 10 1111 432 12 4 9 6 17 33 11 17 2252 17 Figura 1 – Tarefas Essas tarefas devem ser escalonadas pelos 4 recursos de processamento dispo- níveis no sistema de tempo real. A Figura 2 ilustra os 4 recursos. Recurso 1 Recurso 3 Recurso 4Recurso 2 Figura 2 – Recursos de processamento 11 UNIDADE Métodos de Escalonamento Agora, realizando-se o escalonamento estático utilizando a política FIFO, o es- calonamento fica conforme ilustrado na Figura 3. Recurso 1 4 33 7 Recurso 3 6 1 5 Recurso 2 9 11 2 Recurso 4 17 22 17 Figura 3 – Escalonamento estático Neste escalonamento, o Recurso 1 ficou responsável por processar as tarefas 7, 4 e 33. O Recurso 2 as tarefas 2, 9 e 11. Já o Recurso 3 as tarefas 5, 6 e 1. E por fim, o Recurso 4 ficou com as tarefas 22, 17 e 17. Somando-se as cargas de trabalho, é possível perceber que não houve uma boa distribuição de carga de trabalho neste escalonamento. A próxima seção apresenta detalhes sobre o desba- lanceamento de carga causado neste cenário. Desbalanceamento de Carga Para este escalonamento, houve uma má distribuição de carga. Observe a Figura 4, esta figura mostra o total de carga atribuída para cada recurso de processamen- to. É possível observar que a carga de trabalho entre tais recursos ficou extrema- mente diferente, provocando uma má distribuição de carga de trabalho. Recurso 1 4 33 7 Recurso 3 6 1 5 Recurso 2 9 11 2 Recurso 4 17 22 17 Total 44 22 12 56 Figura 4 – Total de carga de trabalho 12 13 Habitualmente, no escalonamento procura-se realizar um bom balanceamento de carga, isto é, cada recurso de processamento deve possuir uma carga de tra- balho justa e igualitária. O Balanceamento de Carga permite balancear as cargas de trabalhos entre os processadores, de forma que todos tenham uma carga de trabalho justa e igual. Um mau balanceamento de carga entre os recursos de pro- cessamento pode afetar o desempenho da aplicação. Neste cenário, é possível perceber que o Recurso 3 irá terminar o processamen- to primeiro e que o último recurso a terminar será o Recurso 4. Dessa forma, o Recurso 3 ficará 34 (56-22) minutos ocioso, isto é, 34 minutos parado, sem nada para processar. Ociosidade no processamento não é legal. A ociosidade pode de- gradar o desempenho da aplicação. Os algoritmos de escalonamento dinâmico realizam uma melhor distribuição de car- ga e quase sempre deixando uma ociosidade muito pequena no processamento. A pró- xima seção apresenta mais detalhes sobre os algoritmos de escalonamento dinâmico. Algoritmos de Escalonamento Dinâmico No algoritmo de escalonamento dinâmico, as tarefas são atribuídas para os re- cursos em tempo de processamento. Assim, o recurso somente sabe quais as tare- fas que terá que processar na hora da execução. Habitualmente, os algoritmos de escalonamento dinâmico possuem a caracte- rística de realizarem uma boa distribuição de carga de trabalho entre os diversos recursos de processamento presentes no sistema computacional. Dessa forma, os algoritmos dinâmicos permitem não haver ociosidade no processamento, ou a ociosidade é quase nula. Existem diversos algoritmos de escalonamento dinâmico, entre os quais estão: • Self-Scheduling; e • Guided. Os algoritmos Self-Scheduling e Guided são indicados para escalonamentos em que o tempo da chegada das tarefas é desconhecido. As tarefas chegam dinamica- mente. Estes algoritmos implicitamente realizam um balanceamento de carga no processamento. As próximas seções apresentam detalhes sobre esses dois algorit- mos de escalonamento dinâmicos. Algoritmo Self-Scheduling O algoritmo de escalonamento Self-Scheduling é usado principalmente para lidar com o balanceamento de cargas. Durante o Self-Scheduling, o processador ocioso busca a próxima tarefa ou um bloco de tarefas de tamanho definido pelo usuário em um pool de tarefas compartilhadas. Um processo (processo mestre) fica responsável por enviar tarefas para os ou- tros processos (processos escravos). Quando um escravo termina de processar a sua tarefa ou o seu bloco, ele envia uma mensagem para o nó mestre avisando que 13 UNIDADE Métodos de Escalonamento terminou a execução e logo em seguida, o nó mestre envia outra tarefa ou bloco de tarefa para este escravo, conforme ilustrado na Figura 5. Recurso 1 Recurso 3Recurso 2 Recurso 4 Send() Receive() Send() Receive() Send() Receive() Send() Receive() Figura 5 – Envio e recebimentode dados no algoritmo Self-Scheduling No Self-Scheduling, as atribuições de cargas são realizadas em passos. Primei- ro o recurso mestre envia as tarefas para os recursos. Após os recursos terminarem a sua tarefa, os mesmos solicitam mais tarefas para o recurso mestre. A Figura 6 ilustra uma primeira atribuição realizada pelo algoritmo de escalonamento dinâmi- co Self-Scheduling, considerando as tarefas apresentadas na Figura 1 e os recur- sos apresentados na Figura 2. Recurso 1 7 Recurso 3 5 Recurso 2 2 Recurso 4 22 Figura 6 – Primeira atribuição de carga de trabalho pelo algoritmo Self-Scheduling Nesta atribuição, o primeiro recurso a terminar a sua tarefa é o recurso 2. Após terminar a sua tarefa, o recurso 2 solicita mais trabalho para o recurso mestre, que o envia logo em seguida. Dessa forma, o escalonamento fica igual ao demonstrado na Figura 7. Recurso 1 7 Recurso 3 5 Recurso 2 4 2 Recurso 4 22 Figura 7 – Segunda atribuição de carga de trabalho realizada pelo algoritmo Self-Scheduling 14 15 O próximo recurso de processamento a terminar a sua tarefa é o recurso 3, que, por sua vez, solicita mais tarefa ao recurso mestre, que a envia logo em seguida. Agora o escalonamento fica igual ao apresentado na Figura 8. Recurso 1 7 Recurso 3 5 Recurso 2 4 2 Recurso 4 22 9 Figura 8 – Terceira atribuição de carga de trabalho realizada pelo algoritmo Self-Scheduling Na próxima atribuição, o recurso que terminar o processamento irá solicitar mais tarefas para o recurso mestre, que, por sua vez, enviará mais tarefas ao re- curso solicitador. Recurso 1 7 Recurso 3 5 Recurso 2 4 2 Recurso 4 22 9 Figura 9 – Atribuição de carga de trabalho realizada pelo algoritmo Self-Scheduling E assim, o escalonamento segue até que todas as tarefas sejam processadas. A Figura 10 ilustra todo o processamento das tarefas pelos recursos de processamento. Recurso 1 7 Recurso 3 5 Recurso 2 4 2 Recurso 4 22 9 Figura 10 – Atribuição de carga de trabalho realizada pelo algoritmo Self-Scheduling 15 UNIDADE Métodos de Escalonamento Algoritmo Guided No algoritmo de escalonamento Guided, a atribuição de tarefas é realizada em blocos dinamicamente. O tamanho de bloco é calculado dinamicamente e varia ao longo das atribuições durante a execução (TANENBAUM, 2003). A ideia principal deste algoritmo é iniciar o processamento das iterações do laço atribuindo quantias de iterações cujo tamanho começa com n/p e continua a dimi- nuir até que todas as tarefas estejam atribuídas. Em n/p, n é a quantidade de tarefas e p é a quantidade de recurso de processamento. Assim como o algoritmo Self-Scheduling, o algoritmo Guided implementa um balanceamento de carga implicitamente. Este algoritmo também é muito indicado em situações em que o tempo da chegada das tarefas não é conhecido. Conclusões e Resumo da Unidade Frequentemente, um sistema de tempo real recebe diversos eventos do seu am- biente, muitas vezes tais eventos devem ser respondidos simultaneamente, em pa- ralelo. Dessa forma, um sistema de tempo real deve possuir bons mecanismos de escalonamentos para escalonar as suas diversas tarefas entre os diversos recursos presentes no sistema computacional. Problemas de escalonamento aparecem em diversas áreas, tais como: industrial, comercial, bancária, escolar, entre outras. De um modo geral, o problema de esca- lonamento é definido como se segue: dados y recursos e z tarefas, é preciso alocar os y recursos para as z tarefas, respeitando-se uma série de restrições preestabele- cidas, a fim de alcançar um objetivo final (AROCA, 2008). Em um sistema de tempo real, o mecanismo de escalonamento deve: • escalonar as tarefas para serem executadas pelos recursos; • manter os recursos de processamento ocupados; • balancear a utilização dos recursos de processamentos; • tratar todos os processos de forma igual; • garantir prioridades quando necessário; • manter um equilíbrio entre resposta e utilização. O escalonamento também visa otimizar a performance do sistema de acordo com um critério estabelecido no escalonamento. A otimização é realizada através da divisão da capacidade de processamento entre os diversos recursos de proces- samento presentes no sistema de tempo real. Dividindo-se o processamento, o tempo de resposta é diminuído. O mecanismo de escalonamento deve ser composto por: • Recursos: que podem ser entendidos como computadores, dispositivos, apa- relhos, máquinas, entre outros. 16 17 • Tarefa: que pode ser vista como um conjunto de operações que juntas com- pletam uma rotina. • Escalonador: que é o componente responsável por gerenciar os recursos e escalonar as tarefas para os mesmos. • Escalonamento: o termo “escalonamento” caracteriza o processo de aloca- ção de recursos às tarefas como um todo. Um escalonamento pode ser classificado como Preemptivo e não Preemptivo. Quando uma tarefa é escalonada para ser executada em um recurso de processa- mento e esta tarefa tem o direito de terminar todas as ações que ela precisa fazer, dizemos que o escalonamento é não preemptivo. Quando uma tarefa pode ser interrompida no momento de sua execução, isto é, ela não termina todas as suas ações, dizemos que o escalonamento é preemptivo. Um escalonamento de tarefas pode ser classificado em dois grupos: Escalona- mento Estático e Escalonamento Dinâmico (TANENBAUM, 2003). No escalo- namento estático, não são consideradas as alterações do estado atual da aplicação. Dessa forma, as tarefas são alocadas antes da execução da aplicação e a execução é feita em função do escalonamento estabelecido. O escalonamento dinâmico de- tecta alterações no estado atual da aplicação e gerencia os recursos com base nas informações atuais da aplicação. As tarefas são alocadas em tempo de execução, considerando-se as informações e condições da aplicação. Um método de escalo- namento implementa uma política de escalonamento. Na literatura, as políticas de escalonamento dinâmico mais comuns são: • FIFO (First In First Out): as tarefas são colocadas em uma fila ordenada por ordem de chegada. Em FIFO, o escalonamento é feito obedecendo-se ao ins- tante de chegada de cada tarefa, ou seja, a tarefa que ocupa o primeiro lugar na fila será a próxima a ser escalonada para o recurso. • HPF (Highest Priority First), também chamado de escalonamento por priori- dades, é uma variante do escalonamento FIFO. Em HPF, as tarefas em espera pelo recurso são organizadas em uma fila obedecendo à sua prioridade. • SJF (Shortest Job First) é um caso especial do HPF, em que o escalonamen- to é realizado em função do tempo de execução das tarefas. As tarefas em espera pelos recursos são organizadas em uma fila obedecendo a seu tempo de execução. As tarefas com menores tempos de execução são colocadas na frente da fila. • HRN (Highest Response-Ratio Next) é uma versão mais eficiente do esca- lonamento SJF. Em HRN, é realizado um balanceamento entre a duração da tarefa e seu tempo de espera, de forma a compensar a espera excessiva de tarefas de maior duração. Neste algoritmo, cada tarefa é associada a uma prioridade. • RR (Round Robin) é um algoritmo de escalonamento simples e elegante. Este algoritmo atribui uma fração de tempo para cada tarefa em partes iguais. 17 UNIDADE Métodos de Escalonamento No algoritmo de escalonamento dinâmico, as tarefas são atribuídas para os re- cursos em tempo de processamento. Assim, o recurso somente sabe quais as tare- fas que terá que processar na hora da execução. Existem diversos algoritmos de escalonamento dinâmicos, entre os quais estão: • Self-Scheduling; e • Guided. O algoritmo de escalonamento Self-Scheduling é usado principalmente para lidar com o balanceamento de cargas. Durante o Self-Scheduling, o processador ocioso busca a próxima tarefa ou um bloco de tarefas de tamanho definido pelo usuário em um pool de tarefas compartilhadas. No algoritmo de escalonamento Guided, a atribuição de tarefas é realizada em blocosdinamicamente. O tamanho de bloco é calculado dinamicamente e varia ao longo das atribuições durante a execução. Muitas vezes, um sistema de tempo real deve responder a eventos simultanea- mente, isto é, em paralelo. Dessa forma, o sistema de tempo real deve possuir um mecanismo de escalonamento, visando escalonar de forma correta as tarefas entre os diversos recursos de processamento. Nesta unidade, estudamos os principais métodos e algoritmos de escalonamento de tarefa. 18 19 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Vídeos Sistema em Tempo Real - SO https://youtu.be/gaO9o-ZfMiU Sistema em Tempo Real https://youtu.be/HTLZUCkdQbA Leitura Sistemas de Tempo Real – Parte 1 https://goo.gl/K29zuC Sistemas de Tempo Real https://goo.gl/4bcgvB 19 UNIDADE Métodos de Escalonamento Referências ALMEIDA, M. B. de. Implementando sistemas operacionais de tempo real em microcontroladores. 2013. (ebook). SHAW, A. C. Sistemas e software de tempo real. Porto Alegre: Bookman, 2003. AROCA, R. V. Análise de sistemas operacionais de tempo real para aplica- ções de robótica e automação. Dissertação de mestrado. Orientador: Prof. Dr. Glauco Augusto de Paula Caurin. Escola de Engenharia de São Carlos. Universi- dade de São Paulo. São Carlos, 2008. Disponível em: <file:///C:/Users/campo/ Downloads/DissertacaoArocaMestrado2008.pdf>. Acesso em: 26 jul. 2018. TANENBAUM, A. S. Sistemas operacionais modernos. 2ª edição. São Paulo: Pearson Prentice Hall, 2003. MARTIN, T. Design of real time systems. Prentice-Hall, Inc. Upper Saddle River, NJ, USA, 1967. CEDENO, W.; Laplante, P. A. An overview of real-time operating systems. Jour- nal of the Association for Laboratoty Automation, 12:40-45. 20
Compartilhar