5306O2 - Sistemas Operativos II (2006 - 2007)
Up one level- Docente responsável pela disciplina
- Francisco Soares de Moura
- Docente responsável pelas aulas teóricas
- Francisco Soares de Moura
- Docentes responsáveis pelas aulas teorico-práticas
- António Luís Sousa
- Aulas teóricas
- 6ª-feira, 10:00-12:00
- Aulas teórico-práticas
- 2ª-feira, 10:00-13:00, 14:00-17:00, 17:00-20:00
3ª-feira, 08:00-11:00
4ª-feira, 10:00-13:00
5ª-feira, 08:00-11:00
- Atendimento
- Francisco Soares de Moura: 3ª-feira, 09:30-10:30, ou a combinar por e-mail.
Exame final (90%) + miniteste (10%)
- Introdução
- Gestão de ficheiros: objectivos, concretização, sistemas de ficheiros distribuídos
- Programação concorrente: modelos baseados em memória partilhada, mensagens, cliente-servidor.
- Programação em sistemas distribuídos: motivação, problemas, mecanismos de comunicação
- Introdução
- Concorrência e distribuição nos sistemas operativos e aplicações
- Gestão de ficheiros
- Objectivos, compromissos
- Concretização em Unix, Windows, etc.
- RAID e sistemas de ficheiros baseados em "diário".
- Sistemas de ficheiros distribuídos: NFS
- Programação concorrente
- Modelos baseados em memória partilhada, mensagens, e operações remotas
- Modelo cliente-servidor
- Resolução de exercícios
- Programação em sistemas distribuídos
- Motivação, problemas a resolver
- Mecanismos de comunicação
- Exercícios
- A. S. Tanenbaum, Modern Operating System,Prentice Hall, 1992.
- David R. Butenhof, Programming with POSIX Threads.
- W. Richard Steven, et al., UNIX Network Programming - Volume 1: The Sockets Networking API, 3rd Edition, 2003.
- Get to Know Raid
- Raid primer
- Linux Magazine: Journaling File Systems
- The design and implementation of a log-structured file system
- Linux Links: File Systems
- Unix File Systems: Evolution, Design, and Implementation
- POSIX Threads Programming
- Richards Stevens, et al.,Advanced Programming in the Unix Environment,2nd edition, 1990
- U. Vahalia, Unix Internals,Prentice Hall, 1996
- Windows Services for UNIX
- Beej's Guide to Network Programming
Esta disciplina surgiu pela primeira vez no ano lectivo de 1995/96, como consequência da restruturação das Licenciaturas em Engenharia de Sistemas e Informática e Matemática e Ciências da Computação. O seu programa é em parte coincidente com o do segundo semestre da antiga disciplina de Sistemas Operativos, embora tenham sido feitas actualizações consideráveis de modo a acompanhar a evolução dos sistemas operativos (e linguagens) actuais, sobretudo no que diz respeito ao suporte a aplicações distribuídas.
Nesta disciplina aprofundam-se os conhecimentos de programação concorrente adquiridos no primeiro semestre em Sistemas Operativos I e entra-se já no desenvolvimento de aplicações distribuídas baseadas no modelo cliente-servidor. Tira-se partido da mudança da componente de gestão de ficheiros do primeiro para o segundo semestre para ilustrar o modelo cliente-servidor e os sistemas de ficheiros para ambientes distribuídos (NFS). Usam-se ainda ficheiros para recordar a necessidade de exclusão mútua no acesso simultâneo a recursos, passando-se depois aos algoritmos clássicos de sincronização tipo "leitores-escritores" com prioridades, que são resolvidos com semáforos, mutexes, mensagens, etc, em sistemas operativos como o Linux, Solaris ou Windows XP. Capitaliza-se nos conhecimentos de processos, threads e mecanismos de comunicação para desenvolver servidores (acesso a bases de dados, impressoras, etc), que posteriormente são distribuídos de uma forma natural à custa da utilização de sockets. A disciplina termina com o desenvolvimento de pequenas aplicações distribuídas em Java.
Esta é uma disciplina cuja componente dita "teórica" é muito reduzida. Cobre essencialmente aspectos de gestão avançada de ficheiros, incluindo a percepção das vantagens da utilização de discos RAID e de sistemas de ficheiros baseados em "diário" (Log-strutured File Systems), descendo ainda ao escalonamento de pedidos de transferência de disco. Por este motivo, procura-se que uma parte das aulas teóricas seja de diálogo e síntese de conceitos, e dedica-se o resto das aulas à discussão de problemas de programação concorrente e distribuída, e à resolução de exames de anos anteriores. Pelo mesmo motivo, a cotação do exame final assenta essencialmente nos exercícios práticos.
-
Apontamentos das Aulas Teóricas
- Pasta com documentos de apoio às Aulas Teóricas
-
Exames SOII
- Sortido de exames de anos anteriores
-
Dúvidas SOII
- 6ª-feira, 7Set2007, 14H30, lab SO