UFPR · DELT · Contact
Sistemas Operacionais Embarcados TE244

Avisos
  1. Bem vindo à página da disciplina TE244 Sistemas Operacionais Embarcados / Segundo semestre de 2016.
  2. Solução da questão 5 da primeira prova.
  3. Notas da primeira prova.
  4. A Justiça Eleitoral requisitou as instalações do Centro Politécnico para realização das eleições. As aulas estão suspensas em 27 e 28 de outubro, incluindo o período noturno. Não teremos aula nesta quinta à noite.
  5. Notas do Trabalho 1. De modo geral, os trabalhos foram muito bem feitos. Foi observada uma diversidade grande de soluções criativas. Parabéns pelo empenho.
  6. Desafio! Vale um ponto extra na média. Uma mensagem foi criptografada usando cifras polialfabéticas. A mensagem cifrada é a seguinte (em hexadecimal):

    C4 D8 CE D2 8E DA D8 D3 41 D9 C4 E3 CA E0 94 D8 81 75 B6 A6 89 CA DB 94 9B 91 52 AA 83 DD CA DB 94 DA D6 86 93 C6 D8 D2 D3 D7 CA D3 41 D4 83 D9 CA DC E7 CA D3 41 E1 D2 89 D9 D3 E1 CA 81 86 93 C8 D7 C8 DD E2 DD D3 82 E5 83 DE D2 8E E3 DB CA 86 E1 D7 CA C9 DD E6

    O alfabeto é a tabela ASCII. Você é capaz de descobrir a mensagem?
    Quem solucionar deve apresentar ao professor o método usado.

    Solucionaram este problema em uma semana: Felipe Makara, Adriano Leal e Ronny Milleo. Parabéns.

  7. Novo desafio! Vale um ponto extra na média. Uma mensagem foi criptografada usando a simples operação XOR. A mensagem cifrada é a seguinte (em hexadecimal):

    0E 00 03 2B 04 1A 2D 1C 2A 2D 1C 3D 08 1A 19 28 01 0D 1B 00 1A 2D 0C 30 22 1C 16 00 1A 1B 28 1C 31 1B 3A 19 00 00 38 3E 0A 11 12 1B 30 23 00 1D 2B 00 04 02 1A 2D 3E 0E 3D 11 15 1D 2C 30 0F 2B 03 1B 17 01 2B 29 30 12 00 06 0E 12 0B 0B 18 0C 0A 1B 0E 2C 13 0A 3D 15 15 02 2F 0A 03 2B 15 08 00 0E 00 21 0E 0B 12 2B 1B 38 02 1B 18 11 06 5E 30 32 2D 06 11 3E 17 00 3F 1D 0B 06 0C 08 5E 30 32 2D 06 11 3E 04 1D 28 1C 1D 15 49 36 1F 0E 36 3F 30 0B 0F 07 0A 2A 1A 1C 15 0B AA D5 0E 73 13 02 03 08 07 30 24 01 1F 01 0C 0C 06 1A 3B 29 43 3D 0C 15 06 3E 30 09 01 00 1B 00 0E 73 13 02 03 08 07 30 25 00 1C 06 0A 1B 5C 30 1A 3F 1B 03 3E 11 30 2C 30 1C 15 1F 08 1D 30 3B 2D 30 0E 0E 01 0C 38 1D 0F 2B 00 1A 06 0E 2D 13 1B 0D 0C 15 01 29 00 31 17 0A 07 06 0E 00 28 00 11 3E 1C 00 20 0A 00 07 4B

    O alfabeto é a tabela ASCII. Você é capaz de descobrir a mensagem?
    Quem solucionar deve apresentar ao professor o método usado.

    Solucionaram este problema em uma semana: Alysson de Freitas. Parabéns. O segundo desafio estava mais difícil porque eu retirei os espaços e substitui por "_" que tem código ASCII entre as letras minúsculas e maiúsculas.

  8. Atenção: Está encerrado o segundo desafio.
  9. Notas, atualizadas com o exame final. Estarei na minha sala na quinta feira, 22/12, 18h30min, para quem quiser ver o exame final.

Lista de Temas Tratados nas Aulas
Ficha 1. Ficha 2.
  1. Arquitetura básica de computadores. Processador. Barramento. Interrupções. Memória. Dispositivos de E/S.
  2. Organização básica do sistema operacional. Histórico de evolução dos sistemas operacionais e hardware.
  3. Escalonamento de processos. Sistemas batch. Sistemas de tempo compartilhado. Algoritmos de escalonamento. Princípios de escalonamento em sistemas de tempo real.
  4. Visualização de processos e comandos do sistema Unix.
  5. Concorrência e sincronização de processos. Problemas de concorrência. Alocação de recursos e deadlocks.
  6. Semáforos. Implementação em sistemas Unix.
  7. Gerência de Memória.
  8. Sistema de arquivos:
    1. Hardware de disco, bloco, cilindro, cabeças de leitura.
    2. Atributos de arquivos em sistemas Unix e Windows
    3. FAT - File Alocation Table
    4. Implementação com Nós I
    5. NTFS (NT File System)
    6. Cluster vs. bloco físico, algoritmo do elevador.
  9. Segurança: princípios de criptografia. Armazenamento de senhas.
  10. Sistema Embarcado Android

Critérios de avaliação

Média do semestre:
(P1+P2+T)/3
P1- Prova1, P2- Prova2, T- Média nos Trabalhos


Datas de provas

Especificação de trabalhos
  • Trabalho 1. Entrega e apresentação 06/10/2016. Adiado par13/10/2016. Padrão para o relatório (PDF). e respectivo fonte em Latex.
  • Entregar a segunda lista de exercícios na data da segunda prova. O peso da lista será de 30% na nota dos trabalhos.

  • Exemplos apresentados em aula
    1. Um computador muito simples
    2. Principais comandos Unix relacionados à processos
    3. Programa consumidor de CPU
    4. Exemplo Fork
    5. Programa consumidor de CPU versão multi-thread
    6. Servidor TCP (mono-thread)
    7. Comandos Unix - Processos
    8. Exemplo1: problema com condições de corrida. Para compilar, use gcc -o ex1 ex1.c -pthread
    9. Exemplo1: solução utilizando semáforo. Para compilar, use gcc -o ex1-solucao ex1-solucao.c -pthread -lrt
    10. Exemplo2: problema com condições de corrida. Para compilar, use gcc -o ex1 ex1.c -pthread
    11. Exemplo2: solução ineficiente utilizando semáforo. Para compilar, use gcc -o ex1-solucao ex1-solucao.c -pthread -lrt
    12. Simulação do problema produtor-consumidor. Neste exemplo, 2 produtores e 1 consumidor.
    13. Solução para o problema acima utilizando semáforos. Para compilar, use gcc -o produtor-consumidor produtor-consumidor.c -pthread -lrt
    14. Simulação do problema do jantar dos filósofos. A simulação usa semáforos para representar os garfos.

    Listas de Exercícios
    1. Lista 1
    2. Lista 2

    Referências
    1. TANENBAUM, A. S. Sistemas Operacionais Modernos. Ed. Pearson Prentice-Hall.
    2. SILBERCHATZ, A., J. L. Peterson. Sistemas Operacionais . Ed. Pearson Prentice-Hall.
    3. TANENBAUM, A. S. e A.S. Woodhull. Sistemas Operacionais - Projeto e Implementação. Ed. Bookman.
    4. DAVIS, W. S. Sistemas Operacionais. Ed. Campus.
    5. SHAY, W. A. Sistemas Operacionais. Ed. Makron Books
    6. MAZIERO, C. Sistemas Operacionais. On line: http://dainf.ct.utfpr.edu.br/~maziero/doku.php/so:livro_de_sistemas_operacionais

    Links
    1. Paper (2016): Tech Trends. (muito interessante)
    2. Paper (2016): Emerging Memory Technologies.
    3. Paper (2015): You Can Take It with You.
    4. Lecture/University of Texas: The Von Neumann Model.
    5. Livro: COMPUTER ORGANIZATION AND. DESIGN FUNDAMENTALS. Examining Computer Hardware from the Bottom to the Top. David Tarnoff.
    6. Simulador de conceitos fundamentais de sistemas operacionais: http://sourceforge.net/projects/oscsimulator/.
    7. Programa simulador de arquiteturas de computadores, desenvolvido para ensino: http://www.cs.colby.edu/djskrien/CPUSim/.
    8. Escalonamento de processos no Linux 1. Escalonamento de processos no Linux 2. Escalonamento de processos no Linux 3.
    9. Escalonamento de processos no Windows.
    10. Padrão POSIX.
    11. Transição para discos rígidos de formato avançado com setores de 4K.
    12. Design and Implementation of the Second Extended Filesystem
    13. Linux File System (EXT2)
    14. Organização de diretórios no Unix.
    15. Microsoft TechNet: How NTFS works.
    16. Microsoft TechNet: How FAT works.
    17. Métodos de criptografia clássica.

    Curiosidades
    1. Primeiro acidente fatal em carro com sistema semiautônomo.
    2. Agora hackers estão invadindo software embarcado - o último caso foi um Jeep Cherokee (junho de 2016). Os hackers invadiram o sistema via uma conexão Wifi, acionaram o ar-condicionado, rádio e o limpador de para-brisa. Depois, o carro foi desligado na Interstate 64 (US) - a invasão foi um teste combinado - veja mais em http://www.wired.com/2016/07/hackers-remotely-kill-jeep-highway/. Ainda este ano, um homem foi preso pelo FBI por supostamente enviar comandos para os motores a partir do sistema de entretenimento de certas aeronaves frabricadas pela Boing e Airbus (veja em http://edition.cnn.com/2016/05/17/us/fbi-hacker-flight-computer-systems/. Boing e Airbus negam problemas.
    3. Interessante vídeo de um acidente com um caça JAS 39 Gripen, em 1993, com causa atribuída a falha no software de controle: hhttps://www.youtube.com/watch?v=4iToQ2FykoI
    4. Em 1998 a NASA lançou a missão Mars Climate Orbiter, que deveria estudar a atmosfera, o clima e as alterações na superfície de Marte, assim como agir como relay na comunicação com um módulo de superfície. Em 23 de setembro de 1999 a sonda deveria entrar em órbita do planeta vermelho. No entanto, o computador de bordo comandou uma órbita muito baixa que mergulhou a sonda na atmosfera, resultando na destruição da sonda. O responsável pelo desastre foi uma interface entre dois sistemas: um produziu uma saída com unidades compatíveis com o SI (Sistema International), em libras-segundo e os dados foram alimentados como entrada em outro sistem que utilizava o sistema internacional em Newtons-segundo.
    5. O primeiro lançamento do foguete Ariane 5 foi realizado em 4 de junho de 1996, com uma carga de 500 milhões de dólares. Após 37 segundos de vôo o foguete teve que ser destruido devido a completa perda de controle. Os projetistas de software reusaram porções do código do Ariane 4. Em uma operação de conversão de ponto flutuante, especificamente um número de 64 bits que representava a velocidade horizontal do foguete em relação à plataforma, convertido em um número de 16 bits. Esta conversão funcionou no Ariane 4, mas a velocidade do Ariane 5 era maior, o que levou os dois computadores responsáveis pela guiagem do foguete a travarem. Depois disso, o computador de bordo (que não deveria tormar decisões nesta fase do lançamento) começou a tentar controlar o foguete e o tirou do curso. Veja um artigo em http://www.around.com/ariane.html
    6. Em 1997 pousou em Marte uma sonda da NASA, na missão chamada Mars Pathfinder. Inicialmente, tudo parecia bem até que o sistema embarcado começar a apresentar problemas. O watch dog do sistema detectava problemas e produzia uma reinicialização geral de tempos em tempos. O problema foi debugado e solucionado. A questão central foi um problema de inversão de prioridades, levando a resultados inesperados e perda de deadlines das tarefa no escalonamento de tarefas pelo sistema operacional embarcado. Para obter mais informações: http://research.microsoft.com/en-us/um/people/mbj/Mars_Pathfinder/Mars_Pathfinder.html e http://en.wikipedia.org/wiki/Priority_inversion
    7. Artigo original com a proposta do algoritmo de escalonamento Rate Monotonic: Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment (1973).