Hi Gurus , I need to understand the interaction between the page cache (which is used for file systemn data cache) , and virtual memory map of a process which uses data from the cache. Where does the pages which are read from the disk is mapped inside a process? Imagine a simple c program: char *buf; buf = (char *)malloc(1000); This buf is allocated inside the heap , or in detail it is first reserved (in swap file) ,and on demand , it is allocated (inside the phy.ram) Then imagine that the code has the following line: *buf = 65 ; So i modifed the contents the buffer. As far as i know , if the pages which are modified like this , needs to be written to the swap disk in order to be reused again . So if these pages pageout by the os , they are written to the swap file. Now consider that ,i start to read data files by using read ,or readv or pread system calls. ( readv and pread are the io calls which oracle or other database systems uses on unix) fdes=open("/data/spss/x1.dat",O_RDONLY); while (fdes) { printf("%d\n",read(fdes, buf,sz)); } I wonder how things happen now. How the data blocks which are cached inside the page cache mapped to the process? If the file is read first time by this process , the file must be read from the disk. Then the blocks are cached inside the page cache. The page cache has no backing storage inside the swap file , but instead it is directly mapped from the data file itself. (Is this correct?) When my process reads data from the disk , then does the page that is inside the page cache copied into the process map ? Or is it shared and no copy takes place? Kind Regards, tolga -- redhat-list mailing list unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subjecthttps://www.redhat.com/mailman/listinfo/redhat-list