Re: Relocating application architecture and compiler support
From: Anne & Lynn Wheeler (lynn_at_garlic.com)
Date: 01/22/05
- Next message: bhawley_at_luminex.com: "Need feedback on potential CPU's"
- Previous message: Bibico Cando: "Re: help! need LPC9xx ICP spec"
- In reply to: glen herrmannsfeldt: "Re: Relocating application architecture and compiler support"
- Next in thread: Peter Flass: "Re: Relocating application architecture and compiler support"
- Reply: Peter Flass: "Re: Relocating application architecture and compiler support"
- Reply: Joe Morris: "Re: Relocating application architecture and compiler support"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Fri, 21 Jan 2005 16:29:42 -0700
glen herrmannsfeldt <gah@ugcs.caltech.edu> writes:
> But there is one thing that OS/360 does easily that is hard in other
> systems, which is what the LINK macro does. To take another
> program, load it into the same address space, execute it (with the
> original still addressable) and then return.
>
> I remember TOPS-10, where each program was loaded with virtual
> origin of 0. There was a system for sending files to the print
> queue which involved writing the entire address space to disk,
> running the QUEUE program with an option to execute a program when
> it was done, which would then reload and continue on.
>
> Any system with a fixed load point can't have two programs in the
> same address space at the same time.
>
> In the OS/360 case, besides doing LINK, many routines, especially
> access methods, were directly addressable somewhere in system space.
> Now, there are systems which reserve parts of the address space for
> system and parts for user, but that doesn't help LINK.
basically you could do link-like function in both os/360 as well as
tss/360. the primary difference was that os/360 had to read the
executable file image into memory and then run the address constant
swizzle against that were randomly sprinkled thruout the execution
image.
in the tss/360 scenario ... you just had to memory map some portion of
the virtual address space to the executable file image on disk (and
let the paging operation fetch the pages as needed) ... and all the
address constants needing swizzling were kept in a different
structure.
os/360 had a single real address space orientation so that it was
possible for multiple different processes to share the same executable
image because they all shared the same (single, real) address space.
tss/360 had multiple virtual address spaces .... and for multiple
different processes to share the same exact executable copy ... it
relied on the shared segment infrastructure.
in the os/360 scenario, all program loading was to a unique real
address ... since all processes shared the same, single real address
space (there was no chance for program address conflict ... since each
program could be assigned a unique real address as it was read into
memory).
in the tss/360 scenario, different processes might load & populate
their own virtual address space in difference sequences
... potentially creating address assignment conflict if there was a
requirement that each application have identically assigned virtual
address across all virtual address spaces.
in the os/360 scenario ... if you had two different processes,
the first LINKed app1, then app2, then app3, and finally app4 and
the second LINKed app2, then app4, then app3, and finally app1 ...
it all fell out in the wash since there was a single global
real address space.
a difference between the os/360 and tss/360 operation, is that os/360
allowed all the address constants (needing position location
swizzling) to be randomly sprinkled thruout the executable
image. tss/360 collected address constants (needing swizzling) into a
different structure.
both could do dynamic process location specific binding at program
load time. however, in the tss/360 scenario ... different processes
could share the same exact executable image at different address
locations ... because the executable image was a separate structure
from the structure of address constants (that required location
specific swizzling).
-- Anne & Lynn Wheeler | http://www.garlic.com/~lynn/
- Next message: bhawley_at_luminex.com: "Need feedback on potential CPU's"
- Previous message: Bibico Cando: "Re: help! need LPC9xx ICP spec"
- In reply to: glen herrmannsfeldt: "Re: Relocating application architecture and compiler support"
- Next in thread: Peter Flass: "Re: Relocating application architecture and compiler support"
- Reply: Peter Flass: "Re: Relocating application architecture and compiler support"
- Reply: Joe Morris: "Re: Relocating application architecture and compiler support"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|