Informatica - Prof.ssa Galasso
Computer
Un computer, dal latino computare (calcolare) attraverso l'inglese, to compute (calcolare), anche detto calcolatore o elaboratore, è un dispositivo fisico che implementa il funzionamento di una macchina di Turing. Questa definizione, sebbene rigorosa, non dice molto su quello che in pratica un computer è o può fare: eseguire operazioni logiche, come calcoli numerici. Dalla nascita della struttura più elementare, in seguito si sono sviluppati molti tipi di computer, costruiti e specializzati per vari compiti. Essi vanno da macchine che riempiono intere sale, capaci di qualunque tipo di elaborazione, a circuiti integrati grandi pochi millimetri che controllano minirobot e orologi da polso. Ma a prescindere da quanto siano grandi e da che cosa facciano, possiedono tutti quattro cose: (almeno) una unità centrale di elaborazione o CPU, (almeno) una memoria, e almeno un dispositivo di ingresso/uscita, nonché un canale perché possano dialogare tra loro, in accordo all'architettura di Von Neumann.
Architettura di von Neumann
Con l'espressione architettura di von Neumann (o macchina di von Neumann) ci si riferisce a uno schema di progettazione di calcolatori elettronici che prende nome dal matematico John von Neumann. Lo schema si basa su cinque componenti fondamentali:
- CPU o unità di lavoro che si divide a sua volta in
- Unità operativa, nella quale uno dei sottosistemi più rilevanti è l'ALU (Arithmetic Logic Unit)
- Unità di controllo
- Unità di memoria, intesa come memoria di lavoro o memoria principale (RAM, Random Access Memory)
- Unità di input, tramite la quale i dati vengono inseriti nel calcolatore per essere elaborati
- Unità di output, necessaria affinché i dati elaborati possano essere restituiti all'operatore
- Bus, un canale che collega tutti i componenti fra loro
All'interno dell'ALU è presente un registro detto accumulatore, che fa da buffer tra input e output grazie a una speciale istruzione che carica una parola dalla memoria all'accumulatore e viceversa. È importante sottolineare che tale architettura, a differenza di altre, si distingue per la caratteristica di immagazzinare all'interno dell'unità di memoria, sia i dati dei programmi in esecuzione che il codice di questi ultimi. I moderni computer di uso comune sono progettati secondo l'architettura Von Neumann. Inoltre, quando si parla di unità di memoria si intende la memoria principale, mentre le memorie di massa sono considerate dispositivi di I/O.
Il motivo di ciò è innanzitutto storico, in quanto negli anni Quaranta, epoca a cui risale questa architettura, la tecnologia non lasciava neanche presupporre dispositivi come hard disk, CD-ROM, DVD-ROM o anche solo nastri magnetici, ma anche tecnico, se si considera che in effetti i dati da elaborare devono comunque essere caricati in RAM, siano essi provenienti da tastiera o da hard-disk. Per realizzare ciò, il calcolatore opera in due fasi:
- LOAD-TIME (tempo di caricamento del programma)
- RUN-TIME (tempo di esecuzione del programma)
Hardware, software, programmazione
Il computer è un mero esecutore di compiti o istruzioni impartite dall'esterno per risolvere determinati problemi d'interesse attraverso un algoritmo di risoluzione del problema stesso. Esso dunque nasce per eseguire programmi: un computer senza un programma da eseguire è inutile. Il programma di gran lunga più importante per un computer, se previsto nell'architettura generale, è il sistema operativo, che si occupa di gestire la macchina, le sue risorse, le altre applicazioni che vi sono eseguite. Fornisce all'utente un'interfaccia per inserire ed eseguire gli altri programmi. Queste parti immateriali vengono comunemente chiamate software, in contrapposizione all'hardware che è la parte fisica, nel senso di materiale e tangibile, degli elaboratori.
Il computer, in quanto esecutore, ha bisogno dunque di essere istruito o programmato dall'esterno per mano competente di un programmatore: questi comunica/interagisce con la macchina attraverso i linguaggi di programmazione ad alto, medio o basso livello di astrazione (linguaggio macchina), che si differenziano tra loro secondo vari paradigmi di programmazione.
La macchina di Turing
La macchina di Turing in oggetto è un meccanismo, formale, ma potenzialmente realizzabile concretamente, che costituisce un modello di calcolo; è retta da regole elementari di natura molto semplice. Ha potere computazionale massimo, ed è equivalente a ogni altro modello di calcolo molto più complesso.
Tipi di computer
I computer possono essere idealmente divisi in alcune categorie molto generali, a seconda delle loro caratteristiche salienti, dell'uso che in generale se ne fa, del software e dei sistemi operativi che fanno girare e dell'epoca in cui sono comparse. Le definizioni nel tempo sono molto cambiate e i confini non sono mai così netti.
Mainframe
Negli anni '40 i computer occupavano stanze intere, l'energia richiesta per il funzionamento ed il raffreddamento era elevata e, naturalmente, erano costosissimi; per questo motivo li si tendeva a sfruttare il più possibile e, quindi, l'utilizzo era suddiviso generalmente fra un numero di utenti piuttosto grande. I mainframe oggi sono dei computer non molto più grandi del PC di casa ma, nonostante le dimensioni, questi computer sono molto potenti e possono sopportare centinaia di terminali e utenti connessi. Questi sistemi sono molto onerosi sia in termini di investimento iniziale che di costi di gestione. Pertanto vengono utilizzati nelle grandi aziende, nelle banche, in società di assicurazioni, nella pubblica amministrazione ed in altre strutture che hanno bisogno di una potenza di elaborazione molto elevata per gestire i terminali che gli utenti usano per lavorare.
Minicomputer
In un secondo tempo, negli anni sessanta, in particolare da Digital e da HP, vennero introdotti elaboratori dal costo abbastanza ridotto da poter essere comprati anche da piccole aziende o da singoli dipartimenti di ricerca e di dimensioni paragonabili ad un armadio. Questo permise un utilizzo più flessibile e quindi le prime sperimentazioni in campo informatico. Per distinguerli dai mainframe venne coniato il termine minicomputer.
Microcomputer
All'inizio degli anni settanta l'introduzione del primo microprocessore, l'Intel 4004, rese disponibili computer dal prezzo abbastanza ridotto da poter essere acquistati anche da una singola persona. La prima generazione di questi dispositivi era destinata soprattutto agli appassionati, perché di difficile utilizzo. I personal computer possono essere considerati microcomputer.
Home computer
La seconda generazione di microcomputer, che prende il nome popolare di home computer, fece il suo ingresso nel mercato nella seconda metà degli anni settanta e divenne comune nel corso degli anni ottanta, per estinguersi entro i primi anni novanta con l'ascesa dei personal computer. Gli home computer, macchine a costo contenuto e di utilizzo prevalentemente domestico, contribuirono largamente a diffondere a livello popolare l'uso del computer e all'alfabetizzazione informatica di vasti strati di popolazione (specie giovanile) nei paesi sviluppati. Basati su processori a 8 bit e costruttivamente molto semplici, erano dotati di interfacce esclusivamente testuali e come memorie di massa sfruttavano, almeno inizialmente, le cassette audio. Erano utilizzati prevalentemente come console per videogiochi, oppure per i primi approcci con la programmazione. Con oltre dieci milioni di macchine vendute, il più rappresentativo computer di questa categoria fu il Commodore 64. Anche lo ZX Spectrum della Sinclair ebbe buona diffusione.
Personal computer
Per Personal Computer si intende un microcomputer economico destinato, prevalentemente, a un utilizzo personale da parte di un singolo individuo. Si distingue da un Home computer principalmente perché si prestano - grazie alle maggiori risorse hardware e software a disposizione - a utilizzi maggiormente produttivi rispetto a questi ultimi, destinati invece a un utilizzo ludico o didattico. Dato che la definizione di Personal Computer nacque con la diffusione dei computer PC IBM, oggi per Personal Computer (PC) spesso si intende un computer da essi derivato, ma inizialmente il termine andrebbe riferito a macchine con sistemi operativi e tipi di microprocessori del tutto diversi, quali le prime versioni dell'Apple (Apple I e soprattutto l'Apple II).
Altre categorie
- I supercomputer: dotati di elevatissima capacità elaborativa e distinti dai mainframe perché solitamente destinati ad una singola applicazione come previsioni meteorologiche o simulazioni.
- I microcontroller: elaboratori completi totalmente contenuti in singoli circuiti integrati.
- I sistemi barebone: personal computer preassemblati, costituiti di solito da case e scheda madre, pronti per ulteriori personalizzazioni da parte di rivenditori o utenti finali.
- I computer palmari: computer di ridotte dimensioni, tali da essere portati sul palmo di una mano.
Un computer, come premesso, non è altro che l'implementazione fisica, pratica, di una macchina di Turing, secondo l'architettura ideata da Von Neumann.
Componentistica (hardware)
La macchina in primo luogo viene alimentata elettricamente da un'unità, interna od esterna che fornirà al sistema le tensioni necessarie alle sue diverse componenti, nei termini della potenza e stabilità richieste. Dal punto di vista pratico e costruttivo tutti i computer di questa categoria, hanno almeno:
- Una CPU
- Una certa quantità di memoria di lavoro, generalmente volatile ma piuttosto veloce, attualmente RAM
- Una certa quantità di memoria non volatile. Quest'ultima è suddivisa in:
- Una piccola parte (ROM, PROM, EPROM, EEPROM o Flash) in cui è scritto il primo programma da eseguire all'avvio del computer stesso (firmware). Esempi sono Open Firmware e BIOS, che assolvono comunque anche ad altre funzioni di base, oltre a queste. A seconda dei casi, questo primo programma potrà essere l'unico che la macchina eseguirà oppure servirà a fare da trampolino di lancio per caricare il sistema operativo vero e proprio dalla memoria di massa in memoria di lavoro, o un ulteriore e intermedio programma in grado di decidere quale particolare sistema operativo selezionare: in questo caso si parla di loader.
- Una memoria di massa, più capiente ma con velocità d'accesso più lenta.
Alimentatore
L'alimentatore è l'elemento che fornisce energia al PC, che nel caso delle versioni portatili può essere sostituita da alcune batterie.
Scheda madre
Scheda madre raccoglie in sé tutta la circuiteria elettronica di interfaccia fra i vari componenti principali e fra questi i bus di espansione e le interfacce verso l'esterno. Oltre ad eseguire programmi, un computer deve anche poter comunicare con l'esterno: per questo sono sempre presenti anche un certo numero di interfacce verso vari dispositivi. Quasi sempre, tranne i casi di microcontrollori molto semplici, è prevista la possibilità di collegare una tastiera e un dispositivo di visualizzazione (monitor, stampante, display). Inoltre in genere un computer fa uso di memorie di massa per registrare i dati e i programmi liberando la memoria RAM, e quasi sempre è possibile collegare ad esso periferiche esterne e schede di espansione. Una delle schede di espansione più importanti è la scheda video. Questa scheda si occupa di gestire tutte le immagini e di visualizzarle sul video/display.
CPU
La CPU, sigla di Central Processing Unit, è uno dei componenti della macchina di Von Neumann, il più diffuso modello teorico di computer. Essa ha il compito di elaborare le informazioni provenienti dalla memoria, decodificando ed eseguendo le istruzioni operative in codice macchina, e quindi specifiche per quella CPU. La sua conformazione, detta architettura, è stata soggetta ad una evoluzione nel tempo, integrando progressivamente quantità sempre maggiori di transistor, arricchendosi di memoria interna detta cache di primo livello, aumentando la dimensione del bus dati e integrando più di una struttura esecutiva delle istruzioni, detta pipeline, aumentando quindi il grado di parallelismo. Nelle ultime versioni, si hanno più CPU che coesistono nello stesso circuito integrato, detto quindi dual core o quad core a seconda che ospiti due o quattro processori.
Memorie
Ricordando nuovamente che una parte di memoria, per motivi architetturali attualmente ormai risiede all'interno della CPU, possiamo schematizzare:
- La memoria di lavoro o memoria principale, adesso generalmente RAM, è sì molto veloce, ma ha un problema: è volatile, cioè allo spegnimento della macchina il suo contenuto viene perso. Le tecnologie attuali in ogni caso prevedono già in itinere memorie di lavoro permanenti.
- Per questo ed altri motivi ad essa si affianca, sempre, un altro tipo di memoria, molto più lenta ma capace di mantenere i dati che vi vengono scritti per un tempo indefinito: questa viene detta memoria di massa o memoria d'immagazzinamento secondario ed è costituita in genere da dischi o nastri magnetici (esistono tuttavia dischi a stato solido, questi dischi sono anche detti SSD - questi supporti sono molto simili alle memory card, hanno velocità di lettura più elevate rispetto ai dischi magnetici, ma sono molto costosi). In casi di applicativi che richiedono poca memoria vengono utilizzate le NOVRAM, particolari RAM non volatili, se si vuole la scrittura e riscrittura dei dati, le ROM se il programma non deve essere cambiato, o al massimo cambiato molto raramente (ROM cancellabili tramite raggi UV o tensioni predefinite). In genere, i dati vengono scritti su queste memorie sotto forma di file: il modo in cui i file sono organizzati e catalogati si chiama file system.
Bus di sistema
Il computer non potrebbe funzionare senza il bus di sistema. Questo è infatti il collegamento fra le varie componenti di un computer: CPU, chipset, scheda video, varie periferiche e componenti del computer. Esistono tre tipi fondamentali di bus che, assieme, formano il bus di sistema:
- Bus indirizzi
- Bus dati
- Bus controlli
Le periferiche esterne possono essere collegate al bus di sistema mediante le interfacce fornite dal costruttore (nel caso di componenti di facile integrazione), o mediante interfacce proprietarie nel caso di componenti particolari o non integrati nel proprio sistema (scheda madre). Questi componenti sono detti schede di espansione e si collegano direttamente in alloggiamenti (slot) della scheda madre appositamente progettati. Questi slot dialogano, grazie all'interfaccia del chipset, con tutto il resto del sistema.
Interfacce generiche
Esistono un certo numero di interfacce generiche, adatte a molti scopi, che in genere i costruttori hanno cura di implementare sempre nei computer che producono, per aumentarne la versatilità. In genere le specifiche per queste interfacce sono standard pubblici, stabilite da enti come l'IEEE o l'ISO. Attualmente si stanno abbandonando i lettori per dischetti (floppy) e le interfacce Centronics (in special modo sui laptop) e allo stesso tempo si stanno installando lettori di smartcard.
Con hardware, in ingegneria elettronica e informatica si indica la parte fisica di un personal computer, ovvero tutte quelle parti magnetiche, ottiche, meccaniche ed elettroniche che ne consentono il funzionamento (dette anche strumentario). Più in generale il termine si riferisce a qualsiasi componente fisico di una periferica o di una apparecchiatura elettronica. L'etimologia del vocabolo nasce dalla fusione di due termini della lingua inglese, hard (duro) e ware (manufatto, oggetto), in contrapposizione con il software, la parte logica (e perciò soft, "morbida") che compone il personal computer.
Alcuni componenti hardware
- Mouse
- RAM (La memoria ad accesso casuale, acronimo RAM (del corrispondente termine inglese Random-Access Memory), è una tipologia di memoria informatica caratterizzata dal permettere l'accesso diretto a qualunque indirizzo di memoria con lo stesso tempo di accesso. La memoria ad accesso casuale si contrappone alla memoria ad accesso sequenziale e alla memoria ad accesso diretto rispetto alle quali presenta tempi di accesso sensibilmente inferiori motivo per cui è utilizzata come memoria primaria. La tipologia di memoria ad accesso casuale più comune attualmente è a stato solido, a lettura-scrittura e volatile, ma rientrano nella tipologia di memoria ad accesso casuale la maggior parte delle tipologie di ROM (inteso nell'accezione più comune e non come memoria a sola lettura), la NOR Flash (una tipologia di memoria flash), oltre a varie tipologie di memorie informatiche utilizzate ai primordi dell'informatica e oggi non più utilizzate come ad esempio la memoria a nucleo magnetico. Esclusivamente l'acronimo RAM (non il termine "memoria ad accesso casuale") ha anche una seconda accezione più ristretta ma attualmente più diffusa secondo cui la RAM è una memoria ad accesso casuale della tipologia più comune cioè a stato solido, a lettura-scrittura e volatile.
- Read only memory (ROM)
- Hard Disk è una tipologia di dispositivo di memoria di massa che utilizza uno o più dischi magnetici per l'archiviazione dei dati. Il disco rigido è una delle tipologie di dispositivi di memoria di massa attualmente più utilizzate.
- Scheda madre
- Monitor
- Scheda video
- Scheda audio
- Scheda di rete
- CPU (L'unità centrale di elaborazione, in sigla CPU (dal corrispondente termine inglese central processing unit), anche chiamata nella sua implementazione fisica processore, è uno dei due componenti principali della macchina di von Neumann, il modello su cui sono basati la maggior parte dei moderni computer. Compito della CPU è quello di leggere i dati dalla memoria ed eseguirne le istruzioni; il risultato dell'esecuzione dipende dal dato su cui opera e dallo stato interno della macchina.