Previous Section | Next Section | Table of Contents | Glossary | Index |
SAVE-APPLICATION identifies code vectors and the pnames of interned symbols and copies these objects to a "pure" area of the image file it creates. (The "pure" area accounts for most of what the ROOM function reports as "static" space.)
When the resulting image file is loaded, the pure area of the file is now memory-mapped with read-only access. Code and pure data are paged in from the image file as needed (and don't compete for global virtual memory resources with other memory areas.)
Code-vectors and interned symbol pnames are immutable : it is an error to try to change the contents of such an object. Previously, that error would have manifested itself in some random way. In the new scheme, it'll manifest itself as an "unhandled exception" error in the Lisp kernel. The kernel could probably be made to detect a spurious, accidental write to read-only space and signal a lisp error in that case, but it doesn't yet do so.
The image file should be opened and/or mapped in some mode
which disallows writing to the memory-mapped regions of the file
from other processes. I'm not sure of how to do that; writing to
the file when it's mapped by CCL
can have unpredictable and
unpleasant results. SAVE-APPLICATION will delete its output
file's directory entry and create a new file; one may need to
exercise care when using file system utilities (like tar, for
instance) that might overwrite an existing image file.
Previous Section | Next Section | Table of Contents | Glossary | Index |