Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/17/84; site opus.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!allegra!bellcore!decvax!genrad!teddy!panda!talcott!harvard!seismo!hao!cires!nbires!opus!rcd
From: rcd@opus.UUCP (Dick Dunn)
Newsgroups: net.unix-wizards
Subject: Re: Virtual machines
Message-ID: <1011@opus.UUCP>
Date: Tue, 8-Jan-85 02:58:03 EST
Article-I.D.: opus.1011
Posted: Tue Jan  8 02:58:03 1985
Date-Received: Fri, 11-Jan-85 07:14:16 EST
References: <103@redwood.UUCP>
Organization: NBI,Inc, Boulder CO
Lines: 23

> ...
> You managed your "core image" via front-panel-like commands, such as "examine"
> and "deposit". It was perfectly legal to sit and type octal machine code into
> (your job's) core and run it. You could "get" an image, run it, halt it, patch
> it, and "save" it again. When a program exited, the core image was still there.
> 
> In fact, certain large programs depended on this -- after compiling one
> of them you would run it one time so it could build its symbol tables (or
> whatever), then it changed its starting address and exited so you could save
> it with the startup code already done (a trick "ps" could use, no doubt!).

This is a trick I've seen in more than one interpretive implementation of a
language.  A predefined procedure is provided in the language which
"freezes" a copy of the program, interpreter and all, at the point the
procedure is called.  When you have a program which requires a lot of setup
(or if the interpreter itself has a long startup time), you "freeze" the
program after the initialization and save the image at that point for
people to use.  It could conceivably even be useful for compiled
implementations of languages such as Pascal which (in their standard form)
lack data initialization.
-- 
Dick Dunn	{hao,ucbvax,allegra}!nbires!rcd		(303)444-5710 x3086
   ...I'm not cynical - just experienced.