[1b34b87] | 1 | \chapter{\uC} \label{uC}
|
---|
| 2 |
|
---|
| 3 | \section{Introduction}
|
---|
| 4 | \uC \cite{Reference10} extends the \CC programming language with new
|
---|
| 5 | mechanisms to
|
---|
| 6 | facilitate control flow, and adds new objects to enable lightweight concurrency
|
---|
| 7 | on uniprocessor and parallel execution on multiprocessor computers. Concurrency has tasks
|
---|
| 8 | that can context switch, which is a control transfer from one execution state to
|
---|
| 9 | another that is different from a function call. Tasks are selected to run on a
|
---|
| 10 | processor from a ready queue of available tasks, and tasks may need to wait for an occurrence of an event.
|
---|
| 11 |
|
---|
| 12 | \section{Tasks}
|
---|
| 13 | A \textcolor{ForestGreen}{task} behaves like a class object, but it maintains its own
|
---|
| 14 | thread and execution state, which is the state information required to allow
|
---|
| 15 | independent execution. A task provides mutual exclusion by default for calls to its
|
---|
| 16 | public members. Public members allow communication among tasks.
|
---|
| 17 |
|
---|
| 18 | \section{\uC Runtime Structure}
|
---|
| 19 | \uC introduces two new runtime entities for controlling concurrent execution:
|
---|
| 20 | \begin{itemize}
|
---|
| 21 | \item Cluster
|
---|
| 22 | \item Virtual processor
|
---|
| 23 | \end{itemize}
|
---|
| 24 |
|
---|
| 25 | \subsection{Cluster}
|
---|
| 26 | A cluster is a group of tasks and virtual processors (discussed next) that
|
---|
| 27 | execute tasks. The objective of a cluster is to control the amount of possible
|
---|
| 28 | parallelism among tasks, which is only feasible if there are multiple
|
---|
| 29 | hardware processors (cores).
|
---|
| 30 |
|
---|
| 31 | At the start of a \uC program, two clusters are created. One is the system
|
---|
| 32 | cluster and the other is the user cluster. The system cluster has a processor
|
---|
| 33 | that only performs management work such as error detection and correction from
|
---|
| 34 | user clusters, if an execution in a user cluster results in errors, and cleans
|
---|
| 35 | up at shutdown. The user cluster manages and executes user tasks on its
|
---|
| 36 | processors. The benefits of clusters are maximizing utilization of processors
|
---|
| 37 | and minimizing runtime through a scheduler that is appropriate for a particular
|
---|
| 38 | workload. Tasks and virtual processors may be migrated among clusters.
|
---|
| 39 |
|
---|
| 40 | \subsection{Virtual Processor}
|
---|
| 41 | A virtual processor is a software emulation of a processor that executes
|
---|
| 42 | threads. Kernel threads are used to implement a virtual processor, which are
|
---|
| 43 | scheduled for execution on a hardware processor by the underlying operating
|
---|
| 44 | system. The operating system distributes kernel threads across a number of
|
---|
| 45 | processors assuming that the program runs on a multiprocessor architecture. The
|
---|
| 46 | usage of kernel threads enables parallel execution in \uC.
|
---|