Ficha de Unidade Curricular: Sistemas Operativos

Código: L.EIC015     Sigla: SO

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

Ocorrência: 2021/2022 - 2S Ícone do Moodle

Ativa? Sim
Página Web: https://moodle.up.pt/course/view.php?id=1639
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Licenciatura em Engenharia Informática e Computação

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
L.EIC 281 Plano Oficial 2 - 6 52 162

Docência - Responsabilidades

Docente Responsabilidade
Carlos Miguel Ferraz Baquero-Moreno Regente
Luís Miguel Barros Lopes Regente

Docência - Horas

Teóricas: 2,00
Teórico-Práticas: 2,00
Tipo Docente Turmas Horas
Teóricas Totais 2 4,00
Luís Miguel Barros Lopes 2,00
Carlos Miguel Ferraz Baquero-Moreno 2,00
Teórico-Práticas Totais 11 22,00
João Pedro Matos Teixeira Dias 4,00
Luís Miguel Barros Lopes 2,00
José Manuel de Magalhães Cruz 4,00
Carlos Miguel Ferraz Baquero-Moreno 6,00
André Nuno de Pinho Tavares Gurgo e Cirne 2,00
Mais informaçõesA ficha foi alterada no dia 2022-02-25.

Campos alterados: Métodos de ensino e atividades de aprendizagem, Fórmula de cálculo da classificação final, Melhoria de classificação, Obtenção de frequência, Bibliografia Complementar, Tipo de avaliação, Observações, Componentes de Avaliação e Ocupação, Bibliografia Obrigatória, Programa

Língua de trabalho

Português - Suitable for English-speaking students
Obs.: Se houver alunos inscritos não fluentes em Português, as aulas e as provas, na generalidade, serão em Inglês.

Objetivos

Os objetivos principais desta unidade curricular são fornecer os conhecimentos fundamentais sobre:
O1- a estrutura e o funcionamento de um sistema operativo genérico;
O2- a utilização da interface de programação (API) de um sistema operativo real.

Resultados de aprendizagem e competências

Os estudantes que concluirem com sucesso esta unidade curricular, deverão ser capazes de:
OA1- descrever as funções e a estrutura geral de um sistema operativo, e identificar as abstracções principais que ele fornece;
OA2- descrever o funcionamento dos componentes essenciais de um sistema operativo, a forma como esses componentes interagem entre si e os algoritmos fundamentais usados na sua implementação;
OA3- desenvolver programas que usem e explorem a API de um sistema operativo tipo-Unix.

Modo de trabalho

B-learning

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

São pré-requisitos o conhecimento e prática de programação em linguagem C. É conveniente a frequência com aproveitamento da unidade curricular de Programação.

Programa

INTRODUÇÃO AOS SISTEMAS OPERATIVOS
- Objetivos e funções de um Sistema Operativo
- Arranque do Sistema Operativo
- Interface de comando: Shell
- Abstrações suportadas, chamadas de sistema e sua interface de programação
GESTÃO DE PROCESSOS
- Processos, ciclo de vida
- Escalonamento
- Comunicação entre processos: Sinais, mmap, pipes / sockets unix
THREADS E PROGRAMAÇÂO CONCORRENTE
- Threads, ciclo de vida
- Mecanismos de exclusão mútua: Peterson, test & set
- Locks, semáforos e variáveis de condição 
- Ordem de obtenção de locks e locking em duas fases.
- Estruturas de dados concorrentes: Filas, Barreiras, Registos leitor/escritor.
GESTÃO DE MEMÓRIA
- Hierarquia de memória
- Gestão básica de memória física
- Memória virtual
- Modelo de memória dos processos
- Segmentação e paginação
- Suporte ao nível do hardware
SISTEMA DE FICHEIROS
- Dispositivos de armazenamento de informação
- Partições, volumes, swap
- Sistemas de ficheiros
- Interface do sistema operativo e implementação
- Estruturas de dados auxiliares e gestão do espaço nas partições
SISTEMAS DE ENTRADA/SAÍDA
- Tipos de dispositivo de I/O e requisitos de largura de banda
- Interrupções e gestão de interrupções
- Controladores de dispositivos, devices drivers
- o directório /dev do UNIX

Tema prático complementar (coberto ao longo da unidade curricular):
PROGRAMAÇÃO DE SISTEMA (utilização da API do UNIX/LINUX)
- Manipulação de ficheiros e directórios
- Criação e gestão de processos e "threads"
- Intercomunicação entre processos: sinais, "pipes", FIFOs, e memória partilhada
- Sincronização entre processos e "threads": semáforos, mutexes e variáveis de condição

Bibliografia Obrigatória

Silberschatz, A.; Galvin, P. & Gagne, G.; Operating System Concepts (9th ed), John Wiley & Sons, Inc.
Arpaci-Dusseau, R.& Arpaci-Dusseau, A.; Operating Systems: Three Easy Pieces, Arpaci-Dusseau Books, 2018 ( (disponível gratuitamente em: http://pages.cs.wisc.edu/~remzi/OSTEP/))
Richard W. Stevens, Stephen A. Rago; Advanced Programming in the UNIX Environment (2nd edition), Addison-Wesley Professional, 2005. ISBN: 0201433079

Bibliografia Complementar

Stallings, W. ; Operating Systems: Internals and Design Principles (9th ed), Pearson, 2017
Stevens, W. Richard; Unix network programming. ISBN: 0-13-081-081-9
Marques,J.; Ferreira P.; Ribeiro,C. ; Veiga,L. & Rodrigues, R. ; Sistemas Operativos (2.a ed), FCA, 2012
Robbins, K. & Robbins , S.; UNIX systems programming: Communication, Concurrency And Threads (2th ed), Prentice Hall. , 2015
Tanenbaum, A & Bos, H. ; Modern Operating Systems. , Pearson Education Limited, 2015

Métodos de ensino e atividades de aprendizagem

- Aulas teóricas: exposição e discussão das matérias do programa.
- Aulas teórico-práticas: resolução de exercícios de programação envolvendo a utilização da API de Unix/Linux.
- Auto-aprendizagem: estudo das matérias, recorrendo à bibliografia e ao material disponibilizado na página Web da unidade curricular; resolução de exercícios e realização de trabalho prático, envolvendo a utilização da API.

 

Software

Sistema de desenvolvimento em C
Sistema operativo LINUX

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Trabalho prático ou de projeto 30,00
Teste 70,00
Total: 100,00

Componentes de Ocupação

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

Obtenção de frequência

 As aulas teóricas e práticas serão presenciais. Não haverá faltas nas aulas práticas mas serão registadas as presenças enquanto tal fôr requisitado devido à situação pandémica. 

A avaliação terá duas componentes:

Um trabalho prático (TP, avaliado para 6 valores);
Dois testes (T1 e T2, avaliados para 7 valores cada).

Para haver frequência à disciplina exige-se uma classificação mínima de 3 (em 6) na componente TP. Devido à alteração do trabalho prático não há dispensa dos requisitos de frequência para quem tenha obtido frequência no ano anterior. 

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

A nota final (Final) é obtida pela expressão:
   Final =  TP + T1 + T2

(Observação: TP, avaliado para 6 valores; T1 e T2, avaliados para 7 valores cada)

Para se obter a aprovação à disciplina exige-se uma classificação mínima na soma das componentes T1 e T2 de 50% da escala (7 valores em 14).

A realização de exame de recurso permite obter aprovação a uma ou ambas as componentes T1 e T2.

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

Os alunos com estatuto especial estão sujeitos às mesmas condições de avaliação dos alunos regulares, excepto que estão dispensados de frequentar as aulas práticas.
Os exames de época especial equivalem, pois, aos exames escritos das épocas normal e de recurso dos alunos regulares.

Melhoria de classificação

A nota de frequência só pode ser melhorada no ano lectivo seguinte.
A nota dos testes escritos pode ser melhorada nas épocas legalmente previstas.

Observações

Muito importante: os casos de conduta académica desonesta serão apresentados ao Director do Curso.