sumário - Grupo A

Propaganda
SUMÁRIO
1
INTRODUÇÃO
21
1.1
O QUE É O SISTEMA OPERACIONAL?
1.1.1 O sistema operacional como uma máquina estendida
1.1.2 O sistema operacional como gerenciador de recursos
23
23
24
1.2
HISTÓRIA DOS SISTEMAS OPERACIONAIS
1.2.1 A primeira geração (1945–1955): válvulas e painéis de conectores
1.2.2 A segunda geração (1955–1965): transistores e sistemas de lote
1.2.3 A terceira geração (1965–1980): CIs e multiprogramação
1.2.4 A quarta geração (1980–hoje): computadores pessoais
1.2.5 A história do MINIX 3
25
26
26
28
32
34
1.3
CONCEITOS DE SISTEMA OPERACIONAL
1.3.1 Processos
1.3.2 Arquivos
1.3.3 O shell
37
37
39
42
1.4
CHAMADAS DE SISTEMA
1.4.1 Chamadas de sistema para gerenciamento de processos
1.4.2 Chamadas de sistema para sinais
1.4.3 Chamadas de sistema para gerenciamento de arquivos
1.4.4 Chamadas de sistema para gerenciamento de diretórios
1.4.5 Chamadas de sistema para proteção
1.4.6 Chamadas de sistema para gerenciamento de tempo
43
44
48
50
54
56
57
1.5
ARQUITETURA DE SISTEMAS OPERACIONAIS
1.5.1 Sistemas monolíticos
1.5.2 Sistemas em camadas
1.5.3 Máquinas virtuais
1.5.4 Exonúcleos
1.5.5 Modelo cliente-servidor
58
58
60
61
64
64
14
SUMÁRIO
2
1.6
VISÃO GERAL DO RESTANTE DESTE LIVRO
65
1.7
RESUMO
66
PROCESSOS
69
2.1
INTRODUÇÃO
2.1.1 O modelo de processo
2.1.2 Criação de processos
2.1.3 Término de processos
2.1.4 Hierarquia de processos
2.1.5 Estados de um processo
2.1.6 Implementação de processos
2.1.7 Threads
69
69
71
72
73
74
76
78
2.2
COMUNICAÇÃO ENTRE PROCESSOS
2.2.1 Condições de corrida
2.2.2 Seções críticas
2.2.3 Exclusão mútua com espera ativa
2.2.4 Sleep e Wakeup
2.2.5 Semáforos
2.2.6 Mutex
2.2.7 Monitores
2.2.8 Passagem de mensagens
80
81
82
83
87
89
92
92
96
2.3
PROBLEMAS CLÁSSICOS DE COMUNICAÇÃO ENTRE PROCESSOS
2.3.1 O problema da janta dos filósofos
2.3.2 O problema dos leitores e escritores
98
98
100
2.4
ESCALONAMENTO
2.4.1 Introdução ao escalonamento
2.4.2 Escalonamento em sistemas de lote
2.4.3 Escalonamento em sistemas interativos
2.4.4 Escalonamento em sistemas de tempo real
2.4.5 Política versus mecanismo
2.4.6 Escalonamento de threads
103
103
108
111
116
117
118
2.5
VISÃO GERAL DOS PROCESSOS NO MINIX 3
2.5.1 A estrutura interna do MINIX 3
2.5.2 Gerenciamento de processos no MINIX 3
2.5.3 Comunicação entre processos no MINIX 3
2.5.4 Escalonamento de processos no MINIX 3
119
120
123
127
129
2.6
IMPLEMENTAÇÃO DE PROCESSOS NO MINIX 3
2.6.1 Organização do código-fonte do MINIX 3
2.6.2 Compilando e executando o MINIX 3
2.6.3 Os arquivos de cabeçalho comuns
131
131
134
136
SUMÁRIO
2.6.4
2.6.5
2.6.6
2.6.7
2.6.8
2.6.9
2.6.10
2.6.11
2.6.12
3
Arquivo de cabeçalho do MINIX 3
Estruturas de dados de processo e arquivos de cabeçalho
Inicialização do MINIX 3
Inicialização do sistema
Tratamento de interrupção no MINIX
Comunicação entre processos no MINIX 3
Escalonamento no MINIX 3
Suporte do núcleo dependente de hardware
Utilitários e a biblioteca do núcleo
15
142
150
159
162
168
178
181
184
188
2.7
A TAREFA DE SISTEMA NO MINIX 3
2.7.1 Visão geral da tarefa de sistema
2.7.2 Implementação da tarefa de sistema
2.7.3 Implementação da biblioteca de sistema
190
192
195
198
2.8
A TAREFA DE RELÓGIO NO MINIX 3
2.8.1 Hardware de relógio
2.8.2 Software de relógio
2.8.3 Visão geral do driver de relógio no MINIX 3
2.8.4 Implementação do driver de relógio no MINIX 3
201
201
202
205
209
2.9
RESUMO
210
ENTRADA/SAÍDA
216
3.1
PRINCÍPIOS DO HARDWARE DE E/S
3.1.1 Dispositivos de E/S
3.1.2 Controladoras de dispositivo
3.1.3 E/S mapeada em memória
3.1.4 Interrupções
3.1.5 Acesso direto à memória
216
217
217
219
221
221
3.2
PRINCÍPIOS DO SOFTWARE DE E/S
3.2.1 Objetivos do software de E/S
3.2.2 Rotinas de tratamento de interrupção
3.2.3 Drivers de dispositivo
3.2.4 Software de E/S independente de dispositivo
3.2.5 Software de E/S em espaço de usuário
223
223
225
225
227
229
3.3
IMPASSES
3.3.1 Recursos
3.3.2 Princípios do impasse
3.3.3 O algoritmo do avestruz
3.3.4 Detecção e recuperação
3.3.5 Prevenção de impasses
3.3.6 Evitação de impasses
231
231
232
236
237
237
239
16
SUMÁRIO
4
3.4
VISÃO GERAL DA E/S NO MINIX 3
3.4.1 Rotinas de tratamento de interrupção e acesso de E/S no MINIX 3
3.4.2 Drivers de dispositivo no MINIX 3
3.4.3 Software de E/S independente de dispositivo no MINIX 3
3.4.4 Software de E/S em nível de usuário no MINIX 3
3.4.5 Tratamento de impasses no MINIX 3
243
244
247
251
251
251
3.5
DISPOSITIVOS DE BLOCO NO MINIX 3
3.5.1 Visão geral dos drivers de dispositivos de bloco no MINIX 3
3.5.2 Software comum de driver de dispositivo de bloco
3.5.3 A biblioteca de drivers
252
252
255
258
3.6
DISCOS EM RAM
3.6.1 Hardware e software de disco em RAM
3.6.2 Visão geral do driver de disco em RAM no MINIX 3
3.6.3 Implementação do driver de disco em RAM no MINIX 3
260
261
262
263
3.7
DISCOS
3.7.1 Hardware de disco
3.7.2 RAID
3.7.3 Software de disco
3.7.4 Visão geral do driver de disco rígido no MINIX 3
3.7.5 Implementação do driver de disco rígido no MINIX 3
3.7.6 Tratamento de disquetes
266
266
268
269
274
278
286
3.8
TERMINAIS
3.8.1 Hardware de terminal
3.8.2 Software de terminal
3.8.3 Visão geral do driver de terminal no MINIX 3
3.8.4 Implementação do driver de terminal independente de dispositivo
3.8.5 Implementação do driver de teclado
3.8.6 Implementação do driver de vídeo
288
289
293
300
313
329
336
3.9
RESUMO
343
GERENCIAMENTO DE MEMÓRIA
349
4.1
GERENCIAMENTO BÁSICO DE MEMÓRIA
4.1.1 Monoprogramação sem swapping ou paginação
4.1.2 Multiprogramação com partições fixas
4.1.3 Realocação e proteção
350
350
351
352
4.2
SWAPPING
4.2.1 Gerenciamento de memória com mapas de bits
4.2.2 Gerenciamento de memória com listas encadeadas
353
355
356
SUMÁRIO
17
4.3
MEMÓRIA VIRTUAL
4.3.1 Paginação
4.3.2 Tabelas de página
4.3.3 Translation Lookaside Buffers (TLB)
4.3.4 Tabela de páginas invertida
358
359
361
366
368
4.4
ALGORITMOS DE SUBSTITUIÇÃO DE PÁGINA
4.4.1 O algoritmo de substituição de página ótimo
4.4.2 O algoritmo de substituição de página não usada recentemente
4.4.3 O algoritmo de substituição de página FIFO
(primeira a entrar, primeira a sair)
4.4.4 O algoritmo de substituição de página segunda chance
4.4.5 O algoritmo do relógio para substituição de página
4.4.6 O algoritmo de substituição de página LRU (menos recentemente
utilizada)
4.4.7 Simulando o algoritmo LRU em software
370
370
371
4.5
QUESTÕES DE PROJETO PARA SISTEMAS DE PAGINAÇÃO
4.5.1 O modelo do conjunto de trabalho
4.5.2 Políticas de alocação local versus global
4.5.3 Tamanho de página
4.5.4 Interface de memória virtual
376
377
379
381
382
4.6
SEGMENTAÇÃO
4.6.1 Implementação da segmentação pura
4.6.2 Segmentação com paginação: o Pentium Intel
383
386
387
4.7
VISÃO GERAL DO GERENCIADOR DE PROCESSOS DO MINIX 3
4.7.1 Layout da memória
4.7.2 Tratamento de mensagens
4.7.3 Estruturas de dados e algoritmos do gerenciador de processos
4.7.4 As chamadas de sistema FORK, EXIT e WAIT
4.7.5 A chamada de sistema EXEC
4.7.6 A chamada de sistema BRK
4.7.7 Tratamento de sinais
4.7.8 Outras chamadas de sistema
391
393
396
398
402
403
406
407
415
4.8
IMPLEMENTAÇÃO DO GERENCIADOR DE PROCESSOS DO MINIX 3
4.8.1 Os arquivos de cabeçalho e as estruturas de dados
4.8.2 O programa principal
4.8.3 Implementação de FORK, EXIT e WAIT
4.8.4 Implementação de EXEC
4.8.5 Implementação de BRK
4.8.6 Implementação do tratamento de sinais
4.8.7 Implementação de outras chamadas de sistema
4.8.8 Utilitários de gerenciamento de memória
415
415
418
423
424
428
429
436
438
4.9
RESUMO
440
372
372
373
374
374
18
SUMÁRIO
5
SISTEMA DE ARQUIVOS
445
5.1
ARQUIVOS
5.1.1 Atribuição de nomes de arquivo
5.1.2 Estrutura do arquivo
5.1.3 Tipos de arquivo
5.1.4 Acesso a arquivo
5.1.5 Atributos de arquivo
5.1.6 Operações sobre arquivos
446
446
448
449
451
451
453
5.2
DIRETÓRIOS
5.2.1 Diretórios simples
5.2.2 Sistemas de diretório hierárquicos
5.2.3 Nomes de caminho
5.2.4 Operações sobre diretórios
454
454
455
456
458
5.3
IMPLEMENTAÇÃO DO SISTEMA DE ARQUIVOS
5.3.1 Layout do sistema de arquivos
5.3.2 Implementando arquivos
5.3.3 Implementando diretórios
5.3.4 Gerenciamento do espaço em disco
5.3.5 Confiabilidade do sistema de arquivos
5.3.6 Desempenho do sistema de arquivos
5.3.7 Sistemas de arquivos estruturados em log
459
459
461
464
469
472
479
483
5.4
SEGURANÇA
5.4.1 O ambiente de segurança
5.4.2 Ataques genéricos contra a segurança
5.4.3 Princípios de projeto voltados à segurança
5.4.4 Autenticação de usuário
485
485
489
490
491
5.5
MECANISMOS DE PROTEÇÃO
5.5.1 Domínios de proteção
5.5.2 Listas de controle de acesso
5.5.3 Capacidades
5.5.4 Canais secretos
494
494
496
499
501
5.6
VISÃO GERAL DO SISTEMA DE ARQUIVOS DO MINIX 3
5.6.1 Mensagens
5.6.2 Layout do sistema de arquivos
5.6.3 Mapas de bits
5.6.4 I-nodes
5.6.5 A cache de blocos
5.6.6 Diretórios e caminhos
5.6.7 Descritores de arquivo
5.6.8 Travamento de arquivos
5.6.9 Pipes e arquivos especiais
5.6.10 Um exemplo: a chamada de sistema READ
504
504
506
508
510
512
514
516
517
517
519
SUMÁRIO
6
19
5.7
IMPLEMENTAÇÃO DO SISTEMA DE ARQUIVOS DO MINIX 3
5.7.1 Arquivos de cabeçalho e estruturas de dados globais
5.7.2 Gerenciamento de tabelas
5.7.3 O programa principal
5.7.4 Operações sobre arquivos individuais
5.7.5 Diretórios e caminhos
5.7.6 Outras chamadas de sistema
5.7.7 A interface de dispositivo de E/S
5.7.8 Suporte adicional para chamadas de sistema
5.7.9 Utilitários do sistema de arquivos
5.7.10 Outros componentes do MINIX 3
520
520
523
531
534
542
545
547
552
554
554
5.8
RESUMO
555
LEITURAS RECOMENDADAS E BIBLIOGRAFIA
559
6.1
SUGESTÕES PARA LEITURAS COMPLEMENTARES
6.1.1 Introdução e funcionamentos gerais
6.1.2 Processos
6.1.3 Entrada/saída
6.1.4 Gerenciamento de memória
6.1.5 Sistemas de arquivos
559
559
561
562
562
563
6.2
BIBLIOGRAFIA EM ORDEM ALFABÉTICA
564
APÊNDICES
A
INSTALANDO O MINIX 3
575
B
O CÓDIGO-FONTE DO MINIX
583
C
ÍNDICE PARA OS ARQUIVOS
979
ÍNDICE
981
Download