Sumário

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