CI-1215: Sistemas Operacionais
- Disciplina: CI1215/CI215 - Sistemas Operacionais
 - Carga Horária: teoria 30h, prática 30h, total 60h
 - Professor: Carlos A. Maziero
 
Meu livro de sistemas Operacionais se encontra nesta página.
Objetivos
Capacitar o aluno a conhecer os fundamentos de sistemas operacionais, permitindo que o mesma tenha um entendimento do funcionamento deste. Também é objetivo capacitar o aluno a escrever programas concorrentes.
Ementa
Componentes de um sistema. Administração dos recursos: memória principal e secundária. Administração dos processos: prioridades, interrupção, filas. Comunicação entre processos: semáforos e mensagens. Segurança.
Conteúdo
- Visão geral de sistemas operacionais: objetivos, tipos, funcionalidades, estrutura interna, arquiteturas, mecanismos de hardware utilizados.
 - Gerência de tarefas: contextos e processos, threads, escalonamento de tarefas.
 - Comunicação entre tarefas: tipos de comunicação, mecanismos intra- e interprocessos.
 - Coordenação entre tarefas: concorrência, condições de disputa, algoritmos básicos, semáforos, variáveis de condição, monitores, problemas clássicos, impasses.
 - Estruturas de memória: tipos de memória, endereços físicos e lógicos, estrutura interna de um processo, segmentação, paginação, compartilhamento, localidade de referências, memória virtual, algoritmos de substituição de páginas.
 - Sistemas de entrada e saída: dispositivos de entrada/saída, barramentos e interfaces, estratégias de interação, software de entrada/saída, drivers, principais sub-sistemas.
 - Gerência de arquivos: o conceito de arquivo, atributos e operações, formatos de arquivos, semânticas de acesso, compartilhamento, nomeação e caminhos, diretórios, sistemas de arquivos, caching, alocação de arquivos, gerência de espaço livre.
 
Metodologia
- Teoria: aulas expositivas, com análise e discussão dos temas propostos.
 - Prática: atividades referentes aos temas abordados nas aulas teóricas.
 
Avaliação
A média final da disciplina é composta pelas médias das provas e dos trabalhos desenvolvidos. A forma de cálculo está detalhada no cronograma de cada oferta.
Bibliografia
Básica:
- Sistemas Operacionais: Conceitos e Mecanismos (livro-texto).
 - Sistemas Operacionais Modernos, 2a ed. Tanenbaum, Ed. Pearson, 2003.
 - Operating system concepts. 7. ed. Silberschatz, Galvin & Gane. Wiley, 2005.
 
Complementar:
- Operating Systems: Three Easy Pieces, R. Arpaci-Dusseau and A. Arpaci-Dusseau (online).
 - Advanced Linux Programming. Mitchell, Oldham, Samuel. Ed. New Riders, 2001.
 - UNIX Systems Programming: Communication, Concurrency and Thread. Robbins & Robbins, Prentice Hall, 2007.
 - Understanding the Linux Kernel. 3rd Edition. Cesati & Bovet. O'Reilly, 2005.
 - C - A Linguagem de Programação Padrão ANSI. Kerningham, Ritchie. Editora Campus, 1989.
 
Material de apoio
Construção de sistemas operacionais:
- Livro The Design of the Unix Operating System, de Maurice Bach
 - Livro UNIX Internals: The New Frontiers, de Uresh Vahalia
 - Livro Linux Device Drivers, de Jonathan Corbet, Alessandro Rubini, e Greg Kroah-Hartman
 
Programação:
- Projeto de Algoritmos do prof. Paulo Feofiloff, IME/USP
 
UNIX/Linux:
- Excelente guia de BASH
 
Editores:
Outros recursos:
Podem ocorrer mudanças nesta página, com a devida divulgação prévia aos alunos.