# Overview of processes in MOP3

## What is a process?

A process represents a piece of executing code, has it's own stack and CPU state. Think of it as a "task". There are no
kernel processes, only userspace processes.

A process must be a member of a broader process group or procgroup for short.

## Procgroups

A procgroup owns things like memory, kernel resources and such. Processes work within the scope of a procgroup. Once all
procgroup's members die, the procgroup is considered unreachable and thus cleaned up.

## Scheduling

MOP3 uses a round-robin based scheduler. For now priorities are left unimplemented, ie. every processes has
equal priority, but this may change in the future.

A good explaination of round-robin scheduling can be found on the OSDev wiki: [the article](https://wiki.osdev.org/Scheduling_Algorithms#Round_Robin)

