Sistema Operacional I
Clique para editar o estilo do subtítulo mestre
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;
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.
Sistema Operacional


...Resumindo...

Conjunto de programas que
 gerenciam os recursos do
       computador.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
Tipos de Sistemas Operacionais

   Batch;
   Time sharing (Tempo compartilhado);
   Tempo real;
   Distribuídos;
   Paralelos;
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.
Processamento Batch
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.
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.
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.
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;
Linux

Sistemas Operacionais

  • 1.
    Sistema Operacional I Cliquepara editar o estilo do subtítulo mestre
  • 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 algunsautores (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.
  • 4.
    Sistema Operacional ...Resumindo... Conjunto deprogramas que gerenciam os recursos do computador.
  • 5.
    Sistema Operacional O quefaz? • 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.
  • 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 Oferecea 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úcleodo 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.
  • 12.
    Um pouco dehistó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 paide 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 paide 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 oSistema 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º SistemaOperacional 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 computadorespessoais 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 computadorespessoais 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 SistemasOperacionais  Batch;  Time sharing (Tempo compartilhado);  Tempo real;  Distribuídos;  Paralelos;
  • 20.
    Sistemas Batch (emlote) 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.
  • 21.
  • 22.
    Sistemas de TempoCompartilhado (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 TempoReal (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 porpossuir 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 processossã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;
  • 26.