Introdução aos Sistemas Operacionais

Como é limitado o intervalo de tempo na técnica de time sharing –  Explicação:

Time-sharing (tempo-compartilhado) – O sistema operacional aloca uma ‘fatia de tempo’ (time-slice) do processador para cada usuário. Caso o programa do usuário não esteja concluído nesse intervalo de tempo, ele é substituído por um de outro usuário, e fica esperando por uma nova fatia de tempo. Permitem a interação dos usuários com o sistema.

– O que é um processo: Conceito de processo: em sistemas multitarefas (como o Unix), múltiplas tarefas podem estar sendo realizadas simultâneamente, por exemplo a formatação de um disquete, a impressão de um arquivo e a edição de um texto. A cada uma delas corresponde um programa que a executa. Um programa em execução é um processo.

Num computador que possui apenas uma cpu, na verdade apenas um processo pode estar sendo executado em cada instante. O que se faz é executar um processo durante uma fração fixa de segundo, congelá-lo e passar a executar um outro durante essa mesma fração de segundo, e assim por diante. Isso cria a ilusão de simultaneidade.

Estados de um processo num sistema de multiprogramação

Qualquer que seja a decisão do SO, isto é, executar P1 ou P2, o outro processo, isto é, P2 ou P1, terá de ficar numa situação em que aguarda uma oportunidade futura para execução. Repare que esta situação é diferente do estado em que P1 ficou quando invocou READ e o buffer estava vazio. Neste caso, P1 teria de ficar forçosamente bloqueado, pois os dados não estavam disponíveis. Quando os dados vêm, P1 deixa de estar logicamente bloqueado mas, se a decisão do SO, foi continuar a execução de P2 (por, por exemplo, ter maior prioridade), então P1 fica num estado lógico em que ‘aguarda, ainda que esteja pronto para execução’, sendo vulgar dizer-se que está pronto (para execução) (ready (to run)). Quando um processo é escolhido para execução, diz-se que fica no estado executando) (running).

Como são classificados os sistemas operacionais:

Monotarefa: pode-se executar apenas um processo de cada vez. Ex.: DOS.

Multitarefa: além do próprio SO, vários processos de utilizar(tarefas) estão carregados em memória, sendo que um pode estar ocupado o processador e outros ficam enfileirados, aguardando a sua vez. O compartilhamento de tempo no processador é distribuído de modo que o usuário tenha a impressão que vários processos estão sendo executados simultaneamente. Ex.: OS/2, WINDOWS, LINUX, FREEBSD e o MAC OS X.

Multiprocessamento: o SO distribui as tarefas entre dois ou mais processadores.

Multiprogramação: o SO divide o tempo de processamento entre vários processos mantendo o processador sempre ocupado.

Classificação dos Sistemas Operacionais

Sistemas proprietários: não oferece acesso ao código fonte e são pagos = Exemplos: Windows.

Sistemas Gratuitos: não têm custos para utilizá-los, mas você não pode ter acesso ao códio fonte. Exemplo: BeOS.

Sistemas de código Aberto(Open-Source): são sistemas nos quais o código fonte é público. Exemplo: Unix.

Sistemas livres: são comercializados como Open-Source e possibilitam alterações no código-fonte. Exemplo: Linux, BSD.

Os sistema operacionais podem ser classificados de acordo com seu grau de acoplamento: Redes, Autômatos, Centralizados, Distribuídos. Para classificá-los deste modo, são levados em consideração os seguintes fatores: Interoperabilidade, Transparência, Autonomia.

Apenas citarei as funcionalidades de alguns sistemas referenciados acima.

Sistemas Centralizados = Características: São fortemente acoplados, são do tipo monolítico, ou seja não há o particionamento do núcleo. Nos sistemas monolíticos os serviços do sistema e do núcleo fazem parte de um mesmo programa.

Sistemas em Rede = Características: É um multicomputador fracamente acoplado no qual não existe nenhum tipo de controle direto de uma máquina sobre as outras e no qual a comunicação entre as outras máquinas é bem mais lenta que dentro de uma dada máquina. O compartilhamento de recursos é o objetivo principal dos sistemas em rede. Sistemas Autômatos = Tais sistemas mantém as noções de transparência e interoperabilidade que existem nos Sistemas Distribuídos, mas abolem a impressão de que existe somente um usuário no sistema.

Sistemas Distribuídos = São aqueles que gerenciam as atividades e os recursos distribuídos, possibilitando um processamento descentralizado e melhorando o desempenho do sistema.

Outra definição: Um conjunto de processos que são executados de forma concorrente, cada um dos quais acessando um subconjunto de recursos do sistema por meio de um mecanismo de troca de mensagens através de uma rede de comunicação, que nem sempre é confiável. As vantagens de um Sistema Distribuído em relação aos outros é sua maior disponibilidade, geralmente resultante da redundância de seus componentes.

Sistema Distribuído: Mais transparente que os Sistemas em Rede. Essa transparência pode ser notada em vários aspectos: Transparência de acesso a arquivos, Transparência de desempenho, Transparência de localização, Transparência de concorrência.

Aspectos importantes na construção de um sistema operacional: Eficiência

Os parâmetros para medir o desempenho do sistema (eficiência) são diversos, tais como: vazão, tempo de execução de uma determinada tarefa, taxa de uso do sistema e de seus recursos.

Obs: A eficiência em sistemas distribuídos é mais complexa em relação aos Sistemas

Operacionais Convecionais, devido aos atrasos na comunicação.

Obs: O tempo gasto na propagação dos dados depende fortemente do protocolo de comunicação utilizado, motivo pelo qual este deve ser bem projetado, como base em primitivas de comunicação eficientes.

Fatores que afetam a eficiência: Tempo gasto na propagação dos dados, Balanceamento de carga, Ganulosidade das tarefas, Tolerância a faltas.

Sistemas Operacionais Distribuídos

Flexibilidade = Fatores associados: Interoperabilidade, Modularidade, Portabilidade, Escalabilidade

Consistência = Um sistema é consistente se: Permite um uso uniforme. E se possui um comportamento previsível. Fatores que afetam a consistência do sistema: Ausência de um mecanismo global. Inexistência de informações a respeito do desempenho global

Robustez

Para ser robusto um Sistema Distribuído tem que estar disponível a maior parte do tempo, apresentando dados confiáveis. A confiabilidade deste sistema também está associado aos mecanismos de proteção existentes.

Transparência = Capacidade que um Sistema apresenta, de esconder dos usuários, detalhes de implementação, em particular àqueles mais complexos, e apresentar na medida do possível um modelo lógico da máquina como os usuários gostariam de usar e não como o sistema é realmente.

– Um pouco sobre os sistemas operacionais de código aberto, mostrando suas influências no mundo de hoje e seus idealizadores:

– Principais SOs livres: O projeto GNU (G is not Unix) é mais antigo (1983) que o Linux (que se refere ao Kernel desenvolvido por Linus Torvalds em 1989), a questão é que o GNU era praticamente um SO pronto, com interpretador de comandos e algumas aplicações, porém lhe faltava o Kernel (núcleo do sistema operacional), Richard Stallman soube da mensagem enviada por Linus nos tempos da Usenet e chegaram na conclusão que ambos estavam desenvolvendo um novo Sistema Operacional de código fonte aberto com basicamente o mesmo objetivo e filosofia, um possuia o Kernel pronto e outro possuia todo o sistema porém sem Kernel, em 1992 o Projeto GNU se juntou ao Linux e nascia então o GNU/Linux.

Algumas curiosidades históricas:

1) O Unix foi precedido por um sistema chamado Multics desenvolvido pela Bell Labs (AT&T), General Eletric e MIT, o Multics era um sistema monousuário e monotarefa e não conseguiu atingir seu propósito, ainda sim o último sistema rodando Multics só foi desativado em 30 de Agosto de 2000 exatamente as 17:08 UTC no Canadá.

2) Dois engenheiros da AT&T, Ken Thompson e Dennis Ritchie fanáticos por um jogo chamado Space Travel perderam acesso ao sistema e decidiram portar o jogo para um computador PDP-7 que estava parado, nascia um novo sistema operacional que a princípio foi chamado de Unics, o novo SO foi assim chamado pois ao contrário do Multics era multitarefa (time sharing) e multiusuário e Ken Thompson achou engraçado fazer essa alusão ao Multics, o mais interessante do Unics é que este foi idealizado para ser altamente “portável” e rodar em praticamente qualquer hardware existente, uma das premissas de sua criação era construir um SO de programador para programadores, mais tarde o Unics foi portado para uma máquina PDP-11, posteriormente o Unics foi escrito em linguagem C (linguagem também criada por Dennis Ritchie) e devido a essa particularidade finalmente o Unics se tornava realmente um sistema portável.

3) Não se sabe ao certo quando e porquê o Unics veio a ser chamado de Unix, algumas teorias dizem que foi por puro marketing, outros dizem que era uma limitação do sistema em usar um nome com 5 caracteres, a teoria mais plausível é a da própria Bell Labs que diz que o Unix assim como a Fenix ressurgiu das próprias cinzas graças ao esforço multiorganizacional de seus idealizadores em criar um sistema multitarefa seguro, esse trabalho em equipe e a filosofia em que o sistema foi concebido era algo inimaginável nos anos 60, desde então o Unics passou a ser chamado Unix herdando a letra “x” da “Fenix”.

4) Richard Stallman decidiu criar um SO do tipo Unix gratuito pq muitos programadores que contribuíram para o aperfeiçoamento do Unix foram injustiçados quando a AT&T decidiu se apropriar do sistema que fora fruto do trabalho destes.

5) Ao contrário do que muitos pensam Linus Torvalds não escreveu o Linux Kernel do zero, reza a lenda que Linus ao ver seu tio sofrendo na pobre interface shell do DOS decidiu escrever um sistema operacional mais flexível e poderoso, que fosse multi-tarefa e lhe permitisse explorar mais o hardware disponível.Para isso ele usou como base o Kernel do Minix (SO tipo Unix escrito por Andrew Tannenbaum)

6) Assim como acontece no GNU/Linux o Unix também possui muitas variantes, o que dificulta um pouco o trabalho dos profissionais dessa área, conceitualmente as variantes Unix se diferem das variantes GNU/Linux pois as primeiras são adaptadas ao hardware específico de um fabricante, temos como exemplo o HP-UX da HP, o AIX da IBM, o Solaris da SUN (que possui também versão para plataforma x86), o Irix da Silicon Graphics, entre outros.

7) Muitos associam a Microsoft só ao Windows mas até ela já teve seu Unix que se chamava Xenix, posteriormente esse foi vendido para a SCO mas ainda sim serviu de base para o desenvolvimento do MS-DOS, aliás o MS-DOS embora conceitualmente seja muito diferente do Unix estruturalmente possui várias semelhanças, como redirecionamento de dispositivos de I/O, pipes “|”, estruturas de arquivos e alguns comandos.

Fonte da pesquisa: http://www.apinfo.com/artigo73.htm