AIX for IBM system 370

Stefan Skoglund (lokal användare) stefan.skoglund at
Tue Feb 2 05:44:15 CST 2016

mån 2016-02-01 klockan 20:37 -0800 skrev Guy Sotomayor: 
> On 2/1/16 8:11 PM, Eric Smith wrote:
> > On Mon, Feb 1, 2016 at 8:09 PM, devin davison <lyokoboy0 at> wrote:
> >> I really wanted to take a look at the AIX version of unix.
> >> I don't have any of the original hardware, I assume there was a straight
> >> unix port for the system 370,
> > There may be a "straight unix port" for the System/370, but AIX ain't
> > it. The earlier IX/370 product may be closer to a straight port, but
> > is probably even less easily found than AIX/370.
> >
> > "AIX looks like it was implemented by a pretty smart space alien who
> > heard Unix described to him by a different space alien, but they had
> > to gesture a lot because their universal translators were broken."
> >      --unknown, but often misattributed to Paul Tomblin
> You have to remember that IBM called all of it's UNIX products AIX 
> regardless of where they came from.
> IX/370 was prior to the AIX naming and if I recall, that was done by Interactive.  AIX/370
> and AIX PS/2 actually were the same code base (as opposed to AIX RT and AIX 3...RS/6000).
> Those code bases were from Locus Computer Corporation.
> The AIX in the quote was regarding AIX for the RS/6000.  The kernel for AIX on the
> RS/6000 bore no real resemblance to any other Unix kernel.  That was mainly due to
> the size of the virtual address space of the Power processors.  At the time (32-bits)
> the Power CPU supported a 52-bit virtual address space and with 256MB segments,
> it was possible to map the 4GB address with 16 segment registers also because
> Power used "inverted page tables", there was no real notion of reloading the page
> tables.  The page table described the full 52-bit address space.  So to do an address
> space switch, you just needed to reload a significant set of the segment registers
> (actually quite fast).

> What the kernel did was to allocate each data structure as an array and pointed a
> segment register at it.  Since at that point, virtual addresses were "free", it was just
> point a segment register at the array and away you go.  Pretty much everything in
> the kernel was an index into an array.  Which array, was determined by the segment
> Yes, it was alien (vs traditional Unix kernels) but it was simple and 
> quite fast.

The memory translation is reversed in comparison with how it is done on
the SPARC and the x86, essentially the current loaded tables describes
what IS in memory (RAM), not what could be there which means that you
suddenly have a cap (?) on how much silicon is needed to handle a large
virtual address space. A pretty nice little example of good engineering.

Which also reminds me a little about how page faults is handled in the
MIPS architecture.

Another difference (today at least) between AIX 5 and the current crop
of commercial server Linux (RedHat EL and Suse) is how user software and
operating system packages is installed and kept current/updated.

installp has a far more refined (but complex) way of treating failed
updates/installations which is a bit of trouble for cross-platform
system configuration systems (cfengine for example.)
What is good enough on Linux isn't good enough on AIX.

More information about the cctalk mailing list