Expor os fundamentos de sistemas operacionais de computadores e técnicas de sua implementação.
História dos sistemas operacionais, gerenciamento de processos, gerenciamento de memória, gerenciamento de arquivos e introdução a redes de computadores.
Introdução a arquiteturas: convencionais, multiprocessadores, paralelas com memória distribuída e redes. Multiprocessamento e multiprogramação. Gerenciamento de memória: memória real vs virtual, paginação e segmentação, memória cache. Processos: estados, contexto, gerenciamento pelo kernel, escalonamento, sinais e interrupções. Comunicação local: pipes, FIFOs, message queues, memória compartilhada. Comunicação remota: síncrona, assíncrona, sockets, chamada remota de procedimentos (RPC) e rendezvous. Protocolos de comunicação em redes: IP, TCP, UDP. Threads: gerenciamento, sincronização, semáforos, regiões críticas condicionais, monitores. Entrada e saída: aspectos de hardware e software, dispositivos de bloco e caracteres (terminais, discos, relógio, rede), independência de dispositivo, drivers. Sistemas de arquivos. Tipos de arquivos: seqüenciais, acesso indexado, acesso direto, diretórios hierárquicos, organização física e acesso a arquivos, mecanismos de proteção distribuída. Segurança.
Bibliografia básica: Andrew S. Tanenbaum, "Sistemas operacionais modernos", Pearson Education do Brasil Pearson, 2010. Abraham Silberschatz e Peter B. Galvin, "Sistemas operacionais : conceitos", Prentice-Hall, 2000. W. Richard Stevens, Bill Fenner e Andrew M. Rudoff, "UNIX network programming, Vol.1, The sockets networking API", Addison-Wesley, 2011. Bibliografia complementar: