Sumário
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
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
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
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