Larger Compilations / Speed

Colin Douglas Howell chowell2@pacbell.net
Thu Aug 14 07:07:00 GMT 2003


F. Schaefer wrote:
> Joe Buck <jbuck@synopsys.com> wrote:
> 
> 
>>On Wed, Aug 13, 2003 at 10:14:12AM -0400, Andrew Pinski wrote:
>>
>>>The OS should cache the files for execution (on Darwin it does)
>>>so it looks more like an OS problem rather than a gcc problem.
>>
>>On Linux and every other modern Unix-like OS, the files are also cached
>>in memory.
>>
>
> Well, I admit that it's been some years since I studied some UNIX
> internals.  But, if I remember it right, the files are kept in a
> buffer-cache in RAM. Then when requested they are copied into the
> process data region. It is this copying, of course, that is a little
> slow. Not to speak about what is done to the cache by the copying of
> this large amount of data. 

In modern OSes with efficient memory management, files from the buffer
cache are not copied into the process memory space.  Instead, individual
pages from the files are simply remapped into the process memory space
in a demand-paged fashion, just as they would be when the executable was
first loaded from disk.  In this case, loading the executable only
requires setting up the process page table appropriately; no copying of
memory is required.

Colin



More information about the Gcc mailing list