====== CI-1215: Sistemas Operacionais ======
* **Disciplina**: CI1215/CI215 - Sistemas Operacionais
* **Carga Horária**: teoria 30h, prática 30h, total 60h
* **Professor**: Carlos A. Maziero
* [[Cronograma 2024/1]]
Meu livro de sistemas Operacionais se encontra [[socm:start|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.
/* * **Proteção e segurança**: propriedades e princípios de segurança, vulnerabilidades e ataques, infraestrutura de segurança, aspectos de autenticação de usuários, mecanismos de controle de acesso, controle de uso de recursos, mecanismos de auditoria. */
/* * **Virtualização**: conceitos básicos, definição formal, suporte de hardware, tipos de máquinas virtuais, técnicas de virtualização, aplicações e ambientes. */
===== Metodologia =====
* **Teoria**: aulas expositivas, com análise e discussão dos temas propostos.
* **Prática**: atividades referentes aos temas abordados nas aulas teóricas.
* [[Projetos desenvolvidos]]
* [[teaching:Regras das atividades de laboratório]]
===== 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:
* [[socm:start|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:
* [[http://pages.cs.wisc.edu/~remzi/OSTEP|Operating Systems: Three Easy Pieces]], R. Arpaci-Dusseau and A. Arpaci-Dusseau (online).
* //[[https://mentorembedded.github.io/advancedlinuxprogramming/|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
* [[https://wiki.osdev.org|OsDev wiki]]
* [[http://www.memorymanagement.org|Memory Management Reference]]
Programação:
* [[http://www.ime.usp.br/~pf/algoritmos/|Projeto de Algoritmos]] do prof. Paulo Feofiloff, IME/USP
* [[http://beej.us/guide/bgc|Beej's Guide to C Programming]]
* [[http://beej.us/guide/bgipc|Beej's Guide to Unix Interprocess Communication]]
UNIX/Linux:
* [[unix:Histórico do Unix e Linux]]
* Comandos básicos ([[unix:comandos básicos]], [[unix:permissões em arquivos]], [[unix:gestão de processos]])
* Uso do shell BASH ([[unix:shell básico]], [[unix:shell avançado]], [[unix:shell scripts]])
* [[unix:Desenvolvimento em Linux]]
* Excelente [[http://wiki.bash-hackers.org|guia de BASH]]
* [[http://www.guiafoca.org|Guias FOCA Linux]]
Editores:
* [[http://qref.sourceforge.net/Debian/reference/ch-edit.pt-br.html|Diversas informações sobre editores]]
Outros recursos:
* [[https://code.google.com/p/kvnix/|Projeto KVNIX]]
* [[Termos de SO em português]]
Podem ocorrer mudanças nesta página, com a devida divulgação prévia aos alunos.