Anúncios: 

[19.2.2010] As notas finais estão lançadas no CLIP nos registos de cada aluno. Os exames de recurso podem ser consultados na terça, dia 23/2, 16h-17h, Gab. 2.43-II.

[19.2.2010] Enunciado do exame de recurso[.doc]

 [29.1.2010] Salas para o exame do dia 29, `as 17h: o ponto de encontro é junto dos anfiteatros 1C ou 1D no Edifício VII, a partir do qual se fará a distribuição.
  • 1A/Ed.VII
  • 1B/Ed.VII
  • 1C/Ed.VII
  • 1D/Ed.VII

[25.1.20-10] Horário de dúvidas esta semana: dia 27, 10h-12h. Contacte <jcc@di.fct.unl.pt>

[25.1.2010]
Enunciado do 1o exame [.doc] [res1.c] [res2.c] [res3.c]

[20.1.2010] As notas do Exame Normal estão afixadas no CLIP na secção Documentação de apoio: subsecção Outros. As notas finais serão também aí afixadas.
(Grades of the Normal Exam are to be found via CLIP
on section Documentação de apoio: subsection Outros). Os exames podem ser vistos na 6af, dia 22.1.2010 às 11h30. Contacte os Profs Hervé Paulino ou Paulo Lopes.

[8.1.2010]
Enunciado do 1o teste [.doc]. Resolução-Questao-4.
Enunciado do 2o teste [.doc]. Resolução-Questão-4: está nos acetatos 75 e 76 da aula Teórica 22.

[8.1.2010] Os alunos que dispensaram de exame, podem: (a) vir ao exame normal (11.1) mas nesse caso ficarão com a nota do exame (mantendo a da prática com peso 15%), ou (b) podem inscrever-se oficialmente para Melhoria de Nota na Rep Académica e vir ao exame na data de recurso - e nesse caso terão a melhor das notas (mantendo a nota da prática com peso 15%).

[5.1.2010] A matéria para o exame é a mesma matéria que veio para os dois testes.

[30.12.2009] As notas do 2o teste estão no CLIP na secção Documentação de apoio: subsecção Outros. As notas finais das práticas serão também aí afixadas.
(Grades of the 2nd Test can be found via CLIP
on section Documentação de apoio: subsection Outros).
Os testes podem ser vistos na 3af, dia 5.1.2010 às 11h30. Contacte os Profs Hervé Paulino ou Paulo Lopes.

[30.12.2009]
Enunciado do 2o teste [.doc]

[11.12.2009] Notas do 1o Teste [.teste1] Os testes podem ser vistos na 5af dia 17.12.2009 às 11h30. Contacte os Profs Hervé Paulino ou Paulo Lopes.

[11.12.2009] A matéria para o 2o teste (16.12.2009, 14h00) abrange toda a matéria dada até à 25a aula, inclusivé (veja os slides e apontamentos na página das Teóricas).

Exemplos de testes  e exames: [t1] [t2] [t3] [t4] [t5] [t6]  

Veja os slides e apontamentos das aulas Teóricas sobre a matéria do teste
(the same instructions in English: here):
Programação concorrente entre Processos e entre Threads de um mesmo Processo.
Programação concorrente com comunicação por memória partilhada. Algoritmos baseados em espera activa. Semáforos.
Programação concorrente baseada em comunicação por mensagens
Servidores sequenciais e concorrentes 
Comunicação por mensagens no Unix. Filas de mensagens.
Sinais assíncronos no Unix.
Programação concorrente baseada em monitores. 
O Núcleo do Sistema de Operação. Gestão de processos pelo núcleo do SO. Algoritmos de escalonamento de processos (só o indicado na 25a aula).

Em termos de chamadas ao SO Unix e funções das quais tem de saber exactamente o protótipo das funções  e o significado de todos os argumentos:
-- as mesmas que para o 1o Teste;
+ as que bloqueiam processos (pause, sleep)
+ as que operam sobre filas de mensagens (msgget, msgsnd, msgrcv);
+ as que operam sobre signals Unix (signal, kill, alarm) e as principais categorias de sinais
+ as que operam sobre Threads e Mutexes (pthread_create, pthread_join,  pthread_mutex_init, pthread_mutex_lock, pthread_mutex_unlock)
            
Os problemas sobre programação com memória partilhada entre processos, baseados em espera activa, semáforos ou em monitores, serão expressos em pseudo-código, tal como os exemplos dados ao longo das aulas teóricas:
- para os Semáforos, utilizam-se as definições de Dijkstra, com as operações de inicializar, P() e V()
- para os Monitores, utiliza-se o pseudo-código indicado nos exemplos das aulas, incluindo as primitivas que operam sobre variáveis de tipo condition (wait e signal)
- para os Monitores, incluem-se as primitivas que permitem programar no estilo dos monitores, mas ao nível de PThreads (pthread_cond_init, pthread_cond-wait,pthread_cond_signal,pthread_cond_broadcast)                                                                               (consulte a 23ª  aula teórica)
 
Consulta de elementos complementares:

    do livro recomendado UNIX System Programming:
             os capítulos de 1 a 6 (excepto o capítulo 4)
             do capítulo 8: as secções sobre os mecanismos de IPC Unix

    do livro recomendado Sistemas Operativos:
          os capítulos 1, 2, 3 (excepto a secção 3.7),
          do capítulo 4: as secções 4.1, 4.2 e 4.3.1, 4.3.2, 4.3.3,
          o capítulo 5 (excepto as secções 5.5.3 e  5.6)
          o capítulo 6 (excepto as secções 6.6 e 6.7.4)
          do capítulo 10: as secções 10.1, 10.2, 10.3.3 e 10.3.4
  

[3.12.2009] Os alunos do turno P7 (devido a não ter havido aula no dia 30.11) podem entregar os relatórios dos trabalhos T4+T5 no dia 20.12.2009, Os prazos dos restantes turnos mantêm-se conforme a tabela abaixo:
	 Turnos de 2af 					Turnos de 3af
inicio aulas entrega inicio aulas entrega
T1 - 28/9 3 25/10 28/9 3 18/10
T2 - 26/10 1 1/11 19/10 1 25/10
T3 - 2/11 2 19/11 26/10 2 12/11
T4 - 16/11 2 ----- 9/11 2 -----
T5 - 30/11 2 13/12 23/11 2 20/12
(só para o turno P7: 20/12)

Anúncios antigos:

[30.11.2-009] Por impossibilidade do Prof Paulo Lopes, os alunos do turno P7 não terão aula pr'atica no dia 30.11.2009.

[19.11.2009] Os prazos de entrega do trabalho T4 passam a coincidir com os do trabalho T5, que é uma continuação do T4 (veja  a tabela abaixo indicada). Nos prazos do T5, deverão ser entregues os relatórios relativos às componentes T4+T5.

[12.11.2009] Enunciado do 1o teste [.doc]

[7.11.2009] Os prazos de entrega do TP T3 foram alterados. Esta alteração não afecta a sequência das aulas práticas que são dedicadas ao trabalho T4, a partir de 16/11 e de 9/11, respectivamente, para os turnos de 2a feira e de 3a feira.

Turnos de 2af Turnos de 3af
inicio aulas entrega inicio aulas entrega
T1 - 28/9 3* 25/10 28/9 3 18/10
T2 - 26/10 1 1/11 19/10 1 25/10
T3 - 2/11 2 19/11 26/10 2 12/11
T4 - 16/11 2 ----- 9/11 2 -----
T5 - 30/11 2 13/12 23/11 2* 20/12
(só o turno P7: 20/12)

3* - o trabalho T1 tem um feriado numa 2af (5/10)
2* - o trabalho T5 tem 2 feriados à 3af (1/12 e 8/12)

[26.10.2009] Os alunos devem comparecer nas salas para o 1o teste, segundo a seguinte distrbuição:
No Edifício VII: alunos desde 10556 a 28296
No Edifício II: alunos de 28309 a 32102
e alunos com processo de inscrição não concluído

[23.10.2009] Para o teste de 28/10/2009, às 17h00, os alunos devem trazer o seu cartão de identificação e folhas brancas de formato A4 (não há folhas especiais para o teste). O teste é sem consulta. Todos os elementos, para além das folhas e material de escrita serão depositados junto à entrada da sala. As salas reservadas são as seguintes:
  • 127/Ed.II, 128/Ed.II. 204/Ed.II
  • 1B/Ed.VII, 1C/Ed.VII, 2B/Ed.VII, 2A/Ed.VII
[23.10.2009] Leituras recomendadas: slides e apontamentos das aulas Teóricas
e ainda:
- do livro UNIX System Programming:
capítulos 1 e 2 (excepto secção 2.1.14)
capítulo 3: só as secções 3.1.1, 3.2.1, 3.2.2 e 3.2.3,
capítulo 5 todo (no entanto, na secção 5.10 só as secções 5.10.1 (The process-id) e 5.10.6 (The current working directory)
capítulo 7 (excepto secções 7.1.5, 7.1.6 e 7.2)
- do livro Sistemas Operativos: capítulos 1, 2, 3 (excepto secções 3,6.3 e 3.7)

[21.10.2009] Por indisponibilidade de salas na Faculdade, a hora de início do 1o Teste, do dia 28/10/2009 foi alterada para as 17h.

[19.10.2009] Exemplos de testes típicos: [T1] [T2] [T3] [Res1] [Res2]. Para o 1o teste considere apenas as questões que se referem à matéria dada até à 8ª aula teórica, inclusivé:
 
Introdução aos Sistemas de Operação.
Evolução histórica e conceitos fundamentais dos SO
Ficheiros e canais de entrada e saída. Caso do sistema Unix.
Processos num Sistemas de Operação: conceito e caso do sistema Unix.
Processos num Sistemas de Operação: redirecção de canais e comunicação por pipes. Caso do sistema Unix
[19.10.2009] Matéria para o 1o Teste: a matéria dada até à 8ª aula teórica, inclusivé.

[19.10.2009] Na entrega dos trabalhos, os alunos devem indicar o seu turno e grupo das práticas.

[14.10.2009] Todas as questões relacionadas com as aulas práticas devem ser tratadas contactando o docente do turno prático frequentado: Prof. Hervé Paulino (herve AT di.fct.unl.pt) ou Prof. Paulo Lopes (pal AT di.fct.unl.pt) (que substituirá o Prof. Rui Marques até ao fim do semestre).

[14.10.2009] Prazos de entrega dos TP:

Turnos de 2af Turnos de 3af
inicio aulas entrega inicio aulas entrega
T1 - 28/9 3* 25/10 28/9 3 18/10
T2 - 26/10 1 1/11 19/10 1 25/10
T3 - 2/11 2 15/11 26/10 2 8/11
T4 - 16/11 2 29/11 9/11 2 22/11
T5 - 30/11 2 13/12 23/11 2* 20/12

3* - o trabalho T1 tem um feriado numa 2af (5/10)
2* - o trabalho T5 tem 2 feriados à 3af (1/12 e 8/12)

[8.10.2009] Veja um conjunto de notas de apoio das aulas, junto aos sumários das aulas Teóricas.

[7.10.2009] AVISO para todos os turnos - Relatório do Trabalho Prático: a entrega do primeiro trabalho prático deve conter o código desenvolvido  devidamente comentado e um relatório sucinto (máximo 3 páginas)  descrevendo a solução apresentada. Estes elementos devem ser arquivados  num ficheiro ZIP e enviados via e-mail, com o assunto "FSO - entrega T1",  para o docente do turno prático frequentado: Prof. Hervé Paulino (herve AT di.fct.unl.pt) ou Prof. Paulo Lopes (pal AT di.fct.unl.pt) (que substituirá o Prof. Rui Marques até ao fim do semestre).

[7.10.2009] 1o teste de auto-avaliação [teste1.txt]

[28.09.2009] Os alunos com frequência do ano anterior e que queiram realizar os TP este ano, devem informar os professores das práticas.  

[21.09.2009] Veja os sumários e slides das aulas: Teóricas.

[15.09.2009] Foi criado um novo turno prático - segundas-feiras, às 15h. 

[02.09.2008] A 1ª aula teórica é na 1a semana de aulas. Há dois turnos teóricos. As aulas práticas começam na semana seguinte à das aulas teóricas. Os alunos devem inscrever-se num turno prático e realizar os trabalhos dentro dos prazos para obter frequência na disciplina. Os alunos com frequência obtida em 2008/09, mantêm a frequência este ano de 2009/10 (veja as regras de Avaliação).

[02/09/2009] A página da edição da disciplina de 2008/09.



Objectivos

Compreender as funcionalidades dos sistemas de operação dos computadores e as suas interfaces de utilização. Compreender as abstracções do sistema de operação para a execução de programas, o arquivo e a entrada/saída da informação. Compreender os modelos de programação de sistemas a nível das interfaces das chamadas ao sistema para o controlo de processos e o acesso a ficheiros. Compreender os princípios da programação concorrente e os mecanismos de sincronização e comunicação entre processos. Adquirir conhecimento dos aspectos teóricos e dos aspectos práticos, estes últimos através da realização de trabalhos práticos laboratoriais sobre o sistema UNIX.

Programa

1. Introdução aos sistemas de operação dos computadores:  evolução histórica, tipos de sistemas, interfaces de utilização e chamadas ao sistema.

2. Conceito de processo: noções de processador virtual, memória virtual e dispositivos virtuais de comunicação com o exterior.  Modelo de execução de processos e princípios da sua realização. Noção de contexto de execução de um processo: estado de um processo e espaço de endereçamento.

3. Sistema de ficheiros e programação de entradas e saídas [Caps, 2, 3, 4  e 11 do livro UNIX System Programming]

  • Canais virtuais de entrada e saída: programação ao nível das chamadas ao sistema.
  • Sistemas de ficheiros: organização e operações de acesso.

4. Controlo de processos [Caps. 5, 6 e 7 do livro UNIX System Programming]

  • Etapas da vida de um processo num sistema de operação: criação, carregamento e activação, estados de execução e terminação.
  • Noções de eventos síncronos e assíncronos.
  • Modelos de concorrência: entre processos e interna a um processo. Processos "pesados" e "leves".

5. Programação concorrente [Caps. 1 a 9  do livro Principles of Concurrent and Distributed Programming]

  • Conceitos de execução sequencial e concorrente. Noções de atomicidade e de traços de execução.
  • Modelos de competição e de cooperação entre processos concorrentes.
  • Exclusão mútua, produtores e consumidores, leitores e escritores, clientes e servidores, transacções.
  • Sincronização de processos. Algoritmos baseados em espera activa, em semáforos e em monitores.
  • Comunicação entre processos: modelos de memória partilhada e de memória distribuída (em particular, baseados em troca de mensagens).

6. Chamadas ao sistema. Caso Unix.

Prática laboratorial: Programação ao nível da interface de chamadas a um sistema multiprogramado, da família  UNIX  (mais precisamente o  Linux ) Programação de sistemas:  programação em  C baseada nas chamadas ao sistema de operação. Desenvolvimento de programas de acesso a  ficheiros,  criação e composição de  processos  concorrentes, comunicação e sincronização usando  memória partilhada, semáforos, e mensagens.

Bibliografia

Referências de base
  • Notas das aulas teóricas (nesta página, junto aos Sumários) e guia das práticas.(nesta página, junto aos Trabalhos).
  • Sistemas Operativos, José A. Marques et al., FCA - Editora de Informática, 2009, ISBN 978-972-722-575-0
  • UNIX System Programming, 2nd Edition, K. Haviland, D. Gray e B. Salama, Addison-Wesley, 1998
  • B. W. Kernighan, D. M. Ritchie, The C Programming Language, 2nd Edition, Prentice Hall, 1988
  • M. Ben-Ari, Principles of Concurrent and Distributed Programming, Addison-Wesley (Pearson Education),  2006 - Livro de consulta complementar
Referências disponíveis através da rede

Auto-avaliação

Haverá enunciados de testes de auto-avaliação, publicados nesta página, quinzenalmente. Aconselham-se os alunos a tentarem resolvê-los e procurarem esclarecer as sua dúvidas, junto dos docentes, durante o semestre lectivo.

Aulas práticas

Uso de um sistema multiprogramado, da família  UNIX  (mais precisamente o  Linux ) Programação de sistemas baseada nas chamadas ao sistema de operação. Desenvolvimento de programas de acesso a  ficheiros,  criação e composição de  processos, Programação  concorrente com mecanismos de, comunicação e sincronização usando  memória partilhada, semáforos, threads e monitores e de memória distribuída (mensagens).

Para a obtenção de frequência os alunos têm de fazer  os  trabalhos práticos e satisfazer as condições abaixo indicadas.

Regras de avaliação

Trabalhos

São 5 trabalhos a realizar nas aulas práticas, por grupos de 2 alunos.

Frequência na cadeira

Para se obter frequência na cadeira e ter nota final  é necessário ter pelo menos 10 na nota prática. Todos os alunos se devem inscrever num turno prático. Os alunos que comprovem o seu estatuto de trabalhador estudante não são obrigados a ir às aulas práticas, mas têm de cumprir os mesmos requesitos de entrega dos trabalhos práticos, nos prazos indicados.

Testes

(sujeito à confirmação pela CPLEI)
  • 1º teste: dia 28 de Outubro, às 17h (nova hora de início).
  • 2º teste: dia 16 de Dezembro, às 14h
  • Nota final

    • Nota Final = 0.85*NT+0.15*NP em que NT é a parcela da avaliação por testes ou exame e NP é  a parcela resultante da avaliação da componente prática laboratorial.
    • NT
      • obtida através de 2 testes, realizados ao longo do semestre, ou através do exame final
      • os testes e o exame são sem consulta,  e cobrem as matérias teórica e prática
      • Se optar por fazer  a avaliação por testes: NT = 0.5* NT1+0.5*NT2 (NT1 e NT2 são as notas dos testes)
        • e, nesse caso, se  Nota Final = 0.85*NT+0.15*NP for >= 9.5 após os testes, tem dispensa de exame.
      • Se, tendo dispensado de exame, decidir comparecer a exame final, a sua componente de nota NT = Nota do Exame. A componente NP mantém-se. (note que, neste caso, pode sempre inscrever-se para Melhoria de Nota, na Rep. Académica).
      • Se não dispensou, após ter feito os testes, tem de fazer o exame. A componente NP mantém-se.
    • NP:
      • Práticas laboratoriais:  realização de 5 trabalhos, grupos 2 alunos. A nota atribuída por trabalho depende do desempenho do aluno, da demonstração dos trabalhos práticos e dos relatórios entregues.  
        Obtém-se  a nota final da prática laboratorial NP final numa escala de 0 a 20.
      • Frequência: é exigida para se obter uma nota final na disciplina; tem frequência quem satisfizer a seguinte condição:
        • NP  >= 9.5
    • Os alunos que obtiveram frequência na disciplina em 2008/09, mantêm a frequência na disciplina em 2009/10. Assim, não precisam de se inscreverem nas práticas e, nesse caso, a sua nota final na disciplina será a nota obtida nos testes ou no exame (NotaFinal = NT). No entanto, se realizarem os trabalhos práticos, a sua nota final  terá em conta a nota obtida nas práticas (NP) neste ano de 2009/10: Nota Final = 0.85*NT+0.15*NP. Neste caso, devem comunicar esta intenção aos docentes das práticas.
    • Os alunos podem fazer Melhoria de nota através do regime oficial, com inscrição em Exame de Melhoria de Nota, pela Rep.Académica.