Saltar para:
Logótipo
Você está em: Início > EEC0139

Sistemas Operativos

Código: EEC0139     Sigla: SO

Áreas Científicas
Classificação Área Científica
OFICIAL Informática

Ocorrência: 2014/2015 - 2S Ícone do Moodle

Ativa? Sim
Página Web: http://web.fe.up.pt/~pfs/aulas/so2015/
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Mestrado Integrado em Engenharia Electrotécnica e de Computadores

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
MIEEC 69 Plano de estudos oficial 3 - 6 56 162

Língua de trabalho

Português - Suitable for English-speaking students

Objetivos

1- Enquadramento

Os sistemas operativos são um componente essencial em praticamente qualquer sistema baseado em (micro)processadores. O conhecimento da sua organização e da sua implementação é essencial para conseguir um melhor aproveitamento dos recursos físicos desse tipo de sistemas. Este conhecimento é especialmente útil para o desenvolvimento de sistemas embebidos muito simples (tipicamente uma área do engenheiro eletrotécnico e de computadores) uma vez que este tipo de sistemas frequentemente não usam um sistema operativo completo, mas precisam de algumas das funcionalidades dum sistema operativo.

Adicionalmente, os sistemas operativos são inerentemente concorrentes, fornecendo um contexto concreto para o estudo dos problemas da concorrência, cada vez mais importantes dada a ubiquidade de processadores com múltiplos núcleos.

2- Objetivos específicos

Os objetivos desta UC são

  • o estudo dos sistemas operativos incluindo:
    •  a sua organização
    • os serviços por ele fornecidos
    • a implementação desses serviços
  • o desenvolvimento de capacidades de programação:
    • ao nível da API do sistema operativo
    • de "device-drivers" muito simples
  • o estudo dos problemas resultantes da execução concorrente de múltiplos processos/"threads", incluindo
    • problemas de sincronização clássicos;
    • mecanismos de sincronização
  • o desenvolvimento da capacidade de programar aplicações concorrentes (sem "race-conditions")

3- Distribuição Percentual

Científica: 30%

Tecnológica: 70%

 

 

Resultados de aprendizagem e competências

Os alunos que concluam com sucesso esta unidade curricular deverão ser capazes de:

  • descrever as funções e a estrutura de um sistema operativo, e identificar as suas abstracções principais;
  • identificar os componentes essenciais de um sistema operativo e descrever a sua funcionalidade;
  • descrever as estruturas de dados e os algoritmos principais usados por cada um destes componentes, e explicar as vantagens e as desvantagens desses algoritmos;
  • descrever a forma como esses componentes interagem entre si e identificar aqueles que intervêm na prestação dos serviços mais comuns dum SO;
  • desenvolver programas que utilizem a API de um sistema operativo concreto (Linux);
  • desenvolver “device drivers” muito simples para o sistema operativo Linux;
  • explicar os problemas que podem surgir quando da execução concorrente de processos concorrentes e como evitá-los;
  • identificar "race-conditions" em programas concorrentes e eliminá-las recorrendo aos mecanismos de sincronização adequados;
  • desenvolver programas concorrentes sem "race-conditions".

Modo de trabalho

Presencial

Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)

Espera-se que os alunos:

  • tenham experiência de programação em C ou C++;
  • tenham conhecimentos de arquitectura de computadores.

Programa

Introdução aos sistemas operativos: conceitos, funções e interfaces. Arquitectura do SO. Núcleo ("kernel") do SO. Núcleos monolíticos e micro-núcleos. Gestão de processos. Modelo, escalonamento de processos e comunicação entre processos. API para gestão de processos. Concorrência: multiprogramação, sincronização e bloqueio mútuo. API POSIX para "threads" e respectivos mecanismos de sincronização. Gestão de entradas/saídas. Dispositivos, controladores, interrupções."Device drivers". Gestão de memória. Memória física e virtual. Paginação e segmentação. Sistema de ficheiros: abstrações e sua implementação. API para acesso a ficheiros. Segurança em sistemas operativos. Autenticação e autorização. Mecanismos de proteção e de confinamento.

Bibliografia Obrigatória

José Alves Marques,... [et al.]; Sistemas operativos. ISBN: 978-972-722-575-0

Bibliografia Complementar

Jonathan Corbet, Alessandro Rubini and Greg Kroah-Hartman; Linux Device Drivers, 3rd Ed., O'Reilly Media, Inc., 2005. ISBN: 0-596-00590-3 (Disponível na Web através de: http://lwn.net/Kernel/LDD3/)
Andrew S. Tanenbaum; Modern operating systems. ISBN: 0-13-813459-6 (Versões anteriores são igualmente valiosas, embora não se recomende a sua aquisição)
Abraham Silberschatz, Peter Baer Galvin, Greg Gagne; Operating system concepts. ISBN: 0-471-69466-5 (Versões anteriores são igualmente úteis. Aliás, esta não é a versão mais recente. )
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau; Operating Systems: Three Easy Pieces, Arapci-Dusseau Books, 2011. ISBN: 9781105979125 (Disponível gratuitamente em: http://pages.cs.wisc.edu/~remzi/OSTEP/)

Observações Bibliográficas

Esta UC concentra-se nos conceitos fundamentais de sistemas operativos (SO), a maioria dos quais foi estabelecido há algumas décadas. Assim, livros sobre SO dos anos 1990 ou mesmo dos anos 1980 cobrem a maior parte da matéria. É sem dúvida preferível estudar por um desses livros do que não estudar por livro algum, i.e. do que usar apenas as transparências disponibilizadas.

Métodos de ensino e atividades de aprendizagem

As aulas teóricas são de exposição, apresentadas normalmente com auxílio de projector. Sempre que fôr adequado, exemplos que ajudem à compreensão dos tópicos serão apresentados. A matéria exposta segue de perto a contida na bibliografia principal. As aulas laboratoriais são de programação, quer para desenvolver pequenos programas que usam as chamadas ao sistema do SO quer para desenvolver o projecto.

Em finais de Abril os estudantes deverão realizar uma prova de programação consistindo na resolução de problemas semelhantes aos apresentados nas aulas laboratoriais. A prova é realizada num computador com acesso apenas à documentação existente nesse computador. A duração da prova é de 3 horas.

No final do semestre os estudantes deverão entregar um pequeno projeto de desenvolvimento dum "char device driver" simples para Linux.

O exame final, com duração prevista de 2 horas, incide não só sobre aspetos teóricos mas também sobre programação, incluindo o projeto.

Software

Linux
gcc: compilador de C da GNU
Virtual Box OSE

Palavras Chave

Ciências Físicas > Ciência de computadores > Sistema de computadores
Ciências Físicas > Ciência de computadores > Programação
Ciências Físicas > Ciência de computadores

Tipo de avaliação

Avaliação distribuída com exame final

Componentes de Avaliação

Designação Peso (%)
Exame 50,00
Participação presencial 10,00
Teste 20,00
Trabalho laboratorial 20,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 76,00
Frequência das aulas 56,00
Trabalho laboratorial 30,00
Total: 162,00

Obtenção de frequência

Não ultrapassagem do número limite de faltas e obtenção de um mínimo de 40% a cada uma das componentes da nota de frequência (teste e trabalho laboratorial) e de 45% na nota de frequência (média das classificações da prova de programação e do projecto).

Fórmula de cálculo da classificação final

0,5ET + 0,1 PA + 0,2 PP + 0,2 Pr

onde:

ET- Classificação do exame teórico (Exame)

PA- Classificação da participação nas aulas

PP- Classificação da prova de programação (Teste)

Pr- Classificação do projecto (Trabalho laboratorial)

Provas e trabalhos especiais

Em épocas de exame especiais, os estudantes que não tenham obtido frequência terão que realizar um projeto, o qual terá que ser acordado o regente, e/ou uma prova de programação.

Avaliação especial (TE, DA, ...)

No caso dos estudantes com estatuto especial, porque dispensados da frequência das aulas práticas, os 10% da classificação de participação nas aulas serão igualmente distribuídos pela prova de programação e pelo projecto, os quais passam a ter um peso de 25% cada. A prova de programação é realizada juntamente com os restantes alunos. O projecto terá que ser apresentado na última semana de aulas, em local e data a acordar com o regente da disciplina.

Melhoria de classificação

A melhoria da classificação do exame teórico é realizada mediante submissão a outro exame teórico semelhante ao da época normal ( e com o mesmo peso) nas épocas previstas para o efeito.

Observações

As aulas poderão ser dadas em inglês se todos os alunos inscritos concordarem ou se algum dos alunos inscritos não falar Português.

Recomendar Página Voltar ao Topo
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2024-10-31 às 23:01:44 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias