123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706 |
- \documentclass{article}
-
- \usepackage{rtsched}
- \usepackage{url}
-
- \title{The \texttt{rtsched} package for \LaTeX \\ (version 2.0)}
- \author{Giuseppe Lipari}
-
- \begin{document}
-
- \maketitle
-
- \listoffigures
-
- \section{Introduction}
-
- In this document, I give an overview of the \texttt{rtsched} \LaTeX
- package, which can be used to easily draw chronograms (GANTT charts).
- These diagrams are quite common in real-time scheduling research.
-
- The package depends on keyval and TikZ/PGF (pgf version 2.10 or greater), both widely
- available on any \TeX distribution.
-
- The drawing capabilities are completely based on TikZ. Thus, you can compile
- a document that uses \texttt{rtsched} package with modern tools producing pdf document
- as \texttt{pdfLaTeX}, \texttt{XeLaTeX} or \texttt{LuaLaTeX}.
-
- As said, the style works also with Beamer, and it is also possible to
- use animations.
-
- You can find more examples of usage of this style in my lectures,
- which can be downloaded at the following address:
- \url{http://retis.sssup.it/~lipari/courses/}.
-
- I prefer to demonstrate the capabilities of the package by a set of
- examples. You can just cut and paste the examples and play with them
- as you wish.
-
- \section{Basic commands}
-
- \subsection{Simple example with two tasks}
-
- In Figure \ref{fig:ex1} I show a simple example of the Rate Monotonic
- schedule of two simple tasks, followed by the code that generated it.
- To draw the grid, with the numbers, you have to use the
- \texttt{RTGrid} environment:
- \begin{verbatim}
- \begin{RTGrid}[options]{n}{t}
- ...
- \end{RTGrid}
- \end{verbatim}
- \noindent where \texttt{n} is the number of horizontal axis (one per
- task, in this case), and \texttt{t} is the length of the axis in time
- units. This also draws the task labels on the left, and the numbering
- on the bottom.
-
- Every job arrival is depicted with an upward arrow; a deadline is
- depicted by a downward arrow (not very visible here, since it concides
- with the next arrival, see Figure \ref{fig:ex1c} for deadlines
- different from periods). The task execution is depicted by a gray box.
-
- The arrival of a job and the corresponding deadline can be obtained by
- using the following commands:
- \begin{verbatim}
- \TaskArrival{i}{t}
- \TaskArrDeadl{i}{t}{reld}
- \end{verbatim}
- \noindent where \texttt{i} is the task index (from 1 to \texttt{n}
- included), \texttt{t} is the arrival time, and \texttt{reld} is the
- relative deadline; an absolute deadline will be drawn at \texttt{t +
- reld}. If you only want to draw absolute deadlines, you can simply use the following command:
- \begin{verbatim}
- \TaskDeadline{i}{t}
- \end{verbatim}
- \noindent that works in the same way as \verb+\TaskArrival{i}{t}+.
-
-
- In this example there are a lot of repetitions. These can be avoided
- if you use the periodic versions of some commands, as shown in the example of
- Figure \ref{fig:ex1a}. Available periodic versions of the commands can be found in Table~\ref{tab:periodic_versions}. The periodic versions take two additional arguments corresponding to the period and to the number of instances desired.
-
- \begin{table}[!htbp]
- \begin{tabular}{|l|l|}
- \hline
- Command & Periodic version \\
- \hline
- \verb+\TaskArrival{i}{t}+ & \verb+\TaskNArrival{i}{t}{p}{n}+ \\
- \verb+\TaskDeadline{i}{t}+ & \verb+\TaskNDeadline{i}{t}{p}{n}+ \\
- \verb+\TaskArrDeadl{i}{t}{reld}+ & \verb+\TaskNArrDeadl{i}{t}{reld}{p}{n}+ \\
- \verb+\TaskExecDelta{i}{t}{delta}+ & \verb+\TaskNExecDelta{i}{t}{delta}{p}{n}+\\
- \verb+\TaskEnd{i}{t}+ & \verb+\TaskNEnd{i}{t}{p}{n}+\\
-
- \hline
- \end{tabular}
- \caption{Table of periodic commands where p stands for the period and n for the number of instances}
- \label{tab:periodic_versions}
- \end{table}
-
-
-
- To draw the execution rectangle, you can use the following command:
- \begin{verbatim}
- \TaskExecution{i}{t1}{t2}
- \TaskExecDelta{i}{t}{delta}
- \end{verbatim}
- The first one is used to draw an execution rectangle of height 1-unit
- for the \texttt{i}-th task from \texttt{t1} to \texttt{t2}. The second
- command draws a rectangle from \texttt{t} to \texttt{t+delta}.
-
- In Figure \ref{fig:ex1b}, you can see how to only draw arrival upward
- arrows, and how to specify offsets. Finally, in Figure \ref{fig:ex1c}
- you can see an example with 2 tasks with relative deadlines different
- from periods (the so-called \emph{constrained deadline tasks}).
-
- \begin{figure}[!htbp]
- \centering
- % 2 tasks, for 20 units of time
- % we specify the width (10cm is the default
- % value, so we will stop specifying it from now on)
- \begin{RTGrid}[width=10cm]{2}{20}
- %% the first job of task 1 arrives at time 0,
- %% with a relative deadline of 4
- \TaskArrDead{1}{0}{4}
- %% the second job arrives at time 4
- \TaskArrDead{1}{4}{4}
- %% etc
- \TaskArrDead{1}{8}{4}
- \TaskArrDead{1}{12}{4}
- \TaskArrDead{1}{16}{4}
-
- %% the task executes in intervals [0,1], [4,5], etc.
- \TaskExecution{1}{0}{1}
- \TaskExecution{1}{4}{5}
- \TaskExecution{1}{8}{9}
- \TaskExecution{1}{12}{13}
- \TaskExecution{1}{16}{17}
-
- %% the second task
- \TaskArrDead{2}{0}{4}
- \TaskArrDead{2}{6}{4}
- \TaskArrDead{2}{12}{4}
- \TaskExecution{2}{1}{4}
- \TaskExecution{2}{6}{8}
- \TaskExecution{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \end{RTGrid}
- \begin{verbatim}
- % 2 tasks, for 20 units of time
- % we specify the width (10cm is the default
- % value, so we will stop specifying it from now on)
- \begin{RTGrid}[width=10cm]{2}{20}
- %% the first job of task 1 arrives at time 0,
- %% with a relative deadline of 4
- \TaskArrDead{1}{0}{4}
- %% the second job arrives at time 4
- \TaskArrDead{1}{4}{4}
- %% etc
- \TaskArrDead{1}{8}{4}
- \TaskArrDead{1}{12}{4}
- \TaskArrDead{1}{16}{4}
-
- %% the task executes in intervals [0,1], [4,5], etc.
- \TaskExecution{1}{0}{1}
- \TaskExecution{1}{4}{5}
- \TaskExecution{1}{8}{9}
- \TaskExecution{1}{12}{13}
- \TaskExecution{1}{16}{17}
-
- %% the second task
- \TaskArrDead{2}{0}{4}
- \TaskArrDead{2}{6}{4}
- \TaskArrDead{2}{12}{4}
- \TaskExecution{2}{1}{4}
- \TaskExecution{2}{6}{8}
- \TaskExecution{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \end{RTGrid}
- \end{verbatim}
- \caption{Two tasks, with deadline equal to period, RM scheduling}
- \label{fig:ex1}
- \end{figure}
-
- \begin{figure}[!htbp]
- \centering
- \begin{RTGrid}{2}{20}
-
- \TaskNArrDead{1}{0}{4}{4}{5} % draws the arrivals and deadlines
- \TaskNExecDelta{1}{0}{1}{4}{5} % draws executions (highest priority)
- % for 5 instances of period 4
-
- \TaskNEnd{1}{1}{4}{5} % draws 5 ends of job execution of period 4
-
-
- % draws the arrival and deadline
- \TaskNArrDead{2}{0}{6}{6}{3} % for 3 instances of period 6
-
- % no simple formula for lowest priority, sorry!
- \TaskExecution{2}{1}{4}
- \TaskExecution{2}{6}{8}
- \TaskExecution{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \TaskEnd{2}{4}
- \TaskEnd{2}{10}
- \TaskEnd{2}{16}
- \end{RTGrid}
-
- \begin{verbatim}
- \begin{RTGrid}{2}{20}
-
- \TaskNArrDead{1}{0}{4}{4}{5} % draws the arrivals and deadlines
- \TaskNExecDelta{1}{0}{1}{4}{5} % draws executions (highest priority)
- % for 5 instances of period 4
-
- \TaskNEnd{1}{1}{4}{5} % draws 5 ends of job execution of period 4
-
- \TaskNArrDead{2}{0}{6}{6}{3} % draws the arrival and deadline
- % for 3 instances of period 6
-
-
- % no simple formula for lowest priority, sorry!
- \TaskExecution{2}{1}{4}
- \TaskExecution{2}{6}{8}
- \TaskExecution{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \TaskEnd{2}{4}
- \TaskEnd{2}{10}
- \TaskEnd{2}{16}
- \end{RTGrid}
- \end{verbatim}
- \caption{Using periodic commands to avoid repetitions}
- \label{fig:ex1a}
- \end{figure}
-
- \begin{figure}[!htbp]
- \centering
- \begin{RTGrid}{3}{14}
-
- \TaskNArrival{1}{0}{3}{4} % draws only the arrivals
- \TaskNExecDelta{1}{0}{1}{3}{4} % draws executions (highest priority)
- % for 4 instances of period 3
-
-
-
- \TaskNArrival{2}{3}{4}{3} % draws only the arrivals
- % 3 instances of period 4, starting from 3
- \TaskExecDelta{2}{4}{1}
- \TaskExecDelta{2}{7}{1}
- \TaskExecDelta{2}{11}{1}
-
- % 3 instances of period 5, starting from 1
- \TaskNArrival{3}{1}{5}{3} % draws only the arrivals
-
- \TaskExecDelta{3}{1}{1}
- \TaskExecDelta{3}{8}{1}
- \TaskExecDelta{3}{12}{1}
- \end{RTGrid}
-
- \begin{verbatim}
- \begin{RTGrid}{3}{14}
-
- \TaskNArrival{1}{0}{3}{4} % draws only the arrivals
- \TaskNExecDelta{1}{0}{1}{3}{4} % draws executions (highest priority)
- % for 4 instances of period 3
-
-
-
- \TaskNArrival{2}{3}{4}{3} % draws only the arrivals
- % 3 instances of period 4, starting from 3
- \TaskExecDelta{2}{4}{1}
- \TaskExecDelta{2}{7}{1}
- \TaskExecDelta{2}{11}{1}
-
- % 3 instances of period 5, starting from 1
- \TaskNArrival{3}{1}{5}{3} % draws only the arrivals
-
- \TaskExecDelta{3}{1}{1}
- \TaskExecDelta{3}{8}{1}
- \TaskExecDelta{3}{12}{1}
- \end{RTGrid}
- \end{verbatim}
- \caption{Three tasks with offsets, and only arrivals with no deadlines}
- \label{fig:ex1b}
- \end{figure}
-
- \begin{figure}[!htbp]
- \centering
- \begin{RTGrid}[width=8cm]{2}{15}
- \TaskNArrDead{1}{0}{3}{6}{3}
- \TaskNArrDead{2}{2}{5}{8}{2}
- \end{RTGrid}
- \begin{verbatim}
- \begin{RTGrid}[width=8cm]{2}{15}
- \TaskNArrDead{1}{0}{3}{6}{3}
- \TaskNArrDead{2}{2}{5}{8}{2}
- \end{RTGrid}
- \end{verbatim}
- \caption{Deadlines less than periods}
- \label{fig:ex1c}
- \end{figure}
-
- It is also possible to visualise preempted tasks with a hatched fill
- style. An example is in Figure~\ref{fig:resp-time} that uses command
- \texttt{TaskRespTime}.
-
- \begin{figure}[!htbp]
- \centering
- \begin{RTGrid}{2}{20}
-
- \TaskNArrDead{1}{0}{4}{4}{5} % draws the arrivals and deadlines
- \TaskNExecDelta{1}{0}{1}{4}{5} % draws executions (highest priority)
- % for 5 instances of period 4
-
-
- \TaskNArrDead{2}{0}{6}{6}{3} % draws the arrivals and deadlines
- % for 3 instances of period 6
-
- \TaskRespTime{2}{0}{4} % draws the hatched rectangle in [0,4]
- \TaskExecution{2}{1}{4} % draws execution (over the previous rectangle)
- \TaskRespTime{2}{6}{4} % draws the hatched rectangle in [6,10]
- \TaskExecution{2}{6}{8} % draws execution
- \TaskExecution{2}{9}{10} % draws execution
- \TaskRespTime{2}{12}{4} % draws the hatched rectangle in [12,16]
- \TaskExecution{2}{13}{16} % draws execution
- \end{RTGrid}
- \begin{verbatim}
- \begin{RTGrid}{2}{20}
-
- \TaskNArrDead{1}{0}{4}{4}{5} % draws the arrivals and deadlines
- \TaskNExecDelta{1}{0}{1}{4}{5} % draws executions (highest priority)
- % for 5 instances of period 4
-
-
- \TaskNArrDead{2}{0}{6}{6}{3} % draws the arrivals and deadlines
- % for 3 instances of period 6
-
- \TaskRespTime{2}{0}{4} % draws the hatched rectangle in [0,4]
- \TaskExecution{2}{1}{4} % draws execution (over the previous rectangle)
- \TaskRespTime{2}{6}{4} % draws the hatched rectangle in [6,10]
- \TaskExecution{2}{6}{8} % draws execution
- \TaskExecution{2}{9}{10} % draws execution
- \TaskRespTime{2}{12}{4} % draws the hatched rectangle in [12,16]
- \TaskExecution{2}{13}{16} % draws execution
- \end{RTGrid}
- \end{verbatim}
- \caption{Example with TaskRespTime}
- \label{fig:resp-time}
- \end{figure}
-
- It is sometimes useful to represent the end of a job execution, especially to distinguish it from preemption. In that case, you can use the following command :
-
- \begin{verbatim}
- \TaskEnd{i}{t}
- \end{verbatim}
-
- and its periodic version detailed in Table~\ref{tab:periodic_versions} that draw little circle(s) at the specified date(s). It works in the same way as \verb+\TaskArrival+ command as shown in Figure~\ref{fig:ex1a}.
-
-
-
-
- \subsection{Controlling visualization}
-
- It is possible to specify many options in the \texttt{RTGrid}
- environment. Maybe you don't like the grid: then, you can decide to
- not visualise it as in Figure \ref{fig:ex2}, where we also removed the
- task symbols.
- \begin{figure}[!htbp]
- \centering
- %% no grid and no symbols
- \begin{RTGrid}[nogrid=1,nosymbols=1]{2}{20}
- \TaskNArrDead{1}{0}{4}{4}{5}
- \TaskNExecDelta{1}{0}{1}{4}{5}
- \TaskNArrDead{2}{0}{6}{6}{3}
- \TaskExecution{2}{1}{4}
- \TaskExecution{2}{6}{8}
- \TaskExecution{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \end{RTGrid}
- \begin{verbatim}
- %% no grid and no symbols
- \begin{RTGrid}[nogrid=1,nosymbols=1]{2}{20}
- \TaskNArrDead{1}{0}{4}{4}{5}
- \TaskNExecDelta{1}{0}{1}{4}{5}
- \TaskNArrDead{2}{0}{6}{6}{3}
- \TaskExecution{2}{1}{4}
- \TaskExecution{2}{6}{8}
- \TaskExecution{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \end{RTGrid}
- \end{verbatim}
- \caption{Removing visualization of the grid and of the task names}
- \label{fig:ex2}
- \end{figure}
-
- The next figure \ref{fig:ex2a} uses different task symbols, does not
- show the numbers on the time line, and the color of the boxes that
- denote the execution of the second instance of the second task are
- changed to red. Also, I am changing the width, so the figure looks
- smaller. Notice that you can directly specify colors using the TikZ
- way (color!percentage for example).
-
- \begin{figure}[!htbp]
- \centering
- %% specify 1) no numbers on the time line, 2) a different symbol, 3)
- %% a different size of the symbol using latex size commands (default is \normalsize).
- %% Notice that you should not use the math mode in the
- %% specification of the symbol, as the symbol is already used in a
- %% math environment inside the macro
- \begin{RTGrid}[width=8cm,symbol=\gamma,nonumbers=1,labelsize=\small]{2}{20}
- \TaskNArrDead{1}{0}{4}{4}{5}
- \TaskNExecDelta{1}{0}{1}{4}{5}
- \TaskNArrDead{2}{0}{6}{6}{3}
- %% here, the border changes to cyan, and the fill to white
- \TaskExecution[linecolor=cyan,color=white]{2}{1}{4}
- %% the next two boxes are filled with red instead of gray
- \TaskExecution[color=red]{2}{6}{8}
- \TaskExecution[color=red!50]{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \end{RTGrid}
-
- \begin{verbatim}
- %% specify 1) no numbers on the time line, 2) a different symbol, 3)
- %% a different size of the symbol (default is \normalsize).
- %% Notice that you should not use the math mode in the
- %% specification of the symbol, as the symbol is already used in a
- %% math environment inside the macro
- \begin{RTGrid}[symbol=\gamma,nonumbers=1,labelsize=\Large]{2}{20}
- \TaskNArrDead{1}{0}{4}{4}{5}
- \TaskNExecDelta{1}{0}{1}{4}{5}
- \TaskNArrDead{2}{0}{6}{6}{3}
- %% here, the border changes to cyan, and the fill to white
- \TaskExecution[linecolor=cyan,color=white]{2}{1}{4}
- %% the next two boxes are filled with red instead of gray
- \TaskExecution[color=red]{2}{6}{8}
- \TaskExecution[color=red]{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \end{RTGrid}
- \end{verbatim}
- \caption{Different symbols (with \textbackslash Large size), no numbers, a different
- task color}
- \label{fig:ex2a}
- \end{figure}
-
- Do you want to specify an arbitrary symbol at a certain row?
- No problem! See the example in Figure \ref{fig:ex2b}. Here we use the command:
- \begin{verbatim}
- \RowLabel{i}{label}
- \end{verbatim}
- which writes the \texttt{label} at the specified row (index 1 stays at
- the top). Here we show also how to specify an arbitrary starting
- number in the time line, using the \texttt{numoffset=12} option.
-
- \begin{figure}[!htbp]
- \centering
- %% specify 1) no numbers on the time line, 2) number starting from
- %% 12
- \begin{RTGrid}[nosymbols=1,numoffset=12]{2}{20}
- %% the symbol for the first row
- \RowLabel{1}{Server}
- %% the symbol for the second row
- \RowLabel{2}{$\Pi_2$}
- \TaskNArrDead{1}{0}{4}{4}{5}
- \TaskNExecDelta{1}{0}{1}{4}{5}
- \TaskNArrDead{2}{0}{6}{6}{3}
-
- \TaskExecution{2}{1}{4}
- \TaskExecution{2}{6}{8}
- \TaskExecution{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \end{RTGrid}
- \begin{verbatim}
- %% specify 1) no numbers on the time line, 2) number starting from 12
- \begin{RTGrid}[nosymbols=1,numoffset=12]{2}{20}
- %% the symbol for the first row
- \RowLabel{1}{Server}
- %% the symbol for the second row
- \RowLabel{2}{$\Pi_2$}
- \TaskNArrDead{1}{0}{4}{4}{5}
- \TaskNExecDelta{1}{0}{1}{4}{5}
- \TaskNArrDead{2}{0}{6}{6}{3}
-
- \TaskExecution{2}{1}{4}
- \TaskExecution{2}{6}{8}
- \TaskExecution{2}{9}{10}
- \TaskExecution{2}{13}{16}
- \end{RTGrid}
- \end{verbatim}
- \caption{Arbitrary symbols with an appropriate offset, no grid, numbering starting from 12}
- \label{fig:ex2b}
- \end{figure}
-
- % In the last example (Figure \ref{fig:ex2c}), we show an empty grid in
- % which we specify width and height.
-
- % \begin{figure}[!htbp]
- % \centering
- % %% 3 tasks, 10 units of time
- % \begin{RTGrid}[width=12cm, height=4cm]{3}{10}
-
- % \end{RTGrid}
-
- % \begin{verbatim}
- % %% 3 tasks, 10 units of time
- % \begin{RTGrid}[width=12cm, height=4cm]{3}{10}
-
- % \end{RTGrid}
- % \end{verbatim}
- % \caption{Empty grid with strange width and height}
- % \label{fig:ex2c}
- % \end{figure}
-
- \subsection{Highlighting and labeling objects}
-
- Sometimes it may be important to say that one task has caused the
- activation of another task. You can use the following command, as
- shown in Figure \ref{fig:ex3a}:
- \begin{verbatim}
- \Activation{i}{t1}{j}{t2}
- \end{verbatim}
- which draws an arrow from the baseline of task \texttt{i} at time
- \texttt{t1} to the baseline of task \texttt{j} at time \texttt{t2}.
- Also, you can put an arbitrary label inside a shadow box with the
- following command:
- \begin{verbatim}
- \Label{y}{x}{label}
- \end{verbatim}
- which draws a boxed label at position \texttt{x,y} in the grid.
-
- Finally, it is possible to draw a rectangular box with rounded corners
- to highlight a portion of the schedule with \texttt{RTBox}:
- \begin{verbatim}
- \RTBox{t1}{t2}
- \end{verbatim}
-
- \begin{figure}[!htbp]
- \centering
- \begin{RTGrid}{2}{20}
- \RTBox{12}{16}
- \TaskArrival{1}{0}{6}{4}
- \TaskExecDelta{1}{0}{2}{6}{4}
- \TaskArrival{2}{10}
- \TaskExecDelta[exeheight=1.5]{2}{10}{3}
- \Activation{1}{8}{2}{10}
- \Label{6}{7}{$\delta$}
- \end{RTGrid}
- \begin{verbatim}
- \begin{RTGrid}{2}{20}
- \RTBox{12}{16}
- \TaskArrival{1}{0}{6}{4}
- \TaskExecDelta{1}{0}{2}{6}{4}
- \TaskArrival{2}{10}
- \TaskExecDelta[exeheight=1.5]{2}{10}{3}
- \Activation{1}{8}{2}{10}
- \Label{6}{7}{$\delta$}
- \end{RTGrid}
- \end{verbatim}
- \caption{Activation (from one task to another one), and an arbitrary label}
- \label{fig:ex3a}
- \end{figure}
-
- Notice that the order with which the objects are drawn is exactly the
- same as the order in which they are specified in the code, excepted
- for horizontal axes, arrivals, deadlines and end of job execution that are always drawn on the foreground.
- For example, in Figure \ref{fig:ex3a}, the executions of all the tasks are
- drawn on top of the box. You can try to move the \texttt{RTBox}
- command at the end to see what happens.
-
- \subsection{Priority Inheritance}
-
- An example of task locking/unlocking and the use of the Priority
- Inheritance Protocol is shown in Figure \ref{fig:pi}. Here, task
- $\tau_3$ locks resource $S$ at time $t=2$. This is obtained by using
- command:
- \begin{verbatim}
- \TaskLock{3}{2}{S}
- \end{verbatim}
- Unlock is similarly obtained by using command:
- \begin{verbatim}
- \TaskUnlock{3}{7}{S}
- \end{verbatim}
-
- Task $\tau_1$ tries to lock the same resource at time $t=5$. The
- priority of $\tau_1$ is then inherited by $\tau_3$: the inheritance
- rule is depicted by using a dashed tick arrow from the baseline of
- $\tau_1$ to $\tau_3$, using command:
- \begin{verbatim}
- \Inherit{1}{3}{4}
- \end{verbatim}
- The fact that $\tau_3$ is executing inside a critical section is
- denoted by putting a label inside the execution block, using the
- following command:
- \begin{verbatim}
- \TaskExecution[color=white,execlabel=S]{3}{4}{5}
- \end{verbatim}
-
- \begin{figure}[!htbp]
- \centering
- \begin{RTGrid}[width=12cm]{3}{25}
- \TaskArrDead{3}{0}{20}
- \TaskExecution{3}{0}{2}
- \TaskLock{3}{2}{S}
- \TaskExecution[color=white,execlabel=S]{3}{2}{3}
- \TaskArrDead{1}{3}{9}
- \TaskExecution{1}{3}{4}
- \TaskLock{1}{4}{S}
- \Inherit{1}{3}{4}
- \TaskExecution[color=white,execlabel=S]{3}{4}{5}
- \TaskArrDead{2}{5}{12}
- \TaskExecution[color=white,execlabel=S]{3}{5}{7}
- \TaskUnlock{3}{7}{S}
- \TaskExecution[color=white,execlabel=S]{1}{7}{9}
- \TaskUnlock{1}{9}{S}
- \TaskExecution{1}{9}{10}
- \TaskExecution{2}{10}{15}
- \TaskExecution{3}{15}{17}
- \end{RTGrid}
- \caption{Task blocking on resources: the Priority Inheritance Protocol}
- \label{fig:pi}
- \begin{verbatim}
- \begin{RTGrid}[width=12cm]{3}{25}
- \TaskArrDead{3}{0}{20}
- \TaskExecution{3}{0}{2}
- \TaskLock{3}{2}{S}
- \TaskExecution[color=white,execlabel=S]{3}{2}{3}
- \TaskArrDead{1}{3}{9}
- \TaskExecution{1}{3}{4}
- \TaskLock{1}{4}{S}
- \Inherit{1}{3}{4}
- \TaskExecution[color=white,execlabel=S]{3}{4}{5}
- \TaskArrDead{2}{5}{12}
- \TaskExecution[color=white,execlabel=S]{3}{5}{7}
- \TaskUnlock{3}{7}{S}
- \TaskExecution[color=white,execlabel=S]{1}{7}{9}
- \TaskUnlock{1}{9}{S}
- \TaskExecution{1}{9}{10}
- \TaskExecution{2}{10}{15}
- \TaskExecution{3}{15}{17}
- \end{RTGrid}
- \end{verbatim}
- \caption{Priority Inheritance example}
- \label{fig:ex4}
- \end{figure}
-
-
- \subsection{Jitter}
-
-
- Jitter is often represented as an interval drawn by an horizontal double-headed arrow. As shown in the Figure~\ref{fig:interval}, you can define jitter or any other interval with the following command :
-
- \begin{verbatim}
- \TaskInterval{i}{t1}{t2}{label}
- \end{verbatim}
-
- This command draws an horizontal double arrowhead for the \texttt{i}-th task from \texttt{t1} to \texttt{t2} with the specified \texttt{label} in the middle.
-
- \begin{figure}[!htbp]
- \centering
- \begin{RTGrid}[nogrid=1, nosymbols=1 ,nonumbers=1]{3}{20}
-
- \RowLabel{1}{$\tau_i$}
- \TaskArrival{1}{0}
- \TaskExecution{1}{1}{4}
- \TaskDeadline{1}{7}
-
- \RowLabel{2}{msg}
- \TaskArrival{2}{0}
- \TaskExecution{2}{4}{6}
- \TaskDeadline{2}{8}
- \TaskInterval{2}{0}{4}{$J_m$} % draws an interval between date 0 and 4 for task 2 with a label J_m
-
- \RowLabel{3}{$\tau_j$}
- \TaskArrival{3}{0}
- \TaskExecution{3}{6}{9}
- \TaskDeadline{3}{10}
- \TaskInterval{3}{0}{6}{$J_j$} % draws an interval between date 0 and 6 for task 3 with a label J_j
- \end{RTGrid}
- \begin{verbatim}
- \begin{RTGrid}[nogrid=1, nosymbols=1 ,nonumbers=1]{3}{20}
-
- \RowLabel{1}{$\tau_i$}
- \TaskArrival{1}{0}
- \TaskExecution{1}{1}{4}
- \TaskDeadline{1}{7}
-
- \RowLabel{2}{msg}
- \TaskArrival{2}{0}
- \TaskExecution{2}{4}{6}
- \TaskDeadline{2}{8}
- \TaskInterval{2}{0}{4}{$J_m$} % draws an interval between date 0 and 4 for task 2 with a label J_m
-
- \RowLabel{3}{$\tau_j$}
- \TaskArrival{3}{0}
- \TaskExecution{3}{6}{9}
- \TaskDeadline{3}{10}
- \TaskInterval{3}{0}{6}{$J_j$} % draws an interval between date 0 and 6 for task 3 with a label J_j
- \end{RTGrid}
- \end{verbatim}
- \caption{Example with TaskInterval used to represent jitters}
- \label{fig:interval}
- \end{figure}
-
-
- \end{document}
- %%% Local Variables:
- %%% mode: latex
- %%% TeX-master: t
- %%% End:
|