SISTEMAS OPERATIVOS
Sistema Operativo
O Sistema Operativo é um programa responsável pela gestão de todos os recursos de um computador, tanto a nível de software como de hardware. Partilha e protege os recursos a serem utilizados pelas aplicações do utilizador, servindo de interface entre este e a máquina.
Tipos de Sistemas Operativos
Os diferentes tipos de sistemas operacionais são basicamente classificados de acordo com o número de processos do usuário que o S.O. pode executar ou de acordo com o número de processadores que o sistema possui. Combinando estas características podemos classificar os sistemas operacionais em: S.O. Monoprogramado, S.O. Multiprogramado e S.O. com Multiprocessador.
Sistema Operacional Monoprogramado (Monotarefa)
Possui as seguintes características:
- É executado por um único processador e é capaz de gerenciar a execução de um único programa (tarefa) do usuário por vez.
- Permite que o processador, a memória e os periféricos fiquem dedicados a um único usuário; são portanto monousuários (monoterminais).
- O processador fica ocioso quando o programa espera pela ocorrência de uma E/S.
- São sistemas de simples implementação.
Sistema Operacional Multiprogramado (Multitarefa)
Possui as seguintes características:
- É executado por um ou vários processadores. No caso de vários processadores, é classificado como "SO para Multiprocessadores" (discutido a seguir). No caso de apenas um processador, permite que vários programas disputem os recursos do sistema (paralelismo lógico ou virtual), e:
- Podem ser monousuário ou multiusuário:
- Monousuário: um único usuário executando vários programas (monoterminal).
- Multiusuário: vários usuários executando vários programas (multiterminais).
- Divide o tempo da CPU entre os vários programas e entre os vários usuários.
- Diminui a ociosidade, permitindo que durante o tempo de E/S outros processos sejam executados.
Inicialmente, os sistemas multiprogramados começaram com os sistemas de batch; depois com os sistemas time-sharing e finalmente com os sistemas real-time.
Nos sistemas de lote (batch), os programas eram enfileirados em disco ou fita e aguardavam a execução, um por vez. Normalmente, os programas (jobs) não necessitavam de interação com o usuário. Embora sejam considerados como os precursores dos sistemas multiprogramados, pois aproveitavam os tempos de E/S para a execução de outros processos, o processamento era puramente sequêncial e ofereciam longos tempos de resposta.
Nos sistemas de tempo compartilhado (time-sharing), os usuários interagem através de terminais e teclados on-line. São sistemas multiterminais, cujo processamento é controlado por um computador central. O sistema executa uma varredura (polling) nos terminais, compartilhando o tempo entre eles (time-sharing).
Neste sistema, o processador executa os programas de forma intercalada no tempo, alocando uma fatia de tempo (time-slice) para cada um, por vez, realizando assim a multiprogramação. Cada usuário tem a ilusão que todo o sistema está totalmente dedicado exclusivamente para ele.
Os sistemas de tempo real (real-time) são semelhantes aos sistemas time-sharing, embora exijam tempo de resposta dentro de limites rígidos, na execução de tarefas. O conceito de time-slice é muito pouco utilizado e os processos executam o tempo necessário e conforme sua prioridade. São sistemas muito utilizados em controle de processos, onde o tempo é um fator crucial: refinaria de petróleo, automação industrial, controle de tráfego aéreo etc... Neste sistema, os processos geralmente são ativados por sensores.
Sistema Operacional com Multiprocessador
Possui as seguintes características:
- O sistema possui vários processadores, que podem estar confinados a um mesmo gabinete (centenas de processadores) ou espalhados fisicamente em forma de rede (dezenas de processadores).
- Executam várias tarefas simultaneamente e portanto são multitarefas.
- Cada processador pode operar monoprogramado ou multiprogramado.
- Ocorre paralelismo físico ou real, quando mais de um processador está sendo utilizado. Ocorre também paralelismo lógico, quando o número de tarefas é maior que o número de processadores disponíveis.
- Podem ser fracamente acoplados ou fortemente acoplados:
- fracamente acoplados (loosely coupled): cada processador possui sua própria memória e executa seu próprio sistema operacional (Sistema Operacional de Rede) ou parte de um sistema operacional global (Sistema Operacional Distribuído).
- fortemente acoplados (tightly coupled): todos os processadores compartilham uma única memória. Estes processadores geralmente são coordenados por um único S.O. localizado em um outro computador hospedeiro, que se encarrega de distribuir as tarefas entre os processadores e gerenciar a execução.


Distinguir funções do sistema operativo
Partilha de recursos com protecção:
- físicos: processador, memória, discos, periféricos diversos.
- lógicos: programas de uso geral (editores, compiladores) e bibliotecas partilhadas por diversos programas.
Gestão da concorrência
- controlar diversos fluxos de actividade independentes que se executam "em paralelo" sem que os mesmos interfiram não intencionalmente.
Gestão de informação persistente
- armazenamento fiável e seguro da informação não volátil em suportes magnéticos, ópticos, etc.
Controlo dos gastos
- contabilização e limitação da utilização dos recursos físicos.
Estrutura dos Sistemas Operativos
Hierárquica - Estrutura baseada numa hierarquia por níveis.

Monolítica - Estrutura típica dos primeiros Sistemas Operativos, constituídos fundamentalmente por um único programa.

Máquina Virtual - Trata-se de um tipo de Sistema Operativo que disponibiliza uma interface a cada processo, mostrando ao utilizador uma máquina idêntica ao hardware existente. O objectivo dos Sistemas Operativos de máquina virtual é o de integrar diferentes Sistemas Operativos, dando ao utilizador a sensação de estar a trabalhar com várias máquinas diferentes.
Cliente-Servidor (Microkernel) - Pode ser executado na maioria dos computadores. Tem grande flexibilidade de serviços fornecidos ao utilizador, uma vez que o núcleo serve apenas para funções básicas de memória, I/O e processos. O núcleo tem como missão estabelecer a comunicação entre os processos clientes e os processos servidores.