DEV Community

Cover image for Dia 24~26 - Gestão de Tarefas (Sistema Operacional)
Matheus Gomes
Matheus Gomes

Posted on

1

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 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;
Enter fullscreen mode Exit fullscreen mode

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().

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay