apostila curso aluno integrado- módulo iii- sistemas operacionais

40
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

Upload: renanrmx

Post on 28-Oct-2015

357 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 2: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 3: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 4: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 5: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 6: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 7: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 8: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 9: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 10: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 11: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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:

Page 12: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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).

Page 13: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 14: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 15: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 16: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 17: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 18: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 19: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 20: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 21: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 22: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 23: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 24: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 25: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 26: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 27: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 28: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 29: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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).

Page 30: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 31: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 32: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 33: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 34: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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!

Page 35: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 36: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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

Page 37: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 38: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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.

Page 39: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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:

Page 40: Apostila Curso Aluno Integrado- Módulo III- Sistemas Operacionais

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)