Ever wonder why a pointer on i is 16 bytes long? And if you write
something other than a pointer into the space occupied by a pointer the
pointer is voided? Only 96 bits of the 128 bits are an actual memory
address, the rest is a capability which tells the hardware what you can
do with that pointer. The hardware enforces the policy, not the
operating system. And the hardware voids the pointer if the hardware
doesn't create the pointer. This is all necessary to support
single-level storage where all processes work in a single address space.
Other architectures assign a process its own address space that is an
offset of a hardware base address register that is maintained by the
operating system. So a pointer in C on Unix is just an integer (perhaps
a long integer ) offset that the program can directly maintain.
Single level store and capability based addressing allow one program to
pass a reference to a memory address to another program as all memory is
common to all processes but protected by capability. A capability
pointer can be passed from one process to another. This allows user
programs (like a GC) to build and enforce their own mutex, spin-lock,
and other parallel processing artifacts. With this feature, a garbage
collector doesn't need to stop all the other threads running in the
common address space just to do an inventory of unreferenced memory. GC
can run all the time if needed.
Of course, if you're only running one processor this is kind of moot.
That's one of the reasons the 32bit JVM runs better on 4 processor or
fewer machines. More than 4 processors, the classic JVM is running
faster.
-----Original Message-----
From: java400-l-bounces@xxxxxxxxxxxx
[mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Walden H. Leverich
Sent: Thursday, March 05, 2009 10:18 AM
To: Java Programming on and around the iSeries / AS400
Subject: RE: starting collection, reason stop the world collection
OK, this time I'll preface it with a statement that this is not targeted
at the poster. :-)
Capability based addressing on the i allows interprocess communication
methods that are impossible on any other architecture.
Wow, talk about kool-aid speak! How does it do it? Really, assume I know
a thing or two about memory architectures, technically and specifically
how does the GC do this magical thing on i?
-Walden
--
Walden H Leverich III
Tech Software
(516) 627-3800 x3051
WaldenL@xxxxxxxxxxxxxxx
http://www.TechSoftInc.com
Quiquid latine dictum sit altum viditur.
(Whatever is said in Latin seems profound.)
--
This is the Java Programming on and around the iSeries / AS400
(JAVA400-L) mailing list To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at
http://archive.midrange.com/java400-l.
As an Amazon Associate we earn from qualifying purchases.