1 Introdução - UFRGS
Transcript of 1 Introdução - UFRGS
1 Introdução
Usuário1
Usuário2
Usuário3
Usuárion. . .
Compilador Editor detexto
Browser Quake
Sistema operacional
Hardware
Figura 1.1 - Sistema computacional.
Hardware
Microkernel
Kernel
Aplicaçõeschamadas de
sistemaserviços domicrokernel
Figura 1.2 – Organização do sistema em kernel e microkernel.
2 Multiprogramação
Programa Usuário 2
Programa Usuário 1
Sistema Operacional
Programa Usuário 3(32 Kbytes)
(64 Kbytes)
(256 Kbytes)
(160 Kbytes)
00000 H
3FFFF H40000 H
67FFF H68000 H
77FFF H78000 H
7FFFF H
Memória Principal Endereços
Figura 2.1 - Memória em um sistema com multiprogramação.
P1
P3 P4P2
P6 P7P5 P8 P9 P10
Figura 2.2 - Hierarquia de processos.
.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 4
Processador
Processo 1 Processo 3Processo 2
Figura 2.3 - Fila de processos esperando pelo processador.
Criação Apto Executando Destruição
Bloqueado
Ocorrênciade evento
(interrupçao)
Seleção Término
Chamada desistema
Figura 2.4 - Diagrama de estados de um processo.
Criação Apto Executando Destruição
Bloqueado
Ocorrênciade evento
(interrupçao)
Seleção Término
Tempo
Chamada desistema
Retornoimediato
Erro
Figura 2.5 – Novo diagrama de estados de um processo
Capítulo 3 – Programação Concorrente 5
Processador
Processo 1
Impressora
Disco - unidade 0
Disco - unidade 1
Processo 3Processo 2
Processo 5Processo 4
Processo 6
Figura 2.6 - Filas do sistema operacional
Tempo
+ Periférico
Esc revec omando
Processador
Controlador
Exec utaLêresultado
Exec uta
Status LivreOcupado
Interrupç ão
Figura 2.7 - Linha de tempo quando interrupção é usada para implementar E/S.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 6
Programa original
Tratador do tipo 10
Tratador do tipo 5
TempoEsperando
Executando
Int 10 Int 5
Figura 2.8 - Ativação em cascata de tratadores de interrupção.
Memória PrincipalVetores de Interrupção
1
2
0
3
Tipoxxx
xxxyyy
yyy
TratadorTipo 0
TratadorTipo 1
Figura 2.9 - Tabela dos vetores de interrupção.
Sistema Operacionalem Modo Supervisor
Processo de Usuárioem Modo Usuário
Instrução "passa p/ modo usuário" (retorno de interrupção)
Interrupção de software (chamada de sistema)
Interrupção (periférico)
Interrupção (proteção)
Figura 2.10 - Modos de operação do processador.
Capítulo 3 – Programação Concorrente 7
Processo Usuário 2
Processo Usuário 1
Sistema Operacional
Processo Usuário 3
00000 H
3FFFF H40000 H
67FFF H68000 H
77FFF H78000 H
7FFFF H
Memória Principal
Registrador Limite Inferior
Registrador Limite Superior
68000 H
77FFF H
Figura 2.11 - Proteção de memória com registradores de limite.
Processador
Registrador LimiteInferior
Registrador LimiteSuperior
Memória< >
Interrupção(Endereço Ilegal)
Interrupção(Endereço Ilegal)
Figura 2.12 - Hardware para verificação dos endereços.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 8
Capítulo 3 – Programação Concorrente 9
3 Programação Concorrente
Arquivo Processo Impressorafísica
Figura 3.1 - Programa seqüencial acessando arquivo e impressora.
Disco
Processo
Impressora
TempoEsperando
Executando
Enviando dados
Figura 3.2 - Linha de tempo do programa seqüencial da Figura 3.1.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 10
Arquivo Processo
Impressorafísica
Processo
Leitor
Impressor
Buffer
Figura 3.3 - Programa concorrente acessando arquivo e impressora.
Disco
Processo
Impressora
TempoEsperando
Executando
Enviando dados
Processo
Leitor
Impressor
Figura 3.4 - Linha de tempo do programa concorrente da Figura 3.3.
PCPC PC
Usuários Servidor de Impressão
Figura 3.5 - Rede local incluindo um servidor de impressão dedicado.
.
Capítulo 3 – Programação Concorrente 11
Receptor Transmissor
Protocolo
Escritor
Leitor Impressor
Figura 3.6 - Servidor de impressão como programa concorrente.
Figura 3.7 - Exemplo contendo os comandos create_process, exit e wait_process.
.
/* Programa principal */main(){
int f1; /* Identifica processo filho 1*/int f2; /* Identifica processo filho 2*/
printf("Alo do pai\n");
f1 = create_process( codigo_do_filho ); /* Cria filho 1 */
f2 = create_process( codigo_do_filho ); /* Cria filho 2 */
wait_process( f1);printf("Filho 1 morreu\n");
wait_process( f2);printf("Filho 2 morreu\n");
exit();}
/* Funcao executada pelos dois processos filhos */codigo_do_filho(){
printf("Alo do filho\n");exit();
}
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 12
Figura 3.8 - Diagrama de tempo associado com o programa da Figura 3.7.
Figura 3.9 - Diagrama de tempo associado com o programa da Figura 3.7.
Capítulo 3 – Programação Concorrente 13
A lo d o p a i
c r e a te _ p r o c e s s
c r e a te _ p r o c e s s A lo d o f i lh o
e x it A lo d o f i lh o
e x i tw a i t_ p r o c e s s f 1
f i lh o 1 m o r r e u
w a i t_ p r o c e s s f 2
f i lh o 2 m o r r e u
e x i t
Figura 3.10 – Grafo de precedência para o programa da Figura 3.7.
Figura 3.11 - Programa do exemplo 3.7 alterado.
/* Programa principal */main(){
int f1; /* Identifica processo filho 1*/int f2; /* Identifica processo filho 2*/
printf("Alo do pai\n");
f1 = create_process( codigo_do_filho ); /* Cria filho 1 */wait_process( f1);printf("Filho 1 morreu\n");
f2 = create_process( codigo_do_filho ); /* Cria filho 2 */wait_process( f2);printf("Filho 2 morreu\n");
exit();}
/* Funcao executada pelos dois processos filho */codigo_do_filho(){
printf("Alo do filho\n");exit();
}
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 14
Figura 3.12 - Exemplo contendo os comandos Parbegin e Parend.
/* Programa principal */main(){
printf("Alo do pai\n");
Parbegin /* Define conjunto de execuções paralelas */codigo_do_filho(); /* Cria um filho */codigo_do_filho(); /* Cria outro filho */
Parend;
printf("Filho 1 morreu\n");printf("Filho 2 morreu\n");
}
/* Funcao executada pelos dois processos filho */codigo_do_filho(){
printf("Alo do filho\n");}
Capítulo 3 – Programação Concorrente 15
Processo 1 Processo 2 Processo 1 Processo 2
(a) Compartilhamento total (b) Compartilhamento parcial
memória física
memórialógica
memórialógica
memórialógica
memórialógica
memória física
Figura 3.13 – Compartilhamento de memória.
Figura 3.14 - Código do processo Escritor.
void escritor( void){
struct registro *registro_novo;
... /* Novo registro é apontado por "registro_novo" */
/* Novo nome é sempre inserido no fim da fila */registro_novo->proximo = NULL;
if( inicio == NULL ){ /* Fila vazia */
inicio = registro_novo;fim = registro_novo;
}else
{ /* Fila não vazia */fim->proximo = registro_novo;fim = registro_novo;
}}
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 16
Figura 3.15 - Código do processo Leitor.
inicio
fim
inicio
fim
inicio
fim
novo
inicio
fim
novo
(A)
(B)
(C)
(D)
abc
abc
abc
abc
Figura 3.16 - Diversos momentos da fila de nomes.
void leitor( void){
struct registro *ler;
...
/* Espera até existir algum nome na fila */while( inicio == NULL )
;
/* Retira o primeiro nome da fila */ler = inicio;inicio = inicio->proximo;
/* Se era o único, acerta apontador de fim da fila */if( inicio == NULL )
fim = NULL;
... /* Lê o arquivo cujo nome é indicado por "ler" */}
Capítulo 3 – Programação Concorrente 17
X: ACC de P1: ACC de P2:0 ?
P1 executa MOVE X,ACC
X: ACC de P1: ACC de P2:0 0 ?
P1 executa INC ACC
X: ACC de P1: ACC de P2:0 1 ?
P2 executa MOVE X,ACC
X: ACC de P1: ACC de P2:0 1 0
P2 executa INC ACC
X: ACC de P1: ACC de P2:0 1 1
P2 executa MOVE ACC,X
X: ACC de P1: ACC de P2:1 1 1
P1 executa MOVE ACC,X
X: ACC de P1: ACC de P2:1 1 1
?
Figura 3.17 - Problema de seção crítica envolvendo uma única variável.
Pró xim a inse rç ã o
Pró xim a re m o ç ã o
Dado 1
Dado 2Dado 3
Dado 4
Figura 3.18 - Buffer circular com 4 entradas ocupadas.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 18
Figura 3.19 - Problema do Produtor-Consumidor com semáforos.
struct tipo_dado buffer[N];int proxima_insercao = 0;int proxima_remocao = 0;...semaphore exclusao_mutua = 1;semaphore espera_vaga = N;semaphore espera_dado = 0;...void produtor( void){ ...
P( espera_vaga );P( exclusao_mutua );buffer[ proxima_insercao ] = dado_produzido;proxima_insercao = ( proxima_insercao + 1 ) % N;V( exclusao_mutua );V( espera_dado );...
}...void consumidor( void){ ...
P( espera_dado );P( exclusao_mutua );dado_a_consumir = buffer[ proxima_remocao ];proxima_remocao = ( proxima_remocao + 1 ) % N;V( exclusao_mutua );V( espera_vaga );...
}
produtor_esperando = falseconsumidor_esperando = false
while( true ){ Receive( &id_processo_remetente, mensagem )
if( id_processo_remetente == id_processo_produtor ) /* do produtor */if( consumidor_esperando )
{ consumidor_esperando = falseSend( id_processo_consumidor, mensagem )Send( id_processo_produtor, confirmacao )}
else{ coloca mensagem no buffer circularif( buffer cheio )
produtor_esperando = trueelse Send( id_processo_produtor, confirmacao)}
else if( produtor_esperando ) /* do consumidor */{ Retira dado do buffer circular
Send( id_processo_consumidor, dado_do_buffer )produtor_esperando = falseSend( id_processo_produtor, confirmacao )}
else{ if( buffer vazio )consumidor_esperando = true
else{ Retira dado do buffer circularSend( id_processo_consumidor, dado_do_buffer)}
}
Capítulo 3 – Programação Concorrente 19
Figura 3.20 - Processo intermediário no problema dos produtores e consumidores.
P4
P3
P5
P2P1
R1 R2 R3
Figura 3.21 - Gráfico representando processos e recursos.
4 Gerência do Processador
A
0 12 20 35 40
BCD
Figura 4.1 – Diagrama de tempo usando FIFO.
A
0 40
BCD
5 13 25 Figura 4.2 – Diagrama de tempo usando SJF.
.
Processo Prioridade Duração do próximo ciclo de processador A 3 12 (Unidades de tempo) B 4 8 " C 2 15 " D 1 5 "
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 22
A
0 40
BCD
5 20 32 Figura 4.3 – Diagrama de tempo usando prioridades.
A
0 40
BCD
3 6 9 12 15 18 2823 34 Figura 4.4 – Diagrama de tempo usando fatias de tempo
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 24
5 Entrada e Saída
driverteclado
driverSCSI
driverEIDE
driverfloppy
driverrede
Hardware
E/S independente do dispositivo
E/S nível de usuário
Interface padrão para drivers de dispositivos (API)
Software
Sist
ema
oper
acio
nal
Figura 5.1 – Estrutura em camadas do subsistema de entrada e saída.
Figura 5.2 - Organização física do disco magnético.
Capítulo 5 – Entrada e Saída 25
CilindroImaginário
Setor
Trilha
Figura 5.3 - Organização lógica da unidade de disco.
Cabeçoteleitura/escrita
Seek time
Trilha
Setor
Transfertime
Latencytime
Figura 5.4 – Componentes do tempo de acesso a um disco.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 26
01
234
56
8 79
1011
1213
1415 0
1
23
4
5
6
8
7
9
10 11
12
13
14
15
Fator de entrelaçamento = 0Disco 1 Disco 2
Fator de entrelaçamento = 2
Figura 5.5 - Trilha com 16 setores e diferentes fatores de entrelaçamento.
1A
1B
1C
1DDisco 1 Disco 2
RAID 1
1A
1B
1C
1D
2A
2B
2C
2D
3A
3B
3C
3D
4A
4B
4C
4DDisco 1 Disco 2 Disco 3 Disco 4
RAID 0
1A
1B
1C
1D
1A
1B
1C
1D
2A
2B
2C
2D
3A
3B
3C
3D
AP
BP
cP
DPDisco 1 Disco 2 Disco 3 Disco 4
RAID 3
1A
1B
1C
DP
2A
2B
cP
1D
3A
BP
2C
2D
AP
3B
3C
3DDisco 1 Disco 2 Disco 3 Disco 4
RAID 5
Figura 5.6 – Configurações RAID mais comuns.
6 Gerência de Memória
.
MemóriaMMU
Endereço EndereçoLógico Físico
Processador
Figura 6.1 - Diagrama incluindo a MMU entre o processador e a memória.
.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 28
Processador
Registrador LimiteInferior
Registrador LimiteSuperior
Memória< >
Interrupção(Endereço Ilegal)
Interrupção(Endereço Ilegal)
123 123
100 799
sim
não não
sim
Figura 6.2 - Mecanismo de proteção para a memória com registradores de limite.
Processador
Registrador de Limite Registrador de Base
Memória> +
Interrupção(Endereço Ilegal)
123 623
200 500
sim
não
Figura 6.3 - Mecanismo de proteção para a memória com registradores de base e limite.
Memória Física
Sistema Operacional - 225 Kbytes
Partição 1 - 200 Kbytes
Partição 2 - 100 Kbytes
Partição 3 - 50 Kbytes
Partição 4 - 25 Kbytes
Figura 6.4 - Memória física dividida em partições fixas.
Capítulo 6 – Gerência de Memória 29
.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 30
Memória Física
Sistema Operacional
Processo 1 - 174 Kbytes
Processo 2 - 98 Kbytes
Processo 3 - 23 Kbytes
Lacuna - 80 Kbytes
Processo 4
85 Kbytes225 Kbytes
Memória Física
Sistema Operacional
Processo 1 - 174 Kbytes
Processo 4 - 85 Kbytes
Processo 3 - 23 Kbytes
Lacuna - 80 Kbytes
225 Kbytes
(a ) (b )
Lacuna - 13 Kbytes
Figura 6.5 - Memória física dividida em partições variáveis.
Capítulo 6 – Gerência de Memória 31
.
Memória Lógica Memória Física000 00000 01000 10000 11001 00001 01001 10001 11010 00010 01010 10010 11
000 00000 01000 10000 11001 00001 01001 10001 11010 00010 01010 10010 11
100 00100 01100 10100 11
011 00011 01011 10011 11
101 00101 01101 10101 11
X1X2X3X4Y1Y2Y3Y4Z1Z2Z3Z4
X1X2X3X4
Y1Y2Y3Y4
Z1Z2Z3Z4
Tabela de PáginasPág.Lógica Pág.Física
000
001
010
010
101
000
End.Lógico de Y2
001
End.Físico de Y2
101 01 01
Figura 6.6 - Mecanismo básico de paginação.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 32
.
.
Capítulo 6 – Gerência de Memória 33
dpt dp.f.
Diretório das Tabelasde Páginas
Tabela de Páginas
Tabela de Páginas
Figura 6.7 - Tabela de páginas organizada em dois níveis.
Memória LógicaMemória Física
000000000100010000110010000101
000000000100010000110010000101001100011101000010010101001011
10000100011001010011
01100011010111001111
10100101011011010111
C1C2C3C4
P1P2P3
D1D2D3D4
Tabela de SegmentosSegmento Base
00
01
10
01000
00000
10100
C1C2C3C4C5C6
Limite
C5C6
0110
0100
0011
00000000010001000011
D1D2D3D4
000000000100010
P1P2P3
Segmento 00 - Código
Segmento 01 - Dados
Segmento 10 - Pilha
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 34
Figura 6.8 - Gerência de memória baseada em segmentos.
dps dp.f.
Tabela de Segmentos
Tabela de Páginas
Tabela de Páginas
do Segmento 0
do Segmento 3
Figura 6.9 - Esquema clássico para segmentação paginada.
.
7 Memória Virtual
Memória Lógica
A
B
C
D
E
F
G
H
Memória Física
C
D
G
Disco
A
B
C
D
E
F
G
H
Tabela de Páginas
01234567 0
1234567
0123456789
101112131415
i
i
i
i
i
v
v
v10
3
4
Figura 7.1 - Mecanismo básico da paginação por demanda.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 36
Memória Lógica
A
B
C
D
Memória Física
E
G
Disco
A
B
C
D
Tabela de Páginas
0123
0123
012345
i
v
v
0
5
Memória Lógica
E
F
G
H
0123
do Processo 1
do Processo 2Tabela de Páginas
0123 i
v
v4
3
do Processo 2
do Processo 1
E
F
G
H
F
A
B
D
1
v
2
v
Figura 7.2 - Sistema hipotético com dois processos.
Memória Lógica
A
B
C
D
Memória Física
E
H
Disco
A
B
C
D
Tabela de Páginas
0123
0123
012345
i
v
v
0
5
Memória Lógica
E
F
G
H
0123
do Processo 1
do Processo 2Tabela de Páginas
0123
i
v
v4
3
do Processo 2
do Processo 1
E
F
G
H
F
A
B
D
1
v
2
v
Figura 7.3 - Sistema da Figura 7.2 após uma substituição de página.
Capítulo 8 – Sistema de Arquivos 37
String referência 2 3 1 a b 3 1 1 c d 1 a Página física 0 2 2 2 2 b b b b b b b a Página física 1 3 3 3 3 3 3 3 c c c c Página física 2 1 1 1 1 1 1 1 d d d Página física 3 a a a a a a a 1 1
Página lógica a ser substituída 2 2 2 2 3 3 3 3 1 a b c tempo 1 2 3 4 5 6 7 8 9 10 11 12
Figura 7.4 – Algoritmo FIFO para substituição de páginas.
String referência 2 3 1 a b 3 1 1 c d 1 a Página física 0 2 2 2 2 b b b b b d d d Página física 1 3 3 3 3 3 3 3 3 3 3 a Página física 2 1 1 1 1 1 1 1 1 1 1 Página física 3 a a a a a c c c c
Página lógica a ser substituída 2 2 2 2 3 1 a a b 3 3 c tempo 1 2 3 4 5 6 7 8 9 10 11 12
Figura 7.5 – Algoritmo LRU para substituição de páginas.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 38
Histórico dos Bits de Referência após cada amostragem
Tempo
P0P1P2P3P4P5P6P7
Amostra
P3 P1
Amostra AmostraAmostra
P3 P1 P2 P0 P1 P2 P7 P2 P7 P0 P6
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
0
0
0
0
1
0
1
1
1
0
0
0
1
0
1
1
1
0
0
0
1
0
1
1
1
0
1
0
0
0
1
1
0
0
1
0
0
0
1
1
0
0
1
1
0
0
1
0
1
Páginas Acessadas
P0P1P2P3P4P5P6P7
P0P1P2P3P4P5P6P7
P0P1P2P3P4P5P6P7
Figura 7.6 - Construção do histórico de bits de referência.
.
...2 6 1 5 7 7 7 7 5 1 6 2 2 6 1 2 3 4 4 4 4 3 4 3 4 4 4 1 3 2 3 4...
t1 t2Páginas {1, 2, 5, 6, 7} Páginas ={ 3,4}
τ = 10
Figura 7.7 – Algoritmo ótimo (local).
.
...2 6 1 5 7 7 7 7 5 1 6 2 2 6 1 2 3 4 4 4 4 3 4 3 4 4 4 1 3 2 3 4...
t1 t2Working set={1, 2, 5, 6, 7} Working set ={ 1,2,3,4}
τ = 10
Figura 7.8 – Algoritmo local Working set.
.
Capítulo 8 – Sistema de Arquivos 39
Seletor Deslocamento16 bits 32 bits
Índice T RPL1 bit 2 bits13 bits
0 = Seletor da GDT (Global Descriptor Table)1 = Seletor da LDT (Local Descriptor Table)
Figura 7.9 - Formato de um seletor no Intel 386.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 40
Registrador GDT
Registrador LDT
Base GDT Limite GDT
32 bits 16 bits
Seletor p/LDT Descritor da LDT16 bits
Registrador CS Seletor p/CS Descritor do CS16 bits
Registrador DS Seletor p/DS Descritor do DS
Registrador SS Seletor p/SS Descritor do SS
Registrador ES Seletor p/ES Descritor do ES
Registrador FS Seletor p/FS Descritor do FS
Registrador GS Seletor p/GS Descritor do GS
Registrador Sombra
Registrador Sombra
Figura 7.10 - Registradores sombra no Intel 386.
P DPL 1 1 C R A
Byte de acesso para Segmento de Código
P DPL 1 0 ED W A
Byte de acesso para Segmento de Dados
Figura 7.11 - Byte associado com controle de acesso em segmentos de código e de dados.
Capítulo 8 – Sistema de Arquivos 41
Endereço Linear10 bits 10 bits 12 bits
deslocamentopáginatabela
CR3
Diretório de Páginas
Tabela de Páginas
Tabela de Páginas
20 bits 12 bitsdeslocamentopágina física
Endereço Físico
Figura 7.12 - Esquema de paginação do 80386.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 42
8 Sistema de Arquivos
Arquivo
A
B
C
D
E
F
Ler Arquivo...
A
Ler ArquivoB
Ler ArquivoC
Figura 8.1 - Acesso seqüencial.
.
Capítulo 8 – Sistema de Arquivos 43
Arquivo
A
B
C
D
E
F
Ler Arquivo, posição 2...
C
Ler Arquivo, posição 4E
Ler Arquivo, posição 0A
Figura 8.2 - Acesso relativo.
Arquivo
A
B
C
D
E
F
Le rA i
...
C
Le rA i
E
Le rA i
A
Po sic io n a r e m 4
Po sic io n a r e m 0
Po sic io n a r e m 2
Figura 8.3 - Acesso relativo usando o conceito de posição corrente.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 44
TDAAPos. Cor. 12Leitura
TAAP do processo 0
Pos. Cor. 10Leitura
TAAP do processo 1
Pos. Cor. 55Leit. & Escr.
Arquivo A
Arquivo B
0
1
2
3
0
2
2 4
0
1
0
Figura 8.4 - Emprego conjunto das tabelas TAAP e da tabela TDAA.
Capítulo 8 – Sistema de Arquivos 45
ab
cd
ef
gh
ij
Posição
Arquivo no DiscoREAD( Handle, Var, 4 )
Correntecd
ef
gh
Memória do Memória doSistema Operacional Processo
defg
Var:
Figura 8.5 - Montagem e desmontagem de blocos lógicos.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 46
.
Capítulo 8 – Sistema de Arquivos 47
DiscoBlocoFísico 0
123456789
10
1211
13
BL 0
BL 1
BL 2
BL 3
BL 4
BL 5
DescritorInício: 3
Tamanho: 6
Figura 8.6 - Alocação contígua de arquivos.
DiscoBlocoFísico 0
123456789
10
1211
13
BL 0
BL 1
BL 2
BL 3
BL 4
BL 5
DescritorInício: 3
Tamanho: 68
5
1
7
11
-1
Figura 8.7 - Alocação encadeada de arquivos.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 48
DiscoBlocoFísico 0
123456789
10
1211
13
BL 0
BL 1
BL 2
BL 3
BL 4
BL 5
Descritor
Indices:
Tamanho: 6
8
5
1
7
11
30123456789
Figura 8.8 - Alocação indexada de arquivos.
Capítulo 8 – Sistema de Arquivos 49
0123456789
101112
... ...
Bloco de dados (4 Kbytes)
... Bloco de apontadores( 1024 apontadores de 4 bytes)
...
...
...
...
...
...
...
...
...
...
...
...
1024 * 4K
1024 * 1024 * 4K
...
...
1024 * 1024 * 1024 * 4K
...
10 * 4K
... ...
Figura 8.9 - Emprego de apontadores diretos e indiretos.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 50
DiscoBlocoFísico 0
123456789
10
1211
13
BL 0
BL 1
BL 2
BL 3
BL 4
BL 5 DescritorTamanho: 6
10
0 1
2
30123456789
3
End. N. Blocos
Figura 8.10 - Alocação indexada-contígua de arquivos.
Capítulo 8 – Sistema de Arquivos 51
Tabela com descritores virtuaisdos arquivos abertos
tipocontador de usodados dependentes
. . .
tipocontador de usodados dependentes
. . .
. . .
Descritor do S.A. 1openreadwrite
dados
tab. descritores. . . Tab. descritores
Sist. Arq. 1tamanholocalizaçãodireitosetc
. . .
. . .
Descritor do S.A. 2openreadwrite
dados
tab. descritores. . . Tab. descritores
Sist. Arq. 2tamanholocalizaçãodireitosetc
. . .
. . .
Figura 8.11 - Estrutura de dados para suportar múltiplos sistemas de arquivos.
HASH( partiç ão, número do b loc o )
conteúdo do blocoinformações adicionais
LRU - iníc io LRU - fim
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 52
Figura 8.12 - Cache do sistema de arquivos.
DiscoBlocoFísico
0123456789
10
1211
13
Mapa de Bits.
1415
0 0 1 0 1 0 1 0
0 0 1 1 0 0 0 0
Figura 8.13 - Gerência do espaço livre através de mapa de bits.
DiscoBlocoFísico
0123456789
10
1211
131415
2467
89
1011
1415
Figura 8.14 - Gerência do espaço livre através de lista de endereços.
Capítulo 8 – Sistema de Arquivos 53
usretc bin
whols Mailpasswd mariajoao
so teste
hosts
trabteste
trab2trab1
Figura 8.15 - Diretório organizado na forma de árvore.
usretc bin whols Mail
passwd
mariajoão
so testehosts
trabteste
trab2trab1
Partição 1 Partição 3Partição 2
Figura 8.16 - Montagem de uma partição em um subdiretório.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 54
"etc"
"usr"
"bin"
atributoslocalização
atributoslocalização
atributoslocalização
conteúdo doarquivo "/usr"
conteúdo doarquivo "/bin"
"passwd"
"hosts"
atributoslocalização
atributoslocalização
conteúdo doarquivo "/etc/passwd"
conteúdo doarquivo "/etc/hosts"
Figura 8.17 - Diretórios contendo descritores de arquivos.
"etc"
"usr"
"bin"2
3
conteúdo doarquivo "/usr"
conteúdo doarquivo "/bin"
"passwd"
"hosts"4
5
conteúdo do "/"
conteúdo do "/etc"atributoslocalização
atributoslocalização
atributoslocalização
atributoslocalização
atributoslocalização
atributoslocalização
0
1
2
3
4
5
conteúdo doarquivo "/etc/passwd"
conteúdo doarquivo "/etc/hosts"
1
sistema de arquivos flat
Figura 8.18 - Diretórios contendo apenas nomes e endereços de descritores de arquivos
9 Linux
.
deslocamentoNivel_2 Nivel_3Nivel_1
Endereço virtual
Diretóriointermediário
Tabela depáginas
PáginaDiretórioglobal
Figura 9.1 – Paginação a três níveis
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 56
64K32K
32K
16K
16K
0
1
2
3
4
5
6
7
Free_area (antes)
0
1
2
3
4
5
6
7
Free_area (depois)
Figura 9.2 – Alocação de memória (página física) no Linux.
Bloco deboot grupo 0 grupo n
Superbloco
Descritoresde grupo
Bitmapbloco dados
Bitmapi-nodos
Tabelade i-nodos Blocos de dados
1 bloco n blocos 1 bloco 1 bloco n blocos n blocos
Figura 9.3 – Organização de blocos em uma partição ext2.
Capítulo 9 - Linux 57
Indireção duplaIndireção tripla
Indireção simples
blocos diretos
Timestamps Tamanho
Informações Modo
Dados
Dados
Dados
DadosDados
Dados
Dados
Figura 9.4 – Estrutura de i-nodos do sistema de arquivos ext2.
Impressora Disco IDE Disco IDEtty0 tty1
Drivertty
Driverimpressora
Driverdisco
Dispositivos blocoDispositivos caractere
Virtual File System
Chamadas de sistema (API)
Processo 1 Processo 2 Processo n
Figura 9.5 – Organização em camadas da gerência de entrada e saída.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 58
Nome Tipo Major Minor Descrição
/dev/fd0 bloco 2 0 Unidade de disquete 0 (driver A)
/dev/fd1 bloco 2 1 Unidade de disquete 1 (driver B)
/dev/hda bloco 3 0 Disco IDE primário
/dev/hda1 bloco 3 1 Primeira partição do disco IDE primário
/dev/hda2 bloco 3 2 Segunda partição do disco IDE primário
/dev/hdb bloco 3 64 Segundo disco IDE
/dev/hdb1 bloco 3 65 Primeira partição do disco IDE secundário
/dev/tty0 caractere 3 0 terminal
/dev/lp1 caractere 4 1 Impressora paralela
/dev/console caractere 1 1 teclado
Tabela 9.1 – Exemplos de arquivos de dispositivo.
10
Windows 2000
Modo Kernel
Modo Usuário
Controlador deServiços
WinLogon
Gerenciador deSessão
Processos do Sistema
Replicador
Alerta
RPC
Serviços
Registro deEventos
POSIX
OS/2
Win32
Subsistemas do ambiente
ActiveDirectory
NT5
Aplicações
Usuários
DLLs
Interfaces de hardware (barramento, I/O, interrupções, temporizadores, etc.)
Executivo
HAL: Hardware Abstraction Layer
Drivers de dispositivos Núcleo
Sist. deArquivos
Gerência deE/S
API do Executivo
Gerenciador de Objetos/Bibliotecas do Executivo
Gerênciade LPC
Gerênciade
MemóriaVirtual
Gerênciade
Processos
Plug&Play(E/S)
NT5
Monitor deSegurança
Gerência deEnergia
NT5
Gerência deJanelas
Driver dedispostivo gráfico
Figura 10.1 – Componentes da estrutura do Windows 2000
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 60
Término
Ativo
ExecuçãoAptoPreempção
Chaveamento decontexto
Escalonamento
EsperaTransição Término
Bloquear/suspender
Desbloquear(recurso não disponível)
Desbloquear(recurso disponível)
Recursodisponível
Figura 10.2 – Diagrama de estados de threads no Windows 2000
�
�
Prioridade 0
Prioridade 15
Prioridade 14
Prioridade 16
Prioridade 31
Prioridade 30
�
�
ClasseTempo real
Classevariável
Figura 10.3 – O esquema de prioridade do Windows 2000
Capítulo 10 – Windows 2000 61
FFFFFFFF
7FFFFFFF80000000
00000000
Espaço de endereçamentodefault do Windows 2000
Espaço destinadoao
Processo usuário
Espaço destinadoao
Sistema Operacional
Processo 1 Processo 1 Processo n
iii
Figura 10.4 – Layout do espaço de endereçamento virtual do Windows 2000
Índice do diretório depágina
Índice da tabela depágina
Índice o byte
Diretório de página:um por processo,1024 entradas.
Bloco descritorde processo
Page Frame Num.
Entrada do diretóriode página
Tabelas de página: até512 tabelas para
processo e até 512tabelas para osistema, 1024
entradas por tabela.
Page Frame Num.
Entrada databela de
página Memória física(paginada)
Páginadesejada
Bytedesejado
Figura 10.5 – Esquema de tradução de endereço virtual para endereço físico em arquiteturas Intel
Anexo A Montadores, Ligadores e
Carregadores
Fonte Montador/Carregador Memória
Figura A.1 - Montador/Carregador.
Fonte
Montador
Executável Carregador (SO) Memória
Figura A.2 - Montador e Carregador independentes.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 64
Módulo A
Montador
Executável Carregador (SO) Memória
Objeto A
Módulo B
Montador
Objeto B Objeto C
Ligador
Figura A.3 - Montador, Ligador e Carregador independentes.
.
Opcode
Endereço do operando
Opcode
Endereço do primeiro operando
Opcode
Endereço do segundo operando
Formato 1:
Formato 2:
Formato 3:
Figura A.4 – Formatos de instruções da máquina hipotética.
Capítulo 10 – Windows 2000 65
Opcode Simbólico
Opcode Numérico
Tamanho Número de Operandos
Ação
ADD 01 2 1 ACC ← ACC + mem(OP) SUB 02 2 1 ACC ← ACC − mem(OP) MUL 03 2 1 ACC ← ACC × mem(OP) DIV 04 2 1 ACC ← ACC ÷ mem(OP) JMP 05 2 1 PC ← OP JMPN 06 2 1 se ACC<0 então PC← OP JMPP 07 2 1 se ACC>0 então PC← OP JMPZ 08 2 1 se ACC=0 então PC← OP COPY 09 3 2 mem(OP2) ← mem(OP1) LOAD 10 2 1 ACC ← mem(OP) STORE 11 2 1 mem(OP) ← ACC INPUT 12 2 1 mem(OP) ← entrada OUTPUT 13 2 1 saída ← mem(OP) STOP 14 1 0 Suspende execução
Tabela A.1 – Conjunto de instruções da máquina hipotética.
Fonte com macros
Processador de Macros
Fonte sem macros Montador
Figura A.5 - Processador de macros.
Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 66
Módulo A
CALL SUBROT
. . .
. . .
Módulo B
SUBROT:
. . .
. . .
Figura A.6 - Exemplo de referência cruzada.