差分

移動先: 案内検索

記憶管理

117 バイト追加, 2018年1月16日 (火) 10:07
/* Linuxのスワップ */
<pre>
/dev/hda3 none swap sw ,pri=0 0 0
</pre>
つまり、子プロセス側となったdashのメモリは、この時点ではシェアしているものを使っていることがわかります。
<pre class="bash">
$ dash
$ cat /proc/$$/smaps | head -9
Private_Dirty: 0 kB
Referenced: 76 kB
</pre>
== mmap ==
* プログラムmmap.c <syntaxhighlight lang='C' line="1" >#include <stdio.h>#include <unistd.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/mman.h> main() { int fd; struct stat st; char *p; int i; fd=open("dat",O_RDWR); fstat(fd, &st); p=mmap(0,st.st_size,(PROT_READ|PROT_WRITE),MAP_PRIVATE,fd,0); for(i=0; i < st.st_size -1 ; i++) { printf("[%c]",p[i]); } close(fd); }</syntaxhighlight> * 実行<pre class="bash">
$ echo 'abcdefg' > dat
$ cc mmap.c
$ ./a.out
[a][b][c][d][e][f][g]$
</pre>