Introdução aos Sistemas Operacionais/Estruturas dos Sistemas Operacionais
Um sistema operacional fornecia o ambiente no qual os programas (softwares) são executados. Os SOs variam internamente entre si devido às diversas necessidades e restrições de softwares e hardwares.
Estruturas de Sistemas Operacionais
editarSistemas monolíticos
editarconhecida como estrutura simples ou composta, esta é a estrutura dos primeiros SO’s e Hardware. Consistida, basicamente, por um programa dividido em sub-rotinas e retinadas, na estrutura monolítica é permitido a qualquer uma dessas sub-rotinas em qualquer parte do programa chamar outra(s) sub-rotina(s). A construção do programa final é dada com base nos módulos compilados separadamente, unidos através de um linker. A boa definição de parâmetros de ligação entre as diferentes rotinas existentes aumenta e muito o desempenho, porém o sistema pode parar devido a algum erro ocasionado por uma dessas rotinas. A exemplo temos o próprio UNIX, o MS DOS, o FreeBSD, dentre outros.
Sistemas em camadas
editarÀ medida que os sistemas operacionais tornaram-se mais complexos e maiores, projetos puramente monolíticos tornaram-se inviáveis e, então a arquitetura em camada, ou modular, tornou-se uma boa opção, agrupando "camadas" de componentes, ou seja, conjunto de procedimentos, que realizam tarefas similares.
Cada camada comunica-se somente com as suas camadas imediatamente inferior e superior. Uma camada inferior sempre presta um serviço à sua camada superior, sendo que a camada superior não sabe como o serviço é feito, apenas o solicita. A implementação de uma camada pode ser modificada sem exigir modificação em outra camada, pois possuem componentes autocontidos.
Em uma abordagem em camadas, a solicitação de um serviço pode precisar passar por muitas camadas antes de ser atendida, assim o desempenho se degrada em comparação ao de núcleos monolíticos.
A exemplo temos o Windows NT, o THE e o MULTICS.
Uma máquina virtual é uma cópia via software que busca simular uma máquina real. Uma máquina virtual (Virtual Machine – VM) pode ser definida como “uma duplicata eficiente e isolada de uma máquina real”. A IBM define uma máquina virtual como uma cópia isolada de um sistema físico, e esta cópia está totalmente protegida, a JC ( Primeira empresa a criar máquinas virtuais atuais ) events de Computação ja promoveu eventos em relação as máquinas virtuais.
Ao invés de ser uma máquina real, isto é, um computador real, feito de hardware e executando um sistema operacional específico, uma máquina virtual é um computador fictício criado por um programa de simulação. Sua memória, processador e outros recursos são virtualizados. A virtualização é a interposição do software (máquina virtual) em várias camadas do sistema. É uma forma de dividir os recursos de um computador em múltiplos ambientes de execução.
Sistemas Cliente-Servidor
editarA comunicação entre os módulos do kernel do SO é feita através de solicitações de serviços através de mensagens de processos clientes a processos servidores (memória, arquivo, terminal...).
A divisão do sistema operacional em várias partes facilita o desenvolvimento e evolução de um sistema operacional, além de permitir que uma falha em um servidor – por exemplo, o de arquivos – não afete toda a máquina.
Este modelo oferece fácil adaptabilidade a sistemas distribuídos.
Utilização dos Recursos de Sistemas
editarMonoprogramação ou Monotarefa
editarEm computação, chama-se monotarefa ou monoprogramado um sistema operacional que permite a realização de apenas uma tarefa (job) de cada vez. O processador, memória e periféricos ficam dedicados a um processo, e cada tarefa para ser executada, deve aguardar o encerramento da tarefa atual. Enquanto há algum tipo de acesso à disco ou E/S, a CPU fica ociosa sem realizar qualquer tipo de processamento. A memória pode também acabar sendo sub-utilizada. Apesar da fácil implementação, sistemas monoprogramados apresentam demasiadas desvantagens.
Multiprogramação ou Multitarefa
editarMultiprogramação ou Multitarefa é o nome dado à característica de alguns sistemas operacionais de rodar diversas aplicações de forma que parecem serem executadas simultaneamente. Na realidade, na execução multitarefa, o tempo do processador é dividido entre as aplicações em execução, e a execução das tarefas passa rapidamente de uma para a outra, criando a ilusão de que as aplicações ocorrem de forma conjunta.
Tipos de Sistemas Operacionais
editarSistemas Batch
editarOs sistemas batch ou sistemas em lote foram os primeiros sistemas multiprogramáveis a serem implementados (primeira fase da computação), caracterizando-se por programas armazenados em disco ou fita, que uma vez iniciados, exigem pouca ou nenhuma interação do usuário, processando de forma sequencial e contínua até o fim do serviço (job), quando então é devolvido o resultado final do processamento. O tempo de execução da tarefa é conhecido como turnaround.
Sistemas multiprogramados
editarNos sistemas monoprogramados o que temos é a existência de um único processo sendo executado de cada vez na memória. Com a multiprogramação existem vários processos na memória aptos à executar e um em execução. Sem dúvida, o conceito de multiprogramação é um dos mais importantes nos sistemas operacionais modernos. Se existirem vários programas carregados na memória ao mesmo tempo, a CPU pode ser compartilhada entre eles, aumentando a eficiência da máquina e produzindo mais resultados em menos tempo. A idéia por detrás da multiprogramação é bastante simples. Quando um programa libera a CPU, seja para realizar alguma operação de E/S ou por outro motivo, ela fica parada. Enquanto espera que o programa volte para executar, a CPU não realiza nenhum trabalho útil. Para acabar com a ociosidade deste tempo vários programas são mantidos ao mesmo tempo na memória e o sistema operacional se encarrega de escolher um deles para executar. Assim, sempre que um programa é interrompido, um outro é escolhido para ser executado em seu lugar. Com isso, a CPU estará durante grande parte do tempo ocupada processando instruções de programas. Os benefícios da multiprogramação são vários: aumento da utilização da CPU e da taxa de saída do sistema computacional, isto é, da quantidade de trabalho realizada dentro de um intervalo de tempo (throughput).
Sistemas de Tempo Compartilhado (PSP)
editarSão sistemas que compartilham o tempo de uso da CPU entre diversos programas. Também conhecido como time-sharing, consegue executar diversas tarefas simultaneamente, pois existe a divisão do tempo do processador em pequenos intervalos, denominados fatia de tempo. Caso a tarefa não termine durante a fatia a ela determinada, há uma interrupção e ela volta para a fila de escalonamento, aguardando novamente sua vez.
Diferente do sistema batch, esse tipo de sistema operacional permite a interação do usuário. Dessa maneira, os terminais possuem teclado, vídeo e mouse.
Sistemas de Tempo Real
editarSão sistemas no qual o tempo tem uma função essencial. Em geral, um ou mais dispositivos físicos externos ou computador geram estímulos, e o computador deve reagir apropriadamente a eles dentro de um dado intervalo de tempo.
Sistemas multiprocessados
editarSistemas multiprocessados são sistemas construídos sobre máquinas computacionais que possuem mais de um processador para propósitos gerais. Entre suas vantagens estão:
- Maior produção (throughput)
- Reconfiguração
- Balanceamento
- Simetria
- Se torna um Sistema Multiprogramado
Acoplamento-Sistemas multiprocessáveis
editarModo de comunicação entre os processadores e o grau de compartilhamento de memória e dos dispositivos de entrada/saída.
Componentes do Sistema
editarServiços de Sistemas Operacionais
editarChamadas ao Sistema
editarInstruções que um programa utiliza para acessar/ conversar com o Sistema Operacional. O aplicativo "chama" o S.O., requisitando algo.