Sistemas Operacionais
Dissertações: Sistemas Operacionais. Pesquise 862.000+ trabalhos acadêmicosPor: Engenhoso • 9/10/2013 • 3.209 Palavras (13 Páginas) • 361 Visualizações
Conceitos:
O próprio conceito de processo é abstrato e causa divergências, pois não existe uma definição precisa aceita por todos. Sendo assim, definiremos aqui processo como uma instância de um programa em execução e programa como conjunto de instruções necessárias à execução das operações desejadas. Em outras palavras, processo é toda e qualquer atividade que vá ser executada em um computador.
Um processo reúne uma série de atributos (espaço de endereçamento, permissões de acesso, quotas e etc.) e áreas (de código, dados e pilha de execução). Para cada processo temos também ao menos um fluxo de execução, que chamamos de thread.
Cada processo passa por diferentes momentos. A partir destes momentos podemos estabelecer diferentes possíveis estados para um processo, que mudam de acordo com as chamadas do sistema. Os estados em que um processo pode se encontrar variam de acordo com cada sistema, mas de forma geral são classificados em pronto, executando e bloqueado.
Quando um processo é criado ele está pronto para ser executado pelo processador, no entanto, existe uma fila de processos, chamada “fila de aptos” (ready queue), esperando para serem executados, pois o processador executa apenas um processo por vez. Como cada processo utiliza o processador por apenas alguns milissegundos, têm-se a impressão de que o processador executa vários processos ao mesmo tempo.
Quando um processo que está no estado executando sofre uma mudança de estado o processador fica livre e o sistema operacional seleciona um processo da lista de aptos para assumir o processador. O processo selecionado passa do estado apto para o estado executando. A parte do sistema operacional que faz essa seleção é chamada de escalonador.
Já o conceito de thread pode ser traduzido como Linha ou Encadeamento de execução, que é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente.
Uma thread permite, por exemplo, que o usuário de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.
Em hardwares equipados com uma única CPU, cada thread é processada de forma aparentemente simultânea, pois a mudança entre uma thread e outra é feita de forma tão rápida que para o utilizador isso está acontecendo paralelamente. Em hardwares com múltiplos CPUs ou multi-cores, as threads são realizadas realmente de forma simultânea;
Os sistemas que suportam apenas uma única thread (em real execução) são chamados de monothread enquanto que os sistemas que suportam múltiplas threads são chamados de multithread.
Política de Gerenciamento de Processador:
Trata-se da abordagem utilizada pelo sistema operacional para gerenciar o processador e tornar possível a multiprogramação do sistema operacional.
É onde alguns critérios determinam qual processo será escolhido para usar o processador.
Funções Básicas
* Manter o processador ocupado a maios parte do tempo
* Balancear o uso da UCP entre processos
* Privilegiar a execução de aplicações criticas.
* Maximizar o throughput (tx de transferência) do sistema
* Oferecer tempo de resposta para usuários interativos
Para tais, existem alguns critérios, como:
* Utilização do processador - Na maioria dos sistemas é desejável que o processador passe a maior parte do tempo ocupado.
* Throughput – Representa o numero de processos executados em um determinado intervalo de tempo.
* Tempo de processador – tempo que um processo leva no estado de execução durante seu processamento.
* Tempo de espera – É o tempo total que um processo permanece na fila de pronto durante seu processamento aguardando ser executado.
* Tempo de Turnaround – É o tempo que o processo leva desde a sua criação até seu termino.
* Tempo de resposta – Tempo decorrido ente uma requisição ao sistema ou a aplicação e o que a resposta é exibida.
Uma complicação enfrentada pelos escalonadores é a de que cada processo tem um comportamento único e imprevisível. Quando o escalonador coloca um processo para rodar, ele nunca sabe ao certo quanto tempo o processo vai levar até ser bloqueado. Para assegurar que nenhum processo rode por um tempo muito grande, os sistemas operacionais modernos se utilizam de um relógio interno, que periodicamente gera um sinal de interrupção (interrupção de tempo). A cada interrupção destas o escalonador decide se o processo corrente deve continuar executando ou ceder o lugar a um outro processo. A esta estratégia de permitir a suspensão temporária de processos que poderiam continuar executando é dado o nome de escalonamento preemptivo, que contrasta com a antiga estratégia de rodar até o fim do processo, presentes nos primeiros sistemas operacionais, conhecida como escalonamento não-preemptivo.
Para a tomada de decisão, todos os escalonadores possuem um determinado algoritmo que devem seguir. Aqui apresentaremos alguns destes algoritmos: .
• Ordem de Chegada (First-in first-out): É o algoritmo mais simples. A fila do processador é uma fila simples e os processos são executados na mesma ordem em que chegaram na fila.
• Processo mais curto primeiro (Shortest Job First): Este algoritmo de escalonamento selecionará para a execução o processo que, entre os elementos da fila, venha a ocupar o processador pelo menor período de tempo antes de ser novamente bloqueado ou terminado.
• Prioridade: No tipo de escalonamento baseado em prioridade, para cada processo é associado um número inteiro que representa seu nível de prioridade. Quando for necessária a seleção de um processo, será selecionado o processo que tiver o maior nível de prioridade.
• Algoritmo Circular (Round Robin): Neste algoritmo, os processos prontos para rodar tem seus blocos de controle armazenados em uma lista circular, sendo selecionado para execução o primeiro processo da lista. A partir daí o processo é executado até que seja bloqueado ou termine o seu tempo de execução, e a partir daí o ciclo
...