Astrazioni nei sistemi informatici

Completato

I computer moderni sono tra le strutture di ingegneria umana più avanzate. Queste strutture sono in genere molto complesse. Tale complessità deriva dall'incorporamento di diversi chip elettronici, ad esempio processori, memorie, dischi, schermi, tastiere, mouse e schede di rete, usati per l'esecuzione di programmi e servizi. Per gestire la complessità nei sistemi informatici è cruciale suddividere i componenti di sistema in livelli di astrazioni separati da interfacce ben definite.

Livelli di astrazioni

Il primo aspetto della gestione della complessità dei computer è la creazione di astrazioni per i componenti del computer. Un'astrazione ragionevole per un componente nasconde molti dei dettagli ed espone solo le funzionalità essenziali del componente. Ad esempio, le porte logiche sono un'astrazione basata su circuiti elettronici, il sistema binario è un'astrazione basata sulle porte, i linguaggi macchina sono un'astrazione basata sul sistema binario, i linguaggi di programmazione sono un'astrazione basata sui linguaggi macchina e i sistemi operativi insieme alle applicazioni associate sono un'astrazione basata sui linguaggi di programmazione. Un'altra astrazione conosciuta e usata da quasi tutti gli utenti dei computer sono i file. I file sono astrazioni dei dischi. Come illustrato nella figura 5, per i dettagli di un disco rigido viene creata un'astrazione dal sistema operativo, in modo che l'archiviazione su disco venga visualizzata nelle applicazioni come un set di file di dimensioni variabili. Di conseguenza, i programmatori non devono preoccuparsi di posizioni e dimensioni di cilindri, settori, tracce o allocazioni della larghezza di banda nei controller del disco. Possono semplicemente creare, leggere e scrivere file senza conoscere il modo in cui il disco rigido è costruito o organizzato.

Files are abstractions of disks.

Figura 5: I file sono astrazioni di dischi

Un altro esempio comune di astrazione è il processo. I processi sono astrazioni di CPU e memorie. I programmatori non devono quindi preoccuparsi se i loro processi monopolizzeranno la CPU o utilizzeranno tutta la memoria. Il sistema operativo crea e gestisce tutti i processi utente senza coinvolgere in alcun modo gli utenti. Esistono anche astrazioni per gli schermi implementate tramite il disegno e i pacchetti di windowing. L'astrazione dei clic del mouse avviene in forma di chiamate alle funzioni di programma. Per gli eventi di pressione dei tasti sulle tastiere l'astrazione viene eseguita in forma di input di caratteri. Infine, le astrazioni per le reti includono livelli e protocolli, come IP, UDP e TCP. Come illustrato nella figura 6, i sistemi distribuiti (ad esempio, il cloud) si basano sui livelli di rete e coinvolgono livelli aggiuntivi, ad esempio socket, chiamate di metodo remote (RMI, Remote Method Invocation) e chiamate di procedure remote (RPC, Remote Procedure Call). In breve, la possibilità di astrarre i componenti di sistema consente la progettazione, la programmazione e l'uso semplificati dei sistemi informatici.

Abstraction layers in distributed systems.

Figura 6: Livelli di astrazione nei sistemi distribuiti

A questo proposito, si noti che le astrazioni possono essere applicate a livello hardware o software. A livello hardware, i componenti sono fisici, ad esempio CPU e RAM. Viceversa, a livello software, i componenti sono logici (ad esempio, RMI e RPC). Questa unità è incentrata principalmente sulle astrazioni a livello software o quasi hardware/software.