EA550 - Introdução a Software de Sistema
Turma: A -
Período: 1/2026 -
Tipo Período: 1o. semestre -
Disciplina:
Obrigatória 4 créditos.
-
Idioma: Português
Ementa: Montadores, ligadores e carregadores. Análises léxica, sintática e semântica. Geração de código e otimização. Processos (concorrência, regiões críticas, escalonamento). Endereçamento e gerenciamento de memória virtual (paginação, segmentação). Sistemas de arquivos (hierarquia, proteção, organização,
segurança). Gerenciamento de entrada/saída. Conceitos básicos sobre RTOs. Estudos de caso.
Conteúdo Programático: 1) Introdução ao conteúdo da disciplina
1.1) Visão geral sobre os diferentes tipos de software: de sistema e de aplicação
1.2) Ciclo de vida de um programa desde a compilação até a execução com suporte do SO
2) Compiladores
2.1) Introdução
- Tarefas básicas do compilador
- Sistemas formais
- Gramáticas livres de contexto e regulares
2.2) Análise Léxica
- Conceitos fundamentais
- Expressões regulares e autômatos finitos
- Algoritmo de análise léxica
- Ferramentas para análise léxica: exemplos
2.3) Análise Sintática
- Estruturas gramaticais e gramáticas livres de contexto
- Derivações canônicas e árvores sintáticas
- Algoritmos de análise sintática (parsing): Shift-Reduce etc.
- Ferramentas para análise sintática: exemplos
2.4) Análise Semântica
- Verificação de tipos e coerência de dados e variáveis
- Verificação do fluxo de controle
- Conversão de tipos
- Exemplos
2.5) Geração de Código
- Estratégias de geração de código intermediário
- Códigos de três endereços
- Notação pós-fixa
- Exemplos de geração de código
2.6) Otimização
- Otimização estática e dinâmica
- Otimização dependente e independente de máquina
- Exemplos de transformações para eficiência
3) Montadores, Ligadores e Carregadores
3.1) Montadores
- Tipos de linguagem simbólica por processador
- Interação do montador com compiladores
- Estrutura de programas em linguagem simbólica
- Macroinstruções e seu processamento
- Tabelas auxiliares MOT e POT para o processo de montagem
- Montagem em duas etapas
- Exemplos de montagem
3.2) Ligadores
- Função dos ligadores na criação de executáveis
- Resolução de endereços e símbolos
- Ligação estática vs. ligação dinâmica
- Exemplos de ligação
3.3) Carregadores
- Funções dos carregadores e seu papel na execução de programas
- Tipos de carregador: absoluto e relocável
- Carregador de ligação direta
- Carregamento estático e dinâmico
- Bibliotecas estáticas e dinâmicas
- Exemplos de interações carregador-ligador
4) Sistemas Operacionais
4.1) Introdução
- Conceitos gerais e definições de SO
- Relacionamento SO-hardware
- Estrutura básica de um SO
- Conceitos sobre SO de tempo real (RTOS)
4.2) Gerenciamento de Processos
- Conceitos de trocessos
- Criação e escalonamento de processos
- Prioridades estáticas e dinâmicas
- Sinalização e comunicação interprocessos
- Sincronização interprocessos: concorrência, regiões críticas, semáforo e mutex
- Estruturas de dados utilizadas na gestão de processos
- Exemplos de aplicações com múltiplos processos
4.3) Gerenciamento de Threads
- Motivação para threads
- Diferenças entre processos e threads
- Criação e escalonamento de threads
- Modelos de concorrência e sua implementação
- Comunicação e sincronização entre threads
- Threads em RTOS
- Exemplos de aplicações com múltiplas threads
4.4) Gerenciamento de memória principal
- Objetivos: organização e proteção dos espaços físico e virtual
- Espaço de endereçaento
- Gerenciamento de espaço livre
- Troca de processos e a memória virtual
- Paginação de memória
- Tabela de páginas e TLB (Translation Lookaside Buffer)
- Unidade de gerenciamento de memória (MMU)
- Algoritmos de troca de páginas
- Segmentação de memória
5) Gerenciamento de Arquivos
5.1) Arquivos
- Estruturas
- Nomeação
- Tipos
- Atributos
- Operações
5.2) Diretórios
- Implementação em nível único
- Implementação em nível hierárquico
- Caminhos
- Operações
5.3) Sistemas de Arquivos
- Operações básicas: criação, leitura, escrita e exclusão
- Estruturas e algoritmos para gerenciamento de espaço físico
- Compartilhamento de arquivos: proteções
- Mapeamento em memória principal (RAM)
- Verificação de consistência, logs e journaling
- Desfragmentação
- Exemplos
6) Gerenciamento de Entrada/Saída
6.1) Princípios do hardware de E/S
- Dispositivos: tipos e características
- Controladores de dispositivos
- E/S mapeada em memória
- Acesso Direto à Memória (DMA)
- Sistemas redundantes (RAID)
6.2) Princípios do software de E/S
- Programação de dispositivos: drivers e interfaces
- E/S programada
- E/S orientada a interrupções
- E/S usando DMA
- E/S independente de dispositivo
6.3) Exemplos de sistemas de E/ S
- Discos
- Relógios
- Teclado
- Mouse
7) Conceitos Básicos sobre RTOS (Sistemas Operacionais de Tempo Real)
7.1) Definição e Características de RTOS
- Diferenças entre RTOS e sistemas operacionais convencionais
- Exemplos de aplicações em tempo real
- Aplicações de laço único
- Aplicações contrladas por interrupções
- Aplicações multitarefas cooperativas
- Aplicações multitarefas preemptivas
- Arquitetura em camadas: tempo real, executiva, aplicação
- Escalonamento em tempo real
8) Estudos de Caso
8.1) Análises e discussões sobre Sistemas Operacionais modernos
- Estudo de casos de sistemas operacionais populares (Linux, Windows etc.)
- Comparação de arquiteturas e abordagens de gerenciamento
- Desenvolvimento de um sistema operacional: desafios e soluções
Plano de Desenvolvimento:
Conforme IN CCG nº 02/2025 - Cláusula de Honestidade e Lisura Acadêmica
Todas as atividades relacionadas às disciplinas devem ser realizadas em conformidade com as orientações fornecidas pelos docentes e com o devido rigor ético.
Caso o(a) docente responsável, no exercício de sua liberdade de cátedra, forme convicção acerca da ausência de lisura ou de condições adequadas para a realização da atividade avaliativa, poderá atribuir nota zero, seja para a atividade única ou, conforme o caso, para o conjunto de atividades do semestre. A ocorrência deverá ser fundamentada e comunicada à Coordenação de Curso de Graduação, podendo o(a) estudante estar sujeito a processo administrativo.
Bibliografia: Ricarte, Ivan. Introdução à compilação. Elsevier, Rio de Janeiro, RJ, Brasil. ISBN 9788535230673.
Tanenbaum, Andrew S.; Bos, Herbert, Sistemas Operacionais Modernos (Modern Operating Systems), 4ª edição, Pearson, ISBN 978-85-430-0567-6
Cardoso, Eleri; Henriques, Marco A.; Introdução aos Sistemas Operacionais, notas de aula, DCA-FEEC-Unicamp, 2024
Critério de Avaliação:
Bibliografia complementar: