The AIX kernel has many of the features you would expect in a third-generation operating system--scalability, Posix standard threads, logical volume management, frags, and on-the-fly disk compression. AIX 3.2 and earlier versions contained many features just now beginning to appear in other Unixes, such as a pageable and preemptive kernel, dynamic kernel extensions, and process threads.
Most Unix kernels run completely in RAM. This scheme avoids deadlocking the system in the event that the parts of the kernel responsible for swapping are themselves swapped out to disk. An entirely RAM-resident kernel has the disadvantage of consuming real memory for kernel tables that keep track of open files and devices, process states, and so forth.
For example, support of more simultaneous tasks (`processes' in Unix) than allowed by the default kernel configuration required you to edit a configuration file and recompile or regenerate the kernel. The system now supported more processes, but the kernel was always using the memory required for the bigger process table regardless of how many processes you were actually using. AIX makes all these tables very large in size to begin with (a process table is able to support 131,072 processes) but doesn't allocate the memory for them until it is needed, making the kernel's RAM footprint more in line with what it is actually being asked to do. This scalability is evident in many places throughout AIX. A pageable kernel is now a standard tool in the Unix kernel developer's arsenal and is also supported by other Unixes such as UnixWare and Solaris.
AIX makes adding new kernel functionality easier than most Unixes. Usually a developer who wants to extend kernel functionality has to regenerate the kernel, addi
ng their own object code to the list of objects linked together to produce the new kernel. Since each version of Unix has its own API to add new functions, this is a time-consuming and arcane process. AIX eases this task by supporting
dynamic kernel extensions
. This mechanism provides a single API for developers to add or remove new object code to an already running kernel. AIX documents the structures and calls necessary for a developer to create a kernel extension, and it gives sample code for a number of different types of extensions.
AIX was one of the earliest Unixes to use dynamic kernel extensions to introduce a version of Plug and Play into the workstation world. While many Unixes will recognize a new device on the first boot-up after installation, AIX will go an extra step and configure the device for immediate use. AIX also keeps track of devices and their configuration in the ODM (object data manager). This makes it possible for AIX to issue a warning boot-up if it c
an't find a device it has previously seen. If you had removed the device, you can run the
diag
command to configure AIX to remove the device from the ODM. If the device was powered off or unplugged during boot, you can power on the device and run the
cfgmgr
command which will rediscover the device and add or recreate a /dev entry.
illustration_link (21 Kbytes)
