Deprecated: Creation of dynamic property Timber\Site::$pingback is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Site.php on line 180

Deprecated: Creation of dynamic property Timber\User::$name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/User.php on line 118

Deprecated: Creation of dynamic property Timber\Post::$has_disclaimer is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_meta_box_present is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_send_notification is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_modify_title_and_content is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_notification_custom_heading is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_notification_custom_content is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_blz_affiliation_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_content_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_speciali is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskeywords is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_keywordsynonyms is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_estimated-reading-time-minutes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_wordproof_timestamp is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_metadesc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$response_body is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_indexnow_last_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_d1bd0a2a3134661234e8cc2cc8ce0e62 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_d1bd0a2a3134661234e8cc2cc8ce0e62 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_6a3bbc6621189f75ae820435b2629f9d is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_6a3bbc6621189f75ae820435b2629f9d is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_11a6845c6bee6ba76d63ae99db32b943 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_11a6845c6bee6ba76d63ae99db32b943 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_b18e1ac7cc50221220fadabbdbd68ba7 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_b18e1ac7cc50221220fadabbdbd68ba7 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_d1219fc0d9491474806820d45b5eb6bc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_d1219fc0d9491474806820d45b5eb6bc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71
Windows NT contro Unix: ecco perché la piattaforma Microsoft ne usciva vittoriosa

Windows NT contro Unix: ecco perché la piattaforma Microsoft ne usciva vittoriosa

Le caratteristiche innovative di Windows NT al momento del suo lancio nel 1993, confrontate con i sistemi Unix contemporanei. Attraverso l'analisi di un noto sviluppatore, presentiamo i vantaggi dell'architettura ibrida, del supporto per multiprocessore, del kernel preemptive e del modello di gestione della memoria virtuale.

A distanza di anni, Windows NT è spesso descritto come un sistema operativo all’avanguardia, specialmente se confrontato con i sistemi Unix dell’epoca. Julio Merino, ingegnere software in forze presso Snowflake, società specializzata nelle soluzioni per il cloud computing, ex Microsoft ed ex Google, ha voluto esplorare nel dettaglio le caratteristiche che rendevano NT così innovativo al momento del suo lancio nel 1993, mettendole a confronto con i sistemi Unix-like di allora come 4.4BSD (giugno 1994) o Linux 1.0 (marzo 1994).

Unix nacque nel 1969 con l’obiettivo primario di essere una piattaforma orientata allo sviluppo software. La portabilità e il multitasking non erano obiettivi iniziali, ma furono aggiunti successivamente nei vari fork. Windows NT, concepito nel 1989 e rilasciato nel luglio 1993, partì con finalità chiare e ambiziose: portabilità, supporto per sistemi multiprocessore (SMP), compatibilità con DOS, Windows legacy, OS/2 e POSIX.

Come sottolinea Merino, gli obiettivi immediatamente fissati per Windows NT diedero al sistema operativo Microsoft un vantaggio significativo: “NT partì con solidi principi di progettazione fin dall’inizio. In altre parole: queste caratteristiche erano tutte presenti dal primo giorno e non aggiunte in una fase successiva come in molti sistemi di derivazione Unix“.

D’altra parte lascia di stucco ancora oggi il fatto che su Windows NT i programmi si avviavano all’istante, diversamente rispetto a quanto accade oggi con hardware molto più avanzato. Sintomo di un’architettura software ben congegnata e ottimizzata al massimo per sfruttare le risorse disponibili senza inutili eccessi.

Windows NT vs Unix: architettura del kernel

Unix è tipicamente implementato come un kernel monolitico che espone una collezione di system call. Windows NT, d’altra parte, adotta un approccio ibrido che combina elementi di un kernel monolitico e di un microkernel.

L’executive è un componente di Windows NT che opera con i massimi privilegi, cioè con accesso completo e diretto alle risorse hardware e alle funzionalità critiche del sistema. Questo “componente privilegiato” integra un insieme di moduli che gestiscono vari aspetti del sistema operativo, come la gestione della memoria, il file system e le comunicazioni interprocesso. L’executive è responsabile per la fornitura di servizi fondamentali e per la gestione dell’hardware, simile al kernel in Unix, e dell’interazione con i sottosistemi user-space.

I sottosistemi user-space sono processi speciali che operano al di sopra dell’executive. Sono intermediari tra le applicazioni e il sistema operativo: ad esempio, un’applicazione che utilizza API POSIX (un insieme di standard per l’interoperabilità tra sistemi operativi) può fare richieste di servizio tramite queste API.

Hardware Abstraction Layer (HAL)

Un elemento cruciale dell’executive di Windows NT è l’Hardware Abstraction Layer (HAL), che fornisce primitive astratte per accedere all’hardware della macchina. Merino enfatizza l’importanza dell’HAL: “questo layer è la chiave che permette a NT di funzionare su varie architetture, inclusi i386, Alpha e PowerPC. Per mettere in prospettiva l’importanza del HAL, gli Unix contemporanei erano accoppiati a un’architettura specifica“.

Basti pensare, inoltre, che l’HAL è arrivato fino ai giorni nostri essendo presente anche in Windows 10 e Windows 11. HAL è una componente fondamentale di Windows, che fornisce un’interfaccia tra il sistema operativo e l’hardware sottostante, facilitando l’interazione tra i due.

Supporto per Multiprocessing e Kernel Preemptive

Windows NT nasce fin dall’inizio per supportare sistemi multiprocessore e implementa un kernel preemptive. Merino osserva: “il kernel ha vari livelli di interrupt (SPL in terminologia BSD) per determinare cosa può interrompere cosa (ad esempio, un’interrupt di clock ha priorità più alta di un’interrupt del disco), ma, cosa più importante, i thread del kernel possono essere preempted rispetto ad altri thread del kernel. Questo è ‘ovviamente’ ciò che ogni sistema Unix ad alte prestazioni fa oggi, ma non è in questo modo che molti sistemi Unix funzionavano all’epoca“.

Un kernel preemptive è una tipologia di kernel che consente l’interruzione (o “preemption“) di un thread o processo in esecuzione a partire da un altro thread o processo di priorità più alta. Questo approccio è fondamentale per garantire la reattività e l’efficienza del sistema operativo, specialmente in ambienti multiutente e multiprocessore.

Gestione degli oggetti

Merino evidenzia tre vantaggi chiave dell’approccio di Windows NT orientato agli oggetti nel kernel, una caratteristica che lo distingueva nettamente dai sistemi Unix.

Il controllo d’accesso centralizzato faceva sì che gli oggetti fossero creati esclusivamente dal gestore degli oggetti: c’era un unico punto nel codice per applicare le policy. Gli oggetti hanno un’identità e sono tutti rappresentati in un unico albero. Ciò significa che esiste un namespace unico per tutti gli oggetti, non importa se stiamo parlando di processi, handle di file o pipe.

Tutti i tipi di oggetti hanno in Windows NT uno stato segnalato, le cui semantiche sono specifiche per ogni tipo di oggetto. Ciò rende semplice scrivere codice asincrono in ambito user-space poiché una singola system call di tipo “wait” può attendere che un gruppo di oggetti cambi il proprio stato, indipendentemente dal loro tipo.

Processi e thread

Windows NT differisce significativamente da Unix nella gestione dei processi. In Unix, i processi formavano una struttura ad albero; in NT, sono entità indipendenti dopo la creazione.

Se da un lato la piattaforma Microsoft supportava i thread fin dall’inizio, molti Unix li hanno introdotti successivamente. Merino fa notare: “Linux ha scelto di rappresentare i thread come processi, ciascuno con il proprio PID, al rilascio della versione 2.0 datata giugno 1996; NetBSD non ha ottenuto i thread, rappresentati come entità separate dai processi, fino al suo rilascio 2.0 nel 2004“.

Memoria virtuale

Lo sviluppatore fa notare che Windows NT ha inoltre adottato fin dall’inizio un’architettura basata sull’uso di memoria unificata, uno schema che si pone in posizione opposta rispetto ai sistemi Unix di quell’epoca. “Le implementazioni Unix più vecchie avevano cache di memoria separate per il file system e la memoria virtuale; soltanto nel 1987 che SunOS implementò un’architettura di memoria virtuale unificata per ridurre l’overhead di questo vecchio design“, chiarisce Merino.

Come caratteristica aggiuntiva, assolutamente avanzata per quegli anni, Windows NT supportava anche il paging di parti del kernel.

Sottosistema I/O e file system

Progettato per supportare più file system, Windows NT introdusse il suo NTFS. Per quei tempi NTFS era un file system molto avanzato, dal momento che integrava anche caratteristiche “inedite” come l’indirizzamento a 64 bit, il journaling e i nomi file Unicode.

Merino ricorda, a questo proposito, che soltanto nel 1990, con il rilascio di 4.3BSD, i sistemi BSD ottennero l’astrazione del Virtual File System (VFS) per supportare più di UFS. “Linux non ha ricevuto il supporto per i file a 64 bit fino alla fine degli anni ’90 e non ha ottenuto il journaling fino al lancio del file system ext3 nel 2001“.

Conclusioni

Merino conclude che NT era una tecnologia rivoluzionaria al momento del lancio, con molte caratteristiche che oggi diamo per scontate nei sistemi operativi moderni.

Nel frattempo il mondo è cambiato, tanto che oggi le differenze tra l'”approccio NT” e i moderni sistemi Unix-like sono meno marcate: “è vero che NT aveva principi di progettazione più solidi all’inizio e più funzionalità rispetto ai suoi sistemi operativi contemporanei, ma oggi… le differenze sono sfocate“.

L’analisi tecnica di Merino conferma ancora una volta come NT abbia introdotto innovazioni significative nel campo dei sistemi operativi, molte delle quali sono state successivamente adottate in altre piattaforme. La forte spinta verso l’innovazione, figlia dello strenuo lavoro degli storici ingegneri software Microsoft, si è annacquata con il rilascio delle versioni Windows più recenti.

Ti consigliamo anche

Link copiato negli appunti