Context (computing)

In this article, we are going to delve into the fascinating world of Context (computing). Whether it is a historical figure, a natural phenomenon, a relevant event or any other topic of interest, we will dive into its context, characteristics and relevance. Along these lines, we will seek to understand and thoroughly analyze all aspects related to Context (computing), providing the reader with a more complete and detailed vision of it. From its origins to its impact today, we aim to explore all possible angles to offer a broad and enriching perspective on Context (computing).

In computer science, a task context is the minimal set of data used by a task (which may be a process, thread, or fiber) that must be saved to allow a task to be interrupted, and later continued from the same point. The concept of context assumes significance in the case of interruptible tasks, wherein, upon being interrupted, the processor saves the context and proceeds to serve the interrupt service routine. Thus, the smaller the context is, the smaller the latency is.

The context data may be located in processor registers, memory used by the task, or in control registers used by some operating systems to directly manage the task.

The storage memory (files used by a task) is not concerned by the "task context" in the case of a context switch, even if this can be stored for some uses (checkpointing).

The context can also be viewed as a mechanism that allows a state of a program to be transferred between its components.

Context types

In some computer languages like C#, there is also the concept of safe/secure context. For instance, if an array is needed inside a structure, it can be added to it since version 2.0, but only in an unsafe/unsecure context.[1] Here is an example code:

struct ParameterRepresentation
{
    char target;
    char taskStart;
    char taskType;
    fixed byte traceValues;
};

The fixed keyword prevents the garbage collector from relocating this variable. The access to an array is like in C++, i.e. using pointer arithmetic, where individual elements of the array can be accessed over its indices.

See also

References