Sorry bro, I cant accept your answer about the buffer allocn concept after realizing by going through some tests.
Its not like as you said:
The file being open for write gets a separate buffer to hold the new data.
The shared buffers only occur if both processes have the file open in read mode.
when a read or write sys call is going to operate, it first locks the file inode (shared by 2 procs) and then proceeds,
so that no other process changes the ref buffer's data. once the inode is released after read operation the write process
can change buffer's data no matter what old data was. After this write if read process continues its operation, it ends up reading
unexpected data. So, to say finally
"Inodes are locked during any I/O operations and they are left unlocked b/w 2 I/O operations. At this time other process can acquire lock and
can change shared buffer data, resulting in unexpected O/P for the read process. So, for any file open in the O.S whether for READ or WRITE, its
clear that ONE AND ONLY ONE BUFFER IS ALLOCATED FOR IT. NO MATTER HOW MANY PROCESS USE/MANIPULATE it."