Sumário

PARTE I: CONCEITOS BÁSICOS

1 VISÃO GERAL
1.1 Introdução
1.2 Funções Básicas
1.3 Máquina de Níveis
1.4 Histórico
1.4.1 Década de 1940
1.4.2 Década de 1950
1.4.3 Década de 1960
1.4.4 Década de 1970
1.4.5 Década de 1980
1.4.6 Década de 1990
1.4.7 Década de 2000
1.5 Tipos de Sistemas Operacionais
1.5.1 Sistemas Monoprogramáveis/Monotarefa
1.5.2 Sistemas Multiprogramáveis/Multitarefa
1.5.2.1
Sistemas Batch
1.5.2.2 Sistemas de Tempo Compartilhado
1.5.2.3 Sistemas de Tempo Real
1.5.3 Sistemas com Múltiplos Processadores
1.5.3.1 Sistemas Fortemente Acoplados
1.5.3.2 Sistemas Fracamente Acoplados

1.6 Exercícios

2 CONCEITOS DE HARDWARE E SOFTWARE
2.1 Introdução
2.2 Hardware
2.2.1 Processador
2.2.2 Memória Principal
2.2.3 Memória Cache
2.2.4 Memória Secundária
2.2.5 Dispositivos de Entrada e Saída
2.2.6 Barramento
2.2.7 Pipelining
2.2.8 Arquiteturas RISC e CISC
2.2.9 Análise de Desempenho
2.3 Software
2.3.1 Tradutor
2.3.2 Interpretador
2.3.3 Linker
2.3.4 Loader
2.3.5 Depurador
2.3.6 Interpretador de Comandos e Linguagem de Controle
2.3.7 Ativação/Desativação do Sistema
2.4 Exercícios

3 CONCORRÊNCIA
3.1 Introdução
3.2 Interrupção e Exceção
3.3 Operações de Entrada/Saída
3.4 Buffering
3.5 Spooling
3.6 Reentrância
3.7 Proteção do Sistema
3.8 Exercícios  

4 ESTRUTURA DO SISTEMA OPERACIONAL
4.1 Introdução
4.2 System Calls
4.3 Modos de Acesso
4.4 Arquitetura Monolítica
4.5 Arquitetura de Camadas
4.6 Máquina Virtual
4.7 Arquitetura Microkernel
4.8 Projeto do Sistema
4.9 Exercícios

PARTE II: PROCESSOS E THREADS

5 PROCESSO
5.1 Introdução
5.2 Estrutura do Processo
5.2.1 Contexto de Hardware
5.2.2 Contexto de Software
5.2.3 Espaço de endereçamento
5.2.4 Bloco de controle de processo
5.3 Estados do Processo
5.4 Mudanças de Estado do Processo
5.5 Criação e Eliminação de Processos
5.6 Processos Independentes, Subprocessos e Threads
5.7 Processos Foreground e Background
5.8 Processos do Sistema Operacional
5.9 Processos CPU-bound e I/O-bound
5.10 Sinais
5.11 Exercícios

6 THREAD
6.1 Introdução
6.2 Ambiente Monothread
6.3 Ambiente Multithread
6.4 Arquitetura e Implementação
6.4.1 Threads em Modo Usuário
6.4.2 Threads em Modo Kernel
6.4.3 Threads em Modo Híbrido
6.4.4 Scheduler Activations
6.5 Modelos de Programação
6.6 Exercícios

7 SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS
7.1 Introdução
7.2 Aplicações Concorrentes
7.3 Especificação de Concorrência em Programas
7.4 Problemas de Compartilhamento de Recursos
7.5 Exclusão Mútua
7.5.1 Soluções de Hardware
7.5.2 Soluções de Software
7.6 Sincronização Condicional
7.7
    Semáforos
7.7.1 Exclusão Mútua utilizando Semáforos
7.7.2 Sincronização Condicional utilizando Semáforos
7.7.3 Problema dos Filósofos
7.7.4 Problema do Barbeiro
7.8
    Monitores
7.8.1 Exclusão Mútua utilizando Monitores
7.8.2 Sincronização Condicional utilizando Monitores
7.9 Troca de Mensagens
7.10 Deadlock
7.10.1 Prevenção de Deadlock
7.10.2 Detecção do Deadlock
7.10.3 Correção do Deadlock
7.11 Exercícios

PARTE III: GERÊNCIA DE RECURSOS

8 GERÊNCIA DO PROCESSADOR
8.1 Introdução  
8.2 Funções Básicas  
8.3 Critérios de Escalonamento  
8.4 Escalonamentos Não-Preemptivos e Preemptivos  

8.5 Escalonamento First-In-First-Out (FIFO)
8.6 Escalonamento Shortest-Job-First (SJF)

8.7 Escalonamento Cooperativo  
8.8 Escalonamento Circular  
8.9 Escalonamento por Prioridades  
8.10 Escalonamento Circular com Prioridades  
8.11 Escalonamento por Múltiplas Filas  
8.12 Escalonamento por Múltiplas Filas com Realimentação  
8.13 Política de Escalonamento em Sistemas de Tempo Compartilhado  
8.14 Política de Escalonamento em Sistemas de Tempo Real  
8.15 Exercícios

9 GERÊNCIA DE MEMÓRIA
9.1 Introdução  
9.2 Funções Básicas  
9.3 Alocação Contígua Simples  
9.4 Técnica de Overlay  
9.5 Alocação Particionada  
9.5.1 Alocação Particionada Estática  
9.5.2 Alocação Particionada Dinâmica  
9.5.3 Estratégias de Alocação de Partição  
9.6 Swapping  
9.7 Exercícios

10 GERÊNCIA DE MEMÓRIA VIRTUAL  
10.1 Introdução  
10.2 Espaço de Endereçamento Virtual  
10.3 Mapeamento  
10.4 Memória Virtual por Paginação 
10.4.1 Política de Busca de Páginas
10.4.2 Política de Alocação de Páginas
10.4.3 Política de Substituição de Páginas
10.4.4 Working Set
10.4.5 Algoritmo de Substituição de Páginas
10.4.6 Tamanho de Página
10.4.7 Paginação em Múltiplos Níveis
10.4.8 Translation Lookaside Buffer
10.4.9 Proteção de Memória
10.4.10 Compartilhamento de Memória
10.5 Memória Virtual por Segmentação
10.6 Memória Virtual por Segmentação com Paginação
10.7 Swapping em Memória Virtual
10.8 Thrashing
10.9 Exercícios

11 SISTEMA DE ARQUIVOS
11.1 Introdução  
11.2 Arquivos
11.2.1 Organização de Arquivos
11.2.2 Métodos de Acesso
11.2.3 Operações de Entrada/Saída
11.2.4 Atributos
11.3 Diretórios
11.4 Gerência de Espaço Livre em Disco
11.5 Gerência de Alocação de Espaço em Disco
11.5.1 Alocação Contígua
11.5.2 Alocação Encadeada
11.5.3 Alocação Indexada
11.6 Proteção de Acesso
11.6.1 Senha de acesso
11.6.2 Grupos de Usuários
11.6.3 Lista de Controle de Acesso
11.7 Implementação de Caches
11.8 Exercícios

12 GERÊNCIA DE DISPOSITIVOS
12.1 Introdução  
12.2 Acesso ao Subsistema de Entrada e Saída  
12.3 Subsistema de Entrada e Saída  
12.4 Device Drivers  
12.5 Controladores  
12.6 Dispositivos de Entrada e Saída  
12.7 Discos Magnéticos  
12.7.1 Desempenho, Redundância e Proteção de Dados  
12.8 Exercícios

13 SISTEMAS COM MÚLTIPLOS PROCESSADORES  
13.1 Introdução  
13.2 Vantagene e Desvantagens  
13.3 Tipos de Sistemas Computacionais  
13.4 Sistemas Fortemente e Fracamente Acoplados  
13.5 Sistemas com Múltiplos Processadores Simétricos  
13.5.1 Evolução dos Sistemas Simétricos  
13.5.2 Arquitetura dos Sistemas Simétricos  
13.6 Sistemas NUMA  
13.7 Clusters  
13.8 Sistemas Operacionais de Rede  
13.9 Sistemas Distribuídos  
13.9.1 Transparência  
13.9.2 Tolerância a Falhas  
13.9.3 Imagem Única do Sistema
13.10 Exercícios    

PARTE IV: ESTUDOS DE CASO

14 Windows 2000
14.1 Histórico
14.2 Características
14.3 Estrutura do Sistema
14.4 Processos e Threads
14.5 Gerência do Processador
14.6 Gerência de Memória
14.7 Sistema de Arquivos
14.8 Gerência de Entrada/Saída
 

15 Unix
15.1 Histórico
15.2 Características
15.3 Estrutura do Sistema
15.4 Processos e Threads
15.5 Gerência do Processador
15.6 Gerência de Memória
15.7 Sistema de Arquivos
15.8 Gerência de Entrada/Saída