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