108 lines
4.5 KiB
Plaintext
108 lines
4.5 KiB
Plaintext
\begin{tikzpicture}
|
|
\begin{pgfonlayer}{nodelayer}
|
|
\node [style=none] (0) at (0, -2.5) {Multithreaded Application};
|
|
\node [style=none] (1) at (-2, -1.75) {};
|
|
\node [style=none] (2) at (-2, -3.25) {};
|
|
\node [style=none] (3) at (2, -3.25) {};
|
|
\node [style=none] (4) at (2, -1.75) {};
|
|
\node [style=none] (5) at (-6, -1.75) {};
|
|
\node [style=none] (6) at (6, -1.75) {};
|
|
\node [style=none] (7) at (6, -3.25) {};
|
|
\node [style=none] (8) at (-6, -3.25) {};
|
|
\node [style=none] (9) at (-8.5, -5) {};
|
|
\node [style=none] (10) at (9.75, -5) {};
|
|
\node [style=none] (11) at (9.75, -13.5) {};
|
|
\node [style=none] (12) at (-8.5, -13.5) {};
|
|
\node [style=align text] (13) at (-7.25, -9.25) {Kernel-meditated\\Control Transfers};
|
|
\node [style=os] (14) at (0, -15.5) {Operating System};
|
|
\node [style=hardware] (15) at (0, -16.5) {Hardware};
|
|
\node [style=dispatch] (16) at (0, -6.75) {Dispatch};
|
|
\node [style=bb builder] (17) at (6, -6.75) {Basic Block\\Builder};
|
|
\node [style=code cache] (19) at (0, -11.75) {Code Cache};
|
|
\node [style=none] (20) at (2.25, -6.5) {};
|
|
\node [style=none] (21) at (2.25, -7) {};
|
|
\node [style=none] (22) at (3.75, -6.5) {};
|
|
\node [style=none] (23) at (3.75, -7) {};
|
|
\node [style=none] (24) at (-0.25, -8) {};
|
|
\node [style=none] (25) at (0.25, -8) {};
|
|
\node [style=none] (26) at (-0.25, -10.5) {};
|
|
\node [style=none] (27) at (0.25, -10.5) {};
|
|
\node [style=none] (28) at (-3, -8.75) {};
|
|
\node [style=none] (29) at (9, -8.75) {};
|
|
\node [style=none] (30) at (9, -9.75) {};
|
|
\node [style=none] (31) at (-3, -9.75) {};
|
|
\node [style=none] (32) at (3, -9.25) {Context Switch};
|
|
\node [style=none] (33) at (-4, -3.25) {};
|
|
\node [style=none] (34) at (0, -3.25) {};
|
|
\node [style=none] (35) at (4, -3.25) {};
|
|
\node [style=none] (36) at (0, -5.5) {};
|
|
\node [style=none] (37) at (0.5, -5.5) {};
|
|
\node [style=none] (38) at (-0.5, -5.5) {};
|
|
\node [style=none] (39) at (-0.25, -13) {};
|
|
\node [style=none] (40) at (0.25, -13) {};
|
|
\node [style=none] (41) at (-0.25, -15) {};
|
|
\node [style=none] (42) at (0.25, -15) {};
|
|
\node [style=none] (43) at (-2.25, -6.75) {};
|
|
\node [style=none] (44) at (-2.25, -7.25) {};
|
|
\node [style=none] (45) at (-2.25, -6.25) {};
|
|
\node [style=none] (46) at (-4.25, -7.25) {};
|
|
\node [style=none] (47) at (-4.75, -6.75) {};
|
|
\node [style=none] (48) at (-5.25, -6.25) {};
|
|
\node [style=none] (49) at (-5.25, -15) {};
|
|
\node [style=none] (50) at (-4.75, -15) {};
|
|
\node [style=none] (51) at (-4.25, -15) {};
|
|
\node [style=none] (52) at (-5, -3.25) {};
|
|
\node [style=none] (53) at (-1, -3.25) {};
|
|
\node [style=none] (54) at (3, -3.25) {};
|
|
\node [style=none] (55) at (-2.25, -11.5) {};
|
|
\node [style=none] (56) at (-2.25, -12) {};
|
|
\node [style=none] (57) at (-3, -11.5) {};
|
|
\node [style=none] (58) at (-3, -12) {};
|
|
\node [style=none] (59) at (2.75, -14.25) {System Calls};
|
|
\end{pgfonlayer}
|
|
\begin{pgfonlayer}{edgelayer}
|
|
\draw [style=block] (6.center)
|
|
to (7.center)
|
|
to (3.center)
|
|
to (2.center)
|
|
to (8.center)
|
|
to (5.center)
|
|
to (1.center)
|
|
to (4.center)
|
|
to cycle;
|
|
\draw [style=dashed line] (1.center) to (2.center);
|
|
\draw [style=dashed line] (4.center) to (3.center);
|
|
\draw [style=kernel] (11.center)
|
|
to (10.center)
|
|
to (9.center)
|
|
to (12.center)
|
|
to cycle;
|
|
\draw [style=latex arrow] (20.center) to (22.center);
|
|
\draw [style=latex arrow] (23.center) to (21.center);
|
|
\draw [style=context switch] (30.center)
|
|
to (31.center)
|
|
to (28.center)
|
|
to (29.center)
|
|
to cycle;
|
|
\draw [style=latex arrow] (24.center) to (26.center);
|
|
\draw [style=latex arrow] (27.center) to (25.center);
|
|
\draw [style=latex arrow] (33.center) to (38.center);
|
|
\draw [style=latex arrow] (34.center) to (36.center);
|
|
\draw [style=latex arrow] (35.center) to (37.center);
|
|
\draw [style=latex arrow] (39.center) to (41.center);
|
|
\draw [style=latex arrow] (42.center) to (40.center);
|
|
\draw [style=latex arrow] (48.center) to (45.center);
|
|
\draw [style=latex arrow] (47.center) to (43.center);
|
|
\draw [style=latex arrow] (46.center) to (44.center);
|
|
\draw (48.center) to (49.center);
|
|
\draw (47.center) to (50.center);
|
|
\draw (46.center) to (51.center);
|
|
\draw [style=latex arrow dashed] (48.center) to (52.center);
|
|
\draw [style=latex arrow dashed] (47.center) to (53.center);
|
|
\draw [style=latex arrow dashed] (46.center) to (54.center);
|
|
\draw (56.center) to (58.center);
|
|
\draw (58.center) to (57.center);
|
|
\draw [style=latex arrow] (57.center) to (55.center);
|
|
\end{pgfonlayer}
|
|
\end{tikzpicture}
|