Apresentar conceitos e princípios básicos da arquitetura de um sistema operacional moderno, técnicas e princípios de programação concorrente.
Fundamentos e Estruturas do Sistema Operacional; Processos e Threads; Escalonamento de CPU; Sincronismo de Processos; Deadlocks; Memória Principal; Memória Virtual; Interface e Implementação do Sistema de Arquivos.
Introdução a sistemas operacionais: objetivos e funções de um sistema operacional, organização e arquitetura de um sistema computacional; Estruturas de um sistema operacional: chamadas de sistema, modelos de implementação, máquinas virtuais; Processos: conceitos, escalonamento e operações; Threads: conceitos, modelos e bibliotecas de threads, threads em Java; Escalonamento de CPU: conceitos, critérios e algoritmos de escalonamento; Sincronização de processos: conceitos, abordagens para exclusão mútua, problemas clássicos de sincronismo, sincronização em Java; Deadlocks: caracterização, métodos para prevenção, detecção e recuperação de deadlocks; Gerência de memória: princípios básicos, alocação de memória contígua, paginação e segmentação; Memória virtual: fundamentos, paginação por demanda, algoritmos de substituição de páginas, atividade improdutiva (thrashing) e alocação memória do Kernel; Interface do sistema de arquivos: fundamentos, métodos de acesso, estruturas de diretórios e aspectos de proteção; Implementação do sistema de arquivos: estruturas, implementação de sistemas de arquivo e diretório, métodos de alocação e gerenciamento de espaço livre.
1. Silberchatz, A., Gavin, P. and Gagne, G. Fundamentos de Sistemas Operacionais, 9a ed. LTC, 2015. 2. Tanenbaum, A.S. e Bos, H. Sistemas Operacionais Modernos, 4a ed. Pearson, 2016. 3. Stuart, B.L. Princípios de Sistemas Operacionais: projetos e aplicações. Cengage do Brasil, 2011. 4. Silberchatz, A., Gavin, P. and Gagne, G. Sistemas Operacionais com Java, 7a ed. Editora Campus, 2008.