diff --git a/moniste/kayttojarjestelmat.tex b/moniste/kayttojarjestelmat.tex index 9681faf1bcaf5a5c35de9be4bdc2096afa2759c6..23147da549e1d4288f2ea3511d02dc471de7b46a 100644 --- a/moniste/kayttojarjestelmat.tex +++ b/moniste/kayttojarjestelmat.tex @@ -105,6 +105,17 @@ % \renewcommand{\includegraphics}[2][width=\textwidth]{\IfFileExists{#2}{\includegraphicsoriginal[#1]{#2}}{\noimage}} + +% pystyteksti bittimerkinnöille +\newlength{\bitlabelwidth} +\newcommand{\rotbitheader}[1]{% + \tiny + \settowidth{\bitlabelwidth}{\quad 99}% + \rotatebox[origin=B]{90}{\makebox[\bitlabelwidth][r]{#1}}% +} + + + \begin{document} %\include{./tex/prologi} diff --git a/moniste/tex/muistinhallinta.tex b/moniste/tex/muistinhallinta.tex index 96cd14fbca2c1964c05a69343d5bfd1576e0cad8..697daa71a9a778326abf21bee2a137f3b95e2f3e 100644 --- a/moniste/tex/muistinhallinta.tex +++ b/moniste/tex/muistinhallinta.tex @@ -304,7 +304,97 @@ x86-64 -arkkitehtuurissa hienojakoisemmin niin sanotun \begin{figure}[ht] \centering - \includegraphics[width=.8\textwidth]{osoitteenmuunnos_sivutaulu_20bit_leikkiarkkitehtuuri} + % \includegraphics[width=.8\textwidth]{osoitteenmuunnos_sivutaulu_20bit_leikkiarkkitehtuuri} + + \begin{bytefield}[leftcurly=.,rightcurly=.,bitwidth=0.9em]{32} + \bitheader[endianness=big,bitformatting=\rotbitheader]{0-31} \\ + \begin{rightwordgroup}{(PTE:n osoite)} + \begin{leftwordgroup}{rivi/indeksi} + \bitbox{8}{käyttöj.} & \bitbox{12}{Fyysisen sivun numero} & + \bitbox{4}{käyttöj.} & + \bitbox{2}{res.} & + \bitbox{1}{D} & \bitbox{1}{A} & \bitbox{1}{E} & + \bitbox{1}{U} & \bitbox{1}{W} & \bitbox{1}{P} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x027000 } + \begin{leftwordgroup}{0x00} + \bitbox{8}{} & \bitbox{12}{0x000} & + \bitboxes{1}{000000000000} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x027004 } + \begin{leftwordgroup}{0x01} + \bitbox{8}{} & \bitbox{12}{0x345} & + \bitboxes{1}{001000011101} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x027008 } + \begin{leftwordgroup}{0x02} + \bitbox{8}{} & \bitbox{12}{0x88a} & + \bitboxes{1}{000000001101} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x02700c } + \begin{leftwordgroup}{0x03} + \bitbox{8}{} & \bitbox{12}{0x678} & + \bitboxes{1}{000000010111} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x027010 } + \begin{leftwordgroup}{0x04} + \bitbox{8}{} & \bitbox{12}{0x000} & + \bitboxes{1}{000000000110} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x027014 } + \begin{leftwordgroup}{0x05} + \bitbox{8}{} & \bitbox{12}{0x9ec} & + \bitboxes{1}{010000110111} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \skippedwords \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x0271fc } + \begin{leftwordgroup}{0x7f} + \bitbox{8}{} & \bitbox{12}{0x3c0} & + \bitboxes{1}{000000110111} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x027200 } + \begin{leftwordgroup}{0x80} + \bitbox{8}{} & \bitbox{12}{0x000} & + \bitboxes{1}{000000000000} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \skippedwords \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x0273f8 } + \begin{leftwordgroup}{0xfe} + \bitbox{8}{} & \bitbox{12}{0x0e2} & + \bitboxes{1}{000000110011} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + \begin{rightwordgroup}{$\leftarrow$ 0x0273fc } + \begin{leftwordgroup}{0xff} + \bitbox{8}{} & \bitbox{12}{0x0f0} & + \bitboxes{1}{000000011001} + \end{leftwordgroup} + \end{rightwordgroup} \\ + + + \end{bytefield} + \caption{\label{fig:leikkisivutaulu} Leikkiesimerkki prosessin sivutaulusta 20-bittisellä virtuaaliosoiteavaruudella, 24-bittisellä fyysisellä osoiteavaruudella ja 4096 tavun @@ -336,7 +426,46 @@ virtuaalinen\footnote{Esimerkiksi AMD64 määrittelee fyysisen \begin{figure}[ht] \centering - \includegraphics[width=.5\textwidth]{osoitteenmuunnos_20bit_leikkiarkkitehtuuri} + % \includegraphics[width=.5\textwidth]{osoitteenmuunnos_20bit_leikkiarkkitehtuuri} + \begin{bytefield}[leftcurly=.,rightcurly=.,bitwidth=0.9em]{32} + + \bitbox[]{4}{0x} + \bitboxes[]{4}{03cde} + \\ + + \bitbox[]{4}{Bitit:} & + \bitbox{4}[bgcolor=gray!50]{0 0 0 0} & + \bitbox{4}[bgcolor=gray!50]{0 0 1 1} & + \bitbox{4}[bgcolor=gray!20]{1 1 0 0} & + \bitbox{4}[bgcolor=gray!20]{1 1 0 1} & + \bitbox{4}[bgcolor=gray!20]{1 1 1 0} & + \\ + + \bitbox[]{4}{Osiot:} & + \bitbox[]{8}[bgcolor=gray!50]{Bitit 19…12} & + \bitbox[]{12}[bgcolor=gray!20]{Bitit 11…0} + \\ + + \bitbox[]{4}{} & + \bitbox[]{8}[bgcolor=gray!50]{\small (8 bittiä)} & + \bitbox[]{12}[bgcolor=gray!20]{\small (12 bittiä)} + \\ + + \bitbox[]{4}{Indeksit:} & + \bitbox[]{8}[bgcolor=gray!50]{3} & + \bitbox[]{12}[bgcolor=gray!20]{0Xcde (=3294)} + \\ + + \bitbox[]{4}{} & + \bitbox[]{8}{} & \bitbox[]{12}{\raggedright Osoite sivun sisällä.} + \\ + + \bitbox[]{4}{} & + \bitbox[]{8}{\raggedright Indeksi sivutaulun riviin.} & + \bitbox[]{12}{\raggedright (Pysyy samana fyysisellä Sivulla.)} + + \end{bytefield} + \caption{\label{fig:leikkiosoite} Leikkiesimerkki prosessin virtuaalimuistiosoitteesta 20-bittisellä virtuaaliosoiteavaruudella ja 4096 tavun sivukoolla.}