Acessibilidade

Sistemas Operativos - LEIC

Curso Engenharia Informática e de Computadores
Unidade Curricular

Sistemas Operativos

Obrigatória  X
Opcional  
Área Científica Engenharia Informática e de Computadores
Ano: 2º Semestre:  ECTS: 6 Total de Horas: 160
Horas de Contacto T:45,0 TP: PL:22,5 S: OT:
Docente

Jorge Manuel Rodrigues Martins Pião

T - Teórica; TP - Teórico-prática; PL - Prática Laboratorial; S - Seminário; OT - Orientação Tutorial.

  • Objetivos da aprendizagem

    Os estudantes que terminam com sucesso esta unidade curricular serão capazes de:

    (1) Identificar os objectivos fundamentais de um sistema operativo e os componentes essenciais da sua arquitectura interna.

    (2) Compreender os aspectos relevantes da implementação e utilização dos principais conceitos dos sistema operativos, nomeadamente os relativos à gestão de memória (física e virtual) e à gestão de processos e threads.

    (3) Desenvolver aplicações multi-programadas de complexidade média utilizando a API de um sistema operativo.

    (4) Compreender as diferenças entre operações de entradas/saídas síncronas e assíncronas.

    (5) Discutir aspectos relativos à implementação de servidores concorrentes escaláveis.

  • Programa

    I. O sistema operativo como uma abstracção alargada mas simplificada do hardware e gestor de acesso a recursos.

    II. Estudo da gestão de memória física e virtual, com realce para os seguintes tópicos: mecanismos de paginação e segmentação; memória virtual; working sets; políticas de substituição.

    III. Gestão de processos e threads. Estados e contexto de execução. Aspectos de implementação: troca de contexto; filas de bloqueio.

    IV. Programação concorrente : sincronização e exclusão mútua: evento, semáforo e mutex; deadlock e starvation. paralelização de algoritmos.

    V. Escalonamento de threads: prioridades estáticas e dinâmicas; critérios de escalonamento em plataformas cliente e servidoras.

    VI. Estudo de entradas e saídas, com realce para os seguintes tópicos: comunicação através de sockets; operações síncronas e assíncronas; construção de servidores concorrentes escaláveis.

  • Demonstração de coerência entre conteúdos programáticos e resultados da aprendizagem

    Nesta unidade curricular os estudantes compreendem o papel do sistema operativo no suporte à construção do software aplicacional, nomeadamente aplicações multi-programadas que comunicam com outras aplicações e serviços, locais ou remotos.

    As matérias são apresentadas numa visão complementar, simultaneamente bottom-up e top-down. Por um lado, são estudados aspetos de arquitectura, nomeadamente os mecanismos de gestão de memória física e virtual como suporte de isolamento entre espaços de endereçamento, do suporte à execução de mais fios de execução do que unidades de processamento e da construção de sincronizadores (pontos I, II e III dos conteúdos programáticos).

    Por outro lado, são enfatizados aspetos práticos do desenvolvimento de aplicações que lidam directamente com a API do sistema operativo para suportar a concorrência, a comunicação e o acesso a entradas/saídas(pontos IV, V e VI).

  • Metodologia de ensino e avaliação

    Ensino teórico-prático, estando previstas 30 aulas durante o semestre a que correspondem 67,5 horas de contacto (15 aulas de 3 horas e 15 de 1,5 horas). O tempo total de trabalho do estudante é de 160 horas. As aulas destinam-se à apresentação dos temas e de exemplos práticos de aplicação. Os tópicos principais são ainda explorados através da realização de séries de exercícios e de um trabalho final.

    Os tópicos principais são ainda explorados através da realização de trabalhos práticos em grupo. Os resultados da aprendizagem são avaliados individualmente através do teste escrito e das fichas realizadas durante o semestre, e na discussão final dos trabalhos de grupo.

  • Demonstração de coerência entre metodologias de ensino e resultados de aprendizagem

    O conhecimento relativo aos aspetos teóricos dos sistemas operativos é obtido em aulas interativas e através da realização de exercícios. As aulas teóricas complementam-se com aulas práticas em que os alunos terão de resolver problemas utilizando as ferramentas de desenvolvimento que irão ser utilizados na resolução dos trabalhos práticos.

    As competências indicadas nos pontos 2, 3, 4 e 5 dos objectivos de aprendizagem são desenvolvidas na realização dos trabalhos de grupo.

    São efectuadas aulas práticas de acompanhamento dos trabalhos de grupo, que complementam a avaliação, na discussão final, da globalidade dos objectivos de aprendizagem.

  • Bibliografia principal

    W. Stallings, Operating System: Internals and Design Principals, 6th edition, Prentice Hall, 2009

    Jeffrey Richter, Windows via C/C++, 5th edition, Microsoft Press, 2007