====== 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.