
1. Historia
1.1. Nível de Hardware
1.1.1. 1642 á 1833
1.1.1.1. Necessidade de realizar cálculos matemáticos de forma rápida, precisa e automatizada
1.1.1.1.1. Blaise Pascal
1.1.1.1.2. Gottfried Leibniz
1.1.1.1.3. Charles Colmar
1.1.2. 1833 á 1937
1.1.2.1. Charles Babbage
1.1.2.1.1. Maquina Analítica
1.1.2.2. George Boole
1.1.2.2.1. Criação da Lógica Booleana
1.1.2.3. Alan Turing
1.1.2.3.1. Máquina de Turing
1.1.3. 1940
1.1.3.1. Computadores com válvulas
1.1.3.1.1. Colossus
1.1.3.1.2. Mark I
1.1.3.1.3. ENIAC
1.1.3.1.4. EDSAC
1.1.4. 1950
1.1.4.1. Computadores com Transistores e Memória Magnéticas
1.1.4.1.1. UNIVAC
1.1.4.1.2. Whirlwind I
1.1.4.1.3. IBM 704
1.2. Nível de Software
1.2.1. Final de 1950
1.2.1.1. Atlas
1.2.1.1.1. memória hierarquizada / memória virtual
1.2.2. 1960
1.2.2.1. Multiprogramação
1.2.2.1.1. Vários programas compartilham a memória ao mesmo tempo
1.2.2.1.2. Sistemas mais rápidos e eficientes
1.2.2.2. Multiprocessamento
1.2.2.3. Time-Sharing
1.2.2.3.1. Cada programa pode utilizar o processador por pequenos intervalos de tempo
1.2.2.4. Memória virtual
1.2.2.5. Master Control Program (MCP)
1.2.2.5.1. Multiprogramação
1.2.2.5.2. Memória virtual com segmentação
1.2.2.5.3. Multiprocessamento assimétrico
1.2.2.5.4. Primeiro sistema a ser desenvolvido em uma linguagem de alto nível
1.2.2.6. IBM OS/360
1.2.2.6.1. Sistemas batch com multiprogramação
1.2.2.7. CTSS (Compatible Time- Sharing System)
1.2.2.7.1. Suportava no máximo 32 usuários interativos, através do terminal
1.3. Nível Hardware/Software
1.3.1. 1970
1.3.1.1. Desenvolvidas arquiteturas com diversos processadores
1.3.1.1.1. Acelerar o processamento
1.3.1.1.2. Sistemas operacionais com novos mecanismos de controle e sincronismo
1.3.1.2. Desenvolvidos inúmeros protocolos de rede
1.3.1.2.1. Redes Distribuídas (WANs)
1.3.1.2.2. Redes Locais (LANs)
1.3.1.3. Desenvolvidos duas linguagem de programação
1.3.1.3.1. linguagem Pascal
1.3.1.3.2. linguagem C
1.3.2. 1980
1.3.2.1. Destaque para os sistemas compatíveis com o Unix
1.3.2.1.1. Berkeley Software Distribution – BSD
1.3.2.2. Estações de trabalho (workstations)
1.3.2.2.1. Sistemas monousuário e multitarefa
1.3.2.3. sistemas operacionais com interface gráfica
1.3.2.3.1. Microsoft Windows
1.3.2.3.2. OS/2
1.3.3. 1990
1.3.3.1. Dispositivos de E/S menores, mais rápidos e maior capacidade de armazenamento
1.3.3.2. TCP/IP passou a ser um padrão de mercado
1.3.3.3. Cliente/servidor, passou a ser utilizada em redes distribuídas
1.3.3.3.1. servidores web, de correio, de arquivos e servidores de banco de dados
1.3.3.4. Consolidação dos sistemas operacionais baseados em interfaces gráficas
1.3.3.5. Popularização do software aberto
1.3.3.5.1. Sistemas operacionais (Linux),
1.3.3.5.2. Banco de dados (MySQL)
1.3.3.5.3. Servidores web (Apache)
1.3.3.5.4. Servidores de correio (Sendmail)
1.3.4. 2000
1.3.4.1. Evolução nos processadores e equipamentos de comunicação
1.3.4.2. Redes de comunicação cresceram em abrangência e velocidade,
1.3.4.3. Os navegadores evoluíram para possibilitar uma interação fácil e segura com a Internet
1.3.4.4. Sistemas operacionais tornaram-se mais intuitivos e presentes em dispositivos móveis
1.3.4.5. Sistemas operacionais tiraram proveito das arquiteturas de processadores de 64 bits, especialmente do aumento do espaço de endereçamento
1.3.4.6. Evolução do hardware dos computadores permitiu que o modelo de virtualização
1.3.5. 2010
1.3.5.1. Consolidação dos modelos computacionais em nuvem
1.3.5.1.1. Software como serviço (SaaS – Software as a Service)
1.3.5.1.2. Infraestrutura como serviço (IaaS – Infrastructure as a Service)
1.3.5.1.3. Plataforma como serviço (PaaS – Plataform as a Service)
1.3.5.2. Popularização de smartphones e tablets
1.3.5.2.1. 1G
1.3.5.2.2. 2G
1.3.5.2.3. 3G
1.3.5.2.4. 4G
1.3.5.3. Desenvolvimento de diversos sistemas operacionais para diversos dispositivos
2. Sistemas Operacionais
2.1. Sistemas Monoprogramáveis/Monotarefa
2.1.1. Permitir que todos os recursos do sistema fiquem exclusivamente dedicados a uma única tarefa
2.1.2. Enquanto um programa aguarda por um evento, o processador permanece ocioso
2.1.3. Memória subutilizada caso o programa não a preencha totalmente
2.1.4. Periféricos dedicados á um único usuário
2.1.5. Implementação Simples
2.2. Sistemas Multiprogramáveis/Multitarefa
2.2.1. Recursos computacionais são compartilhados entre os diversos usuários e aplicações
2.2.2. Compartilhamento da memória e do processador
2.2.3. O sistema operacional gerencia o acesso aos recursos
2.2.4. Implementação muito mais complexa
2.2.5. Monousuário ou multiusuário
2.2.6. Sistema Batch
2.2.6.1. Jobs
2.2.6.2. Não exigir a interação do usuário com a aplicação
2.2.6.3. Melhor utilização do processador
2.2.6.4. Tempos de resposta longos
2.2.7. Sistemas de Tempo Compartilhado
2.2.7.1. Divisão do tempo do processador em pequenos intervalos
2.2.7.2. Fatia de tempo (time-slice)
2.2.7.2.1. Sistema operacional interrompe o programa
2.2.7.2.2. Substitui por outro
2.2.7.2.3. Nova fatia de tempo
2.2.7.3. Impressão de que todo o sistema está dedicado exclusivamente ao usuário
2.2.8. Sistemas de tempo real
2.2.8.1. Limites de tempo rígidos
2.2.8.2. Problemas irreparáveis
2.2.8.3. Prioridade de execução
2.2.8.3.1. Definida pela aplicação
2.3. Sistemas com Múltiplos Processadore
2.3.1. Duas ou mais UCPs interligadas e trabalhando em conjunto
2.3.2. Vários Programas executados ao mesmo tempo
2.3.3. Subdivisão da tarefa para ser executada em vários processadores
2.3.4. Escalabilidade
2.3.4.1. Ampliar o poder computacional
2.3.5. Disponibilidade
2.3.5.1. Manter o sistema mesmo em caso de falhas
2.3.6. Balanceamento de carga
2.3.6.1. Distribuir o processamento entre os processadores
2.3.7. Sistemas Fortemente Acoplados (tightly coupled)
2.3.7.1. Uma única memória sendo compartilhada
2.3.7.2. Um único sistema operacional gerenciando os dispositivos E/S
2.3.7.3. SMP (Symmetric Multiprocessors)
2.3.7.3.1. Tempo uniforme ao acesso a memória
2.3.7.4. NUMA (Non-Uniform Memory Access)
2.3.7.4.1. Diversos conjuntos reunindo processadores e memória principal
2.3.7.4.2. Rede de interconexão
2.3.7.4.3. Localização física
2.3.8. Sistemas Fracamente Acoplados (loosely coupled)
2.3.8.1. Dois ou mais sistemas computacionais conectados através de linhas de comunicação
2.3.8.2. Cada sistema é independente
2.3.8.3. Terminais sem capacidade de processamento
2.3.8.4. Modelo de rede de computadores
2.3.8.5. SOR (Sistemas Operacionais de Rede)
2.3.8.5.1. Um computador pode compartilhar seus recursos na rede