\BOOKMARK [1][-]{section.0.1}{Introduction}{}% 1 \BOOKMARK [2][-]{subsection.0.1.1}{goal}{section.0.1}% 2 \BOOKMARK [2][-]{subsection.0.1.2}{criticality\040groups}{section.0.1}% 3 \BOOKMARK [2][-]{subsection.0.1.3}{real-time\040isolation}{section.0.1}% 4 \BOOKMARK [2][-]{subsection.0.1.4}{different\040kinds\040of\040computer\040systems}{section.0.1}% 5 \BOOKMARK [3][-]{subsubsection.0.1.4.1}{hybrids\040and\040gray\040zones}{subsection.0.1.4}% 6 \BOOKMARK [3][-]{subsubsection.0.1.4.2}{where\040does\040this\040project\040fit\040in?}{subsection.0.1.4}% 7 \BOOKMARK [2][-]{subsection.0.1.5}{why\040a\040real-time\040multicore?}{section.0.1}% 8 \BOOKMARK [2][-]{subsection.0.1.6}{meta}{section.0.1}% 9 \BOOKMARK [1][-]{section.0.2}{Related\040work}{}% 10 \BOOKMARK [1][-]{section.0.3}{System\040overview:\040two\040cores,\040shared\040DRAM}{}% 11 \BOOKMARK [2][-]{subsection.0.3.1}{the\040critical\040core}{section.0.3}% 12 \BOOKMARK [2][-]{subsection.0.3.2}{isolation\040between\040the\040cores}{section.0.3}% 13 \BOOKMARK [2][-]{subsection.0.3.3}{the\040best-effort\040core}{section.0.3}% 14 \BOOKMARK [1][-]{section.0.4}{The\040Linux\040implementation}{}% 15 \BOOKMARK [2][-]{subsection.0.4.1}{the\040real-time\040system}{section.0.4}% 16 \BOOKMARK [2][-]{subsection.0.4.2}{the\040critical\040tasks}{section.0.4}% 17 \BOOKMARK [2][-]{subsection.0.4.3}{perf_event_open\(2\)}{section.0.4}% 18 \BOOKMARK [2][-]{subsection.0.4.4}{cgroups}{section.0.4}% 19 \BOOKMARK [1][-]{section.0.5}{Real-time\040Linux\040and\040Unix}{}% 20 \BOOKMARK [2][-]{subsection.0.5.1}{Linux\040real-time\040schedulers}{section.0.5}% 21 \BOOKMARK [2][-]{subsection.0.5.2}{the\040Linux\040and\040C++\040clocks}{section.0.5}% 22 \BOOKMARK [2][-]{subsection.0.5.3}{hardware}{section.0.5}% 23 \BOOKMARK [2][-]{subsection.0.5.4}{isolation}{section.0.5}% 24 \BOOKMARK [3][-]{subsubsection.0.5.4.1}{starvation}{subsection.0.5.4}% 25 \BOOKMARK [3][-]{subsubsection.0.5.4.2}{isolating\040the\040cores\040on\040Linux}{subsection.0.5.4}% 26 \BOOKMARK [1][-]{section.0.6}{Scheduling}{}% 27 \BOOKMARK [2][-]{subsection.0.6.1}{algorithm}{section.0.6}% 28 \BOOKMARK [2][-]{subsection.0.6.2}{step-by-step\040description}{section.0.6}% 29 \BOOKMARK [2][-]{subsection.0.6.3}{task\040priority}{section.0.6}% 30 \BOOKMARK [1][-]{section.0.7}{The\040task\040finite\040state\040machine}{}% 31 \BOOKMARK [2][-]{subsection.0.7.1}{transitions}{section.0.7}% 32 \BOOKMARK [2][-]{subsection.0.7.2}{states}{section.0.7}% 33 \BOOKMARK [1][-]{section.0.8}{System\040description}{}% 34 \BOOKMARK [2][-]{subsection.0.8.1}{the\040top-scheduler}{section.0.8}% 35 \BOOKMARK [2][-]{subsection.0.8.2}{how\040the\040time\040parameters\040relate}{section.0.8}% 36 \BOOKMARK [2][-]{subsection.0.8.3}{task\040scheduler}{section.0.8}% 37 \BOOKMARK [3][-]{subsubsection.0.8.3.1}{mi,\040the\040maximum\040best-effort\040core\040memory\040accesses}{subsection.0.8.3}% 38 \BOOKMARK [3][-]{subsubsection.0.8.3.2}{bi,\040the\040CPU-budget}{subsection.0.8.3}% 39 \BOOKMARK [3][-]{subsubsection.0.8.3.3}{i,\040the\040\(task\)\040scheduling\040algorithm}{subsection.0.8.3}% 40 \BOOKMARK [2][-]{subsection.0.8.4}{Pi,\040the\040sporadic\040task\040set}{section.0.8}% 41 \BOOKMARK [2][-]{subsection.0.8.5}{the\040sporadic\040task\040model}{section.0.8}% 42 \BOOKMARK [3][-]{subsubsection.0.8.5.1}{task\040parameters}{subsection.0.8.5}% 43 \BOOKMARK [3][-]{subsubsection.0.8.5.2}{task\040properties}{subsection.0.8.5}% 44 \BOOKMARK [1][-]{section.0.9}{Schedulability\040method:\040response\040time}{}% 45 \BOOKMARK [2][-]{subsection.0.9.1}{rj,\040the\040worst-case\040response-time\040for\040tj}{section.0.9}% 46 \BOOKMARK [3][-]{subsubsection.0.9.1.1}{Qj,\040queuing}{subsection.0.9.1}% 47 \BOOKMARK [3][-]{subsubsection.0.9.1.2}{z,\040the\040response\040time\040in\040global\040periods}{subsection.0.9.1}% 48 \BOOKMARK [3][-]{subsubsection.0.9.1.3}{Qgj,\040group\040deadline\040queuing}{subsection.0.9.1}% 49 \BOOKMARK [3][-]{subsubsection.0.9.1.4}{Qsj,\040cross-group\040\(system\)\040deadline\040queuing}{subsection.0.9.1}% 50 \BOOKMARK [3][-]{subsubsection.0.9.1.5}{depletion\040queuing}{subsection.0.9.1}% 51 \BOOKMARK [3][-]{subsubsection.0.9.1.6}{oj,\040the\040scheduling\040overhead}{subsection.0.9.1}% 52 \BOOKMARK [2][-]{subsection.0.9.2}{ij,\040interference\040from\040the\040best-effort\040core}{section.0.9}% 53 \BOOKMARK [1][-]{section.0.10}{Schedulability\040method:\040resource\040server}{}% 54 \BOOKMARK [2][-]{subsection.0.10.1}{interval\040length}{section.0.10}% 55 \BOOKMARK [2][-]{subsection.0.10.2}{sbf}{section.0.10}% 56 \BOOKMARK [2][-]{subsection.0.10.3}{dbf}{section.0.10}% 57 \BOOKMARK [1][-]{section.0.11}{Experiments}{}% 58 \BOOKMARK [2][-]{subsection.0.11.1}{building\040blocks}{section.0.11}% 59 \BOOKMARK [2][-]{subsection.0.11.2}{design}{section.0.11}% 60 \BOOKMARK [2][-]{subsection.0.11.3}{zsh\040wrappers}{section.0.11}% 61 \BOOKMARK [1][-]{section.0.12}{Contention\040experiment}{}% 62 \BOOKMARK [2][-]{subsection.0.12.1}{setup}{section.0.12}% 63 \BOOKMARK [2][-]{subsection.0.12.2}{conclusion}{section.0.12}% 64 \BOOKMARK [1][-]{section.0.13}{Best-effort\040core\040memory\040experiment}{}% 65 \BOOKMARK [2][-]{subsection.0.13.1}{the\040importance\040of\040this\040experiment:\040delays\040and\040overheads}{section.0.13}% 66 \BOOKMARK [2][-]{subsection.0.13.2}{systems}{section.0.13}% 67 \BOOKMARK [3][-]{subsubsection.0.13.2.1}{one-scheduler\040system:\040base-faculty-1}{subsection.0.13.2}% 68 \BOOKMARK [3][-]{subsubsection.0.13.2.2}{two-scheduler\040system:\040base-faculty-2}{subsection.0.13.2}% 69 \BOOKMARK [2][-]{subsection.0.13.3}{conclusion}{section.0.13}% 70 \BOOKMARK [1][-]{section.0.14}{hs\040task\040systems\040experiment}{}% 71 \BOOKMARK [2][-]{subsection.0.14.1}{setup}{section.0.14}% 72 \BOOKMARK [2][-]{subsection.0.14.2}{what\040is\040a\040task\040system?}{section.0.14}% 73 \BOOKMARK [2][-]{subsection.0.14.3}{simulation\040issues}{section.0.14}% 74 \BOOKMARK [2][-]{subsection.0.14.4}{the\040result\040data}{section.0.14}% 75 \BOOKMARK [2][-]{subsection.0.14.5}{systems\040and\040results}{section.0.14}% 76 \BOOKMARK [3][-]{subsubsection.0.14.5.1}{base}{subsection.0.14.5}% 77 \BOOKMARK [3][-]{subsubsection.0.14.5.2}{long-ticks}{subsection.0.14.5}% 78 \BOOKMARK [3][-]{subsubsection.0.14.5.3}{long-period}{subsection.0.14.5}% 79 \BOOKMARK [2][-]{subsection.0.14.6}{conclusion}{section.0.14}% 80 \BOOKMARK [1][-]{section.0.15}{Linux\040processes\040experiment}{}% 81 \BOOKMARK [2][-]{subsection.0.15.1}{advantages}{section.0.15}% 82 \BOOKMARK [2][-]{subsection.0.15.2}{disadvantages}{section.0.15}% 83 \BOOKMARK [2][-]{subsection.0.15.3}{systems\040and\040results}{section.0.15}% 84 \BOOKMARK [3][-]{subsubsection.0.15.3.1}{base-p}{subsection.0.15.3}% 85 \BOOKMARK [3][-]{subsubsection.0.15.3.2}{base-p-no-memory-budget}{subsection.0.15.3}% 86 \BOOKMARK [2][-]{subsection.0.15.4}{conclusion}{section.0.15}% 87 \BOOKMARK [1][-]{section.0.16}{Real\040real-time:\040audio\040experiment}{}% 88 \BOOKMARK [2][-]{subsection.0.16.1}{system}{section.0.16}% 89 \BOOKMARK [2][-]{subsection.0.16.2}{execution}{section.0.16}% 90 \BOOKMARK [2][-]{subsection.0.16.3}{ideal\040fallout}{section.0.16}% 91 \BOOKMARK [2][-]{subsection.0.16.4}{conclusion}{section.0.16}% 92 \BOOKMARK [1][-]{section.0.17}{Conclusion}{}% 93 \BOOKMARK [1][-]{section.0.18}{References}{}% 94 \BOOKMARK [1][-]{section.Alph0.1}{Appendix\040A:\040Memory\040experiment\040fallout}{}% 95 \BOOKMARK [2][-]{subsection.Alph0.1.1}{base-faculty-1}{section.Alph0.1}% 96 \BOOKMARK [2][-]{subsection.Alph0.1.2}{base-faculty-2}{section.Alph0.1}% 97 \BOOKMARK [1][-]{section.Alph0.2}{Appendix\040B:\040Formulas}{}% 98 \BOOKMARK [2][-]{subsection.Alph0.2.1}{system}{section.Alph0.2}% 99 \BOOKMARK [2][-]{subsection.Alph0.2.2}{sporadic\040task\040model}{section.Alph0.2}% 100 \BOOKMARK [2][-]{subsection.Alph0.2.3}{response\040time}{section.Alph0.2}% 101 \BOOKMARK [2][-]{subsection.Alph0.2.4}{resource\040server}{section.Alph0.2}% 102 \BOOKMARK [3][-]{subsubsection.Alph0.2.4.1}{supply}{subsection.Alph0.2.4}% 103 \BOOKMARK [3][-]{subsubsection.Alph0.2.4.2}{demand}{subsection.Alph0.2.4}% 104 \BOOKMARK [1][-]{section.Alph0.3}{Appendix\040C:\040hs\040code}{}% 105 \BOOKMARK [2][-]{subsection.Alph0.3.1}{man\040page\040for\040hs}{section.Alph0.3}% 106 \BOOKMARK [2][-]{subsection.Alph0.3.2}{ask}{section.Alph0.3}% 107 \BOOKMARK [2][-]{subsection.Alph0.3.3}{be}{section.Alph0.3}% 108 \BOOKMARK [2][-]{subsection.Alph0.3.4}{file_io}{section.Alph0.3}% 109 \BOOKMARK [2][-]{subsection.Alph0.3.5}{global_scheduler}{section.Alph0.3}% 110 \BOOKMARK [2][-]{subsection.Alph0.3.6}{llc}{section.Alph0.3}% 111 \BOOKMARK [2][-]{subsection.Alph0.3.7}{log}{section.Alph0.3}% 112 \BOOKMARK [2][-]{subsection.Alph0.3.8}{main}{section.Alph0.3}% 113 \BOOKMARK [2][-]{subsection.Alph0.3.9}{options}{section.Alph0.3}% 114 \BOOKMARK [2][-]{subsection.Alph0.3.10}{program}{section.Alph0.3}% 115 \BOOKMARK [2][-]{subsection.Alph0.3.11}{sporadic_task}{section.Alph0.3}% 116 \BOOKMARK [2][-]{subsection.Alph0.3.12}{task_scheduler}{section.Alph0.3}% 117 \BOOKMARK [2][-]{subsection.Alph0.3.13}{tcb}{section.Alph0.3}% 118 \BOOKMARK [2][-]{subsection.Alph0.3.14}{time_io}{section.Alph0.3}% 119 \BOOKMARK [1][-]{section.Alph0.4}{Appendix\040D:\040experiment\040code\040and\040example\040data}{}% 120 \BOOKMARK [2][-]{subsection.Alph0.4.1}{example\040hs\040system}{section.Alph0.4}% 121 \BOOKMARK [2][-]{subsection.Alph0.4.2}{useful\040zsh\040commands}{section.Alph0.4}% 122 \BOOKMARK [2][-]{subsection.Alph0.4.3}{zsh\040wrapper\040to\040run\040experiments}{section.Alph0.4}% 123 \BOOKMARK [2][-]{subsection.Alph0.4.4}{tick\040trace\040cruncher\040in\040Elisp}{section.Alph0.4}% 124 \BOOKMARK [1][-]{section.Alph0.5}{Index}{}% 125