Curso Livre de Arquitetura de Computadores/Caderno 7: Suporte do Sistema Operacional

Fonte: Wikiversidade

Visão geral do sistema operacional[editar | editar código-fonte]

Objetivos e funções do sistema operacional[editar | editar código-fonte]

Um SO é um programa que controla a execução dos programas aplicativos e atua como uma interface entre o usuário e o hardware do computador. Ele pode ser imaginado como tendo dois objetivos:[1]

  • Conveniência: um SO torna um computador mais conveniente para uso.[1]
  • eficiência: um SO permite que os recursos do sistema de computação sejam usados de uma maneira eficiente.[1]

SO como uma interface usuário/computador, normalmente oferece serviços nas seguintes áreas:

  • Criação de programas: o SO oferece diversas facilidades e serviços, como editores e depuradores, para auxiliar o programador na criação de programas;
  • Execução do programa: diversas tarefas precisam ser realizadas para executar um programa. As instruções e os dados precisam ser carregados para a memória principal, os dispositivos de E/S e os arquivos precisam ser inicializados, e outros recursos precisam ser preparados;
  • Acesso aos dispositivos de e/s: cada dispositivo de E/S exige seu próprio conjunto específico de instruções ou sinais de controle para a operação;
  • Acesso controlado aos arquivos: no caso dos arquivos, o controle precisa incluir um conhecimento não apenas da natureza do dispositivo de E/S, mas também do formato de arquivo no meio de armazenamento;
  • Acesso ao sistema: no caso de um sistema compartilhado ou público, o SO controla o acesso ao sistema como um todo e a seus recursos específicos;
  • Detecção e resposta a erros: uma grande variedade de erros pode ocorrer enquanto um sistema de computação está sendo operado. Estes incluem erros de hardware internos e externos, como um erro de memória ou uma falha ou defeito de dispositivo; e diversos erros de software, como estouro aritmético, tentativa de acessar um local proibido da memória e incapacidade do SO em conceder a solicitação de uma aplicação;
  • Contabilidade: um bom SO coleta estatísticas de uso para diversos recursos e monitora os parâmetros de desempenho, como o tempo de resposta.[1]

SO como gerenciador de recursos: O computador é um conjunto de recursos para o movimento, o armazenamento e o processamento de dados e para o controle dessas funções. O SO é responsável por gerenciar esses recursos.

O SO, de fato, não é nada mais do que um programa do computador. Assim como outros programas, ele oferece instruções para o processador. A principal diferença está na intenção do programa. O SO direciona o processador no uso dos outros recursos do sistema e na sincronização de sua execução dos outros programas. Mas, para que o processador faça alguma dessas coisas, ele precisa deixar de executar o programa do SO e executar outros programas. Assim, o SO abre mão do controle para o processador realizar algum trabalho “útil” e depois retoma o controle por tempo suficiente para preparar o processador para realizar o próximo trabalho.[1]

Tipos de sistemas operacionais[editar | editar código-fonte]

Quando fala-se em sistemas operacionais, é possivel separar em duas dimensões independentes as suas caracteristicas. São elas: Interativo e Lote ou (batch). No sistema interativo, o usuário/programador se comunica diretamente com o computador através de teclado/mouse de forma interativa, executando tarefas, agendando tarefas e até mesmo interrompendo as mesmas. No sistema em lote, é o oposto do interativo. São enviados vários programas de vários usuários ao mesmo tempo e executados todos juntos, fazendo com que os resultados sejam todos impressos ao mesmo tempo. Essa forma de sistema é rara atualmente.[1]

Uma dimensão independente especifica se o sistema vai ser do tipo multiprogramação ou não. Com a multiprogramação o processador é mantido em constante uso para que seja utilizado o maior numero de thread's possivel. Os programas são carregados na memória e o processador fica alternando entre eles. Uma alternativa para a multiprogramação é a uniprogramação, que trabalha cada vez com um programa, como se fosse single thread.[1]

Escalonamento[editar | editar código-fonte]

Para a multiprogramação uma necessidade é o escalonamento.

Tipos de escalonamento[editar | editar código-fonte]

Escalonamento de longo prazo[editar | editar código-fonte]

A decisão de acrescentar ao pool de processos a serem executados. Ou seja, ele determina quais programas serão admitidos para o processamento. Fazendo isso, ele controla o grau de multiprogramação (número de processos na memória). Uma vez que um programa é admitido pelo escalonador, ele é acrescentado na fila de curto prazo. Em alguns sistemas, um processo recém-criado inicia em uma condição não carregado em memória, quando é acrescentado a uma fila para o escalonador a médio prazo.[1]

Escalonamento de médio prazo[editar | editar código-fonte]

O escalonamento de médio prazo tem como função a troca de processo (swapping). A decisão de entrada no swapping é baseada na necessidade de gerenciar o grau de multiprogramação. Em um sistema que não faz uso de memória virtual, o gerenciador de memória também é um ponto. Sendo assim, as decisões de quais processos são removidos para o disco também consideram a memória.[1]


Conceito de processo:

  • Um programa em execução;
  • O "espirito animado" de um programa;
  • A entidade à qual um processador é atribuido;

Ou seja, um processo é um programa, ou parte de um programa que esta ocupando uma thread do processador para os recursos necessários.[1]

Referências