====== CI-1215 - Cronograma 2022/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]]. * Entrega em até **2 semanas** a partir da data da aula. * Somente projetos apresentados/defendidos terão suas notas consideradas. * 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 + P6 + P9 + P12 + P13) / 5 (sim, é sobre 5 e não sobre 6) Media = (Mprova + Mproj) / 2 ---- === 07/6: Aula 1 === Conteúdo teórico: * Apresentação da disciplina * Conceitos básicos ---- === 09/6: Aula 2 === Conteúdo teórico: * Estrutura de um SO ---- === 14/6: Aula 3 === Projeto: * Visão geral do [[PingPongOS]] * :!: P0: [[Biblioteca de filas]] ---- === 16/6: feriado === ---- === 21/6: Aula 4 === 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]]) ---- === 23/6: Aula 5 === Conteúdo teórico: * O conceito de tarefa Projeto: * P1: [[Trocas de contexto]] * P2: [[Gestão de tarefas]] ---- === 28/6: Aula 6 === Conteúdo teórico: * Implementação de tarefas - processos * Exemplos: [[Criação de processos]] * [[unix:Gestão de processos]] ---- === 30/6: Aula 7 === Conteúdo teórico: * Implementação de tarefas - threads * Exemplos: [[Criação de threads]] Projeto: * P3: [[Dispatcher]] ---- === 05/7: Aula 8 === Conteúdo teórico: * Escalonamento de tarefas ---- === 07/7: Aula 9 === Conteúdo teórico: * Escalonamento de tarefas (cont.) Projeto: * :!: P4: [[Escalonador por prioridades]] 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]] ---- === 12/7: Aula 10 === Conteúdo teórico: * Comunicação entre tarefas * 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]] Projeto: * P5: [[Preempção por tempo]] ---- === 14/7: Aula 11 === Conteúdo teórico: * Coordenação entre tarefas * O problema da [[exclusão mútua]] ---- === 19/7: 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]] Projeto: * :!: P6: [[Contabilização]] ---- === 21/7: Aula 13 === Conteúdo teórico: * Problemas clássicos * Exemplos: {{ :so:filosofos.c |}} 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]] ---- === 26/7: Aula 14 === Conteúdo teórico: * Impasses Projeto: * P7: [[Tarefa main]] * P8: [[Operador Join]] ---- === 28/7: Aula 15 === * :!: Prova 1 (introdução, gestão de tarefas, interação entre tarefas, PingPongOS) ---- === 02/8: Aula 16 === Conteúdo teórico: * Hardware de entrada/saída Leitura complementar: * Exemplo de I/O: [[https://wiki.osdev.org/CMOS#Getting_Current_Date_and_Time_from_RTC|Leitura do RTC (Real-Time Clock)]] Projeto: * :!: P9: [[Sleeping]] ---- === 04/8: Aula 17 === Conteúdo teórico: * Software de entrada/saída ---- === 09/8: Aula 18 === Conteúdo teórico: * Discos ---- === 11/8: Aula 19 === Projeto: * P10: [[Semáforos]] * P11: [[Uso de semáforos]] ---- === 16/8: Aula 20 === Conteúdo teórico: * O conceito de arquivo ---- === 18/8: Aula 21 === Conteúdo teórico: * Uso de arquivos Projeto: * :!: P12: [[Filas de mensagens]] ---- === 23/8: Aula 22 === Conteúdo teórico: * Sistemas de arquivos ---- === 25/8: Aula 23 === Conteúdo teórico: * Diretórios e atalhos Projeto: * :!: P13: [[Gerente de disco]] ---- === 30/8: Aula 24 === Conteúdo teórico: * Hardware de memória ---- === 01/9: Aula 25 === Conteúdo teórico: * Hardware de memória (cont.) * Uso da memória * Exemplos de localidade de referência: {{so:tlb-lin.c}}, {{so:tlb-col.c}} * Localização de variáveis e constantes: {{:so:variaveis.c|}} ---- === 06/9: Aula 26 === Conteúdo teórico: * Alocação de memória * Paginação em disco ---- === 08/9: Feriado === ---- === 13/9: Aula 27 === Conteúdo teórico: * Paginação em disco (cont.) * Exemplo de //thrashing//: {{so:thrash.c}} ---- === 15/9: Aula 28 === * :!: Prova 2 (gestão de entrada/saída, gestão de arquivos, gestão da memória, PingPongOS) ---- === 22/9: Exame final === * Mesmo conteúdo das provas 1 e 2 ----