Sistemas Informáticos

Voltar à ou à


Curso: Licenciatura em Engenharia Electrotécnica e de Computadores
Ano lectivo: 1997/98
Ano: 4º ano, ramos TC e IS, 2º semestre
Escolaridade: 3 horas de aulas teóricas + 1 hora de aula teórico-prática por semana

Fui pela última vez o regente desta disicplina em 1997/98.


Docentes

Aulas teóricas

Francisco José de Oliveira Restivo, Professor Associado

Aulas teórico-práticas

João António Correia Lopes, Professor Auxiliar


Objectivos

Introduzir os conceitos fundamentais dos sistemas operativos actuais, quer do ponto de vista funcional quer do ponto de vista arquitectural.

Formar programadores de sistema em UNIX.


Programa

Aulas Teóricas

Conceitos Fundamentais: Evolução Histórica dos Sistemas Operativos; Tipos de Sistemas Operativos; Linguagem de Comandos e Chamadas ao Sistema; Requisitos Funcionais;

Processos: Conceito de Processo; Ponto de Vista do Programador; Ponto de Vista do Sistema Operativo; Process Control Block (PCB); Estado dos Processos; Serviços de Gestão de Processos; Escalonamento; Algoritmos de Escalonamento; Avaliação da Performance;

Sincronização entre Processos: Exclusão Mútua; Semáforos; Requisitos em Hardware; Problemas Clássicos;

Comunicação e Sincronização entre Processos: Regiões Críticas; Monitores; Mensagens; Encravamentos (deadlock): Prevenir, Evitar; Detectar e Recuperar;

Gestão de Memória: Alocação Contígua: Partições Estáticas; Partições Dinâmicas; Segmentação; Protecção e Partilha da Memória;

Gestão da Memória: Alocação não Contígua: Paginação; Memória Virtual: Algoritmos de Substituição; Requisitos em Hardware; Protecção e Partilha da Memória;

Gestão de Ficheiros: Linguagem de Comandos; Serviços do Sistema Operativo; Organização dos Discos; Gestão dos Discos: Alocação Contígua e Alocação não Contígua;

Segurança e Protecção: Autenticação; Protecção e Controlo de Acessos; Criptografia; Virus;

Sistemas Multi-processador: Classificação; Interligações; Tipos de Sistema Operativo; Programação Paralela; Sincronização;

Sistemas Distribuídos: Redes; Protocolos de Comunicação e Modelo OSI; Exclusão Mútua; Encravamentos; Sistemas Operativos.

Aulas Teórico-Práticas

Introdução ao curso (Programação avançada no ambiente UNIX).

Introdução ao UNIX. História das diversas implementações; standards; arquitectura do UNIX; perspectiva do utilizador; introdução ao Kernel.

Serviços fornecidos pelo UNIX: login & shells; ficheiros e directórios; entrada/saída (E/S); programas e processos; tratamento de erros; identificação de utilizadores; sinais; datas; system calls & library functions.

Ficheiros e E/S: descritores de ficheiros; funções para manipulação de ficheiros; estruturas de gestão de ficheiros; partilha de ficheiros; utilização de fcntl().

Manuaseamento de ficheiros e directórios: tipos de ficheiros; utilização de lstat(); tamanho de ficheiros; sistemas de ficheiros; links; permissões; definição do modo; datas; criação e leitura de directórios; sincronização de discos e ficheiros.

Controlo de terminais: comunicação série; a estrutura termios; funções para controlo de terminais; atributos de terminais; modos de funcionamento.

Biblioteca standard de E/S: streams & FILE; buffering; ficheiros temporários; E/S formatado.

Ambiente do processo: a função main(); terminação; argumentos da linha de comando; manipulação do ambiente; mapa de memória de um programa em C; alocação de memória; setjmp (), longjmp() e stack frames; variáveis automatic, register & volatile; recursos.

Controlo de processos: identificadores de processos; criação de processos ; utilização de fork(); partilha de ficheiros; terminação.

Substituição de processos; utilização de exec(); mudanças de identificação.

Relação entre processos: login por terminal; sessõees; terminal de controlo; gestão de processos; influencia de job control.

Sinais: tratamento de sinais; utilização de signal(); sinais e chamadas ao sistema; conjuntos de sinais; utilização de sigsuspend()

Comunicação interprocessos: pipes; coprocessos; FIFO; comunicação clientes - servidor; IPC do sistema V; filas de mensagens; semáforos; memória partilhada.


Metodologia

Aulas Teóricas

Exposição detalhada da matéria e resolução de problemas ilustrativos.

Aulas Teórico-Práticas

Exposição da matéria e resolução dos exercícios necessários à sua compreensão clara.

Estímulo à abertura de contas numa máquina UNIX, para a resolução de exercícios e comunicação com o docente.

Em duas aulas, resolução de pequenos trabalhos individuais, com incidência na avaliação final.

Avaliação

Uma prova escrita em duas partes de 60 minutos, a primeira, sem consulta de elementos de estudo, referente à matéria das aulas teóricas e a segunda referente à matéria das aulas práticas. O peso de cada uma das partes da prova escrita na classificação é de 50%

E = 0.5T + 0.5P

A classificação dos trabalhos individuais é considerada na classificação final, com um peso variável entre 0 e 20%, conforme a classificação da prova escrita

F = E + 0.01(20 - E)I

(todas as classificaçõs entre 0 e 20).


Textos de Apoio

O texto base para o estudo da parte teórica desta disciplina é

Para a parte prática, além dos elementos fornecidos, recomenda-se

Recomenda-se ainda qualquer dos seguintes livros para o estudo da parte teórica desta disciplina

  • M. Milenkovic, Operating Systems. Concepts and Design (2nd edition), McGraw-Hill (1992)
  • A. S. Tanenbaum, Modern Operating Systems, Prentice-Hall (1992)
  • A. S. Tanenbaum, A. S. Woodhull, Operating Systems: Design and Implementation (2nd edition), Prentice-Hall (1997)
  • D.M.Dhamdhere, Systems Programming and Operating Systems (2nd edition), McGraw-Hill (1997)


As transparências de Silberschatz & Gavin

Os exames 1996/97 (parte teórica)

(veja aqui como imprimir ficheiros PostScript)


E pode ver aqui as últimas classificações na disciplina.

Na Internet


Voltar à ou à

Página criada por Francisco J. Restivo. Modificada pela última vez em 1999-12-09.