====== CI-1215 - Cronograma 2026/1 ====== * As atividades indicadas com :!: serão avaliadas. * Os projetos são **individuais**. * Os projetos devem ser entregues usando o [[http://moodle.c3sl.ufpr.br|Moodle]]. * Entregas em ± **2 semanas** (confira os prazos no Moodle). * Somente projetos defendidos serão considerados. * Leia com atenção as [[teaching:Regras das Atividades de Laboratório]]. === Links úteis === * [[https://bbb.c3sl.ufpr.br/b/car-chu-evg|Sala online]] (BBB do DINF/UFPR) * [[socm:start|Livro-texto da disciplina]] === Regras de avaliação === A média final da disciplina é calculada com as notas das provas e dos projetos solicitados (entre 0 e 100), da seguinte forma: Mprova = (Pv1 + Pv2) / 2 Mproj = (P0 + P4 + ... + Pn) / (num_projs - 1) Media = (Mprova + Mproj) / 2 ---- === 25/2: Aula 1 === Conteúdo teórico: * Apresentação da disciplina * Conceitos básicos ---- === 27/2: Aula 2 === Conteúdo teórico: * Estrutura de um SO Projeto: * Visão geral do [[ppos-v2:start|Ping-Pong OS]] (versão 2) * [[ppos-v2:Filas genéricas]] ---- === 4/3: Aula 3 === Conteúdo teórico: * Arquiteturas de SOs Leitura complementar: * [[http://www.minix3.org/docs/login-2007.pdf|Minix 3 (microkernel)]] * [[http://queue.acm.org/detail.cfm?id=2566628|Unikernels]] (exemplos: [[https://mirage.io/|MirageOS]] e [[https://osv.io/|OSv]]) ---- === 6/3: Aula 4 === Conteúdo teórico: * O conceito de tarefa Projeto: * [[ppos-v2:Trocas de contexto]] * :!: P1: [[ppos-v2:Tarefas cooperativas]] ---- === 11/3: sem aula === ---- === 13/3: sem aula === ---- === 18/3: Aula 5 === Conteúdo teórico: * Implementação de tarefas - processos * Exemplos: [[Criação de processos]] * [[unix:Gestão de processos]] Projeto: * P2: [[ppos-v2:Despachante de tarefas]] ---- === 20/3: sem aula === :-) ---- === 25/3: Aula 6 === Conteúdo teórico: * Implementação de tarefas - threads * Exemplos: [[Criação de threads]] ---- === 27/3: Aula 7 === Conteúdo teórico: * Escalonamento de tarefas Projeto: * :!: P3: [[ppos-v2:Escalonador por prioridades]] ---- === 1º/4: Aula 8 === Conteúdo teórico: * Escalonamento de tarefas (cont.) * Tópicos em escalonamento Leitura complementar: * [[https://man7.org/linux/man-pages/man7/sched.7.html|Manpage de escalonamento do Linux]] * [[https://www.trustedreviews.com/news/what-is-the-intel-thread-director-4158842|Intel Thread Director]] ---- === 8/4: Aula 9 === Conteúdo teórico: * Comunicação entre tarefas Projeto: * P4: [[ppos-v2:Preempção por tempo]] ---- === 10/4: Aula 10 === Conteúdo teórico: * Mecanismos de comunicação * Exemplos: {{:so:mqrecv.c|}}, {{:so:mqsend.c|}}, {{:so:shm.c|}} Leitura complementar: * [[https://docs.microsoft.com/en-us/windows/win32/winmsg/messages-and-message-queues|Windows messaging]] ---- === 15/4: Aula 11 === Conteúdo teórico: * Coordenação entre tarefas * O problema da [[exclusão mútua]] Projeto: * :!: P5: [[ppos-v2:Relógio e contabilização]] ---- === 17/4: Aula 12 === Conteúdo teórico: * Mecanismos de coordenação Leitura complementar: * [[https://docs.microsoft.com/en-us/windows/win32/sync/using-semaphore-objects|Semáforos em Windows]] * [[https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html|Semáforos em Java]] ---- === 22/4: Aula 13 === Conteúdo teórico: * Problemas clássicos * Exemplos: {{ :so:filosofos.c |}} Projeto: * P6: [[ppos-v2:Tarefas que esperam]] Leitura complementar: * Exercícios sobre concorrência do [[http://greenteapress.com/wp/semaphores|Pequeno Livro de Semáforos]] * //Reader/Writer locks// em [[https://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_rwlock_init.html|POSIX]], [[https://docs.microsoft.com/en-us/windows/win32/sync/slim-reader-writer--srw--locks|Windows]] e [[https://docs.oracle.com/javase/10/docs/api/java/util/concurrent/locks/ReadWriteLock.html|Java]] ---- === 24/4: Aula 14 === Laboratório: * [[Exercícios de coordenação]] (aula prática) ---- === 29/4: Aula 15 === Conteúdo teórico: * Impasses Projeto: * :!: P7: [[ppos-v2:Tarefas que dormem]] ---- === 6/5: Aula 16 === * :!: Prova 1 (introdução, gestão de tarefas, interação entre tarefas) ---- === 8/5: Aula 17 === Conteúdo teórico: * Hardware de entrada/saída Projeto: * P8: [[ppos-v2:Spinlocks e semáforos]] Leitura complementar: * Exemplo de I/O: [[https://wiki.osdev.org/CMOS|Leitura do RTC (Real-Time Clock) da placa-mãe]] ---- === 13/5: Aula 18 === Conteúdo teórico: * Software de entrada/saída * Exemplo: {{:so:lp.c|}} e {{:so:lp.h|}} - //driver// básico de porta paralela (núcleo Línux 0.99.7, 1993). ---- === 15/5: Aula 19 === Conteúdo teórico: * Dispositivos de armazenamento Projeto: * P9: [[ppos-v2:Sistema produtor-consumidor]] Leitura complementar: * [[https://youtu.be/wtdnatmVdIg|How do Hard Disk Drives Work?]] (vídeo) ---- === 20/5: Aula 20 === Conteúdo teórico: * Dispositivos de armazenamento (cont.) ---- === 22/5: Aula 21 === Conteúdo teórico: * O conceito de arquivo Projeto: * :!: P10: [[ppos-v2:Filas de mensagens]] ---- === 27/5: Aula 22 === Conteúdo teórico: * Uso de arquivos Leitura complementar: * [[https://gavv.net/articles/file-locks/|File locks in Linux]] * [[https://learn.microsoft.com/en-us/windows/win32/fileio/locking-and-unlocking-byte-ranges-in-files|File locks in Windows]] * Exemplo: acesso a arquivo por mapeamento em memória: {{ :so:fread-mmap.zip |}} ---- === 29/5: Aula 23 === Conteúdo teórico: * Sistemas de arquivos Projeto: * :!: P11: [[ppos-v2:Acesso ao disco]] Leitura complementar: * [[https://opensource.com/article/17/5/introduction-ext4-filesystem|An introduction to Linux's EXT4 filesystem]] * [[https://en.wikipedia.org/wiki/NTFS|NTFS - Wikipedia]] ---- === 3/6: Aula 24 === Conteúdo teórico: * Sistemas de arquivos (cont.) ---- === 5/6: sem aula === :-) ---- === 10/6: Aula 25 === Conteúdo teórico: * Diretórios e atalhos ---- === 12/6: Aula 26 === Conteúdo teórico: * Hardware de memória * Exemplos de localidade de referência: {{so:tlb-lin.c}}, {{so:tlb-col.c}} Projeto: * :!: P12: [[ppos-v2:Alocador de memória]] ---- === 17/6: Aula 27 === Conteúdo teórico: * Uso da memória * Localização de variáveis e constantes: {{:so:variaveis.c|}} ---- === 19/6: Aula 28 === Conteúdo teórico: * Alocação de memória Leitura complementar: * {{:so:dlmalloc-jemalloc.pdf |Funcionamento dos alocadores DLMalloc e JEMalloc}} * [[https://www.microsoft.com/en-us/research/blog/mimalloc-a-high-performance-scalable-memory-allocator-for-the-modern-era/|Microsoft mimalloc]] ---- === 24/6: Aula 29 === Conteúdo teórico: * Paginação em disco * Exemplo de //thrashing//: {{so:thrash.c}} * Tópicos em gerência de memória Leitura complementar: * [[https://cachemon.github.io/SIEVE-website/blog/2023/12/17/sieve-is-simpler-than-lru/|O algoritmo de substituição Sieve]] ---- === 26/6: Aula 30 === * :!: Prova 2 (gestão de entrada/saída, gestão de arquivos, gestão da memória, PingPongOS) ---- === 1°/7: Exame final === * :!: Mesmo conteúdo das provas 1 e 2 ----