Você está na página 1de 47

Sistemas Operativos

Princípios de sistemas operativos

Rui Maranhão (rma@fe.up.pt)


Agenda

• objectivos de um computador
• objectivos de um sistema operativo
• evolução dos sistemas operativos
• tipos de sistemas operativos
Computador
• é formado por hardware, ...
• e também programas, aplicações


Objectivos de um
computador
• manipular dados (semi-) automaticamente
• facilitar a vida aos utilizadores
• prático, simples de usar

• executar programas (i.e., aplicações)


Sistema Operativo
• programa que actua como intermediário
entre os utilizadores e o hardware

• gestor de recursos
• tempo, espaço
Objectivos
- Conveniência -
• SO esconde os detalhes do hardware

• simula máquina virtual (utilização fácil)

• fornece API mais fácil de usar do que o hardware


Objectivos
- Eficiência -
• SO controla a alocação dos recursos

• multiplexação
• tempo: cada processo usa o recurso à vez
• espaço: recurso é partilhado
Evolução

• 1a geração (1945-1955) - Válvulas e placas programáveis

• 2a geração (1955-1965) - Transístores e sistemas batch

• 3a geração (1965-1980) - Circuitos integrados

• 4a geração (1980- ) - PCs, workstations, servidores

• uma nova geração?? PDAs, smartphones, sistema de


navegação (ndrive), TVs, ...
1a geração
• acesso livre ao computador
• utilizador podia mas também tinha de
fazer tudo
• ‘inventar a roda’
• baixa eficiência
• elevado tempo de preparação
• difícil encontrar erros
2a geração
• transístores e sistemas batch (mainframes)
• mais eficiente que a 1a geração, mas
• máquinas bastante caras
• como executar um programa ?
• programa era escrito em papel
• codificado em fitas perfuradas
• fornecido ao operador especializado
2a geração
• para aumentar eficiência
• operador especializado
• operador carrega programas, executa-os e
devolve resultados
• 1 programa de cada vez
• programa auxiliar para executar tarefa tinha
de ser carregado (FORTRAN)
• ganhou-se eficiência, perdeu-se conveniência
2a geração

• gestores queriam reduzir tempo off-line


• maximizar uso da máquina (€)!!
• solução: sistemas batch
• coleccionar série de programas semelhantes
numa fita
Sistemas batch
Sistemas batch
Como melhorar?
• programa (resident monitor) que
• controla a operação de um computador
• encadeia ‘jobs’

• embrião de um sistema operativo?!


3a geração
• multi-programação
• executar programas ao mesmo tempo
• e.g., enquanto um programa espera por
IO, outro pode usar o CPU
Multiprogramação
• vários jobs são carregados para a memória
central, e o tempo de CPU repartido
• mecanismos de interrupções permite multiplexar
o processador entre várias actividades
• execução concorrente de vários programas
• optimizar utilização do processador
Multiprogramação
Contudo...
• Eficiência em risco devido erros de programação
• deadlocks
• race conditions
• destruir o programa de controle
• Pouca interacção com programa em execução
• difícil identificar erros!
Time-sharing
• time-sharing aumenta a conveniência

• SO reparte o tempo de CPU pelos vários


programas prontos a executar

• cria a ilusão que o computador está


permanentemente disponível

• Impulsionado por descida dos preços dos


terminais


Consequências
• revisão dos algoritmos de escalonamento
• definição dos mecanismos de segurança
• aparecimento do sistema de ficheiros
• tempo partilhado -> vários progs em
memória simultaneamente
• Hierarquia de memória
4a geração
• apareceram por volta dos anos 80
• incentivado pelo baixo custo do hardware
• exequível um computador voltar a ser
dedicado a um só utilizador

• também conhecido como computadores


pessoais (ou micro-computadores)
Multiprocessamento

• vantagens
• throughput
• economia
• graceful degradation
• ideia: aumentar throughput, e não executar
o programa mais depressa
Multiprocessamento
• Arquitectura
• simétrico
• qualquer CPU pode executar código do SO
• assimétrico
• periféricos associados a um CPU
• não há race conditions, CPU idles
• baixo throughput
Sistemas Distribuídos
• SD apareceram para partilhar
• recursos caros
• inconvenientes de replicar
• redireccionamento de IO
• Consequência da evolução de
• redes, PCs, custo dos computadores, ...
Sistemas Distribuídos

• de network aware OSs (sistemas iniciais:


Mail, FTP) passou-se a sistemas
vocacionados para trabalhar em rede (e.g.,
sistemas de ficheiros distribuídos)
• aplicações acedem aos recursos remotos
de forma transparente
Sistemas de tempo real
• inicialmente usado para controlo de
processos industriais
• tb usado para jogos, sistemas, controlo de
automóveis/aviões
• típico de sistemas embebidos
• SW integrado com o HW
• difícil de estender as aplicações
Tempo virtual vs. real
• tempo virtual
• tempo de execução não tem relação com o
tempo cronológico
• sistema utilizado na maioria dos computadores
(windows, linux, mac os)
• tempo real
• tentam garantir que o computador produz uma
resposta num intervalo de tempo determinado
Tempo real

• diferentes requisitos por aplicações


• soft real time - sistema robusto a certos
atrasos
• hard real time - não cumprimento de um
prazo corresponde a uma falha
Evolução dos conceitos (SO)

No Compilers
software
Organização de um SO

• OS divide-se em
• kernel - dividido em módulos
• biblioteca de system calls
• processos do sistema
Arquitectura de SO

• sistemas monolíticos
• modelo cliente-servidor
• microkernel
• máquinas virtuais
• exokernel
Monolítico

• um único sistema
• internamente organizado em módulos
• estrutura de dados globais

• e.g., DOS, Windows, Linux


Microkernel
• um núcleo de reduzidas dimensões e que
só continha o essencial do SO
• gestão de threads, endereçamento
• servidores de sistema que executam em
processos independentes a restante
funcionalidade
• device drives, memória virtual, ...

• e.g., Minix, Symbian


Modelo cliente-
servidor
• variação da ideia de micro-kernel
• distingue cliente e servidor
• comunicação feita à base de mensagens
• cliente e servidor podem estar em
computadores distintos
Máquinas Virtuais
• desenvolvido pela IBM devido ao interesse
dos seus trabalhadores de usarem os
computadores de forma interactiva
• cria um colone da máquina na qual esta a
ser executado
• ex., Java Virtual Machine
• independente da plataforma, sandbox
Exokernel
• em vez de colonar a máquina actual, dá ao
utilizador um subconjunto de recursos
• exokernel e um programa que faz a
alocação dos recursos
• utilizadores pedem recursos ao exokernel
• mais simples de manter do que virtual
machines. Porquê?
Processo de booting

• executa instrução FFFFFFFF0h do BIOS


• contém um jump para o programa inicial
• executa auto-test (POST) de hardware
• se encontra dispositivo executa o master boot
register (MBR)
• MBR carrega e executa o sector de iniciação da
partição (e.g., executar o kernel)
Modo kernel vs. Modo
utilizador
Modo kernel vs. utilizador
• processos dos utilizadores não podem
interferir com dados/execução do SO
• devem tb estar vedadas as aplicações dos
utilizadores
• Ajuda o processador: espaços de
endereçamento diferentes
• Barreira de protecção: interrupção de SW
Sistemas operativos
- exemplos -
• MS-DOS
• Mac OS (primeiro com GUI)
• Windows (3.11, NT, Me, XP, Vista)
• Unix-based: FreeBSD, X11, Gnome, KDE
MS-DOS
UNIX
OS/2
Windows NT
Symbian OS
Sumário

• objectivos de um sistema operativo


• conveniência e eficiência
• evolução de sistemas operativos
• porque são necessários?
• tipos de sistemas operativos

Você também pode gostar