di  -  venerdì 29 Ottobre 2010

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

17 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    Fog76
     scrive: 

    Come sempre M$ poggia sempre sulle spalle di altri…

  • # 2
    Cesare Di Mauro
     scrive: 

    Non vedo perché. Cutler e il suo team erano SUOI dipendenti…

  • # 3
    Scolapasta
     scrive: 

    @Fog76
    Per fortuna!
    Così come per fortuna Linux poggia sulle spalle di Minx e OSX su quelle di Darwin, e questo sui BSD… quando il passato ci da buone lezioni, è il caso di impararle e portarle avanti.

  • # 4
    supertigrotto
     scrive: 

    Solo microsoft???????
    C’è una casa molto famosa che fa di peggio……

  • # 5
    phabio76
     scrive: 

    Complimenti a Felice per l’ottimo post, approfondito e condito al punto giusto di tecnicismi e aneddoti.
    Mi permetto di girarvi il link a “Triumph of the Nerds” che mi sono preso la briga di tradurre, dove, molto a grandi linee, viene raccontata la storia romanzata dal punto di vista dei protagonisti
    http://www.wemedia.it/blog/2010/08/il-trionfo-dei-nerd-parte-6/

  • # 6
    goldfix
     scrive: 

    se interessa approfondire l’argomento, consiglio questo ottimo libro:

    http://www.ibs.it/code/9788877503909/pascal-zachary-g-/guerrieri-del-software.html

  • # 7
    Felice Pescatore (autore del post) (Autore del post)
     scrive: 

    Tnk.
    Mi associo a goldfix consigliandovi, se masticate l’inglese, l’edizione in lingua originale:

    Showstopper: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft

  • # 8
    Giovanni
     scrive: 

    Buongiorno,

    Si, buono anche questo post che corregge un po’ il tiro conseguente ai commenti di quello della scorsa settimana. Il collegamento tra OS/2 e NT è qui molto più contenuto e giustamente riportato entro i limiti di un “quasi indolore” abbandono di OS/2 a se’ stesso …o alle fatiche di IBM. Cutler inizia con riprogettare interamente un OS assolutamente professionale per Gates che, grazie a questo acquisto, fa nuovamente “bingo!”.

    Non condivido molto l’affermazione: “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.” anche se è possibile che qualche commentatore poco “critico” l’abbia sostenuta.

    Intanto VMS era un OS per ottimi minicomputers di dieci anni prima (come lo era Unix) ed é normalissimo che certi principi impieghino almeno una decina d’anni per trasferirsi in una fascia di utenza più bassa (vedi i pc di oggi che sono le workstation di dieci o quindici anni fa). Poi NT era pensato come evoluzione del già ottimo VMS, infatti a Cutler era stato impedito di sviluppare MICA: che avrebbe dovuto essere l’OS degli anni Novanta per VAX e microVAX con il superprocessore PRISM (tecnologia RISC) per cui si prevedeva uno sviluppo ventennale!!!

    comunque buon articolo, con molte curiosità… adesso aspettiamo qualcosa ancora su Digital???… ricordo sempre, per il buon retrocomputing: JurassicNews (www.jurassicnews.com). Saluti e buon week end a tutti

    jb72

    @Fog76: commento superfluo ed inesatto!

  • # 9
    collione
     scrive: 

    imho il vero problema è che oggi ms si trova dalla parte di quei patent troll che vogliono bloccare ogni tentativo di “emulazione”

    che poi alla fine si finisce sempre per emulare migliorando e questo si chiama evoluzione, cosa che l’attuale sistema dei brevetti sta eliminando

    è scioccante sentire dirigenti ms ammettere candidamente che se l’attuale sistema dei brevetti fosse esistito negli anni ’80, ms sarebbe morta nel giro di qualche anno ( perchè impossibilitata a “copiare” )

    riguardo linux, dire che poggia su minix è una balla colossale, ma chi ve le racconta queste scemenze? Torvalds studiò minix e lo usava pure ma per fatti suoi

    linux è nato con codice indipendente cercando di replicare l’architettura unix il più fedelmente possibile e successivamente replicando l’api posix e da lì si è evoluto in maniera totalmente indipendente da tutti gli altri

    linux è al massimo unix-like per com’è strutturato ma non è minimamente derivato da unix, minix, bsd e compagnia

  • # 10
    Felice Pescatore (autore del post) (Autore del post)
     scrive: 

    @collione
    Vero! Tant’è che stesso Tanenbaum (autore di Minix) afferma che Linux è una cosa totalmente diversa.

    Il prof. Tanenbaum difende il creatore di Linux dalle accuse di plagio: “non sanno di cosa parlano”

  • # 11
    Giovanni
     scrive: 

    @collione
    Non mi sembra il caso di agitarsi tanto, credo che @scolapasta volesse semplicemente sottolineare che nel caso di NT non si tratta di plagio e che certe forme di “ispirazione” ben vengano anche in ambito tecnologico: così NT da VMS.

    MS ha copiato almeno quanto gli altri grandi della microinformatica (come ha fatto Apple), ha creato qualcosa di nuovo e, dove non poteva copiare, ha comprato del tutto! Ma il caso di NT è decisamente diverso.
    MS cerca di bloccare ogni tentativo di “emulazione” e sicuramente non è esistita un’età dell’oro in cui è stata dall’altra parte perché ha sempre cercato di fare business in modo molto feroce e a volte deprecabile… in fondo l’esplicito attacco agli hackers è stato di Bill Gates (e ciò gli ha meritato la fama di “cattivo”).

    Cmq anche Minix era Unix-like quanto Linux; è verissimo che Linux non deriva da Minix (SO di scarsissimo rilievo, tra l’altro), ma viene pensato alla stessa maniera di Minix in quanto Unix-like, appunto!
    Minix veniva commercializzato e perciò aveva una licenza a pagamento, seppure non costosa come quelle Unix (che al tempo vantava versioni proprietarie -quasi rubate- “super protette” e costosissime seppure quasi tutte derivate da BSD), Linux, ovviamente no.

    ciao

  • # 12
    collione
     scrive: 

    @Giovanni: no no per carità, non mi sto scaldando

    il punto è che però linux è uno dei sistemi maggiormente originali perchè inizia come sistema giocattolo scritto con poco e fare poco e diventa quello che è tramite un’infinità di peripezie

    scolapasta l’aveva paragonato a macos che ha mach come microkernel, ma un simile paragonato è sbagliatissimo perchè linux non ha nè l’architettura di minix nè codice di minix

    volevo solo puntualizzare questa cosa

  • # 13
    Scolapasta
     scrive: 

    Linux (kernel) è partito replicando apertamente alcune funzionalità del kernel Minix, che è quello che Linus stava studiando, dal suo stesso OP: “I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).”
    D’altronde è storia pacificamente accettata che i primi sviluppatori ad interessarsi ed a collaborare al progetto di Torvalds furono gli stessi che seguivano comp.os.minix su Usenet e che le idee che portarono furono anche esse derivate dalla scuola Minix.
    Con questo non volevo affatto dire che ne avesse copiato il codice, solo che Minix è stata la sua ispirazione e strumento di studio, il codice è ovviamente e oltretutto è basato su concetti architetturali diversi, sempre dal suo OP: “Yes – it’s free of any minix code”, o se non bastasse, dalla successiva diatriba con Tanenbaum.
    Linux (parliamo sempre del kernel) non è affatto un fenomeno nato dal nulla, anzi è proprio nato da una comunità che studiava ed utilizzava (a quei tempi i termini erano spesso sinonimi…) un kernel, Minix, creato da una delle maggiori menti dell’informatica (Tanenbaum), anche se Linus e la comunità hanno fatto nel loro progetto tante scelte diverse.
    @Giovanni, è vero che Minix non ha avuto grande diffusione, ma è stata una grandissima palestra per tanti ed è stato Tanenbaum a decidere di mantenerlo un kernel didattico più che tentarne le fortune commerciali.
    Le idee che ci sono dietro sono state ispirazione per la generazione successiva di kernel, quindi se la rilevanza si misura a copie vendute, ok, non è statu un sistema di rilievo, in caso contrario direi che Minix, come sistema ad uso esplicitamente accademico, è stato uno dei kernel più rilevanti come impatto sull’informatica di oggi.

    Tornando all’appoggiarsi sulle spalle degli altri, be, dopo questa partenza il successo del kernel Linux è venuto “incontrando” tutta una serie di sviluppatori che venivano dal preesistente ecosistema GNU, ancora in attesa della “maturazione del suo kernel HURD, e qui si potrebbe discorrere all’infinito sul bagaglio di esperienze e di formazione che si portavano dietro gente come Stallman e compagnia bella, per cui il progetto del kernel Linux è diventato il GNU/Linux (il sistema operativo e relativo ecosistema) che conosciamo oggi.

    Linux non è calato dal cielo, è una serie di buone idee, sviluppo e duro lavoro, che si sono innestate ad altre idee sviluppate in Minix e idee e codice sviluppate nel progetto GNU, un inseme in cui i leader hanno saputo trarre le dovute lezioni ed esperienze dal passato così come Cutler e il suo team hanno fatto tesoro dell’esperienza sviluppata con VMS per andare in MS a scrivere NT…

  • # 14
    Flare
     scrive: 

    Bell’articolo. Solo un appunto su: «un po’ come fatto per il nome del computer HAL 9000 del film 2001: Odissea nello spazio che deriva da IBM». È una storia che gira da diverso tempo e all’inizio lo credevo anche io (anni fa), ma poi venne smentita:
    http://en.wikipedia.org/wiki/HAL_9000#Origin_of_name

  • # 15
    Felice Pescatore (autore del post) (Autore del post)
     scrive: 

    @Flare.
    Grazie per la precisazione. Sapevo anch’io che in realtà HAL deriva da Heuristic ALgorithmic, ma la similitudine era più nell’ambiguità delle origini del nome e degli aneddoti relativi.

  • # 16
    gabri
     scrive: 

    @collione
    “è scioccante sentire dirigenti ms ammettere candidamente che se l’attuale sistema dei brevetti fosse esistito negli anni ’80, ms sarebbe morta nel giro di qualche anno”

    Non ho mai letto queste afferamzioni. Hai qualche link? Ho googleato ma non ne trovo.

  • # 17
    ciccio
     scrive: 

    La grande controversia di cui si discusse alla nascita di linux fu proprio la scelta di Torvalds di concepire la sua creatura con un kernel monolitico/modulare invece che un microkernel come appunto quello di minix, inoltre direi che linux replica sostanzialmente un UNIX SystemV che e’ cosa ben diversa da un BSD, c’e’ UNIX e UNIX :D

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.