Processos

32. processos Escalonador de processos Processos e Threads Criação de processos e thread. Prioridades Programação Concorrente Programação concorrente é um paradigma de programação para a construção de uso da execução con computacionais inter programas separado por um único progra OF8 S. wp view nent page dor que fazem várias tarefas plementadas como de threads criadas ser executadas por um único processador, varios processadores em um único equipamento ou processadores distribuídos por uma rede. Programação concorrente é relacionada com programação paralela, mas foca mais na interação entre as tarefas.

A interação e a comunicação correta entre as diferentes tarefas, além da coordenação do acesso concorrente aos recurso computacionais são as principais questões discutidas durante o desenvolvimento de sistemas concorrentes. Pioneiros na área de pesquisa incluem Edsger Dijkstra, Per Brinch Hansen, e C. A. R. Hoare. Vantagens do paradigma incluem o aumento de desempenho, pois aumenta-se a quantidade de tarefas sendo executadas em determinado periodo de tempo, e a possibilidade de uma melhor modelagem de programas, pois determinados problemas computacionais são concorrentes por natureza.

Computador com um Conjunto Complexo de Instruções”): é uma linha de arquitetura de processadores capaz de executar centenas de instruções complexas diferentes sendo, assim, extremamente versátil. Exemplos de processadores CISC são os 386 e os 486 da Intel. Os processadores baseados na computação de conjunto de instruções complexas contêm uma microprogramaçao, ou seja, um conjunto de códigos de instruções que são gravados no processador, permitindo-lhe receber as instruções dos programas e executá-las, utilizando as instruções contidas na sua microprogramaçáo.

Seria como quebrar estas instruções, já em aixo nível, em diversas instruções mais próximas do hardware (as instruções contidas no microcódigo do processador). Como característica marcante esta arquitetura contém um conjunto grande de instruções, a maioria deles em um elevado grau de complexidade. Examinando do ponto de vista um pouco mais prático, a vantagem da arquitetura CISC é que já temos muitas das instruções guardadas no próprio processador, o que facilita o trabalho dos programadores de linguagem de máquina; disponibilizando, assim, praticamente todas as instruções que serão usadas em seus programas.

Os processadores CISC têm a vantagem de reduzir o tamanho do código executável por já possuirem muito do código comum em vários programas, em forma de uma única instrução. Porém, do ponto de vista da performance, os CISC’s têm algumas desvantagens em relação aos RISC’s, entre elas a impossibilidade de se alterar alguma instrução composta para se melhorar a performance.

O código equivalente às instruções compostas do CISC pode ser escrito nos RISCs da forma desejada, usando um conjunto de instruções simples, da maneira que escrito nos RISC’s da forma desejada, usando um conjunto e instruções simples, da maneira que mais se adequar. Sendo assim, existe uma disputa entre tamanho do código X desempenho. Processadores Risc Reduced Instruction Set Computer ou Computador com um Conjunto Reduzido de Instruções (RISC), é uma linha de arquitetura de processadores que favorece um conjunto simples e pequeno de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas.

A maioria dos microprocessadores modernos são RISCs, por exemplo DEC Alpha, SPARC, MIPS, e PowerPC. O tipo de microprocessador mais largamente usado em desktops, o x86, é mais CISC do que RISC, mbora chips mais novos traduzam instruções x86 baseadas em arquitetura CISC em formas baseadas em arquitetura RISC mais simples, utilizando prioridade de execução. instruções reduzido não tem micro-programação, as instruções são executadas diretamente pelo hardware.

Como característica, esta arquitetura, além de não ter microcódigo, tem o conjunto de instruções reduzido, bem como baixo nivel de complexidade. A idéia foi inspirada pela descoberta de que muitas das características incluídas na arquitetura tradicional de processadores para ganho de desempenho foram ignoradas elos programas que foram executados neles. Mas o desempenho do processador em relação à memória que ele acessava era crescente. Isto resultou num número de técnicas para otimização do processo dentro do processador, enquanto ao mesmo tempo tentando reduzir o numero total de acessos ? memoria. arquitecturas RISC: conjunto reduzido e simples de instruções formatos simples e regulares de instruções operandos sempre em registros modos simples de endereçamento à memória uma operação elementar por ciclo máquina uso de pipeline RISC é também a arquitetura adotada para os processadores os videogames modernos, que proporcionam um hardware extremamente dedicado somente à execução do jogo, tornando- o muito mais rápido em relação a micro computadores com mais recursos, embora com processador x86.

Computação paralela Computação paralela é uma forma de computação em que vários cálculos são realizados simultaneamente, operando sob o princípio de que grande problemas geralmente podem ser divididos em problemas menores, que então são resolvidos concorrentemente (em paralelo). Existem diferentes formas de computação paralela: em bit, instrução, de dado ou de tarefa. A técnica de paralelismo já é empregada por vários anos, principalmente na computação de alto desempenho, mas recentemente o interesse no tema cresceu devido às limitações físicas que previnem o aumento de frequência de processamento.

Com o aumento da preocupação do consumo de energia dos computadores, a computação paralela se tornou o paradigma dominante nas arquiteturas de computadores sob forma de processadores multinúcleo. Computadores paralelos podem ser classificados de acordo com o nivel em que o hardware suporta paralelismo. Computadores com multinúcleos ou multiprocesadores possuem múltiplos lementos de processamento em somente uma máquina, enquanto clusters, MPP e múltiplos computadores 4DF8 em uma única tarefa.

Arquiteturas paralelas especializadas às vezes são usadas junto com processadores tradicionais, para acelerar tarefas especiTicas. Programas de computador paralelos são mais difíceis de programar que sequenciais, pois a concorrência introduz diversas novas classes de defeitos potenciais, como a condição de corrida. A comunicação e a sincronização entre diferentes subtarefas é tipicamente uma das maiores barreiras para atingir grande esempenho em programas paralelos. O aumento da velocidade por resultado de paralelismo é dado pela lei de Amdahl. 2 1 Processos Processos: o conceito mais importante em sistemas operacionais. Como vários “programas” podem rodar simultaneamente em um PC se ele possui um único processador? Multiprogramação: o processador é chaveado entre diversos programas dando a cada um algumas dezenas de milissegundos de processamento produzindo a ilusão de paralelismo (pseudo- paralelismo). Através da execução “simultânea” de vários programas, a multiprogramaçao torna mais eficiente o aproveitamento dos ecursos do computador, tais como: tempo do processador, espaço de memória, etc.

Na realidade a execução é feita de forma concorrente (máquinas monoprocessadas). Em um sistema multiprogramado vários programas são mantidos na memória ao mesmo tempo. C] Escalona dor de processos O que acontece em um sistema multiprogramado quando uma chamada de sistema é solicitada por algum processo? Basicamente, o escalonador interrom e o processo que executou a chamada de sistema e e a fila de apto para utilizar S para utilizar a CPU. Os seguintes conceitos são necessários para implementar o onceito de multiprogramação: processos, interrupção e proteção entre processos.

Nesta nota de aula iremos discutir estes temas e apresentar detalhes sobre as entidades denominadas processos. Quando dois ou mais processos têm condições de rodar, é o escalonador que decide qual será o próximo a receber tempo de CPU. Esta decisão é baseada em um algoritmo de escalonamento. O escalonador é a entidade do sistema operacional responsável por selecionarum processo apto a executar no processador e dividir o tempo do processador de forma justa entre os processos que estão aptos. Em outras palavras, o objetivo dos scalonadores é implementar uma politica de escalonamento de processos.

O sistema operacional possui um módulo responsável por efetuar a troca de contexto entre a execução de processos distintos, chamado de Dispatcher. Já o escalonador está relacionado com a implementação e aplicação das políticas deseleção adotadas. Objetivos do escalonamento: Maximizar a utilização do processador Privilegiar aplicações que são crlticas Maximizar a produção do sistema (throughpuf) a. Número de processos executados por unidade de tempo Minimizar o tempo de execução (turnaround – tempo que m processo gasta desde a sua criação até seu término) a.

Tempo total para executar um determinado processo Minimizar o tempo de espera a. Tempo que um processo permance na lista de aptos Minimizar o tempo de resposta a. Tempo decorrido entre uma requisição e a sua realização Tipos de escalonadores: não-preemptlvo: escalonadores que permitem que os processos rode escalonadores: não-preemptivo: escalonadores que permitem que os processos rodem até o fim de sua execução sem ser interrompidos por eventos externos, ou seja, processo que obtiver direito de rodar, rodará até que seja bloqueado para EIS u para esperar por outro processo (seméforo, por exemplo), ou até terminar. reemptivo: escalonadores que são capazes de suspender processos que poderiam continar executando, ou seja, há uma interrupção e suspensão temporária da execução de processos não bloqueados após um tempo máximo fixado.. Para cada um desses tipos, os processos poderão utilizar o processador até que:Não preemptivo: Término de execução do processo Execução de uma requisição de entrada/saída ou sincronização Liberação voluntária do processador a outro processo (yield) Preemptivo: (yield)

Interrupção de relógio Processo de mais alta prioridade esteja pronto para executarAlgoritmos de escalonamento O algoritmo de escalonamento deve selecionar qual processo irá executar em um determinado instante de tempo. Na literatura existem vários algoritmos destinados a este objetivo, todos buscam obter bons tempos médios ao invés de maximizar ou minimizar alguns dos critérios citados anteriormente. Algoritmos não preemptivos FIFO ou First-come, first-served (FCFS) Cooperativo Algoritmos preemptivos (circular) Múltiplas filas Relógio (“clock”): fornece interrupções periódicas (-60 Hz).

As ecisões de escalonamento podem ocorrer a cada k-ésima interrupção de relógio (0=1): Há três categorias de algoritmos de escalonamento: Em lote: sistemas não-interativos. Preemptivo ou não preemptivo com longos Intervalos de tempo para cada processo. Interativo: preempção é essencial. Em tempo-real: executam somente processos que visam o progresso da aplicação (e não, genericamente, qualquer processo, como no caso interativo). 1 Escalonamento em Lotes 1. 1 First-come, first-served (FCFS) Vantagens: facilidade de implementação; justo. Desvantagens: processos orientados a EIS se tornam muito lentos. ?? o algoritmo mais simples de implementar, onde o processador possui uma fila associada para armazenar os processos que estão aptos a executar. Funcionamento: Processos que se tornam aptos são inseridos no final da Processo que está no início da fila é o próximo a executar Processo executa até que: Libere explicitamente o processador Realize uma chamada de sistema (bloqueado) Términe sua execução Desvantagem: Prejudica processos 1/0 bound Tempo médio de espera na fila de execução: Ordem A-B-C-D -(0+ 12 20 + 16. 75 u. t. ordem D-A-B-C = (0 )/4-11. 7 u. t.

Leave a Reply:

O seu endereço de email não será publicado. Campos obrigatórios marcados com *