2. Cronograma de aula
Teoria
• Introdução aos sistemas operacionais
• Conceitos e características
• Histórico dos sistemas operacionais
Linux
• História
• Evolução cronológica
• Estrutura do Linux
• Distribuições existentes do Linux
• Vantagens e desvantagens do Linux;
• Hardware necessário;
• Linux no mercado;
3. Sistema Operacional
Segundo alguns autores (Silberschatz et al, 2005; Stallings, 2004;
Tanenbaum, 1999), existem dois modos distintos de conceituar um
sistema operacional:
Visão top-down, pela perspectiva do usuário ou programador: é uma
abstração do hardware, fazendo o papel de intermediário entre o software
(programas) e os componentes físicos do computador, o (hardware);
Visão bottom-up: é um gerenciador de recursos, i.e., que controla quais
aplicações (processos) podem ser executadas, quando devem ser
executadas e quais recursos (memória, disco, periféricos) podem ser
utilizados.
5. Sistema Operacional
O que faz?
• Fornece interface entre o usuário e o sistema
(interpretador de comandos);
• Camada (interação) entre o hardware e o
software;
• Gerencia recursos de hardware;
• Gerenciamento de processos;
• Gerenciamento de memória;
• Gerência de arquivos;
• Entrada e saída de dados.
6.
7. Gerência de Processos
Criação e deleção de processos;
Suspensão e retomada de processos;
Prover mecanismos para sincronização de processos;
Prover mecanismos para comunicação de processos;
Prover mecanismo para tratar deadlock (processos que
estão a espera de recursos que jamais serão liberados).
8. Gerenciamento de memória
Controlar quais regiões de memória são utilizadas e
por qual processo;
Decidir qual processo deve ser carregado para
memória quando espaço for disponível;
Alocar e desalocar espaço de memória.
9. Gerência de Arquivos
Oferece a abstração de arquivos e diretórios;
Criação e remoção de arquivos e diretórios;
Mapeamento para memória secundária.
10. Kernel
É o núcleo do sistema operacional. É o Kernel que
gerencia os recursos do sistema e permite que os
programas façam uso deles.
Gerencia e controla o acesso ao sistema de arquivos, a
memória, a tabela de processos e o acesso aos
dispositivos e periféricos, entre outras atribuições. É a
cabeça do sistema operacional.
O Kernel do Linux é aberto ao contrário do Windows.
11.
12. Um pouco de história....
A primeira geração (aproximadamente 1945-1955) de
computadores foram basicamente construídos com
válvulas e painéis e os sistemas operacionais "não
existiam". Os programadores, que também eram os
operadores, controlavam o computador por meio de
chaves, fios e luzes de aviso.
13. ENIAC, o pai de todos os computadores...
O ENIAC (Electronic Numerical Integrator and Computer) foi
o primeiro computador digital eletrônico de grande
escala. Criado em fevereiro de 1946 pelos cientistas
norte-americanos John Eckert e John Mauchly, da
Electronic Control Company.
O ENIAC começou a ser desenvolvido em 1943 durante a II
Guerra Mundial para computar trajetórias táticas que
exigissem conhecimento em matemática.
14. ENIAC, o pai de todos os computadores...
Características
Pesava mais de 30 toneladas;
Operava na base dez e não em base
binária;
Ocupava 270 m2;
Sua capacidade de processamento era de
5.000 operações por segundo;
Criado na segunda guerra, tinha como
principal finalidade cálculos balísticos;
Esta máquina não tinha sistema
operacional, nem monitor tampouco
teclado.
15. Quando começou o Sistema Operacional?
O conceito de sistema operacional apareceu durante a
segunda geração da computação moderna (1955 –
1965), através da programação em Batch. Assim,
vários comandos já poderiam ser executados em
sequência através de cartões perfurados, eliminando
parte do trabalho do operador de terminal.
Normalmente, um programa era composto por um
conjunto de cartões inseridos pelo usuário do
sistema, na ordem correta.
16. O 1º Sistema Operacional moderno
Unix
Criado em 1969 por um grupo de desenvolvedores da AT&T visando acabar
com o problema da incompatibilidade de SOs de máquinas distintas.
É possível afirmar que mais de 90% dos SOs atuais foram influenciados de
alguma maneira pelo Unix;
1º Versão em assembly, sendo reescrito em C no ano de 1973, que é usado
até os dias de hoje;
Este sistema introduziu conceitos muito importantes para a computação:
Portabilidade;
Multi-usuário;
Multi-tarefas e compartilhamento de tarefas;
Na década de 70, o Unix foi distribuído gratuitamente (incluindo seu código
fonte) para universidades e órgãos governamentais norte-americanos, o que
conferiu muita popularidade a este sistema.
Sua interface era totalmente em modo texto sem interface gráfica
17. SO para computadores pessoais
O Unix, em suas primeiras versões, foi desenvolvido para o uso em
computadores de grande porte, normalmente em universidades. Contudo,
alguns jovens programadores possuíam uma ideia absurda para época: criar
sistemas operacionais para o uso de pessoas comuns.
Um dos primeiros a pensar desta forma foi Steve Jobs, fundador da Apple.
Desde a criação de sua empresa, seu principal foco foi a criação de
computadores para o dia-a-dia, incluindo sistemas operacionais fáceis de
serem operados.
1976 - O lançamento do Apple I. Pela primeira vez, um PC continha um teclado
fácil de ser utilizado, com uma mini-televisão adaptada como monitor.
1979 – O lançamento do Lisa pela Apple - Steve Jobs, aproveita todas as
ideias gráficas do computador criado pela Xerox Parc.
1975 - Bill Gates funda a Microsoft, empresa que possuía como objetivo
primário o desenvolvimento de software em linguagem BASIC para o
computador Altair da IBM.
1979 - A IBM se interessou pelo projeto da Microsoft e ambas as organizações
afirmaram um contrato.
18. SO para computadores pessoais
1982- Microsoft lançou MS-DOS em 1982 cuja interface era baseada em
modo texto, bastante parecida com a utilizada pelo Unix;
1984 - O Apple Machintosh foi lançado,introduzindo o conceito de desktop,
utilizando ícones e pastas para representar programas e arquivos do modo
como conhecemos hoje.
....
Gates Gates convenceu Jobs a ser incluído no desenvolvimento do Macintosh.
O objetivo de Gates era maior que isso: copiar a interface gráfica do
Machintosh, e foi exatamente isso que aconteceu.
No lançamento do novo PC da Apple, Steve Jobs descobriu que a Microsoft
estava lançando máquinas no Japão, cujas interfaces eram muito parecida com
a do seu computador.
1985 - Gates lançou o Sistema Operacional Windows 1.0
2001 - Apple surpreendeu o mundo da informática, abandonando o seu próprio
código e reescrevendo todo o seu sistema operacional usando o Unix como
base. A partir daí, ele passou a se chamar MAC OSX, sistema que continua
forte até os dias de hoje.
19. Tipos de Sistemas Operacionais
Batch;
Time sharing (Tempo compartilhado);
Tempo real;
Distribuídos;
Paralelos;
20. Sistemas Batch (em lote)
Implementados na década de 1960. Também chamados de jobs,
eram submetidos para execução através de cartões perfurados e
armazenados em disco ou fita, onde aguardavam para ser
processados.
Posteriormente, em função da disponibilidade de espaço na
memória principal, os jobs eram executados, produzindo uma
saída em disco ou fita.
Não exige a interação do usuário com a aplicação.
Exemplos: Programas envolvendo cálculos numéricos,
compilações, ordenações, backups e todos aqueles onde não é
necessária a interação com o usuário.
É um conjunto de comandos rodados sequencialmente.
22. Sistemas de Tempo Compartilhado (Time
sharing)
Permitem que diversos programas sejam executados a partir da divisão
do tempo do processador em pequenos intervalos de tempo, fatias de
tempo denominadas time-slice.
Caso a fatia de tempo não seja suficiente para a conclusão do
programa, ele é interrompido pelo sistema operacional e substituído por
um outro, enquanto fica aguardando por uma nova fatia de tempo.
O sistema cria para cada usuário um ambiente de trabalho próprio,
dando a impressão de que todo o sistema está dedicado exclusivamente
a ele.
Permitem a interação dos usuários com o sistema, através de terminais
que incluem vídeo, teclado e mouse.
Esses sistemas possuem uma linguagem de controle que permite ao
usuário comunicar-se diretamente com o sistema operacional, através
de comandos. Desta forma, é possível verificar arquivos armazenados
em disco ou cancelar a execução de um programa.
23. Sistemas de Tempo Real (Real-Time)
São implementados de forma semelhante aos sistemas de tempo
compartilhado. O que caracteriza a diferença entre os dois tipos de
sistemas é o tempo exigido no processamento das aplicações. Enquanto
em sistemas de tempo compartilhado o tempo de processamento pode variar
sem comprometer as aplicações em execução, nos sistemas de tempo real os
tempos de processamento devem estar dentro de limites rígidos, que devem
ser obedecidos, caso contrário, poderão ocorrer problemas irreparáveis.
Nos sistemas de tempo real não existe a idéia de fatia de tempo, implementada
nos sistemas de tempo compartilhado. Um programa utiliza o processador o
tempo que for necessário ou até que apareça outro mais prioritário. A
importância ou prioridade de execução de um programa é definida pela própria
aplicação e não pelo sistema operacional.
Esses sistemas, normalmente, estão presentes em aplicações de controle de
processos, como no monitoramento de refinarias de petróleo, controle de
tráfego aéreo, de usinas termoelétricas e nucleares, ou em qualquer aplicação
onde o tempo de processamento é fator fundamental.
24. Sistemas Distribuídos
Caracterizam-se por possuir duas ou mais UCPs interligadas e
trabalhando em conjunto. A vantagem deste tipo de sistema é
permitir que vários programas sejam executados ao mesmo
tempo ou que um mesmo programa seja subdividido em partes,
para serem executadas simultaneamente em mais de um
processador.
Com múltiplos processadores, foi possível a criação de sistemas
computacionais, aplicado, por exemplo, no desenvolvimento
aeroespacial, prospecção de petróleo, simulações, e
processamento de imagens. A princípio, qualquer aplicação que
faça uso intensivo da UCP será beneficiada pelo acréscimo de
processadores ao sistema.
Vantagens específicas como escalabilidade, disponibilidade e
balanceamento de carga.
25. Sistema Paralelos
Vários processos são executados em várias
máquinas,conectadas entre si de alguma forma.
Estes processos se comunicam mutuamente através
de mensagens;
Permitir que sistemas munidos de mais de um
processador possam acelerar a resolução de um
problema de natureza paralelizável;
- Poder executar vários processos (programa em
execução) simultaneamente;
- Otimizar o tempo ocioso (idle time) das CPU’s;