====== Curso de Sistemas Operacionais para Graduação em Ciência da Computação ====== ===== Objetivos ===== ==== Objetivos gerais ==== * Entender o papel do sistema operacional dentro de um sistema computacional * Entender o funcionamento dos vários módulos que compõem um sistema operacional * Desenvolver uma visão crítica sobre os requisitos de confiabilidade, segurança e desempenho, associados a um sistema operacional ==== Objetivos específicos ==== * Compreender os mecanismos básicos de: chamada ao sistema, tratamento de interrupções, bloqueio e escalonamento de processos * Compreender as principais estruturas de dados de um sistema operacional * Compreender os principais algoritmos utilizados para gerir a utilização dos recursos do sistema * Compreender as necessidades e os mecanismos utilizados pelo sistema operacional para prover segurança para o sistema computacional ===== Programa ===== - Introdução aos Sistemas Operacionais - Funções de um sistema operacional - Conceitos básicos - Processos - Definição e estrutura de processos - Estados de um processo - Escalonamento de processos - Fluxo de execução de um processo - Multithreading - Comunicação entre processos - Gerência de Memória - Gerência de memória sem swap ou paginação - Swapping - Memória virtual - Algoritmos de reposição de páginas - Segmentação - Entrada/Saída - Hardware e software de entrada/saída - Projeto e implementação de drivers de dispositivos - Sistemas de Arquivos - Arquivos e diretórios - Implementação de sistemas de arquivos - Segurança e mecanismos de proteção da informação - Sistema Operacional para Processadores Multi-Core - Escalonamento - Impasses - Definição de impasses - Técnicas para o tratamento de impasses ===== Bibliografia ===== * (Livro texto) Sistemas Operacionais Modernos, A.S. Tanenbaum, 2a edição, Pearson Education do Brasil, 2003. * The Design of the UNIX Operating System, M. Bach, Prentice-Hall, 1985. * Inside Windows NT, H. Custer, Microsoft Press, 1993. ===== Plano de Aulas ===== - Anunciar URL da disciplina; avisar para todos olharem as datas importantes; apresentar os objetivos da disciplina; apresentar o conteúdo da disciplina; apresentar o processo de avaliação da disciplina; informar sobre lista de e-mail da disciplina; apresentar a motivação para a disciplina; introdução aos sistemas operacionais. (Capítulo 1) - O modelo de processos; estados de um processo. (Seção 2.1) - Escalonamento de processos; níveis de escalonamento; algoritmos de escalonamento. (Seção 2.5)(Seção 2.4) - Criação de processos e noções de fluxos de execução de processos (Seção 2.2) (12.1.1-12.1.4); - Comunicação entre processos através de memória compartilhada; condições de corrida; regiões críticas. (Seções 2.1.2, 2.3.1, 2.3.2) (Seções 2.2.1, 2.2.2) - Exclusão mútua com espera ocupada; bloqueio de processos. (Seções 2.3.3 e 2.3.4) (Seções 2.2.3 e 2.2.4) - Exclusão mútua com bloqueio de processos; semáforos; monitores. (Seções 2.3.5 e 2.3.7) (Seções 2.2.5 e 2.2.7) - Solução de problemas usando semáforos. (Seção 2.4) (Seção 2.3) - Princípios da gerência de memória; monoprogramação versus multiprogramação; relocação de código e proteção. (Seção 4.1) (Seção 3.1) - Gerência de memória com partições fixas e variáveis. Swapping. (Seção 4.2) (Seção 3.2) - Memória virtual; paginação; tabela de páginas. (Seção 4.3.1) (Seção 3.3.1) - Paginação multinível; memória associativa (TLB); tabela de páginas invertida. (Seções 4.3.2, 4.3.3 e 4.3.4) (Seções 3.3.2, 3.3.4 e 3.3.5) - Algoritmos de reposição de páginas. (Seção 4.4) (Seção 3.4) - Princípios de projeto de sistemas paginados; detalhes do procedimento para tratamento de falta de páginas. (Seção 4.7) (Seção 3.7)(Seções 4.4.8, 4.6.1, 4.6.3) (Seções 3.6.1, 3.6.2 e 3.6.3) - Segmentação de memória. (Seção 4.8) (Seção 3.7) - Introdução; implementação de sistemas de arquivos. (Seções 6.1, 6.2, 6.3.1, 6.3.2, 6.3.3 e 6.4.5) (Seções 4.1, 4.2, 4.3.1, 4.3.2, 4.3.3 e 7.5.3) - Confiabilidade de sistemas de arquivos; recuperação de sistemas de arquivos; administração e desempenho de sistemas de arquivos. (Seções 6.3.5, 6.3.6 e 6.3.7) (Seções 4.3.4, 4.3.5 e 4.3.6) - O sistema de arquivos do UNIX; outros sistemas de arquivos. (Seções 10.6.3 e 11.7) (Seções 7.5.3 e 8.5.3) - Segurança de sistemas; princípios de projeto de sistemas visando segurança; mecanismos de proteção. (Seções 9.3.1, 9.6 e 10.7) (Seções 4.4 e 4.5) - Princípios do hardware de entrada/saída; objetivos do software de entrada/saída de um sistema operacional. (Seções 5.1 e 5.2) (Seções 5.1 e 5.2.1) - Organização do software de entrada/saída de um sistema operacional. (Seções 5.3) (Seções 5.2.2, 5.2.3, 5.2.4 e 5.2.5) - Projeto de um driver de disco; projeto de um driver de relógio. (Seções 5.4.3, 5.4.4, 5.4.5, 5.5) (Seções 5.3 e 5.4) - Projeto de um driver de terminal; Gerenciamento de energia (Seção 5.6, 5.9.2) (Seção 5.5) - Tipos de Sistemas Operacionais multiprocessados; Escalonamento com múltiplos processadores (8.1.2 e 8.1.4) (-) - Definição de impasses; formas de tratamento; detecção e recuperação de impasses; evitando impasses; prevenindo impasses; outros assuntos relacionados. (travamento em duas fases, starvation) (Seções 3.1, 3.2, 3.3, 3.4, 3.6, 3.6 e 3.7) (Seções 6.1, 6.2, 6.3, 6.4, 6.5, 6.6 e 6.7) ===== Avaliação ===== A avaliação será feita em três provas. A primeira prova engloba o conteúdo dos pontos 1 até 8. A segunda prova engloba o conteúdo dos pontos 9 15. A terceira prova engloba o conteúdo dos pontos 16 até 25. As notas das provas serão divulgadas no site do controle acadêmico.