I am unable to understand how files are managed in memory mapped I/O. As normal If we open a file using open or fopen, it returns fd or file pointer respectively. After this open where the file resides for processing. It is in memory(copy of the file which is in hard disk) or not? If it is not in memory where the data is fetch by consequent read or write system call or It fetchs data from the hard disk for each time of calling read or write. Otherwise the copy of the file is stored in memory and the file is accessed by process for furthur manipulation and once the process is completed the file is copied to hard disk. In the above concepts which scenario is worked ?
The following is the definition given for memory mapped i/o in Advanced Programming in Unix Environment(2nd Edition) book:
Memory-mapped I/O lets us map a file on disk into a buffer in memory so that, when we fetch bytes from the buffer, the corresponding bytes of the file are read. Similarly, when we store data in the buffer, the corresponding bytes are automatically written to the file. This lets us perform I/O without using read or write.
what is mapping a file into memory? And here, they defined the memory is placed in between stack and heap. In this memory, what type of data is present after mapping a file. It contains copy of the file or the address of the file which resides in hard disk. And how the above scenario becomes true.
Does anyone explain the working mechanism of memory mapped I/O and mmap functionality?
