Descrição

O sistema operativo é um conjunto de programas que constituem o núcleo de qualquer sistema informático, criando as abstracções necessárias para o desenvolvimento, execução e gestão eficientes das aplicações. Como tal, compreender o funcionamento dos sistemas operativos é essencial de forma a permitir que as aplicações tirem o máximo partido da plataforma onde se executam e perceber as condicionantes que existem nesta camada que virtualiza o hardware. Este livro aborda o funcionamento dos sistemas operativos apresentando duas visões complementares: o modelo computacional do sistema operativo, que permite aos programadores o desenvolvimento das aplicações, e as soluções arquitecturais encontradas para cada um dos subsistemas que compõem o sistema operativo. No livro são detalhados estes dois aspectos dos principais módulos. Para cada um dos temas abordados no livro é apresentada a sua materialização em dois casos de estudo correspondentes aos sistemas operativos mais utilizados actualmente: o Unix, Linux e o Windows.

Principais Tópicos Topo

Ao longo do livro são abordados, entre outros, os seguintes temas:

Público-Alvo Topo
O(s) Autor(es) Topo

José Alves Marques
Professor Catedrático do Departamento de Engenharia de Informática do Instituto Superior Técnico, de que é docente desde 1981. Foi um dos criadores da Licenciatura de Engenharia Informática e Computadores e fundador do Departamento de Engenharia Informática, de que foi o primeiro presidente. Lecciona as cadeiras de Sistemas Operativos, Sistemas Distribuídos e Sistemas Empresariais Integrados.

Paulo Ferreira
Professor Associado do Departamento de Engenharia de Informática do Instituto Superior Técnico, onde lecciona desde 1990. Actualmente, é Pró-Reitor da UTL, coordenador do Mestrado em Engenharia Informática e Computadores no IST (Alameda) e lidera o Grupo de Sistemas Distribuídos no INESC ID. Lecciona, entre outras, as disciplinas de Sistemas Operativos, Plataformas para Aplicações Distribuídas na Internet e Computação Móvel.

Carlos Ribeiro
Professor Auxiliar do Departamento de Engenharia Informática do Instituto Superior Técnico, onde lecciona desde 1993 nas áreas de Arquitectura de Computadores e de Sistemas Operativos. É actualmente regente das cadeiras da área de Segurança.

Luís Veiga
Professor Auxiliar do Departamento de Engenharia Informática do Instituto Superior Técnico, onde é docente desde 2001. Leccionou as cadeiras de Sistemas Operativos e Arquitectura de Computadores. É regente das cadeiras de Plataformas para Aplicações Distribuídas na Internet e Ambientes Virtuais de Execução.

Rodrigo Rodrigues
Investigador no Max Planck Institute for Software Systems, em Saarbrücken, Alemanha, onde lidera o grupo de sistemas fiáveis, e lecciona a cadeira de Sistemas Operativos na Universidade de Saarland. Entre 2005 e 2007 foi Professor Auxiliar no Instituto Superior Técnico.

Índice Topo
1 - Introdução  
1.1 Função dos Sistemas Operativos
  1.1.1 Gestor de Recursos
  1.1.2 Interface
  1.1.3 Máquina Virtual
1.2 Critérios de Qualidade do Sistema Operativo
1.3 Evolução Histórica
  1.3.1 Monitor de Controlo
  1.3.2 Tratamento em Lotes (Batch)
  1.3.3 Multiprogramação
  1.3.4 Sistemas Interactivos
  1.3.5 Memória Virtual
  1.3.6 Computadores Pessoais
  1.3.7 Sistemas Distribuídos
1.4 Classificações de Sistemas Operativos
  1.4.1 Sistemas de Tempo Virtual e Tempo Real
  1.4.2 Sistemas Embebidos
  1.4.3 Sistemas Proprietários e Sistemas Abertos
     
2 - Organização do Sistema Operativo
2.1 Organização do Sistema Operativo
2.2 Núcleo  
  2.2.1 Suporte Hardware à Execução do Núcleo
2.3 Chamadas Sistema
2.4 Processos Sistema
2.5 Evolução da Organização do Núcleo do Sistema Operativo
  2.5.1 Núcleos Monolíticos
  2.5.2 Núcleos em Camadas
  2.5.3 Micronúcleos
  2.5.4 Máquinas Virtuais
2.6 Sistemas de Referência
  2.6.1 Unix
  2.6.2 Windows
     
3 - Processos: Modelo Computacional
3.1 Multiprogramação
3.2 Conceito de Processo
  3.2.1 Espaço de Endereçamento
  3.2.2 Reportório de Operações
  3.2.3 Estado do Processo
  3.2.4 Modelo de Segurança
  3.2.5 Hierarquias de Processos
  3.2.6 Recursos Associados ao Processo
3.3 Objecto Processo
  3.3.1 Atributos do Processo
  3.3.2 Operações do Processo
3.4 Rotinas Assíncronas
  3.4.1 Acontecimentos Assíncronos
  3.4.2 Tratamento dos Acontecimentos Assíncronos
3.5 Modelo Multitarefa
  3.5.1 Objectivos
  3.5.2 Conceito de Tarefa
  3.5.3 Objecto Tarefa
3.6 Processos em Unix
  3.6.1 Modelo Computacional
  3.6.2 Operações sobre Processos
  3.6.3 Signals
  3.6.4 Tarefas - Interface POSIX
3.7 Processos no Windows
  3.7.1 Modelo Computacional
  3.7.2 Operações sobre Processos
  3.7.3 Tarefas
  3.7.4 Excepções e Acontecimentos Assíncronos
     
4 - Gestor de Processos
4.1 Arquitectura do Gestor de Processos
4.2 Representação dos Processos
  4.2.1 Estados de Execução
  4.2.2 Contexto dos Processos
4.3 Comutação dos Processos
  4.3.1 Despacho
  4.3.2 Escalonamento
  4.3.3 Chamadas Sistema Relacionadas com os Processos
4.4 Gestor de Processos em Unix
  4.4.1 Representação dos Processos
  4.4.2 Representação dos Processos em Linux
  4.4.3 Modo Utilizador e Modo Núcleo
  4.4.1 Diagrama de Estados
  4.4.2 Execução das Chamadas Sistema
  4.4.3 Escalonamento
  4.4.4 Implementação dos Signals
4.5 Gestor de Processos em Windows
  4.5.1 Representação dos Processos e Tarefas
  4.5.2 Diagrama de Estados das Tarefas
  4.5.3 Criação de Processos e Tarefas
  4.5.4 Escalonamento
  4.5.5 Tratamento Diferido de Interrupções
  4.5.6 Tratamento de Excepções
  4.5.7 Gestor de Objectos
  4.5.8 Registo
     
5 - Sincronização: Secções Críticas
5.1 Necessidade das Secções Críticas
5.2 Requisitos de uma Secção Crítica
5.3 Exclusão Mútua Algorítmica
  5.3.1 Algoritmos de Dekker e de Peterson
  5.3.2 Algoritmo de Lamport
  5.3.3 Avaliação das Soluções Algorítmicas
5.4 Exclusão Mútua Baseada no Hardware
  5.4.1 Inibição de Interrupções
  5.4.2 Instruções Especiais de Teste e Atribuição
  5.4.3 Exclusão Mútua em Multiprocessadores
5.5 Exclusão Mútua com Objectos do Sistema Operativo
  5.5.1 Objecto Mutex
  5.5.2 Mutex  POSIX
  5.5.3 Secções Críticas em Windows
5.6 Sincronização no Núcleo
  5.6.1 Funções de Sincronização do Núcleo
  5.6.2 Secções Críticas no Código do Núcleo
     
Cap. 6 – Programação Concorrente
6.1 Cooperação entre Processos
6.2 Sincronização no Modelo Computacional
  6.2.1 Sincronização Directa
  6.2.2 Sincronização Indirecta
6.3 Exemplos de Programação Concorrente
  6.3.1 Sincronizar com um Acontecimento
  6.3.2 Sincronizar a Gestão de Recursos
  6.3.3 Sincronizar Clientes e Servidores (Problema do Barbeiro) 
  6.3.4 Sincronizar Produtores e Consumidores  de Informação
  6.3.5 Sincronizar Leitores e Escritores de uma Estrutura de Dados
6.4 Interblocagem
  6.4.1 Situações de Interblocagem
  6.4.2 Métodos para Prevenir a Interblocagem
  6.4.3 Tratamento da Interblocagem
6.5 Tipos de Objectos de Sincronização
  6.5.1 Semáforos de Contagem
  6.5.2 Semáforos Binários
  6.5.3 Filas de Sincronização
  6.5.4 Eventos de Sincronização
  6.5.5 Barreiras de Sincronização
6.6 Objectos de Sincronização nos Sistemas de Referência
  6.6.1 POSIX - Semáforos
  6.6.2 Windows - Semáforos
  6.6.3 Windows - Eventos
  6.6.4 Semáforos Unix
6.7 Monitores
  6.7.1 Visão Axiomática da Sincronização
  6.7.2 Estrutura do Monitor
  6.7.3 Sincronização Explícita nos Monitores
  6.7.4 Monitores em Java e .NET
     
7 - Mecanismos de Gestão de Memória
7.1 Espaço de Endereçamento de um Processo
7.2 Modelo Computacional
7.3 Hierarquia de Memória
7.4 Endereços Reais e Virtuais
7.5 Endereçamento Real
  7.5.1 Sistemas Monoprogramados
  7.5.2 Sistemas Multiprogramados com Partições Fixas
  7.5.3 Sistemas Multiprogramados com Partições Variáveis
7.6 Endereçamento Virtual
7.7 Segmentação
  7.7.1 Objectivos
  7.7.2 Mecanismo de Tradução de Endereços
  7.7.3 Fragmentação
  7.7.4 Protecção
  7.7.5 Partilha de Memória entre Processos
7.8 Paginação
  7.8.1 Objectivos
  7.8.2 Espaço de Endereçamento
  7.8.3 Fragmentação
  7.8.4 Protecção
  7.8.5 Partilha de Memória entre Processos
  7.8.6 Dimensão das Páginas e Tabela de Páginas
7.9 Memória Segmentada/Paginada
7.1 Linux  
  7.1.1 Espaço de Endereçamento de um Processo
  7.1.2 Espaço de Endereçamento do Núcleo
  7.1.3 Tabelas de Páginas
7.2 Windows
  7.2.1 Espaço de Endereçamento de um Processo
  7.2.2 Tabelas de Páginas
     
8 - Algoritmos de Gestão de Memória
8.1 Introdução
8.2 Principais Operações de Gestão de Memória Virtual
  8.2.1 Alocação de Memória
  8.2.2 Transferência de Blocos
  8.2.3 Substituição de Blocos
8.3 Gestão em Memória Segmentada
  8.3.1 Alocação de Segmentos
  8.3.2 Transferência de Segmentos (swapping)
  8.3.3 Substituição de Segmentos
8.4 Gestão em Memória Paginada
  8.4.1 Alocação de Páginas
  8.4.2 Transferência de Páginas
  8.4.3 Substituição de Páginas
  8.4.4 Diagrama de Estados das Páginas
8.5 Análise Comparativa da Segmentação  e Paginação
  8.5.1 Segmentação
  8.5.2 Paginação
8.6 Linux  
  8.6.1 Memória Primária
  8.6.2 Alocação de Páginas
  8.6.3 Transferência de Páginas (paging)
  8.6.4 Substituição de Páginas
8.7 Windows
  8.7.1 Memória Primária
  8.7.2 Alocação de Páginas
  8.7.3 Transferência de Páginas (paging)
  8.7.4 Substituição de Páginas
     
9 - Sistema de Ficheiros
9.1 Organização do sistema de ficheiros
  9.1.1 Entidades Fundamentais
  9.1.2 Organização dos Nomes dos Ficheiros
  9.1.3 Tipos de Ficheiros
  9.1.4 Atributos de um Ficheiro
  9.1.5 Operações do Sistema de Ficheiros
9.2 Estrutura Interna dos Sistemas de Armazenamento
  9.2.1 Dispositivos de Memória Secundária
  9.2.2 Organização Persistente dos Sistemas de Ficheiros
  9.2.3 Estruturas de Suporte à Utilização dos Ficheiros
9.3 Linux  
  9.3.1 Modelo Computacional
  9.3.2 Estrutura interna
9.4 Windows
  9.4.1 Modelo Computacional
  9.4.2 Estrutura Interna
     
10 - Comunicação entre Processos
10.1 Modelo de Comunicação
  10.1.1 Modelos de Interacção entre Processos Produtor  e Consumidor
  10.1.2 Objecto Canal
  10.1.3 Características do Canal de Comunicação
  10.1.4 Implementação do Canal de Comunicação
10.2 Comunicação no Modelo Computacional
  10.2.1 Zonas de Memória Partilhada
  10.2.1 Caixas de Mensagens
  10.2.2 Ligações Virtuais
  10.2.1 Resumo
10.3 Comunicação entre Processos em Linux
  10.3.1 Pipes
  10.3.2 Sockets Unix
  10.3.3 Caixas de Mensagens no Sistema V
  10.3.4 Comunicação por Memória Partilhada no Sistema V
  10.3.5 Resumo
10.4 Comunicação entre Processos em Windows
  10.4.1 Pipes
  10.4.1 Mailslots
  10.4.2 Windows Sockets
  10.4.3 Memória Partilhada
  10.4.4 Resumo
  10.4.5 Mecanismos Exclusivos do Windows
     
11 - Entradas/Saídas
11.1 Objectivos do Subsistema de E/S
11.2 Arquitectura das E/S
11.3 Modelo Computacional das E/S
  11.3.1 Elementos do Modelo
  11.3.2 Partilha de Periféricos
11.4 Modelo de Acesso à Interface  Gestor/Núcleo
  11.4.1 Fluxo de Acções Típico
  11.4.2 Gestores de Periféricos Fora/Dentro do Núcleo
11.5 Gestores de Periféricos
  11.5.1 Comunicação entre o Gestor e o Periférico
  11.5.2 Estrutura Interna do Gestor de Periférico
  11.5.3 Administração dos Gestores de Periféricos
11.6 E/S no Unix
  11.6.1 Modelo Computacional
  11.6.2 Interface Linux - Gestores de Periféricos
  11.6.3 Administração dos Gestores de Periféricos
11.7 E/S no Windows
  11.7.1 Modelo Computacional
  11.7.2 Modelo de Gestão de Periféricos
  11.7.3 Interface Windows / Gestores de Periféricos
  11.7.4 Administração dos Gestores de Periféricos
     
12 - Segurança  
12.1 Objectivos de Segurança
12.2 Ameaças
12.3 Vulnerabilidades
12.4 Modelo de Segurança
  12.4.1 Recurso Protegido
  12.4.2 Políticas de Autorização
  12.4.3 Autenticação
  12.4.4 Confinamento
  12.4.5 Prevenção versus Detecção
12.5 Mecanismos de Confinamento
  12.5.1 Limitação do Espaço de Endereçamento
  12.5.2 Operações Protegidas
  12.5.3 Modos de Execução
  12.5.4 Suporte de Hardware aos Mecanismos  de Confinamento
  12.5.5 Confinamento em Máquinas Virtuais Aplicacionais
12.6 Autenticação de Utilizadores
  12.6.1 Autenticação com Senhas
12.7 Autorização
  12.7.1 Espaço de Operações
  12.7.2 Contexto
  12.7.3 Matriz de Controlo de Acessos
12.8 Registo de Acções
12.9 Avaliação da Segurança
12.10 Unix  
  12.10.1 Confinamento
  12.10.2 Autenticação
  12.10.3 Autorização
  12.10.4 Registo de Acções
12.11 Windows
  12.11.1 Confinamento
  12.11.2 Autenticação
  12.11.3 Autorização
  12.11.4 Registo de Acções
     
Páginas online Topo