Dal post dedicato al PDP è scaturito un’interessante dibattito sulle origini di Windows NT. Vediamo allora di analizzare più a fondo la nascita di “New Technology”, alla base degli attuali sistemi operativi di Microsoft.
Temporalmente ci posizioniamo tra la fine degli anni ’80 e l’inizio degli anni ’90, periodo in cui il mercato dei PC era in piena espansione ed il binomio Microsoft/IBM era sinonimo di computer stesso.
Microsoft era già impegnata su diversi fronti e con diversi OS, tra cui DOS ed OS/2, quest’ultimo sviluppato proprio in collaborazione con BigBlue e pensato come il sistema operativo del “futuro”. Nonostante il contributo congiunto dei due big, il nuovo sistema operativo era pesante, lacunoso e non in grado di farsi apprezzare dagli utenti di PC.
Inoltre due elementi stimolavano l’impegno parallelo di Microsoft in altri progetti relativi sempre al settore dei sistemi operativi: le nuove CPU basate su architettura RISC, profondamente diverse da quelle x86 di Intel, e l’avanzata dei sistemi UNIX like negli ambiti professionali e di rete.
Gates, allora, comincia ad accarezzare l’idea di un “portable OS” e nel 1988 coglie al volo l’opportunità di assumere David Cutler, dopo che quest’ultimo ha dato l’addio a Digital in seguito alla cancellazione del progetto Prism/MICA di cui era tam-lead. Precedentemente Cutler aveva dato i natali anche a VMS per VAX.
David N. Cutler
Cutler, che come unica condizione pone quella di portare con se parte del team originale di VMS, comincia a lavorare ad un sistema minimale basato su kernel ibrido che identifica con la sigla “NT”. Lo stesso Cutler, intervistato sull’origine di tale acronimo, afferma con ironia che “NT” deriva da VMS++ (ovvero VMS+1, considerando che nel linguaggio C++, utilizzato per la scrittura di parte di esso, una variabile si incrementa di una unità con il ‘++’). Aumentando ogni singola lettera dell’acronimo VMS di una unità si ottiene WNT, un po’ come fatto per il nome del computer HAL 9000 del film 2001: Odissea nello spazio che deriva da IBM. Più verosimilmente la sigla “NT”, pur non avendo un significato ufficiale, deriva da “N-Ten”, l’emulatore della CPU Intel i860 sul quale era iniziato lo sviluppo del progetto, così come sostenuto anche da Mark Lucovsky, stretto collaboratore di Cutler.
Nel frattempo Microsoft ha ancora aperto il fronte OS/2, e, visto che il team di Cutler si occupa essenzialmente del kernel e dei servizi affini, decide di utilizzare le API di OS/2 come interfacce base per il nuovo OS. Nasce così quello che viene comunemente indicato come “branch 3” o “filone 3” di OS/2 e che condivide con il “branch 2” solo le API di programmazione e la UI. Inizialmente al progetto viene dato il nome di OS/3, poi OS/2 ver. 3 e codename OS/2 NT.
Di questi “branch” e della relativa denominazione troviamo, tra l’altro, traccia nell’interessante articolo Microsoft Widens Its Split With I.B.M. Over Software, apparso sul New York Times il 27 luglio 1991, in cui Andrew Pollack sintetizza la nuova strategia della casa di Redmond rispetto al software di sistema. In particolare:
Reflecting their widening split with I.B.M., Microsoft executives said they would no longer call a new operating system they are working on OS/2 3.0. Rather, the new operating system will be named Windows NT, standing for New Technology. And Windows NT will not be able to run programs written for OS/2, as had previously been planned.
Come si vede è la stessa Microsoft ad affermare che, inizialmente, Windows NT era stato pensato come OS/2 3.0, sostanzialmente per creare un legame con il recente passato da cui ereditava parte delle tecnologie.
La nuova strategia è conseguenza del successo senza precedenti di Windows 3.0, che spiazza persino Microsoft ed irrigidisce fortemente IBM, preoccupata del marketing aggressivo della casa di Redmond. Infatti il timore è che gli utenti scelgano sempre meno sistemi in base al produttore OEM , essendo i cloni in grado di eseguire lo stesso sistema operativo e, di riflesso, le stesse applicazioni.
Comunque la strada è ormai tracciata, e Microsoft ed IBM rompono la joint venture relativa allo sviluppo di OS/2. Il progetto OS/2 NT si trasforma in Windows NT ed “NT” assume il significato odierno di New Technology, principalmente per motivi di marketing.
La differenza però non è soltanto nel nome. Infatti da NT vengono eliminate le API di OS/2 in favore di una versione a 32bit di quelle di Windows, Win32 API, e dall’HTFS (il file system di OS/2) si passa all’NTFS.
La nuova vision di Microsoft è chiara:
“Microsoft envisioned the creation of Windows NT, a portable operating system capable of supporting multiprocessors, true preemptive multitasking, full 32-bit access, multithreading, shared memory, security and crash protection, among a host of other important features. DOS and 16-bit Windows would be supported as host environments. (Podanoffsky)”
BigM sposta gran parte del proprio team dedicato ad OS/2 sotto la guida di Cutler, ma decide comunque di non abbandonare del tutto il precedente progetto, pensando di rendere disponibile un’API OS/2-Based per NT. Windows NT viene inoltre re-ingegnerizzato in modo da poter eseguire molte delle applicazioni Win16 e Dos, affiancando il già pianificato supporto a quelle basate sulle API POSIX.
NT Origin
In realtà anche IBM continua a beneficiare dei vecchi accordi, tant’è che OS/2 è in grado di eseguire applicazioni per Windows 3.x, grazie all’utilizzo di una versione “embedded” e, addirittura, rilascia un’edizione speciale OS/2 2.x per Windows che utilizza l’eventuale ambiente Microsoft già presente sul proprio sistema. Anche le release 3 e 4 di OS/2 si presentano in due edizioni, “blue spin” e “red spin”, di cui l’ultima senza l’ambiente Windows 3.x.
Le scelte di Microsoft sollevarono non poche perplessità tra i critici del settore. In particolare veniva considerata opinabile la scelta di non continuare lo sviluppo di OS/2, evidenziando lo stretto legame di NT con VMS, sistema che risaliva al 1977. I processi, lo scheduler, la gestione delle priorità, il supporto multiprocessore erano, inizialmente, molto simili, tanto che il libro VAX/VMS Internals and Data Structures della Digital Press rappresentava un’ottima descrizione dei corrispondenti aspetti di Windows NT, come evidenziato dalla tabella seguente:
Tabella di confronto tra terminologia VMS e NT | |
VMS | Windows NT |
Interrupt Priority Level (IPL) | Interrupt Request Level (IRQL) |
Asynchronous System Trap (AST) | Asynchronous Procedure Call (APC) |
Fork Procedure | Deferred Procedure Call (DPC) |
I/O Request Packet (IRP) | I/O Request Packet (IRP) |
Bug Check | Bug Check |
System Service | System Service |
sys.exe | ntoskrnl.exe |
Paged Pool | Paged Pool |
Nonpaged Pool | Nonpaged Pool |
Look aside List | Look aside List |
Section | Section |
Mailbox | Mailslot |
In conclusione è curioso notare che Microsoft, dopo aver abbandonato il progetto OS/2, ha cercato di cancellare le proprie tracce dalla storia dell’OS creato con IBM. Infatti OS/2 è quasi sempre associato ad IBM e si fatica a credere che la casa di Redmond fosse coinvolta nel suo sviluppo.
Nonostante ciò Windows NT, fino alla versione 2000, veniva fornito con una sorta di emulatore che garantiva l’esecuzione delle applicazione OS/2 a 16 bit in ambiente testuale. Inoltre Microsoft realizzò il Presentation Manager add-on for NT, che permetteva di eseguire applicazioni grafiche OS/2 della serie 1.x, anche se il tool fu tenuto quasi segreto. Entrambe le utility erano frutto del lavoro del piccolo team di BigM che aveva continuato a supportare OS/2 1.x, ed in particolare la versione 1.3.
Microsoft OS/2 1.3, l’unica versione commercializzata direttamente da BigM
Per un approfondimento sulle differenze intrinseche tra OS/2 e Windows NT, vi segnalo l’interessante post di Cesare Di Mauro: I Subsystem di Windows: fra retrocompatibilità ed evoluzione