Apresentar os conceitos e princípios básicos de sistemas operacionais de computadores, técnicas de programação e princípios de programação concorrente.
Conceitos e estruturas de sistemas operacionais; Processos e Threads; Escalonamento de CPU; Sincronismo de Processos; Deadlocks; Memória Principal; Memória Virtual; 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, paginação, segmentação; Memória virtual: fundamentos, paginação por demanda, algoritmos de substituição de páginas, thrashing; Sistemas de arquivos: conceitos, métodos de acesso, estruturas de diretórios e aspectos de proteção; Implementação de sistemas de arquivos: estruturas, implementação de sistemas de arquivo e diretório, métodos de alocação e gerenciamento de espaço livre.
1. 1. Silberchatz, A., Gavin, P. and Gagne, G. Fundamentos de Sistemas Operacionais, 9a ed. LTC, 2015. 2. 2. Tanenbaum, A.S. e Bos, H. Sistemas Operacionais Modernos, 4a ed. Pearson, 2016. 3. 3. Stuart, B.L. Princípios de Sistemas Operacionais: projetos e aplicações. Cengage, 2011. 4. 4. Tanenbaum, A.S. Sistemas Operacionais Modernos, 3a ed. Pearson Prentice Hall, 2010. 5. 5. Silberchatz, A., Gavin, P. and Gagne, G. Sistemas Operacionais com Java, 7a ed. Editora Campus, 2008.