Changeset 35ece70


Ignore:
Timestamp:
Sep 9, 2022, 7:10:53 PM (2 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, ast-experimental, master, pthread-emulation
Children:
1260224
Parents:
d895e32 (diff), 4a2d728 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/thierry_delisle_PhD/thesis/glossary.tex

    rd895e32 r35ece70  
    1717{name={Thread},text={thread}}
    1818{
    19 Abstract object representing a unit of work. Systems will offer one or more concrete implementations of this concept (\eg \gls{kthrd}, \gls{job}), however, most of the concepts of scheduling are independent of the particular implementations of the work representation. For this reason, this document uses the term \Gls{at} to mean any representation and not one in particular.
     19A thread is an independent sequential execution path through a program. Each thread is scheduled for execution separately and independently from other threads. A thread must have its own stack to save its state when it is scheduled. Systems offer one or more concrete implementations of this concept, \eg \gls{kthrd}, \gls{job}, task. However, most of the concepts of scheduling are independent of the particular implementations of the thread representation. For this reason, this document uses the term \gls{at} to mean any of these representation that meets the general definition.
    2020
    2121\textit{Synonyms : Tasks, Jobs, Blocks.}
     
    2525{name={Processor},text={processor}}
    2626{
    27 Entity that executes the \glspl{at}, \ie the resource being scheduled by the scheduler. In kernel level threading, \ats are kernel threads and \procs are the \glspl{hthrd} on which the kernel threads are scheduled. In user-level threading and in thread pools, \procs are kernel threads.
     27Entity that executes a \gls{at}, \ie the resource being scheduled by the scheduler. In kernel-level threading, \ats are kernel threads and \procs are the \glspl{hthrd} on which the kernel threads are scheduled. In user-level threading and thread pools, \procs are kernel threads.
    2828
    2929\textit{Synonyms : Server, Worker.}
     
    3333{name={Ready Queue}, text={ready-queue}}
    3434{
    35 Data structure holding \ats that are ready to be \glslink{atrun}{run}. Often a \glsxtrshort{fifo} queue, but can take many different forms, \eg binary trees are also common.
     35Data structure holding \ats that are ready to \glslink{atrun}{run}, but currently all the processors are in use. Often a \glsxtrshort{fifo} queue for fairness, but can take many different forms, \eg binary tree and priority queue are also common.
    3636}
    3737
    3838\longnewglossaryentry{uthrding}
    39 {name={User-Level Threading},text={user-level threading}}
     39{name={User-Level \Gls{at}ing},text={user-level threading}}
    4040{
    41 Threading model where a scheduler runs in users space and maps threads managed and created inside the user-space onto \glspl{kthrd}.
     41\Gls{at}ing model where a scheduler runs in users space and maps threads managed and created inside the user-space onto \glspl{kthrd}.
    4242
    4343\textit{Synonyms : User threads, Lightweight threads, Green threads, Virtual threads, Tasks.}
     
    4747{name={Remote Memory Reference},text={remote memory reference}}
    4848{
    49 Reference to an address in memory that is considered \newterm{remote}, as opposed to \emph{local}. This can mean for example: a cache line that is in a cache not shared by the current \gls{hthrd}, a block of memory that belons to a different CPU socket in a \glsxtrshort{numa} context, etc.
     49A memory reference to an address not in the current \gls{hthrd}'s L1 or L2 cache is a remote reference. L1 and L2 cache references are considered \emph{local}. For example, a cache line that must be updated from the L3 cache or from any cache on another socket, or from RAM in a \glsxtrshort{numa} context.
    5050}
    5151
     
    5353
    5454\longnewglossaryentry{hthrd}
    55 {name={Hardware Thread},text={hardware thread}}
     55{name={Hardware \Gls{at}},text={hardware thread}}
    5656{
    57 Threads representing the underlying hardware directly, \eg the CPU core, or hyper-thread if the hardware supports multiple threads of execution per core. The number of hardware threads is considered to be always fixed to a specific number determined by the hardware.
     57\Gls{at}s representing the underlying hardware, \eg a CPU core or hyper-thread, if the hardware supports multiple threads of execution per core. The maximum number of hardware threads is fixed on any given computer.
    5858
    59 \textit{Synonyms : Core, Processing Unit, CPU.}
     59\textit{Synonyms : Core, Hyper-\Gls{at}, Processing Unit, CPU.}
    6060}
    6161
    6262\longnewglossaryentry{kthrd}
    63 {name={Kernel-Level Thread},text={kernel-level thread}}
     63{name={Kernel-Level \Gls{at}},text={kernel-level thread}}
    6464{
    65 Threads created and managed inside kernel-space. Each thread has its own stack and its own thread of execution. Kernel-level threads are owned, managed and scheduled by the underlying operating system.
     65\Gls{at}s created and managed inside kernel space. Each kernel thread has its own stack and its own thread of execution. Kernel-level threads are owned, managed and scheduled by the underlying operating system.
    6666
    6767\textit{Synonyms : OS threads, Hardware threads, Physical threads.}
     
    7171{name={Fiber},text={fiber}}
    7272{
    73 Fibers are non-preemptive user-level threads. They share most of the caracteristics of user-level threads except that they cannot be preempted by another fiber.
     73Fibers are non-preemptive user-level threads. They share most of the characteristics of user-level threads except that they cannot be preempted by another fiber.
    7474
    7575\textit{Synonyms : Tasks.}
     
    8585
    8686\longnewglossaryentry{pool}
    87 {name={Thread Pool},text={thread-pool}}
     87{name={\Gls{at} Pool},text={thread-pool}}
    8888{
    89 Group of homogeneuous threads that loop executing units of works. Often executing \glspl{jobs}.
     89Group of homogeneous threads that loop executing units of works. Often executing \glspl{jobs}.
    9090
    9191\textit{Synonyms : Executor.}
     
    103103{name={Scheduling a \gls{at}}}
    104104{
    105 Scheduling a \at refers to the act of notifying the scheduler that a task is ready to be run. When representing the scheduler as a queue of tasks, scheduling is the act of pushing a task onto the end of the queue. This does not necessarily mean the task will ever be allocated CPU time (\gls{atrun}), for example, if the system terminates abruptly, scheduled \glspl{at} will probably never run.
     105Scheduling a \at refers to notifying the scheduler that a \at is ready to run. When representing the scheduler as a queue of \ats, scheduling is the act of pushing a \at onto the end of the queue. This operation does not necessarily mean the \at is guaranteed CPU time (\gls{atrun}), \eg if the program terminates abruptly, scheduled \glspl{at} never run.
    106106
    107107\textit{Synonyms : Unparking.}
     
    111111{name={Running a \gls{at}}}
    112112{
    113 Running a \at refers to the act of allocating CPU time to a task that is ready to run. When representing the scheduler as a queue of tasks, running is the act of popping a task from the front of the queue and putting it onto a \gls{proc}. The \gls{at} can then accomplish some or all of the work it is programmed to do.
     113Running a \at refers to allocating CPU time to a \at that is ready to run. When representing the scheduler as a queue of \ats, running is the act of popping a \at from the front of the queue and putting it onto a \gls{proc}. The \gls{at} can then accomplish some or all of the work it is programmed to do.
    114114
    115115\textit{Synonyms : None.}
     
    117117
    118118\longnewglossaryentry{atmig}
    119 {name={Migration of \glspl{at}}}
     119{name={\Glspl{at} Migration}}
    120120{
    121 Migration refers to the idea of an \gls{at} running on a different \proc than the last time it was run. It is generally preferable to minimise migration as it incurs cost but any load balancing among \proc requires some amount of migration.
     121Migration refers to the idea of an \gls{at} running on a different \proc than the last time it was run. It is generally preferable to minimize migration as it incurs cost but any load balancing among \proc requires some amount of migration.
    122122
    123123\textit{Synonyms : None.}
     
    133133
    134134\longnewglossaryentry{atblock}
    135 {name={Blocking an \gls{at}}}
     135{name={\Gls{at} Blocking}}
    136136{
    137 Blocking an abstract task refers to the act of taking a task that us running on a CPU off the CPU. Unless no other task is ready, this action is generally immediately followed by running an other task.
     137\Gls{at} blocking means taking a running \at off a CPU. Unless no other \at is ready, this action is immediately followed by running another \at.
    138138
    139139\textit{Synonyms : Parking.}
     
    143143{name={Running to completion}}
    144144{
    145 Running to completion refers to the entire sequence of : being scheduled, running and blocking, for a given task.
     145Running to completion refers to the entire sequence of : being scheduled, running and blocking, for a given \at.
    146146
    147147See also \gls{atsched}, \gls{atrun}, \gls{atblock}
     
    153153{name={System Load},text={load}}
    154154{
    155 The System Load refers to the rate at which \glspl{at} are \glslink{atsched}{scheduled} versus the rate at which they are \glslink{atrun}{run}. When \glspl{at} are being scheduled faster than they are run, the system is considered \emph{overloaded}. When \glspl{at} are being run faster than they are scheduled, the system is considered \emph{underloaded}. Conrrespondingly, if both rates are equal, the system is considered \emph{loaded}. Note that the system is considered loaded only of the rate at which \glspl{at} are scheduled/run is non-zero, otherwise the system is empty, it has no load.
     155The system load refers to the rate at which \glspl{at} are \glslink{atsched}{scheduled} versus the rate at which they are \glslink{atrun}{run}. When \glspl{at} are being scheduled faster than they are run, the system is considered \emph{overloaded}. When \glspl{at} are being run faster than they are scheduled, the system is considered \emph{underloaded}. Correspondingly, if both rates are equal, the system is considered \emph{loaded}. Note the system is considered loaded only if the rate at which \glspl{at} are scheduled/run is non-zero, otherwise the system is empty, \ie it has no load.
    156156
    157157\textit{Synonyms : CPU Load, System Load.}
Note: See TracChangeset for help on using the changeset viewer.