============================= Zeitmessung mit copy-on-write ============================= Der Aufwand für das Klonen eines Prozesses verteuert sich, wenn einzelne Kacheln durch den Copy-on-Write-Mechanismus dupliziert werden müssen. Das lässt sich austesten mit einem Array, auf das wir kachelweise zugreifen. Die Kachelgröße lässt sich bekanntlich mit dem Systemaufruf _getpagesize_ ermitteln: ---- CODE (type=c) ------------------------------------------------------------ volatile char global[1048576]; ------------------------------------------------------------------------------- Fragen ====== * Warum wurde das Array mit _volatile_ deklariert? * Warum reicht ein kachelweiser Zugriff? Aufgabe ======= Sei $G$ die Größe des globalen Arrays _global_ und $P$ die Kachelgröße. Erweitern Sie das Programm dahingehend, dass * $\lfloor \frac{G}{P} \rfloor$ Messungen durchgeführt werden, * wobei bei der $i$-ten Messung (ab 0 gezählt) jeder Kindprozess $i$ Kacheln im Array _global_ verändert und * für jede Messung die Zahl der veränderten Kacheln und die gemessene Zeit in us auf einer Zeile ohne weiteren Text ausgegeben wird. Dann können Sie anschließend das Ergebnis mit _gnuplot_ visualisieren. :navigate: up -> doc:index back -> doc:session01/page04 next -> doc:session01/page06