Upload
renanrmx
View
357
Download
0
Embed Size (px)
Citation preview
MÓDULO III – Sistemas Operacionais
Unidade I: Introdução aos Sistemas Operacionais
INTRODUÇÃO DO MÓDULO DE SO
No módulo anterior, vimos sobre o funcionamento de
alguns componentes de hardware de um computador, tais
como os processadores, memória RAM, componentes
gráficos e barramentos.
Para possibilitar a interação do usuário com os
componentes de hardware, é necessário utilizar um
programa de computador denominado sistema
operacional. Esse sistema esconde do usuário detalhes que
possibilitam a utilização de computadores pessoais em
larga escala.
Pensando nisso, desenvolvemos este módulo de maneira
que você possa compreender um pouco de como a
interação entre hardware e sistema operacional ocorre e possa, também, conhecer boa parte da história dos
sistemas operacionais modernos.
Desde já, esclarecemos que não tratamos mais da parte física do computador, mas sim da parte lógica,
responsável por manipular, de alguma forma, a física.
CONTEÚDO COMPLEMENTAR
INTRODUÇÃO AOS SISTEMAS OPERACIONAIS
Para começarmos nossa nova jornada, veremos nestes vídeos uma entrevista com
o Professor Cláudio de Castro Monteiro, mestre em computação e doutorando em
Engenharia Elétrica, falando sobre Sistemas Operacionais.
http://www.youtube.com/watch?v=5H5nFPPnB4A – Parte 1
http://www.youtube.com/watch?v=cTFIR54UcL8 – Parte 2
SISTEMA OPERACIONAL É SOFTWARE
Em um estudo mais detalhado, você poderá verificar
que o sistema operacional está presente desde
sistemas para controle de aviões de guerra, até em
aparelhos celulares. Nesta unidade, descreveremos
detalhes interessantes e intrigantes do Sistema
Operacional. Para melhor compreensão dos Sistemas
Operacionais, observamos que será necessário, antes
de entrarmos em detalhes a esse respeito, definirmos
o que venha ser um Software.
Software (ou programa de computador) pode ser
definido como a sequência de instruções lógicas a
serem seguidas e/ou executadas na manipulação,
redirecionamento ou modificação de um dado, uma
informação ou um acontecimento. Um exemplo que caracteriza bem essa situação é quando você navega na
Web, pois para navegar você utiliza um software denominado navegador (em inglês, browser). Os Software
podem ser categorizados em: aplicativos e software de sistema.
APLICATIVOS E SOFTWARES DE SISTEMA
Os aplicativos são softwares, com finalidades específicas, comprados, baixados da internet ou desenvolvidos
pelos usuários, por exemplo, editores de textos, planilhas, jogos e sistemas de controle de estoque. Já os
softwares de sistema fornecem o ambiente e as ferramentas nos quais os aplicativos podem ser criados e
executados. Nessa categoria, estão situados o interpretador de comandos (também conhecido como shell), os
compiladores, programas independentes de aplicação e o sistema operacional.
PRINCIPAIS SISTEMAS OPERACIONAIS
No entanto, gostaríamos de ressaltar que nem todos os sistemas computacionais precisam de sistemas
operacionais. Podemos citar como exemplo, a máquina de lavar. A partir da interação do usuário com alguns
botões específicos, esta realiza um conjunto de ações relativamente simples tais como ligar, lavar, enxaguar,
desligar etc. Por isso, a adoção de um sistema operacional, apenas aumentaria os custos de desenvolvimento
e produção.
Nos sistemas computacionais que precisam de sistemas operacionais, tais como os computadores pessoais,
os mais conhecidos e utilizados são:
Microsoft Windows: família de sistemas operacionais criados pela Microsoft. Entre as versões do Windows
estão o Windows 95, Windows 98, Windows 2000, Windows ME e o Windows 7.
Mac OS: família de sistemas operacionais criados pela Apple, destinados aos computadores da linha
Macintosh.
Unix: tem sido o sistema operacional favorito dos programadores e a versão Linux tem se tornado popular
para computadores pessoais.
FUNÇÕES DO SISTEMA OPERACIONAL
Existem ainda centenas de outros sistemas operacionais desenvolvidos para sistemas computacionais com
finalidades específicas como mainframes, robótica, manufatura, sistema de controle em tempo real, entre
outros.
Cada sistema operacional possui aspectos que se diferenciam em relação aos outros. Neste módulo,
discutiremos os pontos que são comuns entre os sistemas da família Windows e Unix.
Resumindo, o sistema operacional realiza duas funções que não estão relacionadas: apresentar ao usuário
uma interface conveniente com o hardware, o que é denominado de máquina estendida (ou máquina virtual),
e gerenciar recursos do sistema (tais como processadores, memórias e dispositivos de entrada e saída). Essas
funções serão detalhadas no decorrer deste módulo.
ELEMENTOS DO SISTEMA OPERACIONAL
A figura, ao lado, mostra o sistema operacional em relação aos
elementos de um sistema computacional.
Conforme essa figura, o sistema operacional gerencia recursos de
hardware, permite aos aplicativos acessarem recursos de sistema
(diretamente ou utilizando softwares de sistema) e fornece uma
interação direta do usuário com o computador.
SISTEMA OPERACIONAL COMO UM GERENCIADOR DE RECURSOS
O primeiro destaque que fazemos a respeito do sistema operacional é que ele tem como principal tarefa
manter o controle sobre quem está usando determinado recurso, evitando que haja conflitos de requisições
entre diferentes programas e usuários.
Vale ressaltarmos que os recursos podem ser compartilhados de duas formas: no tempo e no espaço. E que
cabe também ao sistema operacional, determinar como esse recurso será compartilhado no tempo e no
espaço.
SISTEMA OPERACIONAL COMO UMA MÁQUINA ESTENDIDA
O sistema operacional também fornece ao programador, chamadas de sistema ou funções de biblioteca para
permitir a programação de recursos. Por exemplo, para ler ou gravar dados em um disquete, o programador
tem que se preocupar apenas com nomes de arquivos e as operações correspondentes a essas ações.
Para o programador lidar com a entrada e a saída de um CD, o sistema operacional oculta detalhes de
implementação sobre o hardware e apresenta uma visão simples e agradável dos nomes dos arquivos que
podem ser lidos e escritos. Dessa forma, o sistema operacional protege o hardware do disco e apresenta uma
interface orientada para arquivos simples. Ele também oculta aspectos relacionados às interrupções, aos
temporizadores, ao gerenciamento de memória e outros aspectos de nível inferior.
TAREFAS DO SISTEMA OPERACIONAL
Agora, vamos acompanhar como as tarefas que competem ao
sistema operacional, mencionadas anteriormente, são
executadas por ele. Quando o computador é ligado,
normalmente o sistema operacional se torna ativo e controla os
recursos do sistema. Nesse instante, é carregado um pequeno
conjunto de instruções de sistema armazenadas na memória
ROM (do inglês Read-Only Memory). Essas instruções
verificam se o hardware do sistema está funcionando
corretamente e, caso esteja, ativa as unidades de disco do
computador. Além disso, todos os elementos chave do sistema
operacional são carregados, os programas de inicialização são
executados, a interface com o usuário é fornecida e o sistema é
preparado para uso. Essa atividade é frequentemente
denominada booting.
MULTIPROGRAMAÇÃO
Como já mencionamos anteriormente, na memória principal de um computador, podem existir vários
programas armazenados simultaneamente. Esses programas disputam o acesso ao processador para serem
executados. A técnica que possibilita manter, ao mesmo tempo, esses programas na memória principal, é
denominada multiprogramação.
Um programa em execução reside na memória principal e suas instruções são processadas, uma após outra,
em um ciclo denominado buscar-decodificar-executar (em inglês, fetch-decode-execute).
Outro aspecto que gostaríamos de frisar é que todos os sistemas operacionais modernos empregam a
multiprogramação. Isso significa que, consequentemente, um sistema operacional deve realizar a gerência de
memória para conhecer os programas que estão na memória e em que parte desta, eles residem.
PROCESSOS
Chamamos sua atenção também, para outro conceito importante do sistema operacional, o da ideia de
processo, que pode ser definido como um programa em execução. Em outras palavras, um programa é um
conjunto de instruções estáticas e um processo é a entidade dinâmica que representa o programa quando é
executado.
GERENCIAMENTO DE PROCESSOS
Assim, com a multiprogramação, um sistema pode ter vários processos ativos ao mesmo tempo. O sistema
operacional deve controlar esses processos com cuidado e, para evitar conflitos, ele realiza o gerenciamento
de processos para rastrear o progresso de um processo e todos os seus estágios intermediários.
SINCRONIZAÇÃO DA CPU
Em relação às ideias de gerência de memória e de processos, outra necessidade é a sincronização da CPU,
que determina qual processo é executado pela CPU em determinado ponto da memória. Gerenciamento de
memória, de processo e compartilhamento de CPU são os três principais tópicos discutidos neste módulo.
É importante você ter sempre em mente que o sistema operacional é apenas um programa que deve ser
executado. Os processos do sistema operacional devem ser controlados e mantidos na memória principal,
1
2
1 2 3
junto com outros softwares de sistema e aplicativos. O sistema operacional é executado na mesma CPU que
os outros programas.
Antes de detalharmos o gerenciamento de recursos, tais como a memória principal e a CPU, vamos explorar
o conceito de tempo compartilhado.
TEMPO COMPARTILHADO
Uma vez feita a contextualização do assunto, passamos a observar que inicialmente, os sistemas de tempo
compartilhado foram desenvolvidos para mainframes e que um mainframe é um computador de grande
porte, dedicado normalmente ao processamento de uma grande quantidade de informações. Conectados ao
mainframe normalmente existem vários terminais burros. Cada terminal burro consiste, essencialmente, de
monitor e teclado conectados ao mainframe. O sistema operacional reside no mainframe e gerencia o
compartilhamento de recursos entre vários usuários.
Quando um programa é executado no mainframe, a propriedade do processo resultante desse programa é
atribuída para o usuário que executou o processo. A CPU é compartilhada entre todos os processos criados
por todos os usuários e, para cada processo, é atribuído um tempo de acesso à CPU.
Nos mainframes, a premissa é que a CPU é tão rápida que pode lidar com as necessidades de vários usuários
sem que nenhum deles perceba uma queda no desempenho do computador. Na verdade, os usuários de um
sistema de tempo compartilhado às vezes podem sentir a degradação nas respostas do computador,
dependendo da quantidade de usuários ativos e das capacidades da CPU. Quando o tempo de resposta é
demorado, o usuário tem a impressão que o computador está lento.
Atualmente, vários computadores de mesa suportam sistemas operacionais que utilizam o compartilhamento
de tempo para permitir que vários usuários utilizem o computador simultaneamente.
OUTROS FATORES
Como o próprio nome implica, um computador pessoal não foi projetado para ser utilizado por múltiplos
usuários e, originalmente, os sistemas operacionais não levavam isso em consideração. Com o passar dos
anos, as funcionalidades dos computadores pessoais evoluíram e incorporaram muitos aspectos de sistemas
maiores, tais como o compartilhamento de tempo.
Gostaríamos de destacar que, embora o termo computador de mesa seja comumente utilizado como
sinônimo de PC, o termo estação de trabalho (em inglês, workstation) é mais apropriado para substituir o
termo PC, descrevendo que o computador é individual, entretanto, com capacidade de suportar muito mais
usuários. Os sistemas operacionais evoluíram para suportar essas mudanças no uso dos computadores.
1 2
3
4
1 2
3 4
Outro fato que também devemos levar em consideração quanto aos sistemas operacionais, é que nos dias
atuais, os computadores estão conectados em redes.
Unidade II – Gerenciamento de Processos
PROCESSOS
Ao executar um programa, o usuário tem a impressão de possuir o processador e todos os demais recursos
reservados exclusivamente para seu uso. Na realidade, o processador executa o programa de um usuário
durante um intervalo de tempo e, no instante seguinte, poderá processar um outro programa.
Para que a troca de programas ocorra sem problemas, é necessário que todas as informações do programa
interrompido sejam guardadas para que, quando este voltar a ser executado, não lhe falte nenhuma
informação necessária à continuação do seu processamento.
ESTRUTURA DO PROCESSO
Observe a figura. Nela, você pode verificar que um processo é formado por três partes, conhecidas como
contexto de hardware, contexto de software e espaço de endereçamento que, juntas, mantêm todas as
informações necessárias à execução de um programa.
CONTEXTO DE HARDWARE
Importante sabermos que, quando um processo está em execução, o
seu contexto de hardware está armazenado nos registradores do
processador e que no momento em que o processo perde a utilização
da CPU, o sistema salva as informações do processo no contexto de
hardware desse processo.
O destaque que fazemos em relação ao contexto de software, é que a maior
parte de suas informações é proveniente de um arquivo do sistema
operacional, conhecido como arquivo de contas. Nesse arquivo, gerenciado
pelo administrador de sistema, são especificados os limites dos recursos
que cada processo pode alocar. O contexto de software é composto por três
grupos de informações sobre o processo: identificação, quotas e privilégios.
BLOCO DE CONTROLE DO PROCESSO
Nesta seção, falaremos a respeito do Bloco de Controle do Processo que, de certa maneira, contempla o
assunto focalizado anteriormente sobre estrutura de processo.
O processo é implementado pelo sistema operacional, por uma estrutura de dados denominada bloco de
controle do processo (PCB, do inglês Process Control Block) e, a partir do PCB, o sistema operacional
mantém todas as informações sobre o contexto de hardware, contexto de software e espaço de
endereçamento de cada processo.
ESTADOS DO PROCESSO
No slide anterior, comentamos a respeito de Bloco de
Controle do Processo, aqui, dando sequência nesse
assunto, discutiremos sobre os estados do processo.
Iniciamos observando que os processos passam por
diferentes estados ao longo do seu processamento, em
função de eventos gerados pelo sistema operacional ou
pelo próprio processo. Dessa forma, um processo pode
encontrar-se em um dos seguintes estados: NOVO,
PRONTO, EM EXECUÇÃO e FINALIZADO.
Confira nos próximos slides a definição de cada um.
ESTADO NOVO
O processo foi criado. Por exemplo, quando o usuário executa um aplicativo, o processo entra nesse estágio.
A criação de um processo ocorre a partir do momento em que o sistema operacional adiciona um novo PCB
à sua estrutura e aloca um espaço de endereçamento na memória, para uso. A partir da criação do PCB, o
sistema operacional já reconhece a existência do processo, podendo gerenciá-lo e associar programas ao seu
contexto para serem executados.
ESTADO PRONTO
O processo tem condições para ser executado e
aguarda a oportunidade de utilizar o processador.
A partir de um mecanismo conhecido como
escalonamento, o sistema operacional determina
a ordem e os critérios pelos quais os processos,
em estado de pronto, devem utilizar o
processador.
1 2 3
ESTADO EM EXECUÇÃO
O processo está sendo executado.
ESTADO FINALIZADO
O processo foi executado ou encerrado e o sistema operacional não precisa manter informações relativas a
esse processo.
MUDANÇA DE ESTADO DO PROCESSO
É importante ressaltarmos que muitos processos podem estar nos estados pronto ou espera,
simultaneamente. Entretanto, em um computador com processador de um único núcleo, apenas um processo
pode estar no estado execução.
Destacamos ainda, que um processo muda de estado durante seu processamento em função de eventos
originados por ele mesmo (eventos voluntários) ou pelo sistema operacional (eventos involuntários).
Basicamente, existem cinco mudanças de estado que podem ocorrer a um processo, conforme mostrado na
figura.
1 3 2
6
5 4
PROCESSOS INDEPENDENTES
Falaremos agora sobre três processos: independentes, subprocessos e thread. Esses processos são maneiras
diferentes de implementar a concorrência dentro de uma aplicação. O que significa que, busca-se subdividir
o código em partes para trabalharem de forma cooperativa. Vamos tratar de cada um desses processos.
O uso de processos independentes é a forma mais simples de implementar a concorrência em sistemas
multiprogramáveis. Neste caso, não existe vínculo do processo criado, com o seu criador. A criação de um
processo independente exige a alocação de um PCB.
SUBPROCESSOS
Subprocessos são processos criados dentro de uma
estrutura hierárquica. Neste modelo, o processo
criador é chamado de processo pai, enquanto o
novo é chamado de processo filho. Além disso, os
processos filhos possuem seu próprio PCB e
podem compartilhar quotas com o processo pai.
Uma característica desta implementação é a
dependência existente entre o processo criador e o
subprocesso. Caso um processo pai deixe de
existir, os subprocessos subordinados são
automaticamente eliminados.
O uso de processos independentes e subprocessos
demanda consumo de diversos recursos do
sistema. Sempre que um novo processo é criado, o
sistema deve alocar recursos, consumindo tempo
da CPU, neste trabalho. Outro problema é a
comunicação e sincronização entre processos,
consideradas pouco eficientes, visto que cada
processo possui seu próprio espaço de endereçamento.
THREAD
O conceito de thread foi introduzido na tentativa de reduzir o tempo gasto na criação, eliminação e troca de
contexto de processos nas aplicações concorrentes, bem como economizar recursos do sistema como um
todo.
Em um ambiente multithread, um único processo pode suportar múltiplos thread, cada qual associado a uma
parte do código da aplicação. Neste caso, não é necessário haver diversos processos para a implementação
da concorrência.
Cada thread possui seu próprio contexto de hardware, porém compartilha o mesmo contexto de software e
espaço de endereçamento com os demais thread do processo. O compartilhamento do espaço de
endereçamento permite que a comunicação de thread, dentro de um mesmo processo, seja realizada de
forma simples e rápida.
DEADLOCKS
Condições semelhantes a esta, em que se constata a impossibilidade da execução do trabalho de duas
entidades (os pescadores) por haver uma dependência mútua entre elas, e por estarem sujeitas à obtenção
exclusiva de recursos (o anzol, e o par vara e linha) são um problema tão conhecido na ciência da
computação, que recebem um nome próprio: deadlocks.
Quando a questão se desenvolve dentro de um
computador, no entanto, o cenário que serve de
pano de fundo da história é o próprio hardware; ao
passo que entidades que disputam recursos são
processos, ou seja, programas em execução; e os
recursos são variados: na maioria das vezes,
regiões da memória RAM, mas há casos em que
são representados por outros componentes do
sistema, a exemplo de dispositivos periféricos.
No caso dos pescadores, parte do problema se
devia à intransigência dos próprios Paulo e Pedro, que se recusavam a trabalhar juntos, mas também à falta
de visão dos donos das lojas, incapazes de perceber que poderiam aumentar seus lucros se investissem na
compra de mais equipamentos. Em parte, também se devia pescadores, mais atrapalhava do que ajudava.
Quando Frederick Brooks, um notável cientista da computação de origem norte-americana, conferiu à
invisibilidade a denominação de "uma das dificuldades essenciais do software", ele se referia a algo presente
no domínio dos bits intrinsecamente semelhante às dificuldades que tiveram os pescadores, os donos das
lojas e o prefeito da cidade, em perceber as sutilezas naquela cidade. Mais do que isso, em software, as
condições responsáveis pelo aparecimento dos deadlocks são as mesmas quatro apresentadas no caso dos
pescadores:
E assim como foi possível evitar deadlocks naquele lugarejo pacato, também em software é possível evitar
deadlocks, desde que se contorne o surgimento de quaisquer das quatro condições. Há técnicas sofisticadas
para isso, que fazem uso, por exemplo, de um ramo da matemática, denominado Teoria dos Grafos. Mas este
é um assunto para outra conversa.
COMO DETECTAR E TRATAR DEADLOCKS
Por ora, o que provavelmente interessa a você, Aluno Integrado, é que a manifestação dos deadlocks mais
comum é aquela que a você, certamente, causa mais irritação: os travamentos de programas. Na maioria das
vezes em que um programa de computador deixa de responder, a causa não passa da imperícia do
desenvolvedor de perceber as sutilezas envolvidas; tornando-se, portanto, refém daquilo que, tão
tragicamente, denominam: invisibilidade.
A um usuário comum, tudo que resta fazer é notificar os desenvolvedores responsáveis pela criação do
software a respeito do travamento e, preferencialmente, determinar de que maneira seria possível que eles,
os desenvolvedores, reproduzissem o problema no local onde trabalham. Uma das vantagens de se usar
software livre em relação aos softwares proprietários, é que o acesso a desenvolvedores de softwares livres
costuma ser bastante direto - senão pelas barreiras impostas pela língua. E há chances de que eles tenham
tempo suficiente para corrigir o erro, antes que ele volte a aparecer na tela do seu computador.
ESCALONAMENTO DA CPU
Outra observação que fazemos, a respeito do assunto tratado no vídeo, é que as decisões de escalonamento
da CPU também podem ser realizadas quando se desloca o processo do estado em execução para o estado de
pronto, ou quando se desloca o processo do estado de espera para o estado de pronto. Esses são exemplos de
escalonamento preemptivo, porque o processo atualmente em execução tem seu estado alterado pelo sistema
operacional.
Os algoritmos de escalonamento são avaliados frequentemente por métricas específicas, como por exemplo,
o tempo de retorno, que mensura o tempo entre o momento em que um processo chega ao estado de pronto e
o instante que vai para o estado de execução. O ideal é que esse tempo de retorno seja pequeno.
ABORDAGENS DE ESCALONAMENTO
É importante você saber que existem várias
abordagens que podem ser utilizadas para determinar
qual processo será escolhido para passar do estado de
pronto para o estado de execução. Destacamos, aqui,
as três mais conhecidas: o primeiro a chegar é o
primeiro a ser atendido (FCFS, em inglês First-Come,
First-Served), o menor trabalho é o próximo (SJN, em
inglês Shortest Job Next), e distribuição do tempo de
processamento de forma equivalente entre todos os
processos no estado pronto (Round-robin).
FCFS
A FCFS é uma abordagem de escalonamento não
preemptiva que consiste em enviar os processos para a
CPU, na ordem em que eles chegam ao estado de
execução. Quando um processo obtém acesso à CPU, esse
acesso é mantido desde que a CPU faça uma solicitação
obrigando o processo a esperar, como na solicitação de um
dispositivo em uso por outro processo.
Suponha que os processos P1 a P5 cheguem ao estado
pronto no mesmo instante, mas na ordem e tempo de
serviço, conforme mostrado na figura.
Na abordagem de escalonamento FCFS, cada processo recebe
acesso à CPU. Para simplificar, vamos assumir que os
próprios processos não se colocam no estado de espera. Uma
vez que estamos supondo que todos os processos chegaram
ao estado pronto ao mesmo tempo, o tempo de resposta para
cada processo é o mesmo que o seu tempo de conclusão.
Dessa forma, o tempo médio é igual a (140 + 215 + 535 +
815 + 940) / 5 ou 529.
O algoritmo FCFS é fácil de implementar, mas não usa
fatores importantes, tais como requisitos de tempo de serviço.
Apesar do tempo de serviço ter sido utilizado em nossos
cálculos do tempo de resposta, o algoritmo não utiliza essa informação para auxiliar na definição da ordem
de execução dos processos. O gráfico de Gantt, abaixo, mostra a ordem e o tempo de conclusão dos
processos:
SJN
A SJN (Shortest Job First), assim como o FCFS, é uma abordagem de escalonamento não preemptiva que
consiste em observar todos os processos no estado pronto e despachar aquele com o menor tempo de
serviço. A figura mostra o gráfico de Gantt para o mesmo conjunto de processos que examinamos no
exemplo do FCFS. Devido os critérios de seleção serem diferentes do FCFS, a ordem na qual os processos
são programados e concluídos pelo SJN também são diferentes. Observe que o algoritmo de SJN se baseia
no conhecimento do futuro, ou seja, ele envia à CPU o processo que é executado em menor tempo. Esse
tempo é praticamente impossível de determinar. Assim, para executar esse algoritmo, o valor de tempo de
serviço para um processo geralmente é estimado pelo sistema operacional, usando fatores de probabilidade
diferentes e levando em consideração o tipo de trabalho. Entretanto, se essas estimativas estiverem
incorretas, a eficiência do algoritmo se deteriora. O algoritmo de SJN é comprovadamente ótimo, o que
significa que se pudéssemos saber o tempo de serviço de cada trabalho, o algoritmo SJN produziria o menor
tempo de resposta para todos os trabalhos, em comparação com qualquer outro algoritmo. No entanto, uma
vez que não podemos prever o futuro, fazemos suposições e esperamos que essas suposições estejam
corretas.
ROUND-ROBIN
O algoritmo de escalonamento round-robin distribui o tempo de processamento de forma equivalente entre
todos os processos no estado pronto. Esse algoritmo estabelece uma fatia de tempo determinado, que é a
quantidade de tempo que cada processo recebe antes de retornar ao estado de pronto para permitir que outro
processo seja executado. Eventualmente, será atribuída, ao processo de preempção, outra fatia de tempo de
CPU. Esse processo continua até obter todo o tempo que precisa e finaliza sua execução. Note que o
algoritmo round-robin é preemptivo. A expiração de uma fatia de tempo é uma razão arbitrária para remover
um processo da CPU. Essa ação é representada pela transição do estado de execução para o estado de
pronto. Suponha que a fatia de tempo utilizada para um determinado algoritmo de round-robin seja de 50 e
que tenha sido utilizado o mesmo conjunto de processos dos exemplos anteriores. Os resultados do gráfico
de Gantt são:
SISTEMA OPERACIONAL COMO UM GERENCIADOR DE RECURSOS
Para cada processo é dado um intervalo de tempo de 50 unidades, a menos que ele não precise de uma fatia
completa. Por exemplo, o processo 2, originalmente, necessita de 75 unidades de tempo. Vamos supor que
foi dada uma fatia de tempo inicial de 50. Quando a sua vez de usar a CPU chegar novamente, ele vai
precisar de apenas 25 unidades. Portanto, o processo 2 termina e o processamento finaliza em 325 unidades
de tempo.
1 2 3
1 2 3
O tempo médio para este exemplo é (515 + 325 + 940 + 920 + 640) / 5, ou 668. Note que esse tempo de
resposta é maior do que nos outros exemplos. Isso significa que o algoritmo round-robin não é tão bom
como os outros? Não. Não podemos fazer tais afirmações gerais com base em um exemplo. Só podemos
dizer que um algoritmo é melhor que o outro para o conjunto específico de processos.
O algoritmo de escalonamento round-robin é provavelmente o mais amplamente utilizado. Em geral, ele
auxilia em todos os tipos de trabalho e é considerado o mais exato.
Unidade III – Gerenciamento de Memória
GERENCIAMENTO DE MEMÓRIA
MEMÓRIA PRINCIPAL
Gostaríamos de iniciar essa nossa conversa, chamando sua atenção para o fato de que todo computador
possui uma memória principal onde são armazenados os programas em execução. E que essa memória pode
ser vista como um grande bloco de espaço contínuo dividido em grupos de 8, 16 ou 32 bits. Cada byte (ou
palavra de memória) possui um endereço correspondente, que é simplesmente um número inteiro que
identifica determinada região da memória.
HIERARQUIA DAS MEMÓRIAS
Relembramos, portanto, que os primeiros
sistemas operacionais possibilitavam que, em
determinado momento, somente um programa
ocupasse a memória principal. Quando o
usuário executava outro programa, o que
estava na memória era removido para que esse
fosse colocado.
Nos sistemas operacionais, em que apenas um
programa por vez é carregado em memória
para execução, a alocação da memória
principal é um problema simples de se
resolver: basta reservar uma área de memória
para o núcleo do sistema operacional e alocar
o programa na memória restante. Assim, nos
sistemas operacionais em que vários programas podem ser carregados na memória para execução
simultânea, o espaço de memória destinado aos programas deve ser dividido entre eles para possibilitar o
uso eficiente da memória principal.
De um modo geral, os programas são armazenados em memórias secundárias (por exemplo, disco rígido,
CDs, DVDs e disquetes) devido ao baixo custo, à alta capacidade e à possibilidade de armazenamento
permanente de dados.
EXECUÇÃO DE PROCESSOS
Vamos pensar o seguinte... como o processador executa apenas instruções localizadas na memória principal,
antes de um programa ser executado, o sistema operacional deve transferi-lo da memória secundária para a
memória principal. Além disso, o tempo de acesso à memória secundária é muito superior ao tempo de
acesso à memória principal.
Com isso, para maximizar o uso de recursos computacionais, tal como o compartilhamento do processador,
o gerenciamento de memória deve manter, na memória principal, a maior quantidade possível de processos.
O que nos faz perceber que mesmo na ausência de espaço livre na memória principal, o sistema operacional
deve permitir que novos processos sejam aceitos e executados.
RASTREAR PROGRAMA
Importante sabermos ainda, que o sistema operacional
também deve proteger as áreas de memória ocupadas por
cada programa, além da área onde reside o próprio
sistema. Por exemplo, caso um programa tente realizar
algum acesso indevido à memória, o sistema deve
impedi-lo de alguma forma.
Você se lembra o que frisamos no começo deste módulo?
Que em um ambiente de multiprogramação, múltiplos
programas (e seus dados) são armazenados na memória
principal?
Pois é, isso significa que o sistema operacional deve
empregar técnicas para rastrear onde e como um programa reside na memória e converter o endereço lógico
de um programa, no endereço físico da memória.
ENDEREÇOS LÓGICOS
Os endereços lógicos são criados como se o programa
fosse carregado na localização 0 da memória principal.
Vamos ser mais específicos: suponha que um programa
seja carregado no endereço 500 da memória física.
Assim, se esse programa utilizar o endereço lógico 200,
ele fará referência ao endereço 700 na memória física.
Você pode dizer neste momento que, se nós mudarmos as
posições de memória do sistema operacional e do
programa, então os endereços lógicos e físicos para o
programa seriam os mesmos. Isso é verdade. Mas você
teria outras coisas para se preocupar. Por exemplo, um
esquema de gerenciamento de memória deve sempre levar em conta a segurança, especialmente em um
ambiente de multiprogramação. Dessa forma, é necessário impedir que um programa tenha acesso a
determinado endereço que esteja além do seu espaço de memória alocado.
Com o sistema operacional colocado na posição 0, todos os endereços lógicos para o programa são válidos,
com exceção daqueles que ultrapassam os limites da memória principal. Agora, se movermos a posição do
sistema operacional, teremos que impedir que determinado endereço lógico de um programa acesse o espaço
de memória dedicado ao sistema operacional. Isso não é complicado, mas aumenta a complexidade de
processamento.
SWAPPING
Outra preocupação que se deve ter em relação ao gerenciamento de memória é a da possibilidade de
execução de programas que sejam maiores que a memória física disponível. Esse mecanismo é conhecido
como swapping.
ALOCAÇÃO CONTÍGUA SIMPLES
Ressaltamos que o gerenciamento de memória pode ser
dividido em duas categorias:
Abordagens que movem os programas entre a memória
principal e o disco (swapping e paginação); Abordagens
que não movimentam os programas entre diferentes
dispositivos de armazenamento.
A alocação contígua simples foi a abordagem de
gerenciamento de memória adotada nos primeiros
sistemas operacionais. Consiste na memória principal ser
subdividida em duas áreas: uma para o sistema
operacional e outra para o programa do usuário, seja ele
um aplicativo qualquer.
Para utilizar essa abordagem, o programador, ao
desenvolver as aplicações, deve se preocupar apenas em
não ultrapassar o espaço de memória principal disponível.
Em outras palavras, a aplicação não deve ultrapassar a
diferença entre o tamanho total da memória principal e a área ocupada pelo sistema operacional.
Na alocação contígua simples,
o usuário tem controle sobre
toda a memória principal,
podendo ter acesso a qualquer
posição de memória, inclusive a
área do sistema operacional.
Para proteger o sistema
computacional desse tipo de
acesso, que pode ser intencional
ou não, alguns sistemas
protegem a memória utilizando
um registrador que delimita as áreas do sistema operacional e do usuário, conforme mostrado na animação
ao lado.
Assim, sempre que um programa faz referência a um endereço na memória, o sistema operacional verifica se
o endereço está dentro dos limites permitidos. Caso não esteja, o programa é cancelado e uma mensagem de
erro é exibida para o usuário, indicando que houve uma violação no acesso à memória principal.
Assim, é importante você saber que, apesar da facilidade da alocação contígua simples, apenas um usuário
pode dispor dos recursos computacionais e, caso o programa do usuário não a preencha totalmente, existirá
um espaço de memória livre sem utilização.
ALOCAÇÃO PARTICIONADA
Para falarmos sobre essa abordagem, gostaríamos de relembrar o que já foi dito antes: que os sistemas
operacionais evoluíram no sentido de proporcionar melhor aproveitamento dos recursos computacionais
disponíveis. Pois, foi a partir da evolução que novas abordagens de gerenciamento da memória principal
foram criadas para suportar que vários programas estivessem, ao mesmo tempo, nessa memória. Uma dessas
abordagens é a alocação particionada.
ALOCAÇÃO PARTICIONADA ESTÁTICA
Em relação a esse tipo de gerenciamento, podemos dizer que está relacionado ao fato de que, inicialmente,
os programas só podiam ser carregados e executados em apenas uma partição específica, mesmo se outras
estivessem disponíveis. E que essa limitação ocorria porque os compiladores geravam apenas códigos
absolutos.
No código absoluto, todas as referências a endereços de um programa são posições físicas na memória
principal. Isso fez com que os programas fossem alocados em áreas específicas da memória, fato que deu
nome a essa abordagem de gerenciamento de memória de alocação particionada estática absoluta.
ALOCAÇÃO PARTICIONADA ESTÁTICA RELOCÁVEL
No entanto, é importante sabermos que com a evolução dos compiladores, o código gerado deixou de ser
absoluto e passou a ser relocável. E que no código relocável, todas as referências a endereços de um
programa são relativas ao início do seu código, e não a endereços físicos de memória.
Assim, os programas passaram a ser executados a partir de qualquer partição. Esse tipo de gerência de
memória é denominado alocação particionada estática relocável.
ALOCAÇÃO DE PARTIÇÕES
Para controlar as partições, a alocação
relocável mantém uma tabela com o
endereço inicial de cada partição, seu
tamanho, e se está em uso. Sempre que
um programa é carregado para a
memória, o sistema percorre essa
tabela, na tentativa de localizar uma
partição livre, onde o programa possa
ser carregado.
PROTEÇÃO NA ALOCAÇÃO PARTICIONADA
Nessa abordagem, chamamos sua atenção para o fato de que a
proteção da memória se baseia em dois registradores que indicam os
limites, inferior e superior da partição onde o programa está sendo
executado. Assim, caso o programa tente acessar uma posição de
memória fora dos limites definidos pelos registradores, ele é
interrompido e uma mensagem de violação de acesso é gerada pelo
sistema operacional.
FRAGMENTAÇÃO INTERNA
Uma última observação que fazemos, a respeito desse assunto, é que
tanto nos sistemas de alocação absoluta quanto nos de alocação
relocável, os programas, normalmente, não preenchem totalmente as
partições onde são carregados. Esse tipo de problema, decorrente da
alocação fixa das partições, é conhecido como fragmentação interna.
ALOCAÇÃO PARTICIONADA DINÂMICA
Como você pode perceber, o próprio nome desse tipo de
alocação sugere ideia contrária ao tipo de alocação, analisado
anteriormente. E foi justamente com a alocação particionada
estática, que se evidenciou a necessidade de uma nova forma
de gerenciamento da memória principal, para que o problema
da fragmentação interna fosse reduzido e, consequentemente,
o grau de compartilhamento da memória aumentado.
O que significa dizer que, na alocação particionada dinâmica
ou variável, foi eliminado o conceito de partições de tamanho
fixo. Dessa forma, cada programa utilizaria o espaço
necessário, tornando-o como sua partição. Como os
programas utilizam apenas o espaço que necessitam, no
esquema de alocação particionada dinâmica não ocorre o problema da fragmentação interna.
FRAGMENTAÇÃO EXTERNA
Com tudo isso, podemos afirmar que a princípio, o problema
da fragmentação interna está resolvido. Entretanto, um tipo
diferente de fragmentação começa a ocorrer, quando os
programas terminam e deixam espaços cada vez menores na
memória, não permitindo o ingresso de novos programas. Esse
tipo de problema é denominado fragmentação externa.
SOLUCIONANDO A FRAGMENTAÇÃO EXTERNA
No entanto, destacamos que existem duas soluções para o
problema da fragmentação externa da memória principal. Na
primeira solução, conforme os programas terminam a
execução, apenas os espaços livres situados nas imediações
são reunidos, produzindo áreas livres de tamanho maior.
E na segunda solução, envolve a relocação de todas as
partições ocupadas, eliminando todos os espaços entre elas e
criando uma única área livre contígua.
Para isso, é necessário que o sistema computacional tenha a
capacidade de mover os diversos programas na memória
principal, ou seja, realizar a relocação dinâmica. Esse
mecanismo de compactação, também conhecido como
alocação particionada dinâmica com relocação, reduz, em
muito, o problema da fragmentação, porém a complexidade
do seu algoritmo e o consumo de recursos do sistema, como
processador e espaço em disco, podem torná-lo inviável.
Unidade IV – Gerenciamento de Arquivos
INTRODUÇÃO
Nas unidades anteriores, falamos sobre gerenciamento de memória e de processo, nessa vamos discutir sobre
Gerenciamento de Arquivos. Iniciamos esse assunto, dizendo que um sistema operacional possibilita que os
usuários executem aplicações (tais como, editores de texto, jogos, reprodutores de áudio e vídeo) que
processam informações como textos, músicas e filmes, armazenados sob a forma de arquivos em um disco
rígido ou outro meio.
ARQUIVO
De maneira breve e simples, podemos dizer que um arquivo é
basicamente um conjunto de dados armazenados em um dispositivo
físico não volátil, identificado por um nome, composto por uma
sequência de caracteres, que possibilita sua localização posterior.
Arquivos são extremamente versáteis em conteúdo e capacidade:
podem conter desde um texto com alguns bytes, até sequências de
vídeo com dezenas, até milhares de gigabytes.
Um dispositivo de armazenamento pode conter milhões de arquivos que são organizados em estruturas
hierárquicas denominadas diretórios (conforme mostrado na figura). A organização física e lógica dos
arquivos e diretórios dentro de um dispositivo é denominada sistema de arquivos.
SISTEMA DE ARQUIVOS
Para facilitar a compreensão a respeito desse assunto, podemos dizer que um sistema de arquivos pode ser
visto como uma imensa estrutura de dados armazenada de forma persistente em um dispositivo físico. E que
existe um grande número de sistemas de arquivos, dentre os quais podemos citar o NTFS (nos sistemas
Windows), o Ext2/Ext3/Ext4 (Linux), o HPFS (MacOS), FFS (Solaris) e o FAT (usado em pen drivers USB,
máquinas fotográficas digitais e leitores MP3). Nos próximos slides vamos explicar dois sistemas de
arquivos muito adotados pelos sistemas operacionais: FAT e EXT.
FAT
FAT é a sigla para Tabela de Alocação de
Arquivos (do inglês, File Allocation Table) e
o FAT 16 é o mais antigo dos sistemas da
família Windows. Ele tem uma grave restrição
que é reconhecer somente discos de no
máximo 2 GB, por partição. Talvez, por essa
limitação, ele tenha sido substituído pelo FAT
32. Ressaltamos que o FAT 16 ainda é
utilizado nos pen drivers e também em cartões
de memória, como os que você usa em
máquinas fotográficas digitais, desde que
tenham o tamanho máximo de 2 GB.
O FAT 32 veio para tentar solucionar este
pequeno problema de reconhecimento,
passando a reconhecer partições de até 2 TB.
Além disso, este sistema também consegue
posicionar o diretório principal em qualquer
lugar do disco. Outra vantagem é o fato de
que no sistema FAT 16, havia uma limitação
no número de entradas que podiam ser alocadas no diretório principal, mais precisamente 512 arquivos e/ou
pastas. Isto não ocorre no FAT 32. Outra curiosidade sobre os sistemas de arquivo: o FAT 32 tem a
capacidade de poder mudar o tamanho da partição sem a perda de dados. Apesar desta capacidade, a
Microsoft não implementou essa característica no FAT 32. Na prática, isso nos permite, caso seja preciso,
aumentar o tamanho de uma partição FAT 32.
EXT3
O sistema EXT3 (sigla para Third Extended
File System) é uma evolução de seu
antecessor, o EXT2. Foi desenvolvido pela
Red Hat, possui total compatibilidade com o
EXT2, além de algumas melhorias
significativas, como o uso do journaling, que
consiste em um registro (log ou journal) das
transações, cuja finalidade é recuperar o
sistema em caso de desligamento não
programado.
ATRIBUTOS DE ARQUIVOS
No entanto, vale ressaltarmos que cada arquivo é
caracterizado por um conjunto de atributos, que podem
variar de acordo com o sistema de arquivos utilizado.
Destacamos aqui, os dois atributos mais conhecidos
que são:
Nome: string de caracteres que identifica o arquivo
para o usuário, como "foto1.jpg", "relatório.pdf",
"documento.doc", etc;
Tipo: indicação do formato dos dados contidos no
arquivo, como áudio, vídeo, imagem, texto etc. Muitos
sistemas operacionais usam parte do nome do arquivo
para identificar o tipo de seu conteúdo, na forma de
uma extensão: ".doc", ".jpg", ".mp3" etc.
Feitas essas considerações, passamos a tratar da organização e estrutura de um arquivo. Para isso, iniciamos
observando que, em sua forma mais simples, um arquivo contém basicamente uma sequência de bytes, que
pode estar estruturada de diversas formas para representar diferentes tipos de informação.
FORMATOS DE ARQUIVOS
Em relação ao formato ou estrutura interna, destacamos que um arquivo pode ser definido - e reconhecido -
pelo núcleo do sistema operacional ou somente pelas aplicações. O núcleo do sistema, geralmente reconhece
apenas alguns poucos formatos de arquivos, como binários executáveis e bibliotecas. Os demais formatos de
arquivos são vistos pelo núcleo apenas como sequências de bytes sem um significado específico, cabendo às
aplicações, interpretá-los.
Os arquivos de dados convencionais são estruturados pelas aplicações para armazenar os mais diversos tipos
de informações, como imagens, sons e documentos. Uma aplicação pode definir um formato próprio de
armazenamento ou seguir formatos padronizados. Por exemplo, há um grande número de formatos públicos
padronizados para o armazenamento de imagens, como JPEG, GIF, PNG e TIFF, mas também existem
formatos de arquivos proprietários, definidos por algumas aplicações específicas, como o formato PSD (do
editor Adobe Photoshop) e o formato XCF (do editor gráfico GIMP). A adoção de um formato proprietário
ou exclusivo dificulta a ampla utilização das informações armazenadas, pois somente aplicações que
reconheçam aquele formato conseguem ler corretamente as informações contidas no arquivo.
EXTENSÕES RECONHECIDAS PELO WINDOWS
Relacionamos, a seguir, uma lista de algumas extensões
reconhecidas pelo sistema operacional Windows e seus
aplicativos:
EXE: Arquivo executável, consistindo no arquivo principal do
programa.
TXT: Arquivo de texto não executável.
DLL: Bibliotecas de informações usadas por outros aplicativos
ou pelo sistema operacional.
ICO: Arquivo de ícone
BMP: Arquivo de imagem de mapa de bits
WAV: Arquivo com multimídia de áudio
AVI: Arquivo com multimídia de vídeo
HTM ou HTML: Documento da internet
JPEG: Arquivos de imagem padrão bitmap (jpeg) comprimido
CONSTRUÇÃO DE SISTEMA DE ARQUIVOS
Na implementação de um sistema de arquivos,
considera-se que cada arquivo possui dados e
metadados. Os dados de um arquivo são o seu
conteúdo em si (uma música, uma fotografia, um
documento ou uma planilha). Por outro lado, os
metadados do arquivo são seus atributos (nome,
datas, permissões de acesso etc) e todas as
informações de controle necessárias para localizar e
manter seu conteúdo no disco.
Como você pode observar, vários detalhes
importantes devem ser considerados na construção
de um sistema de arquivos, que vão do acesso de
baixo nível aos dispositivos físicos de
armazenamento à implementação da interface de
acesso a arquivos para os programadores. Caso esses detalhes não sejam levados em conta, diversos
problemas podem surgir.
Unidade V – História dos Sistemas Operacionais
CONTEÚDO COMPLEMENTAR
ENIAC - O PRIMEIRO COMPUTADOR ELETRÔNICO
Passamos agora para uma nova fase em nossos estudos, na qual estudaremos um pouco sobre a história dos
sistemas operacionais, desde seu surgimento até os novos e modernos SO's que temos hoje.
Para começarmos clique em http://www.youtube.com/watch?v=F3qWg1JBPZg e veja um vídeo do
Youtube que conta a história do surgimento do ENIAC (O primeiro computador eletrônico), como se dava
seu funcionamento e o que esta criação significou para a sociedade da época.
1ª GERAÇÃO - VÁLVULAS E PAINÉIS DE PROGRAMAÇÃO
Em meados da década de 40 e 50 (1945-1955), os computadores não trabalhavam com o conceito de sistema
operacional propriamente dito. Nesta época, um pequeno grupo de pessoas era responsável pelo projeto,
construção, programação, operação e manutenção da máquina. O conceito de linguagem de programação
ainda não existia. Todas as instruções eram dadas através dos painéis da máquina, com chaves, inúmeros
fios, cabos e luzes de aviso. Um exemplo dessa fase é o ENIAC (Electrical Numerical Integrator and
Calculator), um gigantesco computador com 70 mil resistores e entre 17.468 e 18.000 válvulas a vácuo que
ocupavam a área de um ginásio desportivo.
No início dos anos 50, houve uma melhora no uso de tais máquinas com o advento do cartão perfurado que
tornou possível a codificação de programas em cartões e sua leitura pela máquina, dispensando a
programação através de painéis.
2ª GERAÇÃO - TRANSISTORES E SISTEMA EM LOTE (BATCH)
Com a inserção da tecnologia dos transistores, em meados
dos anos 50, os computadores tornaram-se confiáveis a
ponto de serem comercializados. Não demorou muito para
aprimorarem o sistema de leitura de cartões perfurados, já
implementado anteriormente. Tal aprimoramento foi
chamado de programação em batch ou programação em
lote, que consistia em coletar as instruções de vários
cartões perfurados, permitindo assim, a construção de
sequência de comandos para serem interpretados pela
máquina. Normalmente, um programa era composto por
um conjunto de cartões inseridos pelo usuário do sistema,
na ordem correta, dando assim, mais eficiência e rapidez
na execução das tarefas.
Nasciam assim, os primeiros SOs, mas por que SOs no
plural? É que cada máquina possuía um SO próprio, devido a sua arquitetura muito peculiar. Nessa época, os
computadores eram usados maciçamente na realização de cálculos científicos e também de engenharia, tal
como a obtenção da solução de equações diferenciais parciais. Já a programação era feita em linguagem
FORTRAN. Os sistemas operacionais da época eram o FMS (Fortran Monitor System) e o IBSYS, ambos
sistemas operacionais desenvolvidos pela IBM.
3ª GERAÇÃO - CIRCUITOS INTEGRADOS E MULTIPROGRAMAÇÃO
A velocidade e a eficiência dos computadores aumentaram
drasticamente com a introdução dos circuitos integrados na
fabricação de componentes de tecnologia. Além, é claro,
das facilidades geradas pela criação dos circuitos
integrados, que além da economia de espaço,
proporcionava também um aumento de performance
significativo.
Nos anos 60, muitos fabricantes de computadores tinham
duas linhas de produto distintas e incompatíveis. Havia os
computadores científicos, de grande porte, como o 7094,
que era usado para cálculos numéricos em ciência e
engenharia e, por outro lado, havia os computadores
comerciais, tais como o 1401, que era vastamente usado
para classificação em fita e impressão, por bancos e
companhias de seguros. Porém, o desenvolvimento e a manutenção de duas linhas de produto
completamente diferentes se tornaram muito caras para os fabricantes. E também, os clientes, em potencial,
para aquisição de novos computadores, necessitavam inicialmente de uma máquina pequena, para mais
tarde, com o crescimento, terem uma máquina maior onde pudessem rodar todos os seus programas mais
rapidamente.
Foi com a intenção de resolver esses problemas que a IBM
introduziu o System/360: uma série de máquinas cujos
softwares eram totalmente compatíveis. Além disso, o 360
foi projetado para manusear tanto a computação comercial
como a computação científica. Assim, uma única família
de máquinas poderia satisfazer as necessidades de todos os
clientes. A IBM não parou por aí. Apresentou os sucessores
compatíveis com a linha 360, usando uma tecnologia mais
moderna, conhecidos como séries 370, 4300, 3080 e 3090.
O 360 que tinha como seu sistema operacional
o OS/360, foi a primeira linha de
computadores a usar (em pequena escala)
circuitos integrados (CIs), fornecendo grande
vantagem em relação ao preço/performance,
sobre as máquinas da segunda geração.
Isso foi um sucesso imediato e a ideia de uma
família de computadores compatíveis foi logo
adotada por todos os outros fabricantes. O
OS/360 e os sistemas operacionais similares
da terceira geração, produzidos por outros
fabricantes, satisfizeram razoavelmente bem a
seus clientes. Eles também popularizaram
várias técnicas ausentes nos sistemas
operacionais da segunda geração.
Provavelmente, a mais importante dessas técnicas foi a multiprogramação.
Para estudarmos multiprogramação é
importante reforçar um conceito
fundamental: o conceito de processo. Um
processo é basicamente um programa em
execução. Ele consiste em um programa
executável, com seus dados e pilha, o seu
stack pointer e registradores, enfim, todas as
informações necessárias para executar o
programa.
A Multiprogramação é a capacidade do
sistema operacional de executar,
concorrentemente, vários processos,
alternando-os entre CPU e memória. A
grande vantagem da multiprogramação é o
fato dela evitar que a CPU fique ociosa
enquanto outros processos em execução estão realizando operações que não requerem seu uso, como por
exemplo, operações de entrada/saída.
4ª GERAÇÃO - COMPUTADORES PESSOAIS
Em 1959, na Califórnia, Robert Noyce, da Fairchild (uma fabricante de
semicondutores), criou um circuito integrado, fazendo o circuito todo em
um chip.
Da mesma maneira com que os microcomputadores da terceira geração
viabilizaram que cada departamento de uma empresa ou universidade
tivesse seu próprio computador, o microprocessador possibilitou que as
pessoas tivessem seu computador pessoal (PC – Personal Computer).
Como nesse momento o poder computacional já era bem significativo,
abriu-se caminho para o crescimento da indústria de software para
computadores pessoais. Basicamente, dois sistemas operacionais
dominaram a cena do computador pessoal e da estação de trabalho
(computadores pessoais normalmente interligados em redes): o MS-DOS
da Microsoft e o UNIX.
QUADRO GERAL
Unidade VI – Sistemas Operacionais Modernos
SISTEMAS OPERACIONAIS MODERNOS
De acordo com estimativas de empresas de pesquisa especializadas, já passa de 1 bilhão de unidades a
quantidade de computadores pessoais no mundo e esse número deve duplicar até 2014. Então, imagine a
quantidade de sistemas operacionais em funcionamento nesses computadores, sem contar os sistemas
operacionais que "rodam" em outros dispositivos, como celulares, palm's, receptores de TV digital, entre
outros.
Agora que já vimos como surgiram os primeiros SOs, daremos continuidade estudando os sistemas
operacionais mais comuns atualmente. Para chegar ao que conhecemos hoje, os sistemas operacionais
passaram por um longo processo de desenvolvimento e amadurecimento, e grandes personalidades
estiveram envolvidas nesta história. Iniciaremos esta unidade estudando a história dos SOs considerados
como modernos e, também, um pouco da história de seus criadores.
CONTEÚDO COMPLEMENTAR
HTC MAGIC
Clique aqui http://www.youtube.com/watch?v=jHJrCH4w4Gk e confira um vídeo de demonstração do
HTC Magic com Sistema Operacional Android.
KEN THOMPSON E O UNIX
Os primeiros sistemas operacionais desenvolvidos em meados da década de 60 tinham um grande problema,
a incompatibilidade. Cada máquina possuía seu próprio SO, ou seja,
um SO projetado para uma máquina não servia em outra, sem que
fosse antes reescrito.
Como boa parte dos grandes sistemas que temos hoje, como Orkut,
YouTube, entre outros, o Unix surgiu a partir de um projeto pessoal,
neste caso, do programador da empresa de tecnologia AT&T,
Ken Thompson. Sua intenção era poder utilizar em uma máquina
mais barata, um jogo chamado Space Travel, escrito por ele mesmo.
O jogo rodava em um gigantesco mainframe General Electric 645, e servia para demonstrar o sistema
operacional que estava sendo desenvolvido pela AT&T na época, o Multics.
CONTEÚDO COMPLEMENTAR
UNIX
Clique aqui http://www.youtube.com/watch?v=6O7euT9K0q4 e veja a história do Unix pela voz de seus
criadores: Ken Thompson e Dennis Ritchie.
No entanto, a empresa cancelou o desenvolvimento do Multics, pouco
tempo depois. Então, para continuar jogando, Ken Thompson e seu
colega Brian Kernighan decidiram criar uma versão mais simplificada
do Multics, que permitisse rodar o jogo. Em apenas um mês
conseguiram um sistema operacional rudimentar, mas com
interpretador de comandos Shell, um editor de textos e ferramentas
para programação. O sistema foi inicialmente batizado de Unics, numa
referência ao Multics, porém logo foi rebatizado para Unix.
O pequeno projeto pessoal de Ken Thompson e seu colega Brian
Kernigham foi crescendo, bem como a equipe que participava dele. Em
1972, também na AT&T, foi criada a linguagem de programação C, por
Dennis Ritchie. Usando essa nova linguagem, o Unix, então, foi reescrito
e se tornou capaz de funcionar em qualquer máquina, independentemente
do modelo e do fabricante, sem precisar ser reescrito.
O Unix começa a se destacar e virar notícia em jornais e revistas científicas. Como o código-fonte era
livremente distribuído, novas versões foram surgindo, a primeira foi a BSD (Berkeley Software
Distribution), da Universidade da Califórnia, em Berkeley. Logo em seguida, a partir de 1979, surgiram as
implementações comerciais do Unix para servidores: Sun OS (da Sun, posteriormente rebatizado para
Solaris), Xenix (da Microsoft), HP/UX (HP) e AIX (IBM). Com o acesso ao código-fonte, várias empresas
reescreveram o Unix, dando origem a uma nova família de sistemas operacionais.
Enquanto isso, no Brasil, a cultura Unix
começava a tomar forma, mais precisamente em
1984. Algumas empresas começavam a oferecer
minicomputadores com variações nacionais do
sistema operacional, um exemplo é o SOx.
Podemos afirmar que mais de 90% dos SOs atuais foram
diretamente ou indiretamente influenciados, de alguma
maneira, pelo Unix, como por exemplo, o Mac OS X,
sistema operacional dos produtos da Apple: um tipo de
Unix. Assim como a base do sistema Windows NT e seus
sucessores, podemos também citar o Linux, que além de
gratuito, roda em hardware barato, e apesar de se parecer
visualmente com o Unix, não é certificado como “Unix de
verdade”. Estudaremos detalhadamente sobre ele mais a
frente.
Apesar da “concorrência” entre os SOs, e de ser
considerado como um SO antigo, o Unix tem seu espaço
garantido. Pesquisas revelam que boa parte dos ainda
usuários do Unix ( grandes empresas que rodam
aplicações de alto risco como Bancos, Hospitais etc.) não planejam mudar de SO. Mesmo com a tendência
de migração de Unix para Linux.
A HISTÓRIA DA APPLE: APPLE I
Steve Jobs e seu colega Steven Wozniak são grandes amigos desde os tempos de colégio. Ambos sempre se
interessaram por eletrônica. Por coincidência, ambos foram trabalhar no famoso Vale do Silício, em
empresas de tecnologia, sendo Steven Wozniak na Hewlett-Packard, e Steve Jobs na Atari.
Em 1976, Wozniak criou o que seria o Apple I. Jobs, que sempre foi tido como visionário, insistia em
vender esta máquina, e em 1º de abril de 1976, criaram a Apple Computer.
Desde a criação da empresa, Steve teve como seu principal foco a
criação de computadores para o dia a dia, incluindo sistemas
operacionais fáceis de serem usados. O lançamento do Apple I, em
1976, um dos primeiros computadores pessoais, foi um marco na
história da computação.
Apesar de não parecer tão bonito, para os padrões que conhecemos
hoje, o Apple I foi uma grande revolução, visto que, pela primeira
vez, um PC continha um teclado fácil de ser utilizado e uma mini-
televisão adaptada como monitor.
CONTEÚDO COMPLEMENTAR
HISTÓRIA DA COMPUTAÇÃO
Clique aqui http://www.youtube.com/watch?v=pv-SFDT2kXA e veja a matéria sobre os 30 anos da criação
da Apple, desde os tempos de empresa de garagem a símbolo do império norte-americano.
A HISTÓRIA DA APPLE: APPLE II E III
Jobs fez questão de criar o seu sistema operacional do zero, sem
se basear, inicialmente, no Unix. Nos anos que se seguiram, os
modelos Apple II e Apple III foram lançados no mercado,
tornando-se um sucesso de vendas. As interfaces gráficas eram
muito primitivas, se comparadas com o padrão usado atualmente,
mas eram avançadíssimas para a época. Cada modelo do Apple
possuía um sistema operacional distinto.
Em uma visita à empresa Xerox Parc, em meados de 1979, Steve Jobs conheceu um computador totalmente
inovador, criado pela Xerox Parc, e ficou deslumbrado com o Xerox Alto. Este PC possuía uma interface
gráfica (GUI) totalmente revolucionária. Então, pouco tempo depois, a Apple lançou o Lisa, aproveitando as
idéias gráficas do Xerox Alto. Nem é preciso dizer que o sucesso foi estrondoso.
A HISTÓRIA DA APPLE: O MACINTOSH E O MAC OS
Sabe esse desktop bonitinho que temos hoje? Com pastas para
representar arquivos e ícones para representar programas? Esse
conceito foi implementado pela Apple, no Machintosh, lançado em
1984. Esta máquina vinha acompanhada do revolucionário e
inovador sistema operacional denominado MAC OS. E não foi
diferente seu sucesso, principalmente nos Estados Unidos.
Mas com o passar dos anos, as versões do Machintosh e a do MAC
OS já não eram mais tão populares como antes, fazendo com que a
Apple perdesse bastante mercado para a Microsoft.
A HISTÓRIA DA APPLE: MAC OS X
O código do MAC OS apresentava muitos problemas no final dos anos 90, obrigando a Apple a traçar novos
planos. Uma atitude tomada em 2001 chamou a atenção de todos, a Apple abandonou seu próprio código e
começou a reescrever todo o seu sistema operacional, desta vez usando como base o Unix. A partir daí,
passou a se chamar MAC OS X (lê-se Mac OS dez, e não Mac OS xis), sistema que continua forte e cheio
de adeptos até os dias de hoje.
A HISTÓRIA DA MICROSOFT: O INÍCIO
Bill Gates tinha 18 anos quando entrou para o curso de
Matemática e Direito na Universidade de Harvard. Aos 21
anos ele abandonou os cursos para se mudar com seu amigo
e sócio para a cidade de Albuquerque, no estado do Novo
México. A Microsoft iniciou suas atividades em uma
garagem, a princípio desenvolvendo softwares para o
computador Altair da IBM, e em 1980, Steve Ballmer se
junta à companhia. O primeiro produto desenvolvido pela
empresa foi uma versão do interpretador BASIC, para o computador Altair 8800 da MITS. Em 1977, é
lançado o Microsoft FORTRAN, para computadores baseados em CP/M.
Com seus programas rodando, e com sucesso, nos computadores da IBM, a Microsoft anuncia, então, que
possuía um sistema operacional completo. A IBM se interessa pelo projeto e em 1979 firma um grande
contrato com a Microsoft.
A HISTÓRIA DA MICROSOFT: DA GARAGEM AO IMPÉRIO
É esse contrato com a IBM que muda a história da Microsoft. E aqui está a grande sacada de Bill Gates:
vender o MS-DOS diretamente para fabricantes de computadores, ao invés de usuários finais. Isso fez com
que o sistema operacional da Microsoft dominasse rapidamente o mercado de PC’s.
Porém, até então, a Microsoft não possuía nenhum sistema operacional inovador e tão poderoso quanto o
anunciado. Eis que resolvem, então, arriscar e comprar o SO da empresa Seattle Computer Products, pelo
valor de $50.000 (cinquenta mil dólares).
Esta transação foi considerada por muitos como o negócio do século, pois a partir desses 50 mil dólares, a
Microsoft tornou-se uma das maiores e mais rentáveis empresas do mundo, tendo seu patrimônio estimado
em algumas dezenas de bilhões de dólares.
A HISTÓRIA DA MICROSOFT: O MS-DOS
De posse do novo SO comprado da Seattle, a Microsoft começa a fazer
uma série de melhorias no sistema, lançando em 1982, o Microsoft-DOS
ou MS-DOS.
O MS-DOS, porém, não chamou tanto a atenção, por ter sua interface
baseada em texto, enquanto a máquina Apple Lisa de Steve Jobs já
apresentava uma interface gráfica inovadora e bem mais avançada para os
padrões da época. Não conformado com isso, Bill Gates fez uma visita a
Apple, com o objetivo de conhecer a empresa e, é claro, o sistema com a
famosa interface gráfica. Ao final da visita, Gates convence Jobs a ser
incluído no desenvolvimento do Machintosh. Porém, acredita-se que o
objetivo de Gates era copiar a interface gráfica do Machintosh.
Um tempo depois Steve Jobs descobre que a Microsoft estava laçando máquinas no Japão, com interfaces
muito parecidas com as da Apple e, por isso, rompe a parceria com a Microsoft. Começa, assim, a grande
rivalidade entre Microsoft e Apple, que persiste até os dias de hoje. A Microsoft lançou o Sistema
Operacional Windows 1.0, em 1985, reforçando a concorrência com o MAC OS.
A HISTÓRIA DA MICROSOFT: A INOVAÇÃO
Com a demissão de Steve Jobs, da Apple, a qual só
retornou em 1997, houve uma desestabilização na
empresa, enquanto isso a Microsoft ganhava cada vez
mais mercado e crescia a passos largos.
O Windows 2.0 foi lançado em 1987, trazendo
melhorias consideráveis na parte visual e também no
gerenciamento de memória. Logo no início dos anos
90, surgem novidades no mercado de Sistemas
Operacionais: o lançamento do Windows 3.0 (1990) e
do Windows 3.1(1992).
O Windows 3.0 era executado sobre o DOS e, portanto, oferecia compatibilidade com os programas DOS,
beneficiando-se do processador 386, podendo fazer a multitarefa com programas DOS e também com
programas Windows. Embora o Windows 3.0 tenha exigido revisões mínimas de praticamente todos os
programas Windows existentes na época. Além do mais, após a introdução do Windows 3.0, começaram a
aparecer os aplicativos, liderados pela divisão de aplicativos da própria Microsoft e seguidos por
praticamente todos os outros grandes desenvolvedores.
1 2
A HISTÓRIA DA MICROSOFT: A EXPANSÃO
A Microsoft não parou de investir e desenvolver
melhorias em seu SO. Na versão 3.0, a memória
passou a ser gerenciada de maneira muito mais
eficiente, e também com uma melhora significativa
na interface gráfica. Foi criado ainda um painel de
controle e um gerenciador de arquivos organizado,
facilitando o trabalho do usuário.
Entre os motivos que contribuíram para o sucesso,
está o fato de o sistema já vir instalado de fábrica em
um grande número de máquinas. Em apenas dois
meses de lançamento, o 3.1 vendeu 3 milhões de
cópias.
O WINDOWS 95
Com o estrondoso sucesso de vendas e um
crescimento assustador, foi lançada no ano de 1995, a
nova versão deste sistema operacional, o Windows
95, um sistema operacional completo para
computadores pessoais que elimina a necessidade do
MS-DOS.
Podemos dizer que esta foi a versão que definiu os
padrões que conhecemos hoje, em termos de desktop
e organização de arquivos em estrutura de raiz. Um
exemplo disso é o botão INICIAR, que foi
implementado a partir desta versão e é utilizado até
hoje.
Além deste item, podemos citar a barra de tarefas, o
gerenciador de arquivos Windows Explorer, e após alguns pacotes de segurança (ou pacotes de atualização),
foi incluído o navegador Internet Explorer, dentre outras funcionalidades.
CONTEÚDO COMPLEMENTAR
WINDOWS 95
Clique aqui http://www.youtube.com/watch?v=lJkpBffLbc4 e confira a noticia do lançamento do Windows
95 em uma matéria do Jornal Nacional que foi ao ar no ano de 1995.
O WINDOWS 98
Em 1998, a Microsoft lança o Windows 98,
desta vez já incorporado com o Internet
Explorer. Apesar de apresentar melhorias em
relação ao Windows 95, o SO era um pouco
lento e instável. Tais problemas só foram
corrigidos com o Windows 98 SE (Second
Edition), lançado em 1999, que incluía
funções avançadas para compartilhamento de
rede, suporte integrado a drivers de DVD-
ROM, entre outras inovações.
O WINDOWS ME
Todas as versões apresentadas até aqui
usavam o MS-DOS como núcleo do
sistema, ou seja, o Windows funcionava
como uma espécie de ambiente gráfico.
Com o passar do tempo, o uso desta
arquitetura tornou-se insuportável, visto
que o MS-DOS não conseguia dar conta
de processar tantas informações, o que
ficou evidente no Windows Me, lançado
pela Microsoft, em 14 de setembro de
2000, que veio com intenção de ser o
sucessor do Windows 98.
O Windows Me trouxe algumas
inovações, como a capacidade de lidar
com várias mídias digitais, como o MP3,
foi também adicionado um programa de edição de vídeo (Windows Movie Maker), um assistente de criação
de redes digitais domésticas, além de atualizações dos programas já existentes no Windows 98.
O WINDOWS NT
Um outro sistema operacional da Microsoft é o Windows NT (NT é uma sigla para New Technology), que
foi reescrito por completo em 32 bits. Com esse novo sistema a Microsoft esperava aposentar todos os seus
sistemas anteriores, dada a superioridade da versão NT, porem isso não aconteceu de fato.
Foi somente com a versão 4.0 que o NT finalmente deslanchou, especialmente em redes corporativas. Além
disso, ele implementou, definitivamente, o conceito de administração de usuários que conhecemos hoje:
modo administrador x modo usuário.
Algumas tarefas passaram, ainda, a poder ser feitas apenas pelo sistema, principalmente aquelas que
dependiam criticamente do hardware. Juntando essas modificações com outras que reduziram os conflitos de
DLLs, alem do fato de o sistema ser baseado no padrão NTFS, tudo isso contribuiu para criar o salto de
qualidade que foi o Windows 2000.
O WINDOWS XP
Lançado oficialmente em 25 de
outubro de 2001, o Windows XP,
rodando em sistemas de arquivo FAT
32 ou NTFS. A sigla XP deriva da
palavra eXPeriência (eXPerience),
tornou-se um marco na história dos
sistemas operacionais, principalmente
por trazer muitos recursos totalmente
novos. Entre eles, é possível citar que
o sistema tornou-se muito mais
seguro, por meio da diferenciação de
permissões entre administradores e
usuários comuns. A estabilidade
também é uma de suas fortes
características, pois os números das
famosas telas azuis diminuíram
consideravelmente.
Mais as principais diferenças em relação às versões anteriores é quanto à interface gráfica, que foi
redesenhada e considerada a mais bonita entre os sistemas anteriores. Trata-se da primeira mudança radical
desde o lançamento do Windows 95. Esta interface é baseada no OS/2 da IBM, em que alguns direitos são
compartilhados entre a IBM e a Microsoft.
O WINDOWS VISTA
Depois de seis anos de espera, em 2007, a Microsoft lança o Windows Vista, que foi muito aguardado pelos
usuários. Ao contrário do XP, esta nova versão desapontou o público de uma maneira geral, principalmente
por exigir uma máquina muito potente. Seu grande destaque foram os efeitos gráficos de última geração,
implementados pelos componentes Aero e o Flip 3D.
O WINDOWS SEVEN
Uma nova versão deste SO, o Windows Seven, (ou Windows 7) foi lançado para empresas no dia 22 de
julho de 2009, e começou a ser vendido livremente para usuários comuns no dia 22 de outubro de 2009,
menos de 3 anos depois do lançamento de seu predecessor, Windows Vista.
AS PRINCIPAIS VERSÕES DO WINDOWS
Observe no quadro abaixo, uma lista com as principais versões do Windows ao longo de sua história.
A HISTÓRIA DO LINUX
O Linux é o mais famoso e importante exemplo de software livre que temos hoje. Por ter seu código fonte
aberto, o Linux tem um ritmo de crescimento muito grande, proporcionando-lhe melhorias e funcionalidades
criadas pela comunidade de desenvolvedores e usuários espalhada pelo mundo, por meio da Internet. Bem,
vamos ver agora como tudo isso aconteceu.
SOFTWARE LIVRE
Muitas pessoas confundem software livre (do inglês Free Software) com software gratuito. A palavra "Free"
(utilizada em Free Software) pode ser empregada tanto no sentido de gratuidade, quanto no sentido de
liberdade e, é no sentido da liberdade, que essa palavra foi utilizada. Dessa forma, segundo a Free Software
Foundation, o software livre pode ser usado, copiado, estudado, modificado e redistribuído sem restrições.
CONTEÚDO COMPLEMENTAR
SOFTWARE LIVRE
Clique aqui http://www.youtube.com/watch?v=4QxjSuPZuFY&feature=related e veja esta animação, que
explica de forma bem simples o que é o Software Livre e suas filosofias. Não deixe de conferir!
O PROJETO GNU
O projeto GNU, que teve início em 1984, buscava a criação de
um sistema operacional de código fonte aberto, inspirando-se
no Unix. No seu projeto original, o sistema operacional GNU
utilizaria um Kernel chamado GNU/Hurd. O nome GNU, além
do significado original referente ao mamífero africano Gnu, é
um acrônimo recursivo de: GNU is Not Unix (em português:
GNU não é Unix). O coordenador do projeto Richard Stallman
incentiva a comunidade a usar a nomenclatura GNU/Linux.
A CRIAÇÃO DA FSF
Foi a partir desse projeto que Stallman criou, então, em 1985, a Free Software Foundation (Fundação para o
Software Livre, FSF), uma organização sem fins lucrativos, que se dedica a levar a bandeira do software
livre que, dentre outras liberdades, pregam:
Mas você deve estar se perguntando... O que essas empresas e pessoas têm a ver com o Linux? Onde entra o
Linus Torvalds, nessa história? Bem, vamos juntar todas essas peças, agora, e descobrir juntos como foi
criado o Linux.
CONTEÚDO COMPLEMENTAR
FREE SOFTWARE FOUNDATION
Clique aqui http://www.youtube.com/watch?v=w8GBA4lpee0 para ver este vídeo com o resumo da criação
da Free Software Foundation entre outros temas abordados.
ANDREW TANENBAUM E O MINIX
A história do Linux começa com uma das versões do Unix, o Minix, que
foi um dos primeiros sistemas do tipo Unix baseado no projeto de um
micronúcleo, criado para fins educacionais, pelo professor Andrew S.
Tanenbaum, para que seus alunos pudessem estudar o Unix, em casa. É a
partir daí que, o então estudante de Ciências da Computação, da
Universidade de Helsinki, na Finlândia, Linus Torvalds, entra em cena.
Em 1991, Linus decide desenvolver um sistema, a partir do Minix, com
algumas funcionalidades que ainda faltavam neste sistema.
LINUS TORVALDS E O LINUX
Durante um tempo, Linus Torvalds trabalhou sozinho nesse projeto e,
posteriormente, para divulgar sua ideia, postou uma mensagem para um grupo de
usuários da Usenet – uma espécie de lista de discussão, antecessora da Internet.
Ainda em 1991, Torvalds disponibiliza a versão 0.02 do Kernel. Nas primeiras
versões, o Linux usava o conjunto de aplicações do Minix. Com o código liberado,
vários desenvolvedores começaram a trabalhar no desenvolvimento do Kernel,
dando assim, um ritmo de crescimento muito grande ao projeto. Enquanto isso, a
Free Software Foundation (FSF) não conseguia avançar muito com seu Kernel, o
GNU/Hurd, porém já tinha várias ferramentas e aplicativos desenvolvidos pela
FSF, que poderiam ser usados livremente. Linus utilizou essas ferramentas e
aplicativos para o desenvolvimento de sua versão do Kernel.
CONTEÚDO COMPLEMENTAR
A HISTÓRIA DO LINUX
Clique aqui http://www.youtube.com/watch?v=qvIUSIjZ4Ok para ver um vídeo do Youtube que conta a
história do Linux desde a sua criação em 1991 até a sua chegada no Brasil, além do modo como se deu a sua
evolução e disseminação pelo mundo.
O GNU/LINUX
Em 1994, é lançada, então, a versão 1.0 Linux,
totalmente compatível com o Unix. Isto
possibilitou a utilização de aplicativos
desenvolvidos para esse sistema.
Quando Linus mudou o licenciamento do Linux
para a licença GPL, tornando-o legalmente
compatível com o projeto GNU, os
desenvolvedores do GNU e do Kernel Linux
trabalharam juntos para integrar os dois softwares
e gerar um sistema operacional completo e de
código livre, denominado GNU/Linux. Essa
nomenclatura é incentivada pela comunidade FSF.
DIFUSÃO DO LINUX
Uma das possibilidades mais importantes do
Software Livre é a de poder montar uma nova
versão e distribuí-la livremente aos
interessados. Isso gerou um grande movimento
na comunidade de desenvolvedores de
softwares, que consiste basicamente em
organizar o Kernel e mais uma série de
aplicativos e manuais com finalidades
específicas, a esse procedimento damos o nome
de distribuição Linux.
Há uma estimativa de que se tenha disponível
hoje mais de 500 distribuições Linux, contando
apenas as distribuições que ainda se encontram ativas. Essas distribuições são mantidas por empresas,
governos, organizações não governamentais e grupo de desenvolvedores no mundo todo.
CONTEÚDO COMPLEMENTAR
DISTRIBUIÇÃO LINUX
Nesse vídeo você verá um pouco sobre as principais distribuições Linux. Não deixe de ver!
Clique aqui!
http://www.youtube.com/watch?v=OSlDxiqPqhQ
AS DIVERSAS DISTRIBUIÇÕES LINUX
Apesar dessa grande quantidade, cerca de 98%
são personalizações de distribuições anteriores,
já existentes. Dentre elas, podemos citar:
Debian, Slackware e Red Hat.
Vejamos no quadro, um resumo dessas
distribuições.
Importante ressaltar que, normalmente, as
distribuições são criadas para atender às mais
variadas demandas, como por exemplo,
administração de redes, edição de áudio e
vídeo, educação, serviços de rede etc.
O DEBIAN
Algumas das distribuições destaque:
DEBIAN - O GNU/Linux Debian é uma das distribuições mais antigas e
conhecidas, talvez por suas características conservadoras e pela grande variedade
de pacotes disponíveis. Foi a partir dele que se originou uma variedade de novas
distribuições, tanto comerciais, como a Linspire e o Xandros; quanto projetos
desenvolvidos pela comunidade de usuários, como Ubuntu, Knoppix e o próprio
Linux Educacional.
Características: Quanto às suas características, podemos destacar seu estilo de
desenvolvimento em três versões, ou seja, versão instável (Unstable),
normalmente versões recém lançadas; versão de testes (Testing), versão em
desenvolvimento, em que novos pacotes e funcionalidades são testadas; e, por
último, a versão estável (Stable), esta é a versão final que é distribuída
amplamente para os usuários finais. A facilidade de instalação é outra grande característica do Debian. Com
apenas um comando, neste caso, o apt-get, podemos instalar, atualizar ou remover qualquer um dos 25 mil
pacotes disponíveis no repositório oficial.
O SLACKWARE
Algumas das distribuições destaque:
SLACKWARE - O Linux Slackware é uma distribuição muito utilizada
tanto em ambientes coorporativos, quanto universitários, sendo comumente
usada por quem já adquiriu certa experiência com o Linux. Os profissionais
de tecnologia gostam muito dessa distribuição, por ser praticamente toda
configurada em modo texto.
Características: Além das características já mencionadas, destaca-se também a política de inclusão de apenas
aplicativos estáveis e nenhuma interface gráfica com configurações específicas, o que torna o Slackware
mais próximo do que foi o Unix-like.
O Linux Slackware é considerado por muitos como uma das distribuições mais segura, confiável e leve.
Esses adjetivos fizeram com que o Slackware se tornasse muito utilizado em servidores e em sistemas de
grande processamento, como por exemplo, no cinema (no filme Titanic, foram utilizados 18 computadores,
rodando Linux, para realizar grande parte das animações e efeitos gráficos do filme).
O RED HAT
Algumas das distribuições destaque:
RED HAT - A Red Hat, Inc. é uma empresa americana de tecnologia que, a
princípio, desenvolve o sistema operacional Red Hat Linux, vendido para uso
privado e para as empresas. Em 2004, a empresa dividiu seu SO em dois
produtos, o Red Hat Enterprise Linux, voltado para o espaço empresarial e,
consequentemente, mais rentável; e criou, algum tempo depois, a distribuição
aberta de nome Fedora Core, que tem um ritmo de atualização mais rápido.
Uma das distribuições brasileira mais conhecida, a Conectiva, foi criada a
partir das distribuições Red Hat.
Características: A Red Hat criou o sistema de empacotamento conhecido
como Red Hat Package Manager ou RPM. Outra característica relevante da
distribuição Red Hat foi a criação de ferramentas que auxiliam na detecção de
novos hardwares, como placas de som, placas de vídeo e também de configurações gerais do tipo som,
mouse, teclado, timer, impressoras. O gerenciador de sistemas linuxconf também teve destaque, e funciona
mais ou menos como o painel de controle do Windows.
Outro exemplo prático é a distribuição Linux Educacional, que estudaremos a seguir.
DISTRIBUIÇÃO LINUX EDUCACIONAL
O Linux Educacional é mais uma ferramenta de apoio à educação, disponibilizada pelo Ministério da
Educação - MEC. Trata-se de uma compilação do Linux baseada na distribuição Kubuntu, totalmente
adaptada para o uso em laboratórios de informática educacional e demais fins pedagógicos.
A versão 3.0 traz várias inovações, dentre elas, você pode conferir no quadro:
Organização e realização:
LabTime (Laboratório de Tecnologia da Informação e Mídias Educacionais)
UFG (Universidade Federal de Goiás)
MEC (Ministério da Educação)