Você está na página 1de 54

PROGRAMA ACTUALIZADO 2018

1. ASPECTOS GERAIS SOBRE SISTEMAS OPERATIVO


1.1. Introdução
1.2. Fundamentos de sistemas operativos
1.2.1. O que é um sistema operativo
1.3. Evolução histórica dos sistemas operativos em sistemas pc
1.4. Objectivo do sistema operativo
1.5. Componentes de um sistema operativo
1.6. Funções do sistema operativo
1.7. Atributos de qualidade de um sistema operativo
1.8. Classificação dos sistemas operativos
1.9. O sistema operativo como um gerenciador de recursos
1.10. Sistemas de arquivos ou ficheiros

2. HISTORIA DOS SISTEMAS OPERATIVOS


2.1. Evolução dos sistemas operativos
2.1.1. Arquitectura dos sistemas operativos
2.2. Primeira geração
2.3. Segunda geração
2.4. Terceira geração
2.5. Quarta geração
2.6. A história do MINIX
2.7. Tipos de sistemas operativos
2.8. Fundamentos de um sistema operativo

3. SISTEMA OPERATIVO LINUX


3.1. Fundamentos e evolução dos sistemas Unix/Linux
3.2. Instalação de um sistema Linux
3.3. Configuração dos vários serviços disponíveis
3.4. Comandos fundamentais do MS-DOS
3.5. Comandos de Linux

4. SISTEMA OPERATIVO WINDOWS


4.1. Fundamentos e breve evolução dos sistemas Windows
4.2. Instalação de um sistema Windows
4.3. Configuração dos vários serviços disponíveis
4.4. Interacção dos sistemas Linux em redes Windows.

5. OPÇÕES AVANÇADAS DE SISTEMAS OPERATIVOS


5.1. Novos sistemas operativos transaccionais
5.2. Open Source vs Sistemas proprietários.
CAP- I: ASPECTOS GERAIS SOBRE SISTEMAS OPERATIVOS

1.1. INTRODUÇÃO

Sem software, um computador é basicamente um inúmero amontoado de


metal. Com software, um computador pode armazenar, processar e recuperar
informações, exibir documentos de multimédia, pesquisar na Internet e
envolver-se em muitas outras importantes actividades que justificam seu valor.
O software de computador pode ser dividido, em grosso modo, em duas
espécies: programas de sistema, que gerenciam a operação do computador
em si, e programas aplicativos, que executam o trabalho que o usuário
realmente deseja.

O programa de sistema mais fundamental é o sistema operativo, que controla


todos os recursos do computador e fornece a base sobre a qual os programas
aplicativos podem ser escritos.

Um moderno sistema de computador consiste em um ou mais processadores,


alguma memória principal conhecida também como RAM(random access
memory – memória de acesso aleatório, discos, impressoras, interfaces de
rede e outros dispositivos de entrada/saída.

Em suma, é um sistema complexo. Escrever os programas que controlam


todos esses componentes e usá-los correctamente é um trabalho
extremamente difícil.

Há muitos anos tornou-se bastante evidente a necessidade de encontrar uma


maneira de isolar os programadores da complexidade do hardware, isto foi
possível colocando uma camada de software por cima do hardware básico para
gerenciar todas as partes do sistema e oferecer ao usuário uma interface ou
máquina virtual que é mais fácil de entender e de programar. Essa camada de
software é o sistema operativo.

Uma importante função do SO é esconder toda essa complexidade e oferecer


um conjunto mais conveniente de instruções para o programador trabalhar.

Por cima do sistema operativo está o resto do software de aplicação. Aqui


encontramos o interpretador de comandos (shell), sistema de janelas,
compiladores, editores e programas independentes de aplicações semelhantes.

O sistema operativo é aquela porção do software que executa no modo kernel


ou no modo de supervisor.

Os programas são comprados ou são escritos pelos usuários para resolver


seus problemas particulares, como processadores de texto, planilhas
electrónicas, programas de cálculo de engenharia ou jogos.
1.2. FUNDAMENTOS DE SISTEMAS OPERATIVOS
1.2.1. O QUE É UM SISTEMA OPERATIVO

Definimos o sistema operativo como sendo um conjunto de programas


vocacionados no funcionamento básico do computador. É o intermediário entre
a máquina e o utilizador, ou seja é o programa de base que faz funcionar o
hardware e os outros programas do computador.

Sistema Operativo é um conjunto de ficheiros contendo instruções que


permitem explorar de forma transparente os recursos que o computador coloca
à disposição do utilizador, nomeadamente, impressora, teclado, rato monitor,
unidade de disquete, disco duro, memória, programas aplicativos, etc.

1.3. EVOLUÇÃO HISTÓRICA DOS SISTEMAS OPERATIVOS EM SISTEMAS PC

ANO EVENTO CARACTERISTICAS


DR-DOS(Digital -Interface de usuário baseado em texto (linha de
Antes de Research) comando)
1981 PC DOS ( P-System)

-Nasce com a família dos microprocessadores Intel


Agosto MS DOS - Microsoft 8088/8086
/1981 Disk Operating System -Interface de usuário: linha de comandos

-Interface do usuário: gráfica ( GUI- Graphical User


Interface )
1985 MS Windows 3.X -Dispensa a necessidade de escrever comandos
pelo teclado - uso do Mouse

-Nova plataforma virada para ambientes de rede.


1994 MS Windows NT -Sem suporte para algumas aplicações concebidas
para o DOS/ Ms Windows 3.X.

-Sucessor do DOS, Windows 3.11/ Windows for


workgroup
1995 MS Windows 95 -Suporte quase total com a maioria de aplicações
de ambientes anteriores.
- primeira versão limitada a 2GB de Disco Duro
-Suporta discos de grande capacidade;
Junho 1998 MS Windows 98 -Gere mais eficientemente a memória e espaço do
disco duro;
-Marcada pele utilização mais crescente da Internet
- Sucessor do windows NT
1999 Ms Windows 2000 - Windows 2000 - Windows NT
- Fiável, Robusto e Seguro.

1.4. OBJECTIVO DO SISTEMA OPERATIVO

Criar uma máquina virtual sobre a máquina física que ofereça todos recursos
lógicos necessários para o desenvolvimento de aplicações.
Aplicação 1 aplicação 2 Aplicação 3
Maquina
Virtual------------------------------------------------------------------------------------------------

SISTEMA OPERATIVO
Maquina
Física-------------------------------------------------------------------------------------------------
HARDWARE

ALTERNATIVAS AO SISTEMA OPERATIVO

As linguagens de programação podem produzir todo código necessário para


que um programa se execute directamente sobre o hardware. Entretanto, isso
implicaria:
• O esforço de programação seria muito grande;
• Um conjunto significativo de funções seria repetido;
• Cada aplicativo poderia optimizar o seu desempenho mas globalmente
a máquina ficaria subaproveitada;
• Não seria possível ter políticas globais de segurança, tolerância à
falhas e optimização.

1.5. COMPONENTES DE UM SISTEMA OPERATIVO

Um Sistema Operativo tipicamente apresenta as seguintes componentes:

1.5.1. Gestão de processos

O SO é responsável por alocar um tempo na CPU à todas as aplicação em


execução, fornecendo os mecanismos da sua sincronização.

1.5.2. Gestão da memória principal

Verifica que partes da memória estão sendo acedidas e por quais processos;
decide que processos devem ser alocados ou retirados da memória, reservar o
espaço para diferentes funções Sistema Operativo, etc.

1.5.3. Gestão dos dispositivos de Entrada e Saída (I/O)

Garantir que todos os dispositivos de entrada e saída tenham todos os


recursos necessários para se comunicarem com a CPU e o resto do sistema.

1.5.4. Gestão da memória secundária

O SO é responsável pela gestão dos discos: criar volumes lógicos(partição) e


sua identificação, alocação de dados, gestão do espaço livre, etc.
1.5.5. Gestão do sistema de ficheiros

O SO fornece uma estrutura lógica na qual os usuários podem criar, eliminar


directorias e ficheiros, ou ainda manipulá-los.

1.5.6. Gestão da rede

Gere os serviços e protocolos que asseguram a comunicação entre


computadores em ambiente de rede.

1.6. FUNÇÕES DO SISTEMA OPERATIVO


I. Máquina Virtual

O Sistema operativo cria uma camada de software que esconde o hardware,


definindo uma máquina virtual que disponibiliza diversos recursos físicos e
lógicos que possam ser utilizados pelas aplicações.

II. Gestor de Recursos

Gere e optimiza a utilização dos recursos físicos e lógicos - como qualquer


outra função de gestão esta actividade do Sistema Operativo deve ter em
consideração diversos objectivos como o desempenho, a utilização eficaz do
investimento no hardware, o controlo de utilização dos recursos pelos
utilizadores, etc.

1.7. ATRIBUTOS DE QUALIDADE DE UM SISTEMA OPERATIVO


1.7.1. Desempenho:

Gestão eficiente dos recursos físicos que suportam os lógicos. O sistema


operativo tem grande impacto no desempenho global de todas as aplicações; é
um gestor de recursos por excelência e, como todos os gestores, deve procurar
obter o melhor equilíbrio entre o investimento e o desempenho dos recursos
que lhe estão confiados. Ele deve explorar eficientemente os recursos físicos
subjacentes, conseguindo extrair o máximo desempenho do processador e
utilizar eficazmente a memória física, os discos, os periféricos, etc. um bom
desempenho implica ainda que a implementação dos recursos lógicos seja
efectuada com técnicas de optimização como, por exemplo, as caches( é um
termo utilizado genericamente para referir uma memória mais rápida do que
aquela onde as versões dos dados estão realmente armazenadas) do sistema
de ficheiros.

1.7.2. Segurança:
• Garantir o isolamento dos utilizadores
• Permitir a partilha segura dos recursos lógicos.
A qualidade do sistema implica ainda a garantia de que quem está a utilizar um
dado recurso tem direito de fazé-lo e que a sua utilização está inserida num
modelo de segurança.
A segurança é uma preocupação de grande actualidade e complexidade. O SO
é a base de qualquer política de segurança, que ao nível de uma máquina
isolada, quer quando estas são interligadas em redes de âmbito mundial como
a Internet.

1.7.3. Falha de paragem:

Como todos os sistemas complexos, o SO tem erros que podem ter origem na
sua especificação, programação, instalação ou operação. Muitos desses erros
estão latentes, ou seja, não se manifestam na operação normal mas podem ser
activados em situações de grande carga ou em condições excepcionais, por
exemplo, quando se instala um novo periférico. Frequentemente, uma situação
em que um dos componentes do SO falha e leva uma das aplicações em
execução a parar, ou por vezes todo o sistema fica bloqueado. A
caracterização destas situações é complexa pelo grande número de hipóteses
de falha que se colocam, numa visão simplificada podemos considerar que
uma falha do SO leva o computador a parar, ou seja, dá-se uma falha de
paragem.

1.7.4. Fiabilidade:

• Detectar um conjunto de falhas.


• Tolerar um conjunto de erros.

Quando existirem falhas, a fiabilidade (reliability) mede a probabilidade de, num


dado intervalo de tempo, não existir nenhuma falha de paragem no sistema. É
particularmente importante o valor deste parâmetro quando se consideram
sistemas que não deverão falhar, quer pelas suas consequências sobre bens
ou vidas humanas, quer por serem dificilmente reparáveis (por exemplo,
satélite).

1.7.5. Disponibilidade:

A disponibilidade (availability) é definida como a probabilidade de o sistema


estar operacional num dado instante, admitindo que ocorrem falhas mas que
foram todas recuperadas através da manutenção adequada, permitindo que o
sistema continue a prestar o seu serviço normal. A disponibilidade será tanto
melhor quanto menor for o número de falhas e mais reduzido o tempo de
manutenção necessária para as recuperar. adequada, como é o caso da
maioria dos sistemas informáticos.
Tal como a segurança, a tolerância a falhas é um tema horizontal a todo o
sistema informático, que depende de numerosos componentes, estando uma
parte importante fortemente relacionada com o sistema operativo.

1.7.6. Interface de Programação Completa e Simples:

• Facilitar a concepção de aplicações, sua manutenção e portabilidade.

Como as interfaces dos sistema operativo são os pontos de contacto, quer com
os utilizadores quer com os programas, são um dos critérios os atributos de
qualidade do sistema operativo. É fundamental qua as interfaces sejam
completas, de fácil utilização e bem documentadas. Como é natural, com a
evolução para a utilização alargada de interfaces gráficas, são permitidas
aplicações de outros critérios específicos das GUI(Graphical User Interfaces)
como ergonomia, expressividade, etc.
O SO também procura apresentar ao utilizador uma interface coerente que
trata de modo uniforme acções sobre entidades semelhantes. O comando de
cópia de ficheiros pode ser referido como exemplo, dado que pode ser utilizado
para directorias, discos, CD, DVD, pen drives ou mesmo para máquinas
remotas. Como exemplo, no Unix um programa pode enviar a sua saida para
um terminal, um ficheiro ou outro programa sem que se tenha de alterar nada
no programa original.

1.8. CLASSIFICAÇÃO DOS SISTEMAS OPERATIVOS

a) Pelo serviço:

- Mono usuário( Single-User)


Pelo nº de
Usuário - Multi-usuário(Multi-User)

- Mono-Tarefa(Single-Tasking)
Pelo nº de
Tarefas - Multi-Tarefa(Multi-Tasking)

Pelo nº de - Uniprocesso
Processadores - Simétricos – equilibrio de carga pelas
CPU
- Multi processo
- Assimétricos – existe um processador
maestro que serve de pivot para distribuir
a carga.

b) Pela forma como oferece os seus serviços


Refere-se a uma visão externa, a forma como o utilizador acede os serviços.

1. Sistemas Operativos de rede

Que tem a capacidade de interagir com outros Sistemas Operativos em outros


computadores visando a partilhar recursos.

2. Sistemas Operativos distribuídos

Estes abraçam serviços de rede logrando integrar recursos (impressora,


espaço no disco, etc.) de uma máquina que o utilizador acede.

Até a década de 80, os computadores eram máquinas independentes,


raramente interligadas entre si por redes e, quando essa interligação existia, as
comunicações constituiam mais uma E/S que permitia enviar ficheiros e pouco
mais. Neste caso, o sistema operativo era centralizado(stand-alone), tendo sob
seu controlo toda informação de gestão dos recursos lógicos.
O aparecimento das redes locais, o desenvolvimento dos computadores
pessoais e, mais tarde, de redes de dados mundiais com uma filosofia de
utilização e gestão aberta como a Internet, marcaram a evolução dos sistemas
informáticos. Estas evoluções permitiram um novo paradigma de
desenvolvimento de aplicações que passaram a poder ser constituídas por
módulos, executando-se em diferentes computadores e que comunicavam
entre si utilizando as redes. Este funcionamento que apresenta numerosas
vantagens como modularidade, adaptação geográfica e distribuição de carga
das aplicações deu origem ao desenvolvimento dos sistemas distribuídos. A
Internet teve um impacto enorme sobre estes sistemas na demonstração
prática de como se podiam conceber aplicações a uma escala planetária, tendo
também, como é natural, levantado, ou agudizado, numerosos problemas de
segurança e de gestão inerentes a sistemas com esta escala.

c) Quanto ao tipo

Dentro da vasta família de SO há geralmente 4 tipos, classificados de acordo


com o tipo de computador que eles suportam, sendo que os principais são:

1. Sistema Operativo em Tempo Real (RTOS- Real Time Operating


System)

Utilizados para controlar máquinas científicas e sistemas industrias, sistemas


de controle tráfego aéreo, centrais telefónicas, etc.

Tipicamente tem pouco de interface de usuário e quase sem nenhum utilitário


do usuário.

Os sistemas onde a noção do tempo é relevante designam-se por tempo real.


Estes têm como objectivo garantir que o computador produz uma resposta a
um acontecimento externo ao fim de um intervalo de tempo limitado e
previamente especifico. Se um sistema deste tipo não reage dentro do intervalo
de tempo previamente definido, o resultado que eventualmente virá a produzir
pode já não ter relevância para a aplicação e, portando, o sistema não cumpre
a sua missão e falha. Para garantir esta capacidade de executar determinado
programa em intervalos de tempo fixos, o sistema necessita de uma gestão das
actividades concorrentes diferente da que é utilizada num ambiente de tempo
virtual.

A parte mais importante de RTOS(Real Time Operating System) é manejar os


recursos do computador de modo que uma operação particular se possa
executar precisa e rigorosamente no mesmo intervalo de tempo. Exemplos:
VxWorks, ThreadX, Salvo, Nucleus, OSEK, INTEGRITY, eCOS e RTLinux.

2. Mono-Usuário, Mono-Tarefa

Apenas um utilizador de cada vez a executar uma única tarefa(aplicação).


Exemplo: Palm OS (em computadores Palm Top), Java OS.

3. Mono-Usuário, Multi-Tarefa

Apenas um usuário com vários programas a correm em simultâneo.


Exemplos: Ms Windows 98, primeiras versões de MAC OS.

4. Multi - Usuário

Permite que vários utilizadores tiram vantagem dos recursos do computador de


forma concorrente. O SO deve assegurar que as exigências dos usuários
sejam balanceados, e que cada programa que eles usam tenha recursos
suficientes e isolados de modo que os problemas de um utilizador não afectem
toda comunidade de utilizadores.
Exemplos: VMS( SO em computadores Mainframes ) e UNIX.

d) Quanto a sua estrutura

1. Sistemas Operativos Monolíticos

Nesta estrutura os sistemas operativos são caracterizados pela não existência


de nenhuma estrutura. Todos os procedimentos são implementados no núcleo.
O Sistema Operativo é escrito como um conjunto de procedimentos, onde cada
um pode evocar o outro assim que desejar. Não existe nenhuma estrutura.
Cada procedimento é visível aos outros, o que é diferente das outras
estruturas.

Módulo a Módulo d

Módulo b Módulo e

Módulo c Módulo f

Os primeiros sistemas operativos eram baseados em núcleos monolíticos.


Considera-se um núcleo monolítico aquele que, embora estruturado
internamente em módulos, usa estruturas de dados globais e é gerado ligando
todos os módulos. Como qualquer programa grande e complexo, constituído
por múltiplas estruturas de dados e procedimentos, o teste, depuração dos
erros e manutenção de um núcleo monolítico são difíceis e dispendiosos. A
probabilidade de existirem aspectos não testados e de, na correcção de algum
erro, serem introduzidos outros, é grande.

Nos sistemas monolíticos, a solução de extensibilidade encontrada para a


inclusão de novos periféricos foi a possibilidade de adicionar ao núcleo novos
gestores de periféricos que adaptam as funções genéricas de E/S de núcleo às
características de um periférico específico.

Apesar do esforço de estruturação dos componentes do sistema operativo ao


longo de décadas para tornar mais fácil a sua manutenção, adaptação e
desenvolvimento, não comprometendo a segurança, a maioria dos sistemas
são ainda programas monolíticos em grande medida devido aos problemas de
desempenho. O Unix, o Linux e o Windows são programas com elevada
estruturação interna, mais cujo núcleo é monolítico.

2. Sistemas Operativos dispostos em camadas ou níveis hierárquicos

A tendência actual é organizar Sistemas Operativos em níveis hierárquicos, em


que cada nível é um construído em cima do outro

Os níveis podem estar dispostos da seguinte maneira:

Nível 0: Hardware
Nível 1: Controle da CPU
Nível 2 : Controle de Entrada/Saída
Nível 3: Controle de memória
Nível 4: Programas do usuário

Esta disposição tem mais segurança em relação a estrutura anterior.

Uma decomposição em camadas adapta-se particularmente bem aos sistemas


operativos, dado que é fácil criar uma organização em que cada camada
encapsula a implementação dos níveis inferiores, fazendo com que seja
possível modificá-las sem ter de alterar um núcleo monolítico, modificando e
testando camadas isoladas.

Cada camada constitui um nível de abstração com uma interface interna bem
definida, sendo responsável por implementar uma dada funcionalidade,
recorrendo, sempre que necessário, aos serviços dos níveis inferiores.

Uma arquitectura do núcleo com camadas isoladas teria vantagens sobretudo


se existissem mecanismos de protecção de memória que garantissem o
isolamento e impedissem uma camada de invocar funções, ou aceder às
estruturas de dados de outra mais interna.

O sistema Multics baseou-se nesta ideia da decomposição em camadas do


núcleo, introduzindo um novo conceito de protecção de memória no hardware
que permitia criar um mecanismo de isolamento das camadas. A estrutura do
sistema operativo era dividido em vários anéis, na terminologia do Multics, que
se executavam em espaço de endereçamento distintos, evitando que um erro
de um determinado anel pudesse afectar camadas mais internas. O
processador necessita de uma organização de protecção de memória mais
sofisticada, guardando nas suas variáveis de estado o anel corrente de
execução, ou seja, em vez de um simples modo utilizador/núcleo binário temos
um conjunto discreto de níveis de protecção. São necessárias instruções
especiais para invocar funções noutros anéis que precisam de validar os
privilégios e que são semelhantes no seu funcionamento ao mecanismo de
chamada das funções sistema.

Modelo Cliente/Servidor

A tendência dos sistemas operativos modernos é baseada na ideia de mover o


código para níveis cada vez mais altos, o máximo possível, deixando um kernel
mínimo.

O procedimento mais comum é implementar muitas funções do Sistema


Operativo nos processos dos utilizadores.

Neste modelo tudo quanto o kernel faz é gerir a comunicação entre os


processos clientes e servidores.

Se os programas executados pelo usuário, precisarem de memória, vão pedir


serviço de gestão de memória, pelo que o programa se torna cliente e o gestor
de memória servidor.

e) Quanto ao tipo de ambiente

1. Interface Linha de comandos


Alguns Sistemas operativos apenas fornecem interface de usuário baseado em
texto isto é, linha de comandos ( Command line interface ).

Esta exige um conhecimento prévio dos comandos e respectiva sintaxe


Exemplo: C:\> COPY A:\AULA.TXT C:

2. Interface gráfica
Outros sistemas operativos são concebidos de modo fornecer um ambiente
gráfico e amigável (GUI-Graphical User Intreface, User-friendly), baseado em
objectos (ícones, janela, caixas de diálogos, etc.) de fácil utilização, isto é,
intuitivo.

1.8. O SISTEMA OPERATIVO COMO UM GERENCIADOR DE RECURSOS

O conceito sistema operativo, oferece principalmente aos seus usuários uma


interface conveniente considerada como uma visão top-down. Uma vião
alternativa, button-up, sustenta que o SO está ai para gerenciar todas as partes
de um sistema complexo. Os computadores modernos consistem em
processadores, memórias, temporizadores, discos, mouses, interfaces de rede,
impressoras a laser e uma ampla variedade de outros dispositivos.
Na visão alternativa, o trabalho do SO é oferecer uma alocação ordenada e
controlada dos processadores, das memórias e dos dispositivos de E/S entre
os vários programas que competem por eles.

Quando um computador ou uma rede tem múltiplos usuários, a necessidade de


gerenciar e de proteger a memória, os dispositivos de E/S e outros recursos é
ainda maior, uma vez que os usuários talvez interfiram um do outro, além de
frequentemente necessitarem de partilhar o hardware como também as
informações (arquivos, bases de dados, etc.).

Em resumo, essa visão do SO sustenta que sua tarefa principal é monitorar


quem está utilizando qual recurso, atender requisições de recurso e medir as
requisições conflituantes de diferentes programas e usuários.

1.9. CONCEITOS DE SISTEMA OPERATIVO: PROCESSO, ARQUIVO E


SHELL
Processo: uma das funções primordiais num sistema informático é a
capacidade de executar programas; para simplificar a gestão da execução dos
programas criou-se uma abstração normalmente designada por processo.

Uma definição rigorosa de processo é difícil de estabelecer e, provavelmente,


não conduziria a um aumento de percepção significativa, pelo que ficaremos
pela ideia intuitiva e pragmática: um processo é uma entidade activa
controlada por um processador para poder executar-se. Ou seja, um
processo define um ambiente de execução independente das características do
computador e da linguagem em que a aplicação foi programada, podendo ser
visto como uma máquina virtual para executar programas.

Para um utilizador, um processo é visto como um fluxo de actividade, desde a


sua criação até ao seu término, executando um conjunto de acções que são
determinadas por um programa que, tal como no mundo real, pode ficar
bloqueado à espera de informação ou da conclusão de outros processos.

Que diferença existe entre um programa e um processo? Um programa é um


ficheiro executável, mas sem qualquer actividade, apenas descreve o que há
para fazer, um processo pode ser visto como uma máquina com capacidade de
executar, mas só com um programa pode avançar. Novamente pode-se
recorrer a uma analogia para perceber as diferenças entre ambos. Se
consideramos a construção de uma casa, o arquitecto e o engenheiro civil
concebem um projecto que se for bem feito contém todos os detalhes da futura
casa. Contudo, o projecto não é a casa, é processo processar a informação (
desenhos, cálculos, tabelas do projecto, etc.). A tarefa de construção com os
materiais físicos específicos é o que permite realmente construir o edifício. O
programa é naturalmente o projecto e a construção a execução material. Um
projecto que não seja usado para construir é apenas papel e um construtor
sem projecto também não faz uma casa (a realidade por vezes não é bem
assim...). Também é óbvio que na construção não existe (infelizmente) um
processador com um repertório de instruções e um ambiente físico que permita
obter os resultados com o determinismo a que estamos habituados na
execução dos programas para computador.

O processo comporta-se como uma máquina virtual que executa programas


pelo que tem grandes semelhanças com um computador, ou seja, pode ser
descrito por uma arquitectura que tem como elementos principais:

 Um espaço de endereçamento;
 Um repertório de operações básicas ou instruções;
 Um estado interno.

Arquivo:

Um arquivo ou ficheiro é uma colecção de dados persistentes, geralmente


relacionados, identificados por um nome. Ou ainda, um arquivo é um conjunto
de bytes, normalmente armazenado em um dispositivo periférico não volátil (p.
ex., disco), que pode ser lido e gravado por um ou mais processos.

Um ficheiro em memória secundária é o correspondente electrónico dos


ficheiros usados nos escritórios, onde a informação relacionada é colocada
numa pasta e etiquetada com um nome. Usualmente, a forma de guardar
dados relacionados entre si é utilizando um mesmo ficheiro, pois a proximidade
física facilita o seu acesso e pesquisa. Para além do nome, um ficheiro possui
ainda outro tipo de informação que facilita a sua localização e gestão, tal como
a sua dimensão, datas de criação, modificação e acesso, direitos de acesso, e
localização da informação em memória secundária. O conjunto destes dados é
usualmente designado por meta informação.

Shell: é a parte visível do sistema operativo também designado interface.

1.10. SISTEMA DE ARQUIVOS OU FICHEIROS

O principal objectivo dos sistemas de ficheiros é simplificar a organização,


acesso, a partilha e a gestão de grandes volumes de informação de forma
eficiente. Frequentemente, o sistema de ficheiros é confundido com os
dispositivos de memória de massa (vulgarmente chamados discos). De facto,
os sistemas de ficheiros, são utilizados fundamentalmente para gerir e
organizar a informação guardada em dispositivos deste tipo. No entanto, é
possível utilizar sistemas de ficheiros para gerir informação guardada em
memória, tal como é possível imaginar um sistema operativo que não use um
sistema de ficheiros para gerir a informação contida nos dispositivos de
memória de massa.

Os sistemas de ficheiros são usualmente constituídos por: um conjunto de


estruturas armazenadas em memória secundária; um conjunto de métodos –
as chamadas sistema – que sabem aceder e gerir a informação; e um conjunto
de estruturas em memória primária que permitem optimizar o acesso à
informação em memória secundária.

Um sistema de ficheiros é um conjunto de ficheiros, directórios, e estruturas de


dados auxiliares, autónomo em termos de administração e suporte físico.

Chamamos de sistema de gestão de ficheiros, ou apenas sistema de ficheiros,


ao módulo do sistema operativo responsável pelo acesso e organização dos
ficheiros. De notar que o termo “sistema de ficheiros” é, pois, utilizado com o
duplo sentido: para denominar um conjunto autónomo de ficheiros em disco e
para identificar o módulo dos sistemas operativos encarregue de gerir os
ficheiros.

É a estrutura subjacente utilizada por um computador para organizar dados


num disco rígido. Se estiver a instalar um disco rígido novo, necessita de dividi-
lo em partições e formatá-lo utilizando um sistema de ficheiros, antes de poder
começar a armazenar dados ou programas. No Windows, as três opções de
sistema de ficheiros à sua disposição são NTFS, FAT32 e a antiga e raramente
utilizada FAT (também conhecida como FAT16). Em Linux temos alguns
sistemas de ficheiros como ext, ext2, ext3, minix, etc.

a) NTFS(New technology file system)

O NTFS é o sistema de ficheiros preferido para esta versão do Windows. Este


sistema tem várias vantagens sobre o anterior sistema de ficheiros FAT32,
incluindo:

 A capacidade de recuperação automática de alguns erros relacionados


com o disco, que a FAT32 não possui.
 Suporte melhorado para discos rígidos maiores.
 Segurança melhorada, visto permitir a utilização de permissões e
encriptação para restringir o acesso a ficheiros específicos a utilizadores
aprovados.

b) FAT32

A FAT32 é a menos utilizada FAT(File Allocatio table=tabela de alocação de


ficheiros), eram utilizadas em versões anteriores dos sistemas operativos
Windows, incluindo o Windows 95, Windows 98 e Windows Millennium Edition.
A FAT32 não tem a segurança fornecida pelo NTFS, pelo que se tiver uma
partição ou volume FAT32 no seu computador, qualquer utilizador que aceda
ao computador poderá ler qualquer ficheiro existente nele. A FAT32 também
tem limitações de tamanho. Não pode criar uma partição FAT32 com mais de
32GB nesta versão do Windows e não pode armazenar um ficheiro com mais
de 4GB numa partição FAT32.

O motivo principal de utilização da FAT32 é se tiver um computador que por


vezes execute o Windows 95, Windows 98 ou Windows Millennium Edition e,
outras vezes, execute esta versão do Windows, o que é conhecido como uma
configuração multiboot. Se for este o caso, terá de instalar o sistema operativo
anterior numa partição FAT32 ou FAT e assegurar-se de que esta é uma
partição primária (uma partição que pode armazenar um sistema operativo).
Quaisquer partições adicionais às quais necessite de aceder utilizando estas
versões anteriores do Windows também têm de ser formatadas com a FAT32.

As versões anteriores do Windows podem aceder a partições ou volumes


NTFS através de uma rede, mas não no computador local.

SISTEMAS DE ARQUIVOS

O procedimento de uma nova instalação de um SO é realizado como se o disco


fosse totalmente novo. Nenhuma informação atualmente na partição de destino
é preservada. A primeira fase do processo de instalação particiona e formata o
disco rígido. Esse processo prepara o disco para aceitar o novo sistema de
arquivos. O sistema de arquivos fornece a estrutura de diretórios que organiza
os arquivos do sistema operacional, das aplicações, de configuração e de
dados do usuário. Há muitos tipos diferentes de sistemas de arquivos, e cada
um deles tem estrutura e lógica diversas. Os diferentes sistemas de arquivos
também diferem em termos de propriedades de velocidade, flexibilidade,
segurança, tamanho e muito mais. Veja a seguir cinco sistemas de arquivos
comuns:
 FAT32 (File Allocation Table, 32 bits; Tabela de Alocação de Arquivos
de 32 bits): compatível com partições de até 2 TB ou 2.048 GB. O sistema
de arquivos FAT32 é usado pelo Windows XP e por versões anteriores do
sistema operacional.
 NTFS (New Technology File System, Sistema de Arquivos de Nova
Tecnologia): na teoria, compatível com partições até 16 hexabytes. O
NTFS incorpora recursos de segurança para sistemas de arquivos e
atributos estendidos. O Windows 8.1, o Windows 7 e o Windows Vista
criam uma partição usando todo o disco rígido automaticamente. Se um
usuário não criar partições personalizadas usando a opção Novo, como
mostrado na figura, o sistema formatará a partição e iniciará a instalação
do Windows. Se o usuário criar uma partição, ele poderá determinar o
tamanho dela.
 exFAT (FAT 64): criado para solucionar algumas limitações dos sistemas
FAT, FAT32 e NTFS ao formatar pendrives USB, como por exemplo, o
tamanho dos arquivos e o tamanho dos diretórios. Uma das principais
vantagens do exFAT é a compatibilidade com arquivos com tamanho
superior a 4 GB.
 CDFS (Compact Disc File System, Sistema de arquivos para CD):
criado especificamente para mídias de disco óptico.
 NFS (Network File System, Sistema de Arquivos de Rede): sistema de
arquivos em rede que permite o acesso a arquivos pela rede. Do ponto de
vista do usuário, não há diferença entre acessar um arquivo armazenado
localmente ou em outro computador na rede. O NFS é um padrão aberto, o
que permite que qualquer pessoa o implemente.
CAP. II. HISTÓRIA DOS SISTEMAS OPERATIVOS
EVOLUÇÃO DOS SISTEMAS OPERATIVOS

Os sistemas operativos historicamente estiveram intimamente associados à


arquitectura dos computadores nos quais eles rodam.

O primeiro computador digital verdadeiro foi projectado pelo matemático inglês


Charles Babba ge(1792-1871). Embora Babbage tenha gasto a maior parte de
sua vida e sua fortuna tentando construir seu motor analítico, ele nunca
conseguiu fazé-lo funcionar adequadamente porque a coisa era puramente
mecânica e a tecnologia do seu tempo não poderia produzir as necessárias
rodas e engrenagens de alta precisão de que ele precisava. É desnecessário
dizer, mas o motor analítico não tinha um sistema operativo.

Um dos primeiros sistemas operativos de propósito geral foi o


CTSS(compatible time-sharing system), desenvolvido no MIT(Massachusetts
Institute of Tecnology). Após o CTSS, o MIT, os Laboratórios Bell da AT&T e a
General Electric desenvolvem a pesquisa de sistema o “Multics cujo objectivo
era suportar centenas de usuários. Apesar do fracasso comercial, o Multics
serviu como base para o estudo e desenvolvimento de SO. Um dos
desenvolvedores do Multics, que trabalhava para a Bell, Ken Thompson,
começou a reescrever o Multics num conceito menos ambicioso, criando o
Unics que eram tão grandes que ocupavam salas imensas. Foram construidos
basicamente com válvulas e painés, os sistemas operativos “nao existiam”. Os
programadores, que também eram os operadores, controlavam o computador
por meio de chaves, fios e luzes de aviso.

Os SO eram geralmente programadas em assembly, até mesmo o Unix em seu


início. Dennis Ritchie da Bell criou a linguagem C a partir da linguagem B, que
havia sido criada por Thompson. FinalmenteThompson e Ritchie reescreveram
o Unix em C. O Unix criou um ecossistema de versões, onde se destacam:
System V e derivados(HP-UX, AIX), familia BSD(FreeBSD, NetBSD, OpenBSD,
etc), Linux e até o MacOS X que deriva do Mach e FreeBSD).

Na década de 1970, quando começaram a aparecer os computadores


pessoais, houve a necessidade de um sistema operativo de utilização mais
fácil. Em 1980, William(Bill) Gates e seu colega de Faculdade, Paul Allen,
fundadores da Microsoft, compram o sistevisto como um programa de
grande complexidade que é responsável por todo funcionamento de uma
máquina desde o software e todo hardware instalado na máquina.

No inicio da década de 1990, um estudante de computação finlandês postou


um comentário numa lista de discussão da Usenet dizendo que estava
desenvolvendo um núcleo de sistema operativo e perguntou se alguém
gostaria de auxiliá-lo na tarefa. Este estudante chamava-se Linus Torvalds e o
primeiro passo em direcção ao tão conhecido Linux foi dado naquele momento.
VISÃO GERAL

Um sistema operativo pode ser, impõe à máquina. Existem vários sistemas


operativos, entre eles, os mais utilizados no dia a dia, normalmente utilizados
em computadores domésticos, são o Windows, Linux e Mac OS X.

Um computador com SO instalado poderá não dar acesso a todos o seu


conteúdo dependendo do utilizador. Com um SO, podemos estabelecer
permissões a vários utilizadores que trabalham com este. Existem dois tipos de
contas que podem ser criadas num SO, as contas de Administrador e as contas
limitadas. A conta administrador é uma conta que oferece processo, no caso de
o SO começar a mostrar erros ou falhas de acesso a programas tornando-se
lento, pode-se verificar no gestor de tarefas qual dos processos estará
bloqueado ou com elevado número de processamento que está a afectar o
funcionamento normal da memória.

FUNCIONAMENTO

Um SO possui as seguintes funções: dar acesso à máquina, desde a gestão de


pastas, ficheiros e software de trabalho ou entretenimento até ao controlo de
todo o seu hardware instalado. A conta limitada é uma conta que não tem
permissões para aceder a algumas pastas ou instalar software que seja
instalado na raiz do sistema ou então que tenha ligação com algum hardware
que altere o seu funcionamento normal ou personalizado pelo Administrador.
Para que este tipo de conta possa ter acesso a outros conteúdos do disco ou
de software, o administrador poderá personalizar a conta oferecendo
permissões a algumas funções do sistema como também poderá retirar
acessos a certas áreas do sistema.

O SO funciona com a iniciação de processos que este irá precisar para


funcionar correctamente. Esses processos poderão ser ficheiros que
necessitam de ser frequentemente actualizados, ou ficheiros que processam
dados úteis para o sistema. Poderemos ter acesso a vários processos do
sistema operativo a partir do gestor de tarefas, onde se encontram todos os
processos que estão em funcionamento desde o arranque do SO até a sua
utilização actual.

Interface de uso
Sistema operacional com interface gráfica, no caso, o Debian com
blackbox.
Os sistemas operacionais fornecem abstração de hardware para que
seus recursos possam ser usados de maneira correta e padronizada,
mas para ser possível operar um computador, é necessário fornecer
também uma interface para que o usuário possa desfrutar dos
recursos do sistema. Actualmente existem dois tipos de interface: o
GUI (graphical user interface), conhecida também por interface
gráfica, e o CUI (command-line interface), sendo essa mais conhecida
como interface de linha de comando.

GUI (Graphical user interface)

Nesse tipo de interface, o usuário tem a sua disposição um ambiente


de trabalho composto por menus, ícones, janelas e outros itens
disponíveis. O usuário interage com esse tipo de interface usando o
mouse, podendo também usar o teclado. É possível fazer todo tipo de
tarefa usando interface gráfica, como edição de vídeos e imagens,
sendo somente alguns tipos muito específicos de tarefas que se saem
melhor em linha de comando. Acrescentar facilidade de uso e
agilidade é o objectivo da GUI, tendo a desvantagem de consumir
muito mais memória que interfaces de linha de comando.

Sistema operacional em linha de comando.

CUI (Command-line user interface)

Além da interface gráfica, existe a interface de linha de comando, que


funciona basicamente com a digitação de comandos( dai, a
designacao command line) sendo nesse relativamente pouco.

Existem dois níveis principais num sistema operativo:

- O núcleo( também designado Kernel), que assegura as funcoes


básicas e fundamentais de controlo do hardware( CPU, RAM, I/O,
etc);

- O interface( shell), que constitui a face visível do sistema operativo


para o utilizador e com a qual este pode interactuar ou dialogar.
EVOLUÇÃO HISTÓRICA

Apesar de considerarmos cinco décadas de evolução, os sistemas


operativos têm um longo historial de influencias sobre os sistemas
actuais como acontece na maioria dos grandes desenvolvimentos de
produtos de engenharia. Com isto, podemos introduzir alguns
conceitos e terminologia muito falados quando se trata da evolução
dos sistemas operativos.

MONITOR DE CONTROLO

Os primeiros sistemas informáticos dos anos 50 não dispunham de


um conjunto de software a que fizesse sentido chamar sistema
operativo. Nessa época, a tarefa dominante era o desenvolvimento do
hardware de forma a melhorar a precária disponibilidade e aumentar
o desempenho. Só quando a fiabilidade do hardware o permitiu, se
começou a analisar o modo de melhorar a utilização da máquina de
forma a tornar mais rentável o dispendioso hardware.

Como é natural, no início da utilização dos computadores e à medida


que estes adquiriam alguma fiabilidade, os próprios engenheiros
envolvidos no desenvolvimento criaram pequenos programas para
simplificar a operação, daí a raiz do nome sistema operativo.

Sem SO(Univac, IBM 701, IBM 650)

Tratamento por lotes rudimentar

Tratamento por lotes(IBM 7090)

Multiprogramação(Multics)

Tempo partilhado

Memória virtual(Unix)

Sistemas
distribuidos

1946 1950 1960 1970 1980


1ª geração: 2ª geração: 3ª geração: 4ª geração:
Interruptores transistores circuitos computadores
E válvulas integrados pessoais
A primeira prioridade e foi o desenvolvimento de um programa
utilitário que simplificasse a operação do computador. Estes primeiros
programas, geralmente designados por monitores de controlo,
permitiam efectuar tarefas como carregar os programas na memória
central, editá-lo e verificar a sua execução.

A gestão dos sistemas era muito simples; consistia na atribuição a


cada utilizador de quotas de tempo de utilização da máquina a que
poderíamos chamar sessões de trabalho. Durante esse período de
tempo, dispunha do sistema em exclusivo e executava as operações
necessárias, através dos comandos do monitor. No final dessa
sessão, guardava os seus programas e resultados sob a forma de
listagens, fitas de papel perfuradas ou, nos sistemas mais evoluídos,
em fitas magnéticas.

Um monitor de controlo típico era composto por um interpretador de


comandos e um conjunto de programas utilitários que facilitavam a
interacção(operação) com a máquina:

 Interpretador de comandos para operar a máquina;


 Tradutor de linguagem máquina simbólica(vulgarmente
designado por Assembler de assembly language);
 Editor de ligações(linker);
 Carregador de programas em memória(loader);
 Bibliotecas de rotinas utilitárias que podiam ser logadas com os
programas do utilizador, para o controlo de periféricos: consola,
leitor de cartões, leitor/perfurador de fita de papel, bandas
magnéticas.

Obviamente, a maior parte do tempo o processador está inactivo,


esperando um comando do utilizador ou efectuando operações de
E/S.

TRATAMENTO POR LOTES(BATCH)

Atribuir o sistema a apenas um utilizador, durante o período de


tempo de uma sessão de trabalho, não optimizava a utilização do
computador, sobretudo tendo em conta que nessa altura( anos 50) o
hardware tinha um valor muito elevado, pelo que se procuraram
formas de melhorar a sua rentabilidade.

O controlo de órgãos mecânicos como impressoras ou


leitores/perfuradores de fita de papel era, evidentemente, uma tarefa
lenta quando comparada com a velocidade de execução do
processador.

Uma solução para optimizar a utilização da unidade central do


computador consistiu em efectuar a recolha dos dados num
computador auxiliar onde eram lidos, para uma banda magnética, os
cartões perfurados correspondentes aos diversos trabalhos a serem
efectuados. O operador colocava em seguida a banda magnética com
um lote de programas no computador central e este por sua vez
executava-os, produzindo igualmente os ficheiros de saída para outra
banda que, por sua vez, era tratada pelo computador auxiliar para
optimizar o tempo de impressão.

Este sistema de tratamento por lotes, dos anos 50 é popularizado


pela IBM, rapidamente evoluiu; os periféricos começaram a poder
executar operações autónomas, avisando o processador do fim da
sua execução através do mecanismo de interrupções. As interrupções
são a grande evolução que possibilita notificar assincronamente o
processador de que uma dada operação terminou. Deste modo, as
operações de E/S podem prosseguir em paralelo com a execução de
um programa que apenas é interrompido para iniciar e para tratar a
sua terminação.

Em simultâneo, os periféricos de armazenamento de dados sofrem


uma evolução significativa, deixando de ser meros dispositivos
sequenciais (bandas) para se tornarem verdadeiras memórias com
possibilidade de endereçamento directo a qualquer bloco (tambores,
discos). Desta forma, podiam ser usadas como memórias secundarias
que permitiam armazenar grandes volumes de dados acessíveis de
forma relativamente rápida, se bem uma ou duas ordens de grandeza
mais lentas que a memória central.

Num sistema básico de tratamento por lotes, podemos imaginar o


seguinte funcionamento: os utilizadores colocam no leitor os
programas convenientemente delimitados por cartões que indicam ao
sistema as operações a executar(rudimento de uma linguagem de
comandos designada por job control language, na literatura da IBM);
cada um novo cartão é lido, o leitor interrompe o sistema central,
desencadeia a execucao de uma rotina que lê, transcodifica os
caracteres presentes nos cartões(o código dos cartões e a
representação binaria dos dados na memoria dos computadores são
diferentes) e escreve a nova linha num ficheiro mantido na memoria
secundaria. Enquanto o próximo cartão é posto em posição de leitura
e lido, o processador central fica novamente livre para continuar a
execução do programa em curso.
Quando o programa em execução terminar, o sistema operativo irá
consultar os ficheiros de entrada no disco e verificar se existe um
novo programa para ser executado. Caso exista, este será carregado,
enquanto, simultaneamente, novos programas podem estar a ser
lidos e memorizados no disco.

A impressora, necessária à saída dos resultados, é também um órgão


mecânico que limita a velocidade de execução, podendo de novo
utilizar-se a mesma técnica, fazendo com que as linhas a serem
impressas sejam inicialmente escritas num ficheiro de saída durante a
execução do programa. Quando o programa terminar o programa
terminar, o sistema operativo encarregar-se-á de fazer imprimir o
ficheiro sob seu controlo, utilizando deste modo os seus mecanismos
já referidos para controlo assíncrono das E/S. esta solução
corresponde à utilização de um mecanismo de SPOOL(simultaneous
peripheral operations on-line) ainda hoje em uso para estes
periféricos.

O sistema anterior(monitor de controlo) permitia a introdução de


mecanismos de optimização na gestão da máquina, escolhendo o
próximo programa a ser executado de acordo com um dado critério
de prioridade e, nestes sistemas começou-se a definir a politica de
gestão do processador, geralmente designado por
escalonamento(scheduling).

Unidade central de
processamento Dados

Programa

Monitor

Memória

Programa J
Leitor de cartões
Programa J+1

Programa J+1 Impressora


Dados J+1

MULTIPROGRAMAÇÃO

A utilização dos mecanismos de interrupção, que permitem


multiplexar o processador entre diversas actividades executadas
concorrentemente, tornou possível o escalonamento nos sistemas de
tratamento em lotes.

A execução concorrente de vários programas optimiza a utilização do


processador. Como exemplo, podemos considerar o caso de um
programa que, em certo ponto da sua execução, lê dados de um
ficheiro; a sua execução tem de ficar bloqueada ate que os sectores
de disco sejam acedidos e os dados correspondentes transferidos
para a memoria. Para evitar este tempo morto(durante o qual o
processador ficaria sem ser utilizado) é preferível, depois de lançar a
operação de E/S de acesso ao disco, retirar o programa de execução
e permitir que um outro utilize o processador. O acesso ao disco será
executado em paralelo por rotinas do sistema que interactuam com
uma interface hardware, o controlador de disco que gere os discos
físicos. Durante o tempo necessário para a leitura dos dados
(posicionamento das cabeças de leitura do disco, leitura dos blocos e
transferência de dados), o processador pode ser utilizado por outro
programa.

Esta multiplexagem do processador (muitas vezes usa-se o termo


multiplexar a maquina física, que tem o mesmo sentido com que é
utilizado nas telecomunicações – partilhar um cabo físico entre varias
comunicações diferentes), torna o sistema multiprogramado,
permitindo que diversos programas estejam simultaneamente
activos.

A multiprogramação só é eficaz se os diversos programas residirem


na memória central, pois só assim a mudança de contexto se poderá
processar rapidamente. Contudo, a memória física é limitada e
poderá ser impossível manter simultaneamente em memória diversos
programas com tamanhos variados.

A solução passa pelo estabelecimento de uma hierarquia de memória


que permitia, quando necessário, carregar na memória central um
novo programa vindo da memória secundária e salvaguardar nesta
ultima alguns dos programas bloqueados (por exemplo, no acesso ao
disco). Esta técnica de transferência (troca) de espaço de
endereçamento (swapping) tem implicações profundas sobre toda a
estrutura dos programas, pela subdivisão do código que isso implica.

Numa gestão deste tipo é impraticável pretender colocar o programa


na zona de memória que ocupava anteriormente, pelo que o código
deve ser recolocável., ou seja, sem alterar o programa em formato
binário deve ser possível coloca-lo em qualquer posição de memoria
central. A gestão de memoria central e das áreas de memoria
secundarias necessárias para o swapping teve origem nestes
sistemas.

As técnicas de multiprogramacao permitiram a criação de sistemas


sofisticados de tratamento por lotes ou batch que foram doptados
progressivamente de mecanismos hardware para a gestão de
memoria, de periféricos de massa de elevada capacidade e de
mecanismos de transferência rápidos entre a memoria e os
periféricos(canais de acesso directo à memoria DMA).

SISTEMAS INTERACTIVOS

Para o tratamento de grande volume de dados típicos de um sistema


bancário, por exemplo, os sistemas operativos por lotes davam uma
resposta adequada. Contudo, no inicio dos anos 60 surgiram novas
ideias de utilização dos computadores em aplicações em que se
pretendia aceder à informação e actualizá - la imediatamente. Estas
aplicações designam-se tradicionalmente por aplicações
transacionais, indicando que se efectua uma operação semelhante a
uma transação comercial: pergunta-se o preço, indica-se a
quantidade e efectua-se a venda, executando-se genericamente uma
transacção.
Este novo tipo de aplicação teve grande influencia sobre o modo de
interação com os computadores. Os primeiros sistemas transacionais
apareceram ligados aos sistemas de reserva de bilhetes das
companhias a aviação e a sua grande novidade era a possibilidade de
os empregados dos balcões da companhia aérea, espalhados pelo
EUA, poderem interactuar directamente com as aplicações através de
um dialogo facilmente compreensível por não especialistas em
informática e que lhes permitia consultar informação e actualizá-la.

A partilha de um computador em vários utilizadores impõe uma


divisão do tempo disponível do processador entre os diferentes
utentes de forma relativamente equitativa, atribuindo blocos de
tempo que permitiam dar a sensação a cada um de dispor de uma
máquina dedicada. É evidente que esta multiplexagem só tem sentido
se a tarefa que cada utilizador pretende executar ocupar apenas uma
fracção muito reduzida do tempo disponível do processador; caso
contrario, os utilizadores esperariam um tempo significativo pela
execução dos seus comandos e o sistema não seria interactiva.
Verificou-se, estatisticamente, que o número de utilizadores poderia
ser muito elevado pois a maioria está tipicamente a introduzir dados
através do teclado e, mesmo considerando um ritmo elevado de três
teclas por segundo, a interação do utilizador é extremamente lenta
quando comparada com a velocidade de processamento.

Tempo partilhado
Programa Programa Programa
do Do do
Utilizador SO Utilizador SO Utilizador SO
N N+1 N+2

Os sistemas interactivos obrigaram a uma profunda reformulação dos


conceitos nos sistemas operativos, conferindo grande importância a
aspectos ate aí secundários como, por exemplo, a interface com o
sistema de ficheiros, a proteccao contra acessos indevidos ou a
linguagem de interação com o sistema. A evolução foi geral; o
utilizador, em contacto directo com a maquina, passou a dispor de
uma liberdade de actuação e de uma necessidade de informação
actualizada que obrigou a rever o modo como a informação era
produzida e protegida. Os editores de texto tornaram-se, por
exemplo, um utensilio indispensável no sistema. Ao projecto de
CTSS(aproximadamente 1962) sucedeu o projecto Multics(1972), um
dos mais inovadores na concepção de ambientes interactivos e cujas
repercussões se fazem sentir ainda hoje nos sistemas actuais.

ARQUITECTURA DOS SISTEMAS OPERATIVOS


O sistema operativo é normalmente composto por três entidades:

- Núcleo do sistema operativo: o núcleo ou kernel corresponde aos


programas que implementam a funcionalidade básica do sistema operativo;

- Biblioteca de chamadas sistema: a interface programática que estabelece a


ligação entre as aplicações e o sistema operativo;

Processos sistema: conjunto de processos que se executam fora do núcleo,


mas que fazem parte do software do sistema. A razão genérica de não fazerem
parte do núcleo prende-se com o facto de executarem tarefas que, por não
terem requisitos de desempenho muito estritos ou por serem opcionais, podem
ser executadas em processos, não necessitando de usar os mecanismos
privilegiados do núcleo.

Processos
Aplicações sistema

Bibliotecas de chamadas sistema

Barreira -----------------------------------------------------
de protecção

Bibliotecas de chamadas sistema


NÚCLEO

Como o seu nome indica, no núcleo reside a maioria dos mecanismos de base
do sistema operativo, os principais são:

- Gestão dos processos e sincronização;


- Gestão de memória;
- Gestão das E/S;
- Gestão de ficheiros;
- Comunicação entre processos;
- A segurança;
- A gestão de utilizadores;
- Interfaces gráficas;
- Gestão de mobilidade;
- Gestão de energia.

O núcleo é, naturalmente, um programa complexo. Uma técnica habitualmente


utilizada na realização de grandes programas é a decomposição em módulos
funcionais. Como é conhecido na engenharia de programação, cada módulo é
encapsula as estruturas de dados e os procedimentos que as utilizam,
oferecendo uma interface externa que define as funções necessárias para
manipular os objectos. O núcleo também apresenta, normalmente, esta
organização, sendo a decomposição mais habitual constituída pelos módulos a
que correspondem as funções enunciadas acima.

- Gestão de processos: o gestor de processos multiplexa a máquina física


entre um conjunto de processos. Cada processo pode ser considerado como
uma máquina virtual que cria um ambiente que permite a execução de um
programa. Os processos partilham variáveis e necessitam de se sincronizar
para executar tarefas mais complexas. Os objectos de sincronização, como
semáforos ou trincos, fazem parte deste módulo.

Organização do núcleo

Biblioteca de funções do sistema

Gestão de Gestão de Gestão de Sistema de comunicação entre


Processos memória periféricos ficheiros processos

Hardware

- Gestão de memória: efectua a gestão e optimização da memória física. Este


módulo inclui a gestão da memória virtual através dos algoritmos associados à
manipulação do espaço de endereçamento dos processos, nomeadamente a
transparência da informação entre as memórias primária e secundária.
- E/S: os periféricos são um dos componentes em permanente evolução, pelo
que o núcleo necessita de um mecanismo que lhe permite incorporar o
software necessário para interactuar com eles. Apesar da implementação das
E/S ser complexa, dado que interactuam com o hardware dos dispositivos, a
sua estrutura interna e interface apresentam numerosas semelhanças. A
gestão das E/S no sistema operativo tem normalmente duas partes: uma
comum a todos periféricos e normaliza através de uma interface de chamdas
de sistema, e outra especifica do hardware de cada periférico, executada pelos
gestores de periféricos ou device drivers, que podem ser adicionados ou
retirados consoante as necessidades das aplicações;

- Sistema de ficheiros: a função de armazenamento da informação


persistente nos sistemas é de tal maneira importante, que o sistema de
ficheiros é responsável pela gestão de um dos recursos mais críticos. O
sistema de ficheiros, para além de gerir eficientemente o armazenamento dos
dados nos discos ou em qualquer outro suporte persistente, como por exemplo
uma pen drive ou um cartão inteligente ( o smartcard), oferece mecanismos
para organização, administração e partilha segura de ficheiros.

- Comunicação entre processos: os processos cooperam na execução das


aplicações. Para poderem efectuar esta cooperação são necessários
mecanismos de sincronização e comunicação de informação. A comunicação
entre processos é uma ferramenta fundamental para construir aplicações
concorrentes e para permitir a comunicação distribuída, usando o suporte dos
mecanismos de transporte de informação das redes. Este módulo,
normalmente designado por IPC(Inter-Process Communication), permite a
comunicação de processos que se executam localmente no sistema operativo.

RESUMO SOBRE A EVOLUÇÃO HISTÓRICA DOS SO


A PRIMEIRA GERAÇÃO(1945-1955): VÁLVULAS E PAINEIS DE CONECTORES.

Depois dos esforços malsucedidos de Babbage, pouco progresso foi alcançado


na construção de computadores digitais até a II guerra mundial. Em meados da
década de 40, Howard Aiken, de Harvard, John Von Neumann, do instituto de
estudos Avançados de Princeton, J. Presper Eckert e William Mauchley, da
Universidade de Pensilvania e Konrad Zuze, na Alemanha, entre outros,
tiveram sucesso na construção de máquinas de cálculo utilizando válvulas.
Essas máquinas eram enormes, ocupando salas inteiras com dezenas de
milhares de válvulas, e eram muito mais lentas que as mais simples
calculadoras de hoje.

Naqueles tempos, um único grupo de pessoas projectava, construia,


programava, operava e mantinha cada máquina. Toda programação era feita
em linguagem de máquina pura, frequentemente ligando com fios paineis de
conectores para controlar as funções básicas da máquina. Nesta época
ninguem nunca ouvia falar de sistema operativo.

A SEGUNDA GERAÇÃO(1955-1964)

Com o surgimento dos transístores (nova tecnologia) nos meados dos


anos 50 os computadores tornaram-se confiáveis a ponto de serem
comercializados.

Os computadores da segunda geração eram usados na realização de


cálculos científicos e de engenharia, tal como a obtenção da solução
de equações diferenciais parciais. A programacao era feita em
linguagem Fortran. Um dos sistemas operativos típicos existente na
época era o FMS(Fortran Monitor System) desenvolvido pela IBM.
Devido ao alto custo dos computadores, nesta época, encontrou a
solucao designada sistema batch(lote) que tinha como objectivo
aumentar o tempo da maquina. Este sistema baseava-se em colectar
na recepção de um conjunto de jobs e fazer a leitura dos mesmos
para uma fita magnética empregando um computador pequeno e
relativamente barato.

TERCEIRA GERAÇÃO(1964–1970): circuitos integrados

Foram construídos com circuitos integrados, proporcionando maior


compactação, redução dos custos e velocidade de processamento da
ordem de microssegundos. Tem início a utilização de avançados
sistemas operacionais.

QUARTA GERAÇÃO (1970): aperfeiçoamento dos circuitos


integrados

A quarta geração, de 1970 até hoje, é caracterizada por um


aperfeiçoamento da tecnologia já existente, proporcionando uma
optimização da máquina para os problemas do usuário, maior grau de
miniaturização, confiabilidade e velocidade maior, já da ordem de
nanossegundos (bilionésima parte do segundo).

O termo quinta geração foi criado pelos japoneses para descrever


os potentes computadores "inteligentes" que queriam construir em
meados da década de 1990. Posteriormente, o termo passou a
envolver elementos de diversas áreas de pesquisa relacionadas à
inteligência computadorizada: inteligência artificial, sistemas
especialistas e linguagem natural. Mas o verdadeiro foco dessa
ininterrupta quinta geração é a conectividade, o maciço esforço da
indústria para permitir aos usuários conectarem seus computadores a
outros computadores. O conceito de supervia da informação capturou
a imaginação tanto de profissionais da computação como de usuários
comuns.

A HISTÓRIA DO MINIX

No início, o código fonte do UNIX (versão 6) estava amplamente disponível,


sob licença da AT&T, e era muito estudado. John Lions, da Universidade de
New South Wales, na Austrália, escreveu um livro descrevendo seu
funcionamento, linha por linha. Esse livro foi utilizado (com permissão da
AT&T) como livro texto em muitos cursos universitários sobre sistemas
operacionais.
Quando a AT&T lançou a versão 7(do Unix), começou a perceber que o UNIX
era um produto comercial valioso e, assim, distribuiu essa versão com uma
licença proibindo o estudo do código-fonte em cursos para evitar o risco de
expor seu status de segredo comercial. Muitas universidades obedeceram
simplesmente eliminando o estudo do UNIX e ensinando apenas a teoria.
Infelizmente, ensinar somente a teoria deixa o aluno com uma visão
prejudicada do que o sistema operacional realmente é, pois, assuntos
importantes como E/S e sistemas de arquivos geralmente são abandonados
(devido a falta de teoria a respeito).
Por isso, Andrew S. Tanebaum decidiu escrever um novo sistema operacional
a partir do zero, que seria compatível com o UNIX do ponto de vista do usuário,
mas completamente diferente por dentro. Por não usar sequer uma linha de
código da AT&T, esse sistema evita as restrições de licenciamento; assim, ele
pode ser usado para estudo individual ou em classe. (...) Esse sistema foi
chamado de MINIX e foi lançado em 1987, com seu código de fonte completo
para qualquer um estudar ou modificar. O nome MINIX significa mini-UNIX,
pois ele é pequeno o bastante até para quem não é especialista poder
entender seu funcionamento.
O MINIX possui diversas vantagens sobre o UNIX já que foi escrito uma
década depois deste e foi estruturado de maneira mais modular. Por exemplo,
desde a primeira versão do MINIX, o sistema de arquivos e o gerenciador de
memória não fazem parte do sistema operacional, mas são executados como
programas de usuário. Na versão actual (MINIX 3) essa modularização foi
ampliada para os drivers de dispositivos de E/S, todos os quais (com exceção
do driver do relógio) são executados como programas de usuário. Outra
diferença, enquanto o UNIX foi projetado para ser eficiente, o MINIX foi
projetado para ser legível.

O MINIX foi escrito em C, assim como o UNIX, e segue o padrão


POSIX(Portable Operating System Interface – Interface portável entre sistemas
operativos). No início, o MINIX nem exigia um disco rígido para funcionar (já
que, em meados dos anos 80, os discos rígidos ainda eram uma novidade
cara). Conforme foi crescendo em funcionalidade e tamanho aderiu a utilização
de discos rígidos ( uma partição de 200 MB é suficiente).
Executar o MINIX é semelhante a executar o UNIX. Todos os programas
básicos estão presentes (cat, grep, ls, make,...). Todos esses programas
utilitários também foram reescritos a partir do zero pelo autor, seus alunos e
algumas pessoas dedicadas.
O MINIX 2 foi lançado em 1997, junto com a segunda edição do livro
"Sistemas Operacionais - Projeto e Implementação" - por isso não é bom
comprar a segunda edição, e sim, pagar alguns reais a mais e comprar a
3ª edição, que está bem mais actualizada - Em relação a versão 1, a versão
2 teve uma evolução significativa (por exemplo, evoluiu do modo real de 16 bits
em um 8088 usando disquetes, para o modo protegido de 32 bits em 386
usando um disco rígido).
O MINIX 3 é um reprojecto significativo do sistema MINIX. Nessa atual versão,
o MINIX teve seu núcleo reestruturado, teve seu tamanho diminuído e possui
uma maior modularidade e confiabilidade. Essa versão foi desenvolvida para
funcionar tanto em PCS quanto em sistemas embarcados, onde a
compacidade, modularidade e confiabilidade são fundamentais. O núcleo do
MINIX 3 tem bem menos de 4000 linhas de código executável.
Um núcleo pequeno é importante, pois erros de núcleo são bem mais
devastadores do que erros em programas de modo usuário, e mais código
significa mais erros. Foi descoberto também que centenas de erros de núcleo
em sistemas como o LINUX e o OpenBSD são causados por drivers de
dispositivos. Por isso, os drivers de dispositivos foram retirados do núcleo do
MINIX 3; eles podem causar menos danos no modo usuário.
CAPITULO III. LINUX É UM SISTEMA OPERATIVO
INTRODUÇÃO

Já ouviu falar certamente de Windows? hoje, quase a totalidade dos


PCs vêem acompanhado com o Windows como sistema operativo.
Isto significa que ao ligarmos o computador o primeiro ecrã que
observamos, aparece escrito Windows.

Contudo, o ecrã que aparece quando ligamos o computador é o que


está ilustrado abaixo.

Este ecrã muda em função da versão do Windows, mas a ideia


principal é que o Windows se lança ao arrancarmos o computador.
O boot : Arranque do computador

Com efeito, o Windows é lançado em primeiro lugar. Se observarmos


muito bem, logo nos primeiros segundos, alguma coisa se apresenta
no ecrã. E isto que chamamos de ecrã de boot. Este ecrã varia muito
segundo os computadores.

Porque? Porque depende muito do material utilizado para a


construção da maquina. Neste caso, trata-se da placa mãe que
apresenta o ecrã de boot. A placa mãe do computador, é o
componente fundamental de todo computador. Ela faz funcionar o
processador, os discos duros, o leitor de CD-Rom etc.

Por isso, temos :

1. Ecrã de boot
2. Arranque do Windows

Uma vez, depois do arranque do Windows, pode-se utilizar os


programas de aplicação: jogo, internet, programa de desenho, de e-
mail, de musica... Mas uma questão nos vem em mente. Porque é
que o Windows deve ser carregado pelo computador e não um outro
programa, como de jogo e logo no arranque da maquina ?

Porque, o computador precisa de um super - programa que seja ele


considerado como o chefe da orquestra. Ele deve gerir a memória do
computador, e reparti-la para todos os programas. Ele estabelece a
ligação entre o material (placa gráfica, memória, impressora) e os
outros programas.

Este "super-programa", é designado por sistema operativo. Podemos


logo concluir que Windows é um sistema operativo "Operating
System(OS)" em inglês.

Resumindo, temos a seguinte ordem:

1. Ecrã de boot
2. Arranque do sistema operativo(Windows)
3. Lançamento dos programas(jogos, internet, e-mail...)

Esquematicamente teríamos:
LINUX É UM SISTEMA OPERATIVO

Depois de tomarmos conhecimento que o Windows é um sistema


operativo, de igual modo concluímos que o Linux é também um
sistema operativo ao mesmo titulo que Windows, Mac OS( para
aqueles que utilizam Macintosh).

Pergunta-se : Podemos ter dois OS instalados no mesmo


computador ? Não há necessidades de suprimir Windows para
colocarmos Linux no seu lugar.

Neste aspecto, muitos pensam que deveríamos fazer uma escolha.


Ou Linux ou Windows. Nada tem haver com escolha neste sentido,
pois que actualmente podemos sim ter dois sistemas operativos
instalados no mesmo computador.

Neste caso, logo depois do ecrã de boot como monstrado atras,


apresentar-se-á um programa chamado Boot Loader. Este programa
apresentará para o usuario um ecrã que lhe possibilitará fazer a sua
escolha. O boot loader aqui é designado como nome de Grub.

O Grub faz a proposta e, o usuário efectuará a escolha entre o


Windows et Linux em cada arranque do computador. O OS é lançado
por defeito quando o usuário não fazer a sua escolha.

O esquema do arranque do computador muda um pouco,


apresentando-se da seguinte forma :
Como observais o esquema acima, quando se trabalha no ambiente
Linux, Utilizam-se programas concebidos e que funcionam em Linux e
nao aqueles do Windows. Com efeito, os programas Windows nao
funcionam em Linux e vice-versa. Saiba que é possivel fazer
processar programas do Windows a partir do Linux atraves de um
programa chamado wine. Contudo, prefere-se utilizar programas
feitos em Linux porque estes funcionam com maior velocidade.

Os programas que funcionam em Linux têm muitas vantagens :

- São gratuitos :
- As suas actualizações são muitas vezes gratuitas,
- Certos programas são melhores em relação aqueles
encontrados no Windows. Alias existem programas que
encontramos no Linux e que não existem em Windows.

O nascimento de Linux

Vejamos uma coisa :

 Windows custa aproximadamente 200-300 euros


 Linux é gratuito, ou seja 0 euros.
A informática nos anos 1984

Em 1984, nesta época a informática não era desenvolvida. A


Microsoft fez sair o seu primeiro SO: MS-DOS,

Se se utilizou as primeiras versões de Windows, ouviu falar


logicamente de MS-DOS. Com efeito, todas versões de Windows 95 à
Windows Me estavam baseadas em MS-DOS (MS-DOS arrancava
primeiro antes do Windows). Só foi depois do aparecimento do
Windows XP que MS-DOS desapareceu completamente. Hoje MS-DOS
não é desenvolvido.

MS-DOS, o antepassado do Windows

Mas será que o MS-DOS foi o unico mais antigo SO?

Nao! Existiram outros, mais pouco conhecidos pelo público como é o


caso do "Unix" que era o melhor. Foi mais poderoso e mais potente
que o MS-DOS e tambem mais complicado na utilizacao. Isto explica
porque na epoca só os informaticos profissionais o poderiam utilizar.

Ele é o mais antigo pois que a sua origem remonta desde 1969!
Graficamente, Unix aparece como MS-DOS : texto branco com um
fundo preto.

O projecto GNU

O gnou, emblema de GNU

Foi justamente nesta época ou seja em 1984 que Richard Stallman


criou o projecto GNU. Richard Stallman foi investigador em
inteligência artificial no MIT. Ele queria criar um novo sistema
operacional cujo funcionamento compareria com aquele do Unix( os
comandos fossem os mesmos).

Richard Stallman, fondateur du projet GNU

Porque gostaria criar uma cópia de Unix? A única razão foi porque o
Unix custava cada vez mais caro. Richard Stallman reagiu dando a
proposta de uma alternativa gratuita: o nasce assim o projecto Gnu.
É bom salientar que, Mac OS X baseia-se também em Unix, enquanto
que MS-DOS e Windows estão completamente fora.
GNU é um sistema operativo livre

GNU nao deveria ser simplesmente um OS gratuito, mas também ser


um OS livre.

Que diferença existe entre eles?

Um programa livre, é um programa que se pode ver o código-fonte,


quer dizer, tem-se a receita da fabricação. Ao contrário do Windows,
é um OS propriétaire, cujo código-fonte está escondido e guardado
pela Microsoft. Como por exemplo a Coca-Cola, ninguém consegue
ter e ver a verdadeira receita de fabricação, apesar de muito
tentarem imitar mas não dá certo, pois que esta receita está
escondida e guardada pela Coca-Cola.

Um programa livre, é na maior dos casos um programa gratuito. Mas


também é um programa que se tem o direito de copiar, modificar,
redistribuir. É uma verdadeira ideologia em informática : essa gente
pensa que vale apenas fornecer o codigo-fonte dos programas
concebidos ou a serem concebidos, pois isto garante e permite a
partilha de conhecimentos e ajuda a propria informatica evoluir cada
vez mais. O slogan neste caso para o mundo livre seria : "A união faz
a força".

En 1991, Linus Torvalds, estudante da Universidade de Helsinki en


Finlandia, pensou em criar seu próprio SO nos seus tempos livres.
Este sistema tomou o nome de Linux, em referencia ao seu criador
(Linux é a contracção de Linus e Unix).

Qual é a relação com GNU ? existe uma relação pois que os dois
projectos eram completarios: enquanto Richard Stallman criava os
programas de base(programa para copia de ficheiros, supressao de
ficheiros, editor de texto), Linus por sua vez estava concentrado e
empenhado na criação do "coração" de um sistema operativo(o
núcleo).

O projecto GNU (programa livre) e Linux (núcleo do OS) fez-se a


fusão para criar GNU/Linux. Logo, devemos teoricamente falar de
GNU/Linux. É dificil de vez enquanto escrever e pronunciar
GNU/LINUX e com abuso da linguagem diz-se justamente « Linux ».
Por isso ao longo da disciplina falaremos mais de Linux, apesar
politicamente o nome correcto seja GNU/Linux considerando que foi
feito uma fusao entre dois projectos complementares.

Resumo através de um esquema.

Espero que não estão atrapalhados nem tão poucos postos em


confuso?
Para colocar todas ideias em ordem, um pequeno esquema seria
indispensável.

Agora tem-se uma melhor ideia acerca da origem dos três principais
sistemas operativos existentes actualmente : Mac OS, Linux et
Windows. Assim, Mac OS e Linux são os sistemas baseados em Unix,
o antepassado dos sistemas operativos, enquanto que Windows é um
ramo que está a parte e é descendente do MS-DOS.

Diz-se que Mac OS e Linux são baseados em Unix porque eles


copiaram o seu modo de funcionamento. Nao é pejorativo, mas ao
contrario isto é uma honra para Unix.

Os programas Linux não utilizam o mesmo código-fonte com Unix.


Aliás para Unix foi um sistema operativo proprietário, logo
considerado como um programa privado. Foram completamente
reescritos, mas funcionam da mesma maneira.

CAP. III : SISTEMA OPERATIVO LINUX

Linux é o termo geralmente usado para designar qualquer sistema


operativo(Europa) ou sistema operacional(Brasil) que utilize o
núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds,
inspirado no sistema Minix. O seu código fonte está disponível sob
licença GPL para qualquer pessoa que utilizar, estudar, modificar e
distribuir de acordo com os termos da licença.
Inicialmente desenvolvido e utilizado por grupos de entusiastas em
computadores pessoais, o sistema Linux passou a ter a colaboração
de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-
Packard, Red Hat, Novell e a Canonical.

História

Linus Torvalds, criador e principal mantenedor do Kernel Linux.

O kernel Linux foi, originalmente, escrito por Linus Torvalds do


Departamento de Ciência da Computação da Universidade de
Helsinki, Finlândia, com a ajuda de vários programadores voluntários
através da Usenet (uma espécie de sistema de listas de discussão
existente desde os primórdios da Internet).

Linus Torvalds começou o desenvolvimento do kernel como um


projeto particular, inspirado pelo seu interesse no Minix, um pequeno
sistema UNIX desenvolvido por Andrew S. Tanenbaum. Ele limitou-se
a criar, nas suas próprias palavras, "um Minix melhor que o Minix" ("a
better Minix than Minix"). E depois de algum tempo de trabalho no
projecto, sozinho, enviou a seguinte mensagem para comp.os.minix:

Você suspira pelos bons tempos do Minix-1.1, quando os homens


eram homens e escreviam seus próprios "device drivers"? Você está
sem um bom projecto em mãos e deseja trabalhar num S.O. que
possa modificar de acordo com as suas necessidades? Acha frustrante
quando tudo funciona no Minix? Chega de noite ao computador para
conseguir que os programas funcionem? Então esta mensagem pode
ser exactamente para você. Como eu mencionei há um mês atrás,
estou trabalhando numa versão independente de um S.O. similar ao
Minix para computadores AT-386. Ele está, finalmente, próximo do
estado em que poderá ser utilizado (embora possa não ser o que
você espera), e eu estou disposto a disponibilizar o código-fonte para
ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso
ao executar bash, gcc, gnu-make, gnu-sed, compressão etc, nele.

Curiosamente, o nome Linux foi criado por Ari Lemmke,


administrador do site ftp.funet.fi que deu esse nome ao diretório FTP
onde o kernel Linux estava inicialmente disponível. Linus tinha-o
baptizado como "Freax", inicialmente.
No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira
versão "oficial" do kernel Linux, versão 0.02. Desde então muitos
programadores têm respondido ao seu chamado, e têm ajudado a
fazer do Linux o sistema operacional que é hoje. No início era
utilizado por programadores ou só por quem tinha conhecimentos,
usavam linhas de comando. Hoje isso mudou, existem diversas
empresas que criam os ambientes gráficos, as distribuições cada vez
mais amigáveis de forma que uma pessoa com poucos conhecimentos
consegue usar o Linux. Hoje o Linux é um sistema estável e consegue
reconhecer todos os periféricos sem a necessidade de se instalar os
drivers de som, vídeo, modem, rede, entre outros.

Núcleo (kernel)

O termo Linux refere-se ao núcleo (ou "cerne", "coração", do Inglês


kernel) do sistema operativo. O termo também é usado pelos meios
de comunicação e usuários para referir-se aos sistemas operacionais
baseados no núcleo Linux agregado a outros programas. Segundo
Tanenbaum e Silberschatz, um kernel pode ser considerado o próprio
sistema operativo, quando este é definido como um gerenciador de
recursos de hardware.

Arquitetura

O Linux é um kernel monolítico: as funções do kernel (escalonamento


de processos, gerenciamento de memória, operações de entrada e
saída, acesso ao sistema de arquivos) são executadas no espaço do
kernel. Uma característica do kernel Linux é que algumas das funções
(drivers de dispositivos, suporte à rede, sistema de arquivos, por
exemplo) podem ser compiladas e executadas como módulos (LKM -
loadable kernel modules), que são bibliotecas compiladas
separadamente da parte principal do kernel e podem ser carregadas
e descarregadas após o kernel estar em execução.

Portabilidade

Embora Linus Torvalds não tenha tido como objectivo inicial tornar o
Linux um sistema portável, ele evoluiu nessa direcção. Linux é hoje
um dos núcleos de sistemas operativos mais portáveis, correndo em
sistemas desde o iPaq (um computador portátil) até o IBM S/390 (um
denso e altamente custoso mainframe).

Os esforços de Linus foram também dirigidos a um diferente tipo de


portabilidade. Portabilidade, de acordo com Linus, era a habilidade de
facilmente compilar aplicações de uma variedade de código fonte no
seu sistema; consequentemente, o Linux originalmente tornou-se
popular em parte devido ao esforço para que os códigos-fonte GPL ou
outros favoritos de todos corressem em Linux.
O Linux hoje funciona em dezenas de plataformas, desde mainframes
até um relógio de pulso, passando por várias arquitecturas: x86
(Intel, AMD), x86-64 (Intel EM64T, AMD64), ARM, PowerPC, Alpha,
SPARC etc., com grande penetração também em sistemas
embarcados, como handhelds, PVR, consola de videojogos e centros
multimídia, entre outros.

Termos de Licenciamento

Inicialmente, Torvalds lançou o Linux sob uma licença de software


que proibia qualquer uso comercial. Isso foi mudado de imediato para
a GNU. Essa licença permite a distribuição e mesmo a venda de
versões possivelmente modificadas do Linux mas requer que todas as
cópias sejam lançadas dentro da mesma licença e acompanhadas do
código fonte.

Apesar de alguns dos programadores que contribuem para o kernel


permitirem que o seu código seja licenciado com GPL versão 2 ou
posterior, grande parte do código (incluído as contribuições de
Torvalds) menciona apenas a GPL versão 2. Isto faz com que o kernel
como um todo esteja sob a versão 2 exclusivamente, não sendo de
prever a adopção da nova GPLv3.

Sistemas de arquivos suportados

O Linux possui suporte de leitura e escrita a vários sistema de


ficheiros, de diversos sistemas operacionais, além de alguns sistemas
nativos. Por isso, quando o Linux é instalado em dual boot com
outros sistemas (Windows, por exemplo) ou mesmo funcionando
como Live CD, ele poderá ler e escrever nas partições formatadas em
FAT e NTFS. Por isto, Live CDs Linux são muito utilizados na
manutenção e recuperação de outros sistemas operacionais.

Entre os sistemas de ficheiros suportados pelo Linux, podemos citar


FAT, NTFS, JFS, XFS, HPFS, Minix e ISO 9660 (sistema de ficheiros
usado em CD-ROMs). Alguns sistemas de ficheiros nativos são,
dentre outros, Ext2, Ext3, Ext4, ReiserFS e Reiser4[nota 2]. Alguns
sistemas de ficheiros com características especiais são SWAP,
UnionFS, SquashFS, TempFS, Aufs e NFS, dentre outros.

Sistema Operacional

Richard Stallman, fundador do projecto GNU para um sistema


operacional livre.
Logo que Linus Torvalds passou a disponibilizar o Linux, ou seja na
sua versão 0.01, já havia suporte ao disco rígido, tela, teclado e
portas seriais, o sistema de arquivos adoptava o mesmo layout do
Minix (embora não houvesse código do Minix no Linux), havia
extensos trechos em assembly, e ela já era capaz de rodar o bash e o
gcc.

A linha guia quando implementei o Linux foi: fazê-lo funcionar rápido.


Eu queria o kernel simples, mas poderoso o suficiente para rodar a
maioria dos aplicativos Unix.

O próprio usuário deveria procurar os programas que dessem


funcionalidade ao seu sistema, compilá-los e configurá-los. Talvez por
isso, o Linux tenha carregado consigo a etiqueta de sistema operativo
apenas para técnicos. Foi neste ambiente que surgiu a MCC Interim
Linux, do Manchester Computer Centre, a primeira distribuição
Linux, desenvolvida por Owen Le Blanc da Universidade de
Manchester, capaz de ser instalada independentemente em um
computador. Foi uma primeira tentativa de facilitar a instalação do
Linux.

Desde o começo, o núcleo Linux incluía um sistema básico para


chamadas do sistema e acesso aos dispositivos do computador. O
núcleo de um sistema operativo define entre várias operações, o
gerenciamento da memória, de processos, dos dispositivos físicos no
computador e é uma parte essencial de qualquer sistema operacional
utilizá vel, contudo para um sistema operacional adquirir
funcionalidade são necessários também vários outros aplicativos que
determinam funções específicas que aquele sistema será capaz de
desenvolver, os aplicativos existentes em um sistema operacional
com a única excepção do núcleo são determinados pelo usuário do
computador, como por exemplo: interpretadores de comandos,
gerenciadores de janelas, que oferecem respectivamente uma
interface para o usuário do computador, CLI ou GUI, e outros
aplicativos como editores de texto, editores de imagem, tocadores de
som, e, mas não necessariamente, compiladores.

A maioria dos sistemas inclui ferramentas e utilitários baseados no


BSD e tipicamente usam XFree86 ou X.Org para oferecer a
funcionalidade do sistemas de janelas X — interface gráfica. Assim
como também oferecem ferramentas desenvolvidas pelo projecto
GNU.

No momento do desenvolvimento do Linux, vários aplicativos já


vinham sendo reunidos pelo Projecto GNU da Free Software
Foundation (‘Fundação Software Livre’), que embarcara em um
subprojecto que ainda continua para obter um núcleo, o GNU Hurd.
Porém devido a várias complicações o projecto GNU e demora em
desenvolver o Hurd, Stallman acabou adoptando o núcleo Linux como
base para distribuir os programas do projecto GNU, não obstante
diversas pessoas e instituições tiveram a mesma ideia e assim várias
distribuições começaram a surgir baseadas no núcleo desenvolvido
inicialmente por Linus.

Distribuições

Actualmente, um Sistema Operacional ou GNU/Linux completo (uma


"Lista de distribuições de Linux ou GNU/Linux") é uma colecção de
software livre (e por vezes não-livres) criados por indivíduos, grupos
e organizações de todo o mundo, incluindo o núcleo Linux.
Companhias como a Red Hat, a SuSE, a Mandriva (união da
Mandrake com a Conectiva) e a Canonical (desenvolvedora do Ubuntu
Linux), bem como projectos de comunidades como o Debian ou o
Gentoo, compilam o software e fornecem um sistema completo,
pronto para instalação e uso. Patrick Volkerding também fornece uma
distribuição Linux, o Slackware.

As distribuições do Linux ou GNU/Linux começaram a receber uma


popularidade limitada desde a segunda metade dos anos 90, como
uma alternativa livre para os sistemas operacionais Microsoft
Windows e Mac OS, principalmente por parte de pessoas
acostumadas com o Unix na escola e no trabalho. O sistema tornou-
se popular no mercado de Desktops e servidores, principalmente para
a Web e servidores de bancos de dados.

No decorrer do tempo, várias distribuições surgiram e


desapareceram, cada qual com sua característica. Algumas
distribuições são maiores outras menores, dependendo do número de
aplicações e sua finalidade. Algumas distribuições de tamanhos
menores cabem num disquete com 1,44 MB, outras precisam de
vários CDs, existindo até algumas versões em DVD. Todas elas têm o
seu público e sua finalidade, as pequenas (que ocupam poucos
disquetes) são usadas para recuperação de sistemas danificados ou
em monitoramento de redes de computadores.

De entre as maiores, distribuídas em CDs, podem-se citar:


Slackware, Debian, Suse, e Conectiva. O que faz a diferença é
como estão organizadas e pré-configuradas as aplicações. A
distribuição Conectiva Linux, por exemplo, tinha as suas aplicações
traduzidas em português, o que facilitou que usuários que falam a
Língua Portuguesa tenham aderido melhor a esta distribuição. Hoje
esta distribuição foi incorporada à Mandrake, o que resultou na
Mandriva. Para o português, existe também a distribuição brasileira
Kurumin, construída sobre Knoppix e Debian, e a Caixa Mágica,
existente nas versões 32 bits, 64 bits, Live CD 32 bits e Live CD 64
bits, e com vários programas open source: OpenOffice.org, Mozilla
Firefox, entre outros.

Existem distribuições com ferramentas para configuração que


facilitam a administração do sistema. As principais diferenças entre
as distribuições estão nos seus sistemas de pacotes, nas estruturas
dos directórios e na sua biblioteca básica. Por mais que a estrutura
dos directórios siga o mesmo padrão, o FSSTND é um padrão muito
relaxado, principalmente em arquivos onde as configurações são
diferentes entre as distribuições. Então normalmente todos seguem o
padrão FHS (File Hierarchy System), que é o padrão mais novo. Vale
lembrar, entretanto, que qualquer aplicativo ou driver desenvolvido
para Linux pode ser compilado em qualquer distribuição que vai
funcionar da mesma maneira.

Quanto à biblioteca, é usada a Biblioteca libc, contendo funções


básicas para o sistema Operacional Linux. O problema está quando
do lançamento de uma nova versão da Biblioteca libc, algumas das
distribuições colocam logo a nova versão, enquanto outras aguardam
um pouco. Por isso, alguns programas funcionam numa distribuição e
noutras não. Existe um movimento LSB (Linux Standard Base) que
proporciona uma maior padronização. Auxilia principalmente
vendedores de software que não liberam para distribuição do código
fonte, sem tirar características das distribuições. O sistemas de
pacotes não é padronizado.

Caixa Mágica, Debian, Dual OS, Fedora, Freedows, Kurumin,


Mandriva, Satux, Slackware, SuSE e Ubuntu são algumas das
distribuições mais utilizadas actualmente, listadas aqui por ordem
alfabética.

Um exemplo de distribuição que corre num CD é o Kurumin Linux,


criado por Carlos E. Morimoto, baseada no Knoppix.

De entre as distribuições consideradas mais difíceis de gerir (por


preferirem assegurar a estabilidade tecnológica em detrimento da
interface de utilizador), destacam-se a Debian, Gentoo e Slackware.

Código Aberto e Programas Livres

Um programa assim como toda obra produzida actualmente, seja ela


literária, artística ou tecnológica, possui um autor. Os Direitos sobre a
ideia ou originalidade da obra do autor, que incluem essencialmente
distribuição, reprodução e uso é feito no caso de um programa
através de sua licença.

Existem dois movimentos que regem o licenciamento de programas


no mundo livre, os programas de código aberto e os programas
livres. Os dois representados respectivamente pela OSI e pela FSF
oferecem licenças para produção de software, sendo seus maiores
representantes a licença BSD e a GPL. O Linux oferece muitos
aplicativos de open source, contudo nem todos podem ser
considerados programas livres, dependendo exclusivamente sob qual
licença estes programas são distribuídos. Os programas distribuídos
sob tais licenças possuem as mais diversas funcionalidades, como
desktops, escritório, edição de imagem e inclusive de outros sistemas
operacionais.
Também existem organizações inclusive no mundo livre como a
organização Linux Simples para o Usuário Final (SEUL) que tem como
objectivo adoptar a maior gama possível de aplicativos de alta
qualidade produzidos sobre a GPL. É um projecto voluntário que
actualmente se foca no aprendizado de Linux, seu uso na ciência e
em documentos de advocacia, bem como gerenciar e coordenar
projectos de desenvolvimento de aplicativos.

Controvérsias quanto ao nome

Linux foi o nome dado ao núcleo de sistema operacional criado por


Linus Torvalds. Por extensão, sistemas operacionais que usam o
núcleo Linux são chamados genericamente de Linux. Entretanto, a
Free Software Foundation afirma tais sistemas operacionais são, na
verdade, sistemas GNU, e o nome mais adequado para tais sistemas
é GNU/Linux, uma vez que grande parte do código-fonte dos
sistemas operacionais baseados em Linux são ferramentas do
projecto GNU.

Há muita controvérsia quanto ao nome. Eric Raymond afirma, no


Jargon File, que a proposta da FSF só conseguiu a "aceitação de uma
minoria" e é resultado de uma "disputa territorial". Linus Torvalds
afirma que consideraria "justo" que tal nome fosse atribuído a uma
distribuição do projecto GNU, mas que chamar os sistemas
operacionais Linux como um todo de GNU/Linux seria "ridículo". Linus
disse não se importar sobre qual o nome usado, considera a proposta
da GNU como "válida" ("ok") mas prefere usar o termo "Linux".

Sobre o símbolo

O símbolo do software foi escolhido pelo seu criador, que achou a foto
de um pinguim na internet.

Projeto GNU

Projecto GNU, em computação, é um projecto iniciado por Richard


Stallman em 1984, com o objectivo de criar um sistema operacional
totalmente livre, que qualquer pessoa teria direito de usar, modificar
e redistribuir, o programa, seu código fonte, desde que garantindo
para todos os mesmos direitos.

Este sistema operacional GNU deveria ser compatível com o sistema


operacional UNIX, porém não deveria utilizar-se do código fonte do
UNIX. Stallman escolheu o nome GNU porque este nome, além do
significado original do mamífero Gnu, é um acrônimo recursivo de:
GNU is Not Unix (em português: GNU não é Unix).

A partir de 1984 Stallman e vários programadores, que abraçaram a


causa, vieram desenvolvendo as peças principais de um sistema
operacional, como compilador de linguagem C, editores de texto, etc.
Em 1991 o sistema operacional já estava quase pronto, mas faltava o
principal, que é o kernel do sistema operacional. O grupo liderado por
Stallman estava desenvolvendo um kernel chamado Hurd. Porém,
em 1991, um jovem finlandês chamado Linus Torvalds havia criado
um kernel que poderia usar todas as peças do sistema operacional
GNU. Este kernel ficou conhecido como Linux, contração de Linus e
Unix.

Actualmente, o sistema operacional GNU com o kernel Linux é


conhecido como GNU/Linux, que é como o projecto solicita aos
utilizadores que se refiram ao sistema completo, embora a maioria
das pessoas se referem ao sistema apenas como Linux por uma
questão de comodidade. Mas o próprio Linus Torvalds discorda da
nomenclatura GNU/Linux, chamando seu Sistema Operacional apenas
de Linux. A discussão e desentendimento entre Stallman e Torvalds
prosseguem acerca da correcta nomenclatura a respeito do Sistema,
arrastando também as opiniões dos inúmeros usuários e
desenvolvedores do Sistema GNU/Linux (ou apenas Linux).

Programas desenvolvidos pelo projecto GNU

O duo dinâmico: O Gnu e o Pinguim voando. (C) 1999, Free Software


Fundation, Inc

Lista de alguns programas desenvolvidos pelo projecto GNU:

 Bison - gerador de parser desenhado para substituir o yacc.


 Bash - interpretador de comandos.
 BFD - arquivos de bibliotecas.
 Binutils - montador, linker e ferramentas relacionadas.
 Classpath - bibliotecas para Java.
 DotGNU - substituto livre para o Microsoft .NET.
 Emacs - editor de texto extensível e auto-documentado.
 GCC - compilador otimizado para várias linguagens de
programação, particularmente linguagem C.
 GDB - depurador de aplicações.
 GIMP - programa de edição de imagens.
 glibc - biblioteca para linguagem C.
 GMP - programa para cálculos arbitrários.
 GNOME - ambiente de gráfico para sistemas do tipo Unix.
 Autotools - Autoconf, Automake e Libtool.
 GNUnet - rede descentralizada de comunicações pessoais,
desenhada para resistir à censura.
 GNUstep - implementação de conjunto de bibliotecas OpenStep,
assim como ferramentas para programar aplicações gráficas.
 GSL - biblioteca científica para GNU
 Gzip - aplicações e bibliotecas para compressão de dados.
 GNU Hurd - um micro-kernel e um conjunto de servidores que
funcionam do mesmo modo que o núcleo Unix.
 Maxima - um sistema para cálculos algébricos.
 Octave – um programa para computador numérico similar a
MATLAB.
 GNU MDK - um conjunto de ferramentas para a programação
em MIX.
 Texinfo - sistema de documentação.
 LilyPond - editor de partituras musicais.

O projecto GNU também ajuda com o desenvolvimento de outros


pacotes, como:

 CVS - Sistema de controle de versões para código fonte.


 DDD - Ferramentas gráficas para detecção e depuração de
erros.

Free Software Foundation

A Free Software Foundation (Fundação para o Software Livre) é uma


organização sem fins lucrativos, fundada em 1985 por Richard
Stallman e que se dedica à eliminação de restrições sobre a cópia,
redistribuição, entendimento e modificação de programas de
computadores – bandeiras do movimento do software livre, em
essência. Faz isso promovendo o desenvolvimento e o uso de
software livre em todas as áreas da computação mas,
particularmente, ajudando a desenvolver o sistema operacional GNU
e suas ferramentas.

Até meados da década de 1990 a fundação dedicava-se mais à


escrita do software. Como hoje existem muitos projectos
independentes de software livre, a FSF dedica-se mais aos aspectos
legais e estruturais da comunidade do software livre. Entre suas
atribuições actuais, encarrega-se de aperfeiçoar licenças de software
e de documentação (como a GNU General Public License, GPL ou a
GNU Free Documentation License, GFDL), de desenvolver um aparato
legal acerca dos direitos autorais dos programas criados sob essas
licenças, de catalogar e disponibilizar um serviço com os softwares
livres desenvolvidos (o Free Software Directory), e de discutir e
aperfeiçoar a própria definição de software livre..

Gnu

Altivo, o gnu é um grande mamífero ungulado do gênero


Connochaetes, que inclui duas espécies, ambas nativas do
continente africano.
Este animal também é conhecido como boi-cavalo e como
guelengue. De notar, porém, que esta mesma designação vernácula
é comum a outras espécies.

O gnu pertence à família dos bovídeos (Bovidae), que inclui bovinos,


caprinos, bubalinos, antílopes e outros mamíferos ungulados.

Podem correr até 80km/h para fugir dos predadores. Já em defesa da


cria, como instinto, a mãe gnu, em fúria, é capaz de enfrentar
guepardos, hienas e até mesmo leões, com seus chifres e coices.

Predadores

Nas savanas africanas, os gnus são vítimas constantes dos leões,


leopardos, guepardos ou chitas, hienas e cães selvagens africanos
(também conhecidos por mabecos). Esses carnívoros preferem
aqueles que estão doentes, os velhos e até aquele que se isolam da
manada. Aqueles que morrem naturalmente, não são excepção.

COMANDOS DO MS-DOS

Comandos de manipulação de diretório


mkdir: cria um directório exemplo: mkdir docs
rmdir: exclui um directório (se estiver vazio)
rm –rf: exclui um directório e todo o seu conteúdo
cd : entra num directório (exemplo: cd docs) ou retorna para HOME
cd ~: vai direto para o diretório home do usuário logado.
cd -: volta ao último directório acessado
pwd : exibe o local do directório actual
ls : listar o conteúdo do directório
ls –alh : mostra o conteúdo detalhado do directório
ls -ltr : mostra os arquivos no formato longo(l) em ordem inversa(r)
de data (t)
du -msh : mostra o tamanho do directório em Megabytes
whereis : mostra onde se encontra determinado arquivo
(binários)exemplo: whereis samba
which : mostra qual arquivo binário está sendo chamado pelo shell
quando chamado via linha de comando

Dicas úteis

Qual o maior directório?

Para obter uma listagem de directórios em sistemas GNU/Linux,


ordenados do maior para o menor, use o comando:

du -Sk | sort -nr | more


ou

du -Sh | sort -nr | more

para exibir resultado em UNID (Kbytes,Mbytes ou Gbytes)

O tamanho de cada diretório ou subdiretório


du -ach --max-depth=1 /var/
du -ach --max-depth=1 /var/ | sort -nr
du -ach --max-depth=1 /var/ | sort -nr | more

Criar diretórios dentro de diretorios


mkdir -p /teste/teste1/teste2/teste3

Criar uma árvore completa de directórios


Mkdir –p
docs/{img/{fotos,icons,wallpapers,svg},textos/{artigos,man},tmp}

A regra aqui é a seguinte:

Para cada pasta que conterá subpastas use "nome/{}"


dentro das chaves coloque os nomes separados por vírgula
e não esqueça de usar o parâmetro '-p' no começo do comando!

Comandos para manipulação de arquivos

cat: mostra o conteúdo de um arquivo binário ou texto


tac: semelhante ao cat mas inverte a ordem
tail: mostra as últimas 10 linhas de um arquivo (util para ler logs)
head: mostra as primeiras 10 linhas de um arquivo
less: mostra o conteúdo de um arquivo de texto com controle
vi: editor de ficheiros de texto
vim: versão melhorada do editor supracitado
rm: remoção de arquivos (também remove diretórios)
cp: copia diretórios 'cp -r' copia recursivamente
mv: move ou renomeia arquivos e diretórios
chmod:altera as permissões de arquivos ou directórios
chown: altera o dono de arquivos ou diretórios
cmd>txt: cria um novo arquivo(txt) com o resultado do
comando(cmd)
cmd>>txt adiciona o resultado do comando(cmd) ao fim do
arquivo(txt)
touch touch foo.txt - cria um arquivo foo.txt vazio; também altera
data e hora de modificação para agora
> arquivo.txt mais rápido que o touch para criação de arquivos
split divide um arquivo
recode: recodifica um arquivo ex: recode iso-8859-15..utf8
file_to_change.txt
[mc] poderoso editor de texto

Comandos para administração


man : mostra informações sobre um comando
adduser: adiciona usuários
addgroup: adiciona grupos
apropos: realiza pesquisa por palavra ou string
dmesg : exibe as mensagens da inicialização(log)
du : exibe estado de ocupação dos discos/partições
find : comando de busca ex: find ~/ -cmin -3
userdel: remove usuários
chfn : altera informação relativa a um utilizador
who : informa quem está logado no sistema
whoami: informa com qual usuário você está logado
passwd : modifica senha (password) de usuários
umask : define padrões de criação de arquivos e diretórios
ps : mostra os processos correntes
ps –aux: mostra todos os processos correntes no sistema
kill : manda um sinal para um processo. Os sinais SIGTERM e
SIGKILL encerram o processo.
Killall: manda um sinal para todos os processos.
su : troca para o super-usuário root (é exigida a senha)
su user: troca para o usuário especificado em 'user' (é exigida a
senha)
chown : altera a propriedade de arquivos e pastas (dono)
env : mostra variaveis do sistema

Comandos para administração de rede

Ifconfig: mostra as interfaces de redes activas e as informações


relacionadas a cada uma delas
Route: mostra as informações referentes as rotas
Mtr: mostra rota até determinado IP
Nmap: lista as portas de sistemas remotos/locais atrás de portas
abertas. Pode checar sistema operacional em execução no host
remoto.
netstat: exibe as portas e protocolos abertos no sistema.
iptraf : analisador de trafego da rede com interface gráfica baseada
em diálogos
tcpdump: sniffer muito popular. Sniffer é uma ferramenta que "ouve"
os pacotes que estão passando pela rede.
traceroute: traça uma rota do host local até o destino mostrando os
roteadores intermediários
nslookup: consultas a serviços DNS
dig: consultas a serviços DNS

Comandos Unix - (lista)


cat • cd • chmod • chown •
chgrp • cp • du • df • file •
Gerenciamento de arquivos fsck • ln • ls • lsof • mkdir •
more • mount • mv • pwd •
recode • rm • rmdir • split •
touch • tree
anacron • at • chroot •
crontab • kill • killall • nice •
Gerenciamento de processos
pgrep • pidof • pkill • ps •
sleep • time • top • wait
env • finger • id • locale
•mesg • passwd • su • sudo •
Gerenciamento de usuários e ambiente
uname • uptime • w • wall •
who • whoami • write
Programação no shell echo • expr • printf • unset
inetd • netstat • ping • rlogin
Redes e comunicação
• traceroute
Busca find • grep • strings

CAP. V. OPÇÕES AVANÇADAS DE SISTEMAS OPERATIVOS


Novos sistemas operativos transaccionais

OPEN SOURCE VS SISTEMAS PROPRIETÁRIOS.

Depois de um período inicial de desenvolvimento dos sistemas


operativos de quase duas décadas, no final dos anos 70 apareceram
ofertas comerciais de sistemas operativos de tempo partilhado que
estabeleceram o padrão de funcionalidade e desempenho destes
sistemas. Uma característica comum à maioria destes sistemas
operativos era serem sistemas proprietários dos fabricantes do
hardware que, como é natural, procuravam optimizar o sistema para
as características do computador que produziam. Eram normalmente
desenvolvidos em linguagem assembly e o código não era divulgado
até porque poucos teriam a capacidade de o compreender e
modificar.

A alternativa a estes sistemas surgiu no final da década de 70, em


que os utilizadores impuseram sistemas abertos(open systems) que
ofereciam um modelo computacional normalizado, independente do
hardware de suporte e, portanto, portáveis para diferentes
plataformas de hardware. Como corolário, a propriedade do sistema
passou dos produtores de computadores(como a IBM, DEC, Bull,
Unisys, Control Data) para empresas especializadas em software,
sendo o exemplo mais conhecido o da Microsoft.

O eventual ganho de desempenho dos sistemas proprietários tinha,


como contrapartida, tornar as aplicações dependentes das
funcionalidades de um dado sistema, sendo dificil, ou muito
dispendioso, transportá-las para outros ambientes ou mudar de
fornecedor de hardware. Nesta altura, uma empresa ficava refém do
seu fornecedor de hardware, dado que não conseguiria transportar as
suas aplicações porque estavam indissociavelmente ligadas a um
sistema operativo que só corria nas máquinas dos fornecedores de
hardware.

Os sistemas proprietários, que eram a regra na década de 70, foram


gradualmente perdendo terreno, embora recentemente as
plataformas desenvolvidas pela Apple tenham novamente invertido
essa tendência.

Os sistemas abertos popularizaram-se na década de 80 e ficaram


associados a sistemas com elevada portabilidade, com mecanismos
de interoperação normalizados e que seguiam normas de
desenvolvimento do software. O Unix foi o sistema operativo que
maior influência teve nesta mudança. A forte tónica na simplicidade,
acrescida de uma divulgação no meio universitário, desencadeou o
interesse que hoje o torna um dos sistemas operativos mais
conhecidos e utilizados. A politica de divulgação do código fonte
permitiu que fosse usado, de forma generalizada, nos cursos
universitários e em numerosas empresas inovadoras na época.

Unix e posteriormente o Windows, apesar de por uma via totalmente


diferente, contribuíram decisivamente para a normalização dos
sistemas operativos. O sucesso da Microsoft, no âmbito dos
computadores pessoais, fez com que o sistema se generalizasse e
seja hoje oferecido por todos os fabricantes de hardware, tornando-
se uma norma de facto para a maioria dos computadores pessoais.
Como é conhecido, o código do sistema não foi divulgado
publicamente como o do Unix e existem sérias reservas quanto à
forma como a Microsoft pode explorar, mais eficientemente que a
concorrência, o facto de desenvolver simultaneamente o sistema
operativo e as aplicações.

O sistema aberto é independente do hardware, mas continua a ser


propriedade de uma empresa que o desenvolve e mantém. Durante a
década de 80 apareceu um movimento que defendia o software
livre(free software) em que o código é disponibilizado de forma
totalmente aberta(open source), seguindo a licença de software da
Free Software Foundation – a General Public License, que especifica
que o software deve ser fornecido com o respectivo código fonte que
pode ser usado, copiado ou modificado, não podendo usar e adaptar
às suas necessidades, sem intervenção de uma empresa proprietária.
Contudo, a interpretação do conceito e os modelos de negócio
associados são ainda alvo de controvérsia. O Linux introduziu este
modelo de negócio revolucionário nos sistemas operativos.

O modelo do código aberto fez crescer rapidamente a comunidade em


torno do Linux e apareceram diversas empresas a suportá-lo e a
vender documentação, formação e suporte. O debate do real valor
para o utilizador final, entre esta modalidade de disponibilização e a
mais tradicional que considera o sistema um produto, continua hoje a
agitar a comunidade informática e terá certamente profundas
implicações na evolução futura.

Você também pode gostar