1 Introdução
1.1 Conceito básico
1.2 Objetivos do sistema operacional
1.2.1 Tipos de serviços
1.3 Sistema operacional na visão do usuário
1.3.1 Chamadas de sistema
1.3.2 Programas de sistema
1.4 Sistema operacional na visão de projeto
1.5 Histórico de sistemas operacionais
1.6 Exercícios
2 Multiprogramação
2.1 Mecanismo básico
2.2 O conceito de processo
2.3 Ciclos de um processo
2.4 Relacionamento entre processos
2.5 Estados de um processo
2.6 Gerência de filas
2.7 Mecanismo de interrupções
2.8 Proteção entre processos
2.8.1 Modos de operação
do processador
2.8.2 Proteção dos
periféricos
2.8.3 Proteção da
memória
2.9 Exercícios
3 Programação Concorrente
3.1 Definição
3.2 Motivação
3.3 Especificação do paralelismo
3.4 Problema da seção crítica
3.5 Spin-Lock
3.6 Semáforos
3.6.1 Implementação
de semáforos
3.6.2 Problema do produtor-consumidor
3.7 Mensagens
3.8 Visão geral e comparação
3.9 Deadlock
3.10 Exercícios
4 Gerência do Processador
4.1 Bloco descritor de processo
4.2 Chaveamento de contexto
4.3 Threads
4.4 Escalonadores
4.5 Algoritmos de escalonamento
4.5.1 Ordem de chegada (FIFO -
First-in first-out)
4.5.2 Ciclo de processador menor
antes (SJF - Shortest job first)
4.5.3 Prioridade
4.5.4 Fatia de tempo
4.5.5 Múltiplas filas
4.5.6 Considerações
finais
4.6 Exercícios
5 Entrada e Saída
5.1 Princípios básicos de hardware
5.1.1 Tipos de conexão
e de transferência de dados
5.1.2 Acesso aos dispositivos
de entrada e saída
5.1.3 Mapeamento em espaço
de memória e em espaço de entrada e saída
5.1.4 E/S programada
5.1.5 O mecanismo de interrupçõ
;es
5.1.6 Acesso direto à memória
5.2 Princípios básicos de software de entrada
e saída
5.2.1 Drivers de dispositivo
5.2.2 E/S independente do dispositivo
5.2.3 Entrada e saída à
nível de usuário
5.3 Dispositivos periféricos típicos
5.3.1 Discos rígidos
5.3.2 Vídeo
5.3.3 Teclado
5.3.4 Rede
5.4 Exercícios
6 Gerência de Memória
6.1 Memória lógica e memória física
6.2 Partições fixas
6.3 Partições variáveis
6.4 Swapping
6.5 Paginação
( Veja esta seção)
6.6 Segmentação
6.7 Segmentação paginada
6.8 Exercícios
7 Memória Virtual
7.1 Introdução
7.2 Implementação de memória virtual
7.2.1 Princípio da localidade de referência
7.2.2 Paginação sob demanda
7.2.3 Desempenho da paginação por demanda
7.3 Alocação de memória
7.4 Substituição de páginas na memória
7.5 Algoritmos de substituição de páginas na memória
7.5.1 Algoritmos globais
7.5.2 Algoritmos locais
7.5.3 Thrashing
7.6 Estudo de caso: arquitetura Intel
7.7 Exercícios
8 Sistema de Arquivos
8.1 Conceitos básicos
8.2 Arquivos
8.2.1 Controle de acesso
8.2.2 Estrutura interna dos arquivos
8.2.3 Métodos de acesso
8.3 Implementação de arquivos
8.3.1 Leitura e escrita de arquivo
8.4 Múltiplos sistemas de arquivos
8.5 Organização da cache
8.6 Gerência do espaço livre
8.7 Diretórios
8.8 Implementação de diretórios
8.9 Organização interna de uma partição
8.10 Exercícios
9 Linux
9.1 Introdução: um pouco de história,
distribuições e versões
9.1.1 As distribuições
Linux
9.1.2 As versões do Linux
9.2 Arquitetura de sistemas operacionais
9.3 O conceito de processo no Linux
9.3.1 O ciclo de vida de um processo:
criação
9.3.2 Ciclo de vida de um processo:
execução
9.3.3 Ciclo de vida de um processo:
término
9.3.4 Uma palavra sobre threads
9.4 Escalonamento em Linux
( Veja esta seção)
9.5 Gerência de Memória
9.5.1 Memória virtual
9.5.2 Paginação
em Sistemas Linux
9.5.3 Alocação e
liberação de memória física
9.5.4 Swapping
9.6 Sistema de Arquivos
9.6.1 Partições
e pontos de montagem
9.6.2 O sistema de arquivos Second
Extended File System (ext2)
9.6.3 A estrutura de i-nodos do
ext2
9.6.4 Diretórios ext2
9.6.5 O sistema de arquivos Virtual
File System (VFS)
9.7 Gerência de Entrada e Saída
9.7.1 Drivers de dispositivos
(Device drivers)
9.7.2 Arquivos de dispositivos
9.7.3 Dispositivos orientados
a caractere, orientados a bloco e de rede
9.8 Exercícios
10 Windows 2000
(Veja este capítulo)
10.1 Introdução: um pouco de história
10.2 Diretrizes de projeto
10.3 Arquitetura do Windows 2000: visão geral
10.4 Processos e threads
10.5 Gerência de Memória
10.5.1 Tradução de endereço virtual em
endereço físico
10.5.2 Estratégias de Paginação
10.6 Sistema de Arquivos
10.7 Gerência de Entrada e Saída
10.7.1 A interface WDM
10.7.2 O suporte a RAID
10.8 O serviço de Active Directory
10.9 O serviço de Cluster
10.10 Uma palavrinha sobre Windows XP
10.11 Exercícios
A Montadores, Ligadores e Carregadores
A.1 Visão geral dos montadores, ligadores e carregadores
A.2 Descrição de uma máquina hipotética
A.3 Conceitos básicos
A.4 Algoritmo clássico de duas passagens
A.5 Outras características de montadores
A.5.1 Código das instruç&otild
e;es
simbólicas
A.5.2 Diretivas Begin/End
A.5.3 Reserva de espaço
para variáveis
A.5.4 Geração de
constantes
A.5.5 Expressões aritméticas
A.5.6 Contadores de posição
A.5.7 Definição
de sinônimos
A.5.8 Valor absoluto e valor relativo
A.5.9 Atributos dos símbolos
A.6 Macros
A.7 Carregadores
A.8 Formatos de arquivos
A.9 Ligadores
A.9.1 Alterações
no algoritmo básico do montador
A.9.2 Algoritmo básico
de ligação
A.10 Exercícios
Bibliografia
Índice Remissivo
Sumário