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 gmail.com> 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
register.
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.