I sistemi operativi su x86 negli Anni 90

Mentre scrivo queste note (2016), l’informatica personale e professionale (non server) gravita attorno a due famiglie di microprocessori: x86 e ARM. I primi regnano da sempre su notebook e desktop (e server), i secondi su smartphone, tablet, wearable e set-top box.

Trent’anni fa la situazione era ben diversa! C’era un’ampia scelta di processori e architetture. E il mercato dei microcomputer era diviso in personal computer e workstation, con queste ultime equipaggiate con processori RISC dalle prestazioni e dal prezzo stellari.

Le macchine NeXT, come tante altre piattaforme nate negli Anni ’80, erano basate su architettura Motorola 68K, in particolare sul 68040 a 25 o 33 MHz. Prima dell’arrivo della 68060, questa CPU era la più potente della famiglia, partita con lo storico 68000 a 16 bit (cuore di Macintosh, Amiga, Atari ST) e successivamente evoluta sui successivi 68020 e 68030. Fatto poco pubblicizzato nei dibattiti sul retrocomputing, il sistema operativo NeXTStep fu reso disponibile anche per altre architetture oltre alla m68K e, dunque, al NeXTCube e alle NeXTstation: Intel x86, HP PA-RISC e Sun SPARC. Merito del fatto che fosse basato su un kernel Unix, senza dubbio: Unix e il linguaggio C, infatti, sono stati progettati proprio con la portabilità in mente. Supportare diverse architetture, in realtà, non fu una caratteristica solo di Unix: anche le prime versioni di Windows NT vennero rese disponibili su diverse architetture (x86, DEC Alpha, MIPS R4000 per la 3.1, PowerPC e SPARC per la successiva 3.51). Anche BeOS apparve prima per PowerPC e poi per Intel. L’architettura x86 a 32 bit era ancora una scommessa e l’arena dei microprocessori RISC ad alte prestazioni era piuttosto affollata: probabilmente nessuno sapeva per certo quale (o quali) architettura sarebbe risultata vincente e non si voleva perdere il treno. Sono trascorsi oltre vent’anni da allora e la storia è scritta: in ambito PC è rimasta solo l’architettura Intel, oggi consolidata a 64 bit e multicore, la sforzo di IBM e Motorola su PowerPC si è arenato sul G5, i microprocessori RISC hanno perso il vantaggio di prestazioni, i microprocessori non x86 sono pressoché totalmente relegati al mondo dei server mission critical, come quelli delle compagnie telefoniche.

Del mondo delle workstation RISC parlerò prossimamente, mentre in questa sede vorrei sofferarmi sul mondo dei personal. È interessante, infatti, soffermarsi sulla architettura x86, guardando la situazione al 1993, anno in cui NeXT ha rilasciato NeXTStep versione 3.1 per la piattaforma Intel. La tabella qui sotto mostra la timeline dei sistemi operativi a 32 bit per piattaforma x86 (in grigio il sistema su architetture non x86, in verde la disponibilità sulla piattaforma Intel):

Screen Shot 2016-05-11 at 07.54.09

In quel periodo la stragrande maggioranza dei computer x86 faceva girare il DOS (con i suoi abbondanti 640K di memoria RAM!) che a sua volta faceva girare Windows. Tra i sistemi a 32 bit in grado di sfruttare appieno le caratteristiche dei processori 80386 e 80486 c’era OS/2. La versione 2.0 fu la prima realmente a 32 bit, mentre la successiva versione 2.1 migliorò prestazioni e compatibilità. Nel 1993, insieme a NeXTstep e OS/2, fece la sua comparsa Windows NT 3.1, il sistema operativo sviluppato da Microsoft in parallelo allo stream al 16bit. La release 1.0 di Linux arriverà nel 1994, mentre BeOS arriverà dopo qualche anno. Possiamo citare anche Solaris (che si chiamava SunOS) e Plan 9, uscito dai laboratori AT&T come il suo predecessore Unix.

Volendo abbracciare un quinquennio, tra il 1993 e il 1998, appare un mercato ricco che offriva ben 6 sistemi operativi (NeXTSTep, Solaris, BeOS, Windows NT, OS/2, Linux e Plan 9) più l’ibrido Windows 95 che aveva pezzi a 16bit e pezzi a 32bit. Volendo poi allargare al mondo della workstation RISC, c’erano anche VMS (DEC) e i vari Unix come Irix (SGI), AIX (IBM) e HP/UX (HP).

Torniamo al mondo x86. Il tempo è passato e una specie di selezione naturale ha lasciato in vita tre sistemi operativi e (di fatto) una sola piattaforma hardware: Mac OS X (nato dalle ceneri di NeXTStep), Windows 10 (evoluzione di Windows NT) e Linux. Esiste ancora Solaris per x86, ma credo di poter affermare che il suo utilizzo è per lo più in ambito server, mentre è sempre più raro trovarlo sulle workstation. Wikipedia, peraltro, ci ricorda che questa categoria di calcolatori non esiste più in tecnologia RISC: il 2009 ha segnato la fine della produzione delle ultime workstation IBM con tecnologia Power, mentre l’anno precedente terminò la produzione delle workstation Sun e HP. L’architettura x86-64 è l’unica oggi disponibile e la scelta si articola nella velocità e nel numero di processori, nel tipo e nella dimensione della RAM ed eventualmente nell’affidabilità complessiva dei componenti.

Un ultimo sguardo al percorso evolutivo: NeXTStep ha preso vita nel mondo delle workstation, evolvendo poi sui computer desktop per giungere su smartphone, tablet e wearable nelle varie declinazioni di Mac OS X e iOS. Linux è partito dal mondo desktop, ma oggi  domina il mercato dei server, degli smartphone (si pensi ad Android), dei sistemi embedded e degli appliance multimediali. Windows resta leader sui desktop, mentre in ambito mobile ed embedded ha quote di mercato pressoché invisibili.

Mi chiedo se vedrà mai la luce un nuovo sistema operativo, ma credo sia fortemente improbabile vista la complessità dei tre sistemi oggi esistenti. Inoltre, essendo Linux e il suo ecosistema totalmente opensource, forse non vale la pena partire da zero mentre è più conveniente partire da una base solida e robusta con 20 anni di codice alle spalle.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s