NAT32 is structured as a small, multi-threaded Operating System that runs as a Windows process. It has its origins in an IBM PC port of Douglas Comer's Xinu OS that I subsequently ported to the WIN32 platform back in the days of Windows 95.
NAT32 has all the functionality that an OS should provide, including:
- Thread creation and management
- A set of synchronisation primitives (semaphores, messages, ports, critical sections etc.)
- Memory management (heap storage, buffer pools)
- Queues and lists
- Devices
- Shell
All of the Xinu primitives are implemented as functions that call appropriate WIN32 functions, and are thus compatible with any version of Windows.
Attentive readers will be wondering where in the above list the networking functionality resides. The answer will be provided in the next article that describes NAT32 I/O devices.