Sistemas Operacionais Introdução

Propaganda
Sistemas Operacionais
Introdução
Adriano J. Holanda
http://holanda.xyz
3/8/2015
Sistemas de computação
mouse
disco rígido
teclado
processador
impressora
monitor
controladora
de disco
controladora USB
memória
placa de
vídeo
Sistemas de computação
gerenciamento de processos
disco rígido
teclado
processador
controladora
de disco
mouse
impressora
monitor
controladora USB
memória
placa de
vídeo
Sistemas de computação
mouse
disco rígido
teclado
processador
impressora
monitor
controladora
de disco
controladora USB
memória
gerenciamento de memória
placa de
vídeo
Sistemas de computação
mouse
disco rígido
teclado
impressora
monitor
gerenciamento de entrada e saída (E/S)
processador
controladora
de disco
controladora USB
memória
placa de
vídeo
Divisão do curso
O curso será dividido em 3 tópicos principais envolvendo
Gerenciamento de:
1. Processos;
2. Memória;
3. Entrada e saída (E/S).
Complexidade dos Sistemas Operacionais: Microsoft
Windows
Data
Produto
Lançamento
Jul/93
Set/94
Mai/95
Jul/96
Dez/99
Out/01
Abr/03
NT
NT
NT
NT
NT
NT
NT
1.0
2.0
3.0
4.0
5.0
5.1
5.2
(release 3.1)
(release 3.5)
(release 3.51)
(release 4.0)
(Windows 2000)
(Windows XP)
Tam. Equipe
Tam. Equipe
Linhas de
Desenvolvimento
Teste
Código (milhões)
200
300
450
800
1.400
1.800
2.000
140
230
325
700
1.700
2.200
2.400
4-5
7-8
9-10
11-12
29+
40
50
(Windows Server 2003)
Fonte: “The Build Master”. Vicent Maraia, Addison-Wesley, 2005.
2.6.11
2.6.12
2.6.13
2.6.14
2.6.15
2.6.16
2.6.17
2.6.18
2.6.19
2.6.20
2.6.21
2.6.22
2.6.23
2.6.24
2.6.25
2.6.26
2.6.27
2.6.28
2.6.29
2.6.30
2.6.31
2.6.32
2.6.33
2.6.34
2.6.35
2.6.36
2.6.37
2.6.38
2.6.39
3.0
3.1
3.2
linhas de código
Complexidade dos Sistemas Operacionais: Kernel do
Linux
Linhas de código
·107
1.4
1.2
1
0.8
0.6
Fonte: Linux Foundation, http://go.linuxfoundation.org/who-writes-linux-2012
versão do kernel
2.6.11
2.6.12
2.6.13
2.6.14
2.6.15
2.6.16
2.6.17
2.6.18
2.6.19
2.6.20
2.6.21
2.6.22
2.6.23
2.6.24
2.6.25
2.6.26
2.6.27
2.6.28
2.6.29
2.6.30
2.6.31
2.6.32
2.6.33
2.6.34
2.6.35
2.6.36
2.6.37
2.6.38
2.6.39
3.0
3.1
3.2
quantidade de arquivos
Complexidade dos Sistemas Operacionais: Kernel do
Linux
Quantidade de arquivos
·104
3.5
3
2.5
2
Fonte: Linux Foundation, http://go.linuxfoundation.org/who-writes-linux-2012
versão do kernel
Complexidade dos Sistemas Operacionais: Kernel do
Linux
Relatório de 2015
Fonte: “Who Writes Linux 2015”
Complexidade dos Sistemas Operacionais: Kernel do
Linux
Relatório de 2015
Fonte: “Who Writes Linux 2015”
Serviços
I
Interface com o usuário
I
I
I
Linha de comando;
Lote (batch);
Gráfica.
I
Execução de programa
I
Operação de Entrada e Saída (E/S)
I
Manipulação de Sistema de Arquivos
I
Comunicação
I
Detecção de erros
Arquitetura dos SOs
I
Monolítico;
I
Micronúcleo.
Projeto de núcleo (kernel) monolítico
Hardware
Projeto de núcleo (kernel) monolítico
Drivers de dispositivos
Hardware
Projeto de núcleo (kernel) monolítico
núcleo (kernel)
Drivers de dispositivos
Hardware
Projeto de núcleo (kernel) monolítico
interface de chamada do sistema
núcleo (kernel)
Drivers de dispositivos
Hardware
Projeto de núcleo (kernel) monolítico
aplicativo 1
aplicativo 2
...
interface de chamada do sistema
núcleo (kernel)
Drivers de dispositivos
Hardware
aplicativo N
Projeto de núcleo (kernel) monolítico
espaço do kernel
aplicativo 1
aplicativo 2
...
interface de chamada do sistema
núcleo (kernel)
Drivers de dispositivos
Hardware
aplicativo N
Projeto de núcleo (kernel) monolítico
espaço do usuário
espaço do kernel
aplicativo 1
aplicativo 2
...
interface de chamada do sistema
núcleo (kernel)
Drivers de dispositivos
Hardware
aplicativo N
Projeto monolítico
Características
I
I
Simplicidade: todo o código reside no mesmo espaço de
endereços de memória compartilhada, evitando o mecanismo
de comunicação entre processos, que podem ser complexos e
prejudicar o desempenho do sistema;
Intolerante a falhas: se houver qualquer falha nos drivers ou
subsistemas do núcleo, todo o sistema entra em colapso
(kernel panic), interrompendo o funcionamento.
Projeto baseado em micronúcleo microkernel
Hardware
Projeto baseado em micronúcleo microkernel
kernel
Hardware
Projeto baseado em micronúcleo microkernel
driver
de disco
driver
de áudio
kernel
Hardware
...
driver
de rede
Projeto baseado em micronúcleo microkernel
servidor de
arquivos
servidor de
processos
...
servidor
de rede
driver
de disco
driver
de áudio
...
driver
de rede
kernel
Hardware
Projeto baseado em micronúcleo microkernel
aplicativo
aplicativo
...
aplicativo
servidor de
arquivos
servidor de
processos
...
servidor
de rede
driver
de disco
driver
de áudio
...
driver
de rede
kernel
Hardware
espaço
do kernel
Projeto baseado em micronúcleo microkernel
aplicativo
aplicativo
...
aplicativo
servidor de
arquivos
servidor de
processos
...
servidor
de rede
driver
de disco
driver
de áudio
...
driver
de rede
kernel
Hardware
espaço
do kernel
espaço do usuário
Projeto baseado em micronúcleo microkernel
aplicativo
aplicativo
...
aplicativo
servidor de
arquivos
servidor de
processos
...
servidor
de rede
driver
de disco
driver
de áudio
...
driver
de rede
kernel
Hardware
Projeto baseado em micronúcleo
Características
I
I
I
Comunicação: troca de mensagens;
Facilidade de extensão: cada serviço pode ser modificado sem
afetar os outros serviços ou o Sistemas Operacionais;
Confiabilidade e segurança: Se algum serviço falhar o
Sistemas Operacionais permanecerá intocável, pois o serviço
é executado no espaço do usuário e não afeta o sistema.
Projeto híbrido
O projeto híbrido de sistema operacional é uma combinação dos
projetos monolítico e baseado em micronúcleo, executando alguns
serviços no espaço do kernel, tais como escalonamento do
processador e comunicação entre processos, por exemplo, com o
objetivo de reduzir a sobrecarga causada pela passagem de
mensagens destes serviços ao microkernel.
Alguns exemplos
I
I
I
Monolítico: Linux (Android), FreeBDS, OpenBSD, NetBSD,
Solaris;
Micronúcleo: GNU Hurd, L4, Minix, QNX;
Híbrido: Mac OS X, Microsoft Windows
NT/2000/XP/Vista/7 e Server 2003/2008.
Download