�����󡢤ʤ���������ѡ�������ͤ������Τˡ�����Ѥ��Τ�ʤ���ŷ�򸫤����ӤΤ褦�ʵ�ʬ��

naoya�ΤϤƤʥ������꡼ - tmpfs �����������̤�ưŪ�ʤΤ�
tmpfs �� OS �����꤬­��ʤ��ʤä��Ȥ��˥���åפ��ơ�OS ¦�˥������ݤ����뵡ǽ������

�錄����Linux�ϥ桼�����Ȥ��Ƥ����褦�Τ�ʤ�������ɡ�����ä�tmpfs�Ρֵ�ǽ�פǤʤ��ơ�malloc()�ε�ǽ���Ȼפ��衣

��Υۡ��॰�饦��ɤ�FreeBSD�ˤ�md�äƤΤ����äơ�tmpfs�Τ褦�ʤ��Ȥ������Τ����ɡ�΢�Ǥ�malloc()�ǥ��꡼����ݤ��Ƥ���(FreeBSD�ξ�硢malloc()��Ȥ�ʤ�option�⤢�������)�������顢���꡼�١����Ǥ� file system �ο����񤤤Ȥ����Τϡ��¤�malloc()�ο����񤤤����Τޤ޸���롣

��ǡ��Ƕ��OS�Ǥϡ�malloc()��������äơ������ˤ�������Υ��꡼���Ȥ���Ȥ������ȤϤʤ��������ޤǤ⤽�λ����Ǥϡֻ��ѵ��ġפ�����NULL�Ǥʤ��ݥ��󥿡��ȶ��˽Ф���롣�ºݤ��ɤ߽񤭤ʤɤΥ������������äơ��Ϥ����OS��ɬ�פʥ��꡼����ݤ��롣���κݡ�ɬ�פȤ����swap�⤹�롣

�ʲ���C�ץ������򥳥�ѥ��뤷�ơ�tty����Ĥ����ơ������Ǥ����ư�����ʤ���⤦������top��¹Ԥ��Ƥߤ�ȡ������ͻҤ��褯�狼�롣process��¿������top -U naoya�Ȥ�����Ф�����

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#define M       1024*1024
#define RAMSIZE 256
int main(int argc, char **argv){
    int i, m, ramsize;
    char *buf, *p;
    ramsize = argc ? atoi(argv[1]) : RAMSIZE;
    if (ramsize == 0) { ramsize = RAMSIZE; }; /* in case atoi() fails */
    if((buf = (char *)malloc(ramsize*M)) == NULL) {
        perror(NULL); exit(errno);
    }
    fprintf(stderr, "%3d Mbytes malloc()'d\n", ramsize);
    p = buf;
    for (m = 0; m < ramsize; m++){
        for (i = 0; i < M; i++){
            *p++ = '\xff';
        }
        fprintf(stderr, "%3d Mbytes used\n", m+1);
        sleep(1);
    }
    for (i = 10; i > 0; i--){
        fprintf(stderr, "  \r%d\r", i);
        sleep(1);
    }
    free(buf);
    fprintf(stderr, "Memory free()'d; Press ctrl-c to kill me!\n");
    while(1){};
}

top�θ��Ф���OS�ˤ�äƤޤ��ޤ������ɡ�FreeBSD�ǤϤ�������ˤʤäƤ��롣

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND

Mac OS X �ǤϤ�����

  PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS RPRVT  RSHRD  RSIZE  VSIZE

���������ܤ��٤��ϡ�SIZE��RES����SIZE�����ϡ�OS�������ޤǻȤäƤ�����פȵ��Ĥ�Ф���ʬ��RES�����������˻Ȥ��Ƥ���ʬ����OS X�Ǥ�VSIZE��RSIZE��������������롣

�嵭�Υץ�������¹Ԥ���ȡ�SIZE������������ʬ�Ϥ��Τޤޤˡ�RES������������ʬ���������������ƹԤ��Ϥ����������free()�����ޤ�³����

���פʤΤϡ��֥��꡼��ưŪ�˳�����Ƥ�׺ݤˡ����䤹���˴ؤ��Ƥ�OS�������������������ݤ򸫤Ƥ���뤱�ɡ����餹���˴ؤ��Ƥϻ��¾�free()������ˡ���ʤ��Ȥ������ȡ�tmpfs�Ȥ�md�ξ�硢���줬����Τ��̾�umount�λ��Ȥ������Ȥˤʤ롣�ե�������������餽��˹�碌�ƻ��ѥ��꡼�����äƤ����д򤷤����ɡ����Ȥߤ���ͤ��Ƥ���Ϥ��ʤ��񤷤��Ȥ����ΤϤ狼���͡�

��������󤽤����������ۤΡ�in-memory fs���߷פ���Τϲ�ǽ�����ɡ�tmpfs�Ϥ����ޤǤ�����?�����Ԥ�Linux�˴ؤ��Ƥ��Τ�ʤ����ɡ���ݡ��Ȥ򸫤�¤ꤽ������ʤ���͡�

�Ȥ������Ȥǡ��ʤ������ɥ�����Ȥ˽񤤤Ƥʤ��Τ������ȡ������и���������å�ȯ���������ϰ��Τɤ��������ȤʤΤ��������Ǥ��ʤ����Ȥ����Τ������������ޤ޼¸�������äƤ��ޤ��ޤ��������ä��Τ��ȶ������̤ˤʤäƤ���ʬ�ϻȤ��ʤ��ȤʤäƤ��줿�ۤ������ä��ꤷ��������ɡ�

�Ȥ������ȤǤ��ä��ꤷ������?����ʾ�˴ؤ��Ƥϥ������Ǥˤʤ�Τ��ʡ���äѡ�Linux�����ϻ����Ǥʤ�����w

����ˤ��Ƥ⡢itmedia�ε����Ϥ���äȤҤɤ��Ȼפ����硣

Dan the Memory Gazzler