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