Dia 24~26 – Gestão de Tarefas (Sistema Operacional)

Esses dias estive quebrando a cabeça para implementar gestão de tarefas utilizando contexto. Código aqui.

Como tudo nesse projeto, essa foi mais uma “task” do conteúdo do professor Maziero.

Sobre a implementação:

Foi implementado um sistem…


This content originally appeared on DEV Community and was authored by Matheus Gomes ?‍?

Esses dias estive quebrando a cabeça para implementar gestão de tarefas utilizando contexto. Código aqui.

Como tudo nesse projeto, essa foi mais uma "task" do conteúdo do professor Maziero.

Sobre a implementação:

Foi implementado um sistema de gerenciamento de tarefas usando contextos do sistema. Ele gerencia tarefas cooperativas executando uma tarefa até passar explicitamente para outra.

Estrutura task_t: Representa uma tarefa, armazenando o contexto de execução, um identificador (ID), e ponteiros para facilitar a construção de uma fila duplamente encadeada de tarefas.

typedef struct task_t
{
  struct task_t *prev, *next; // ponteiros para usar em filas
  int id;                     // identificador da tarefa
  ucontext_t context;         // contexto armazenado da tarefa
  short status;               // pronta, rodando, suspensa, ...
  // ... (outros campos serão adicionados mais tarde)
} task_t;

Inicialização: A função ppos_init() é chamada para configurar o contexto principal do programa. Isso prepara o sistema para gerenciar múltiplas tarefas.

Criação de tarefas: Novas tarefas são criadas com task_init(), onde você passa uma função e argumentos para ser executada dentro da nova tarefa. Essas tarefas recebem um novo contexto e pilha, e o ID da tarefa é atualizado.

Mudança de contexto: A função task_switch() permite alternar entre tarefas, trocando o contexto atual pelo de uma tarefa especificada.

Finalização de tarefa: Uma tarefa pode encerrar sua execução e retornar ao contexto principal com task_exit().


This content originally appeared on DEV Community and was authored by Matheus Gomes ?‍?


Print Share Comment Cite Upload Translate Updates
APA

Matheus Gomes ?‍? | Sciencx (2024-10-24T22:38:50+00:00) Dia 24~26 – Gestão de Tarefas (Sistema Operacional). Retrieved from https://www.scien.cx/2024/10/24/dia-2426-gestao-de-tarefas-sistema-operacional/

MLA
" » Dia 24~26 – Gestão de Tarefas (Sistema Operacional)." Matheus Gomes ?‍? | Sciencx - Thursday October 24, 2024, https://www.scien.cx/2024/10/24/dia-2426-gestao-de-tarefas-sistema-operacional/
HARVARD
Matheus Gomes ?‍? | Sciencx Thursday October 24, 2024 » Dia 24~26 – Gestão de Tarefas (Sistema Operacional)., viewed ,<https://www.scien.cx/2024/10/24/dia-2426-gestao-de-tarefas-sistema-operacional/>
VANCOUVER
Matheus Gomes ?‍? | Sciencx - » Dia 24~26 – Gestão de Tarefas (Sistema Operacional). [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/10/24/dia-2426-gestao-de-tarefas-sistema-operacional/
CHICAGO
" » Dia 24~26 – Gestão de Tarefas (Sistema Operacional)." Matheus Gomes ?‍? | Sciencx - Accessed . https://www.scien.cx/2024/10/24/dia-2426-gestao-de-tarefas-sistema-operacional/
IEEE
" » Dia 24~26 – Gestão de Tarefas (Sistema Operacional)." Matheus Gomes ?‍? | Sciencx [Online]. Available: https://www.scien.cx/2024/10/24/dia-2426-gestao-de-tarefas-sistema-operacional/. [Accessed: ]
rf:citation
» Dia 24~26 – Gestão de Tarefas (Sistema Operacional) | Matheus Gomes ?‍? | Sciencx | https://www.scien.cx/2024/10/24/dia-2426-gestao-de-tarefas-sistema-operacional/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.