Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
so:contabilizacao [2023/03/29 16:20] – maziero | so:contabilizacao [2023/05/23 11:16] (atual) – maziero | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Contabilização de tarefas ====== | ||
+ | |||
+ | :!: alterações na interface em 03/2023 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Você irá adicionar mecanismos para contabilizar o uso do processador pelas tarefas em execução. Sua implementação deve produzir uma mensagem de saída com o seguinte formato, para cada tarefa que finaliza (incluindo o próprio // | ||
+ | |||
+ | < | ||
+ | Task 17 exit: execution time 4955 ms, processor time 925 ms, 171 activations | ||
+ | </ | ||
+ | |||
+ | ===== Cálculo dos tempos ===== | ||
+ | |||
+ | A figura abaixo ilustra a execução de uma determinada tarefa, de sua criação ('' | ||
+ | |||
+ | {{ contabilização.png | ||
+ | |||
+ | Para a contabilização você precisará de uma **referência de tempo** (ou seja, um relógio). Para isso, pode ser definida uma variável global para contar //ticks// de relógio, incrementada a cada interrupção do temporizador (1 ms). Dessa forma, essa variável indicará o número de //ticks// decorridos desde a inicialização do sistema na função '' | ||
+ | |||
+ | <note warning> | ||
+ | Um dos objetivos deste projeto é entender como é implementada a contagem de tempo no kernel de um SO. Por isso, você deve construir seu próprio relógio, sem usar funções de consulta ao relógio do Linux como '' | ||
+ | </ | ||
+ | |||
+ | Você deverá implementar uma função para informar às tarefas o valor corrente do relógio: | ||
+ | |||
+ | <code c> | ||
+ | unsigned int systime () ; | ||
+ | </ | ||
+ | |||
+ | ===== Códigos de teste ===== | ||
+ | |||
+ | * {{pingpong-contab.c|Teste 1}} ({{pingpong-contab.txt|saída esperada}}), | ||
+ | * {{pingpong-contab-prio.c|Teste 2}} ({{pingpong-contab-prio.txt|saída esperada}}), | ||
+ | |||
+ | ===== Outras informações ===== | ||
+ | |||
+ | * Duração estimada: 4 horas. | ||
+ | * Dependências: | ||
+ | * [[Gestão de Tarefas]] | ||
+ | * [[Dispatcher]] | ||
+ | * [[Escalonador por prioridades]] (para o teste 2) | ||
+ | * [[Preempção por Tempo]] | ||