Computer: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Danilo (discussione | contributi)
mNessun oggetto della modifica
FrescoBot (discussione | contributi)
m Bot: accenti e modifiche minori
Riga 30:
* [[Bus (informatica)|Canale di comunicazione dei dati]] (o Bus).
 
Questo schema venne proposto per la prima volta dal matematico [[John von Neumann]] all'interno di uno scritto informale del 1945 noto come ''First draft of a report on the [[EDVAC]]'' [http://qss.stanford.edu/~godfrey/vonNeumann/vnedvac.pdf]. L'opera nasce dalla partecipazione di von Neumann al progetto [[ENIAC]] e raccoglie le idee provenienti da vari membri del team di sviluppo su come migliorare la funzionalità del computer nascituro.
 
Va inoltre ricordato che von Neumann era stato profondamente influenzato da [[Alan Turing]]<ref>[http://www.turing.org.uk/turing/scrapbook/computer.html Alan Turing Scrapbook - Who invented the computer?]</ref>, il quale aveva proposto nel 1937<ref>A.M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem", Proceedings of the London Mathematical Society, 1937, 2(42), pp. 230-265.</ref> un modello di calcolo - passato alla storia come [[Macchina di Turing]] - che ben si prestava a descrivere le operazioni eseguite da un computer, pur non essendo stato concepito per quello scopo (Turing si stava occupando in quella sede del problema della [[computabilità]], non della realizzazione di un calcolatore). Il funzionamento della [[Macchina di Turing]] suggerì a von Neumann l'idea che la memoria dovesse contenere non solo i risultati delle operazioni svolte dal computer, ma anche le istruzioni di programmazione.
Riga 43:
 
=== Hardware, software, programmazione ===
A differenza della [[mente]] umana, intesa come attività del [[cervello]], che è in grado di affrontare e risolvere problemi nuovi a mezzo di facoltà cognitive come [[intuizione]] e [[ragionamento]], il computer, in quanto [[macchina]], pur partendo ugualmente da dei dati in input, è invece un semplice ''esecutore'' di ordini, compiti o istruzioni impartite dall'esterno per risolvere determinati problemi d'interesse attraverso un [[algoritmo]] di risoluzione del problema stesso in modo tale che a partire da determinati input produca determinati output attraverso elaborazione degli stessi. Esso nasce dunque per eseguire ''[[programma (informatica)|programmi]]'' o applicazioni: un computer senza un programma da eseguire è inutile.
 
Il computer, in quanto esecutore, ha dunque bisogno di essere ''istruito'' o ''[[programmazione (informatica)|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 [[paradigma di programmazione|paradigmi di programmazione]].
Riga 49:
Queste parti immateriali che consentono l'utilizzo di ''programmi'' vengono comunemente chiamate [[software]] in contrapposizione all'[[hardware]] che è invece la parte fisica ([[elettronica]]), nel senso di materiale e tangibile, degli elaboratori e che consente l'esecuzione dei programmi stessi. Tutto ciò che si può ottenere con l'utilizzo accoppiato di strumenti informatici o [[risorsa informatica|risorse]] ''hardware'' e ''software'' costituisce un'''[[applicazione]]'' informatica.
 
Ovviamente quando si lavora su un computer scompare agli occhi dell'utilizzatore il funzionamento hardware interno della macchina interfacciandosi con essa unicamente tramite il linguaggio di programmazione ad alto livello oppure grazie all'[[interfaccia utente]] del [[software]] stesso garantendo così quella grande flessibilità di utilizzo anche a chi non ne conosce i principi fisico-elettronici di funzionamento e che costituisce, assieme alla potenza di elaborazione, a quella di memorizzazione e alla riprogrammabilità, la chiave di successo dei computer stessi. Questo processo di astrazione a partire dal livello fisico è comune a tutta l'informatica.
 
Il programma o software di base di gran lunga più importante per un computer (se previsto nell'architettura generale) senza il quale la macchina non potrebbe funzionare è il [[sistema operativo]], che si occupa di gestire la macchina, le sue risorse hardware e le altre applicazioni che vi sono eseguite<ref>Rich Didday, ''Home computers: 2E10 Questions & answers, Vol II :Software, Dilithium press, 1977 Forest Growe, Oregon</ref>. Fornisce così all'utente un'[[interfaccia (informatica)|interfaccia]] (grafica o testuale) con la macchina gestendo o coordinando in maniera efficiente le operazioni di [[Input/Output]] comandando le rispettive [[periferica|periferiche di sistema]], gestendo le operazioni di esecuzione dei programmi applicativi assegnandovi di volta in volta le risorse hardware necessarie al processamento ([[scheduler|scheduling]]) ed infine gestendo l'archiviazione e l'accesso ai dati memorizzati attraverso il cosiddetto [[file system]].
 
Dal punto di vista hardware il computer inoltre è un [[sistema elettronico]] [[Digitale (informatica)|digitale]] (programmabile) che elabora cioè tutti i dati in formato digitale o numerico ovvero come sequenze di 0 e 1 corrispondenti a due livelli di [[tensione elettrica|tensione]] (alto e basso) corrispondenti a loro volta ai due stati fisici di interruttore aperto e chiuso. La logica elettronica interna di funzionamento è dunque basata sull'[[Algebra di Boole]]. Il linguaggio dell'hardware è propriamente un [[linguaggio macchina]] ovvero sequenze di [[bit]] cui si associano per semplice codifica i linguaggi a più alto livello. Ovviamente l'immissione dei dati in input alla macchina elaboratrice è di tipo alfa-numerico decimale per cui è necessaria un'operazione di traduzione o [[codifica]] delle informazioni in binario; viceversa per ottenere una visualizzazione in output dei risultati dell'elaborazione è necessaria una traduzione o [[codifica]] inversa da binario ad alfa-numerico decimale. Tale codice è generalmente il codice [[ASCII]].
Riga 60:
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.
 
Una prima classificazione in base all'uso distingue tra computer [[general purpose]] ovvero riprogrammabili per svariate applicazioni dall'utente e computer [[special purpose]] ovvero [[sistemi embedded]] dedicati ad una sola applicazione specifica come ad esempio i [[microcontrollori]].
 
Un'altra classificazione è basata sull'accesso condiviso o meno alle risorse hardware: un computer general purpose può essere monoutente oppure multiutente sfruttando il cosiddetto [[timesharing]] delle risorse e con diversi sistemi operativi. Un computer monoutente può essere [[monotasking]] oppure [[multitasking]] ovvero può eseguire più processi in contemporanea (in pratica tutti i computer moderni). Ovviamente un computer multiutente è anche multitasking.
 
Una classificazione basata sulle dimensioni, sull'evoluzione storica e sulla destinazione d'uso è invece quella che segue. In linea di massima le dimensioni dei sistemi di elaborazione sono progressivamente diminuite nel tempo in virtù del miglioramento delle tecniche di elaborazione digitale ovvero all'alta [[scala di integrazione|capacità di integrazione]] dei [[transistor]] all'interno dei processori ed il parallelo aumento della capacità di processamento. Computer di grandi dimensioni rimangono ora solo nei grandi centri di calcolo.
Riga 104:
* I [[supercomputer]]: elevatissima capacità di elaborazione (spesso grazie ad un [[calcolo parallelo]]) e distinti dai mainframe perché solitamente destinati ad una singola applicazione come previsioni meteorologiche, climatiche, calcolo scientifico ad elevate prestazioni e [[simulazione|simulazioni]] varie in generale.
* Le [[workstation]]: computer general purpose monoutente dotati di più elevate risorse di elaborazione e costi maggiori rispetto ai normali personal computer e destinati ad uso e compiti professionali.
* I [[microcontroller]]: elaboratori completi totalmente contenuti in singoli circuiti integrati e dedicati a specifiche applicazioni (specific purpose<ref>Esempi: nel [[cronotermostato]] di casa, in un impianto home video, in un forno a microonde, per non parlare delle moderne automobili o veicoli in generale.</ref>) in [[sistemi embedded]]. Appartengono a quest'ultima categoria anche i [[dispositivi di rete|dispositivi]] interni di [[commutazione (telecomunicazioni)|commutazione]] in una [[rete di calcolatori]].
* I sistemi [[barebone]]: personal computer preassemblati, costituiti di solito da [[Case (hardware)|case]] e scheda madre, pronti per ulteriori personalizzazioni da parte di rivenditori o utenti finali.
* I [[computer portatile]] o [[notebook]] computer trasportabili che possono entrare in una valigetta o essere appoggiati sulle ginocchia ([[laptop]]). Nella famiglia dei portatili tipologie tecnico-commerciali distinte dai notebook, propriamente detti, sono rappresentate dai [[netbook]] e dagli [[ultrabook]].
Riga 126:
Un computer, come premesso, non è altro che l'implementazione fisica, pratica, di una [[macchina di Turing]], secondo l'architettura fisica ideata da [[John von Neumann|Von Neumann]].
 
Per quanto riguarda l'[[Architettura (computer)|architettura hardware]] sono diffuse le [[architettura di un processore basato su registri generali|architetture dei processori basati su registri]] generali. A questo livello hardware e software viaggiano appaiati sullo stesso piano: le istruzioni elementari del processore ([[Instruction set]]) (salto, confronto, operazioni aritmetiche ecc.) sono definite in [[linguaggio macchina]], ovvero codificate in sequenze numeriche di bit; i linguaggi di programmazione a medio ed alto livello, cioè più vicini o familiari al nostro linguaggio naturale, si ottengono come ulteriori codifiche (tabelle di associazioni tra i nomi delle istruzioni) a partire dal linguaggio macchina stesso. Così accade che un qualunque [[software applicativo]] abbia un suo [[codice eseguibile|codice oggetto o eseguibile]] espresso in linguaggio macchina ed un suo [[codice sorgente]] espresso in linguaggio ad alto livello.
 
Una terza possibilità è l'[[assembly]]; questo particolare linguaggio è una "trascrizione" delle istruzioni base del processore in un linguaggio intelligibile (solitamente nel formato istruzione indirizzo, o istruzione valore, o altri - vedasi [[opcode]]). È possibile (per esempio) integrare l'assembly in programmi in C (ma questo approccio non è sempre consigliabile anzi oggi è quasi del tutto abbandonato perché si preferisce scrivere programmi adattabili a più piattaforme, vedi voce "[[Portabilità]]"; linguaggio macchina ed assembly non sono mai portabili mentre esistono compilatori C [[multipiattaforma]]). Con l'evolversi dei sistemi operativi (eccezion fatta per l'[[hacking]]) i linguaggi a basso livello sono usati sempre meno, invece all'epoca del [[DOS]] e soprattutto degli home computer questo approccio veniva seguito spesso.
Riga 134:
All'architettura hardware si sovrappone l'[[Architettura (computer)|architettura software]] che comprendente il [[sistema operativo]] cioè il sistema generale di gestione o coordinazione delle risorse hardware del computer e dei dati in esso immagazzinati. Le istruzioni base del sistema operativo fanno parte del set di istruzioni fondamentali del processore e, di conseguenza, sono definite anch'esse in [[linguaggio macchina]] e gestite dall'Unità di Controllo del processore. Le istruzioni del sistema operativo a livello utente, eventualmente interfacciate graficamente, sono anche qui ottenute tramite una codifica ad alto livello delle istruzioni base, espresse in linguaggio macchina, di gestione (pilotaggio) delle periferiche stesse, mascherando così ancora una volta il complesso funzionamento interno del computer.
 
L'insieme di architettura hardware (quindi il processore) e sistema operativo costituiscono la cosiddetta [[piattaforma (informatica)|piattaforma informatica]] del sistema essendo questi due elementi strettamente correlati.
 
=== Costituenti tipo di un calcolatore elettronico personale ===
Riga 151:
 
==== Case e tipo di installazione ====
Il componente forse meno essenziale, ma che caratterizza il calcolatore al primo colpo d'occhio è l'involucro, generalmente chiamato [[Case (hardware)|case]] nei personal computer e ''cabinet'' nei sistemi più grandi. Il telaio che meccanicamente sostiene la componentistica, l'apparato di raffreddamento generale, e l'involucro esterno caratterizzano e in parte differenziano i molti tipi di macchine finora viste.
[[File:Mac Mini 2010.jpg|180px|thumb|right|personal computer di dimensioni ridotte, a raffreddamento passivo]]
Elemento fondamentale è l'apparato di raffreddamento. Attualmente molti calcolatori montano sistemi di raffreddamento sui singoli chip, come CPU e GPU o altri, i quali possono andare da una semplice alettatura per il raffreddamento ad aria, a [[Ventola#Ventola per apparecchiature elettroniche|ventole]], o a sistemi con circolazione di liquidi di raffreddamento. In aggiunta a questi, nel case del computer vengono predisposti ulteriori altri sistemi per la circolazione e l'espulsione dell'aria calda generata.
Nei cabinet dei mainframe e dei supercomputer, il problema del raffreddamento è notevole, e l'energia in gioco spesa nell'implementarlo è una quota rilevante del costo del sistema. Sistemi architetturalmente moderni o di piccole dimensioni riescono ad avere una generazione di calore talmente bassa da fare a meno di ventole od altre parti in movimento, con evidenti vantaggi, a pari dispersione termica, in termini di silenziosità o di consumi. Il telaio e l'involucro caratterizzano visivamente la macchina, e possono situarsi in un arco dimensionale che va dal computer palmare, alle armadiature dei grossi sistemi. Tali armadiature sono principalmente costituite da un telaio, con alloggiamenti di vari standard, che permettono la rimozione, spesso in attività, dei singoli componenti: schede processore, singolo cluster alloggiato in un rack, ed altro.
 
Riga 167:
{{Vedi anche|Scheda madre}}
[[File:Motherboard QDI Advance 9.JPG|200px|thumb|right|Particolare di una scheda madre Socket 370]]
In genere i tre componenti suddetti, escludendo solitamente la parte di memoria di massa, si trovano implementati fisicamente insieme sullo stesso circuito integrato o sulla stessa [[scheda elettronica]], che in questo caso viene detta [[scheda madre]] o ''mainboard'', o eventualmente in schede figlie o d'espansione direttamente inserite e spesso anche alimentate elettricamente dalla stessa scheda madre.
 
È importante ricordare che, attualmente, all'interno della CPU vi è anche una piccola quantità di memoria detta memoria [[Cache]]; questo tipo di memoria è una memoria veloce (ed anche molto costosa) utile per far fronte alla lentezza del [[Bus (informatica)|Bus]] di collegamento fra CPU e memoria [[Random Access Memory|RAM]]; ciò non accade invece se si ha a disposizione una piccola quantità di memoria all'interno della CPU stessa, la cache appunto, nella quale vengono caricate tutte le informazioni e/o le [[istruzione (informatica)|istruzioni]] più frequentemente utilizzate ovvero elaborate dal [[processore]].
Riga 176:
{{Vedi anche|CPU}}
[[File:Pentium d 820.jpg|250px|thumb|Una moderna CPU]]
La CPU, sigla di ''[[Central Processing Unit]]'', è uno dei componenti della [[macchina di Von Neumann]], il più diffuso modello teorico-implementativo di [[processore]]. Si tratta di un [[circuito integrato]] riprogrammabile dall'utente tramite [[programma (informatica)|programma]] [[applicazione|applicativo]] ed è il "cervello" vero e proprio del computer ovvero il dispositivo che ha il compito di elaborare (''processing'') le informazioni (dati) provenienti dalla [[memoria centrale]] decodificando ed eseguendo le [[istruzione (informatica)|istruzioni]] operative in [[codice macchina]] del programma e appartenenti al set di istruzioni fondamentali specifiche della CPU ([[instruction set]]), oltre che coordinare le altre unità di processamento secondarie ([[coprocessore]]).
 
Si suddivide in [[Unità di Controllo]] (''Control Unit'') ed [[Unità aritmetica e logica|Unità Logico Aritmetica]] (ALU). La sua struttura o ''architettura'' è stata soggetta ad 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 dati|pipeline]], aumentando così il grado di 'parallelismo'. Nelle ultime versioni si hanno più CPU che coesistono insieme sullo stesso circuito integrato, detto quindi processore ''multicore'', ad esempio [[dual-core]] o [[quad core]] a seconda che ospiti due o quattro processori in parallelo.
Riga 192:
====Altre schede elettroniche====
 
Collegate tramite [[slot (elettronica)|slot]] e [[socket (elettronica)|socket]] alla scheda madre (e quindi alla CPU) sono le ''schede di espansione'' che costituiscono dunque le [[periferica|periferiche]] interne del computer. Tra queste la più importante è la [[scheda video]] che è l'elemento hardware che si occupa dell'[[elaborazione delle immagini]] e della loro visualizzazione sul [[monitor]]. Altre schede d'espansione sono la [[scheda audio]], la [[scheda di rete]], la [[scheda Wi-Fi]] e la [[scheda di memoria]].
 
La suddivisione del carico elaborativo tra CPU e le altre schede elettroniche ha fondamentalmente ragioni storiche e pratiche di [[affidabilità]] e [[manutenibilità]] del sistema elettronico: le funzionalità di elaborazione secondarie storicamente sono state infatti aggiunte in seguito ai primi processori in grado di compiere le sole operazioni logico-matematiche ed il malfunzionamento di una o più schede non inficia il funzionamento dell'unità centrale oltre alla possibilità di essere sostituite senza dover sostituire l'intero sistema.
Riga 209:
* ''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 '''[[scheda d'espansione|schede di espansione]]''' e si collegano direttamente in alloggiamenti ('''[[slot (elettronica)|slot]]''') della scheda madre appositamente progettati. Questi slot dialogano, grazie all'interfaccia del [[chipset]], con tutto il resto del sistema.
[[File:Parallelport.jpg|110px|thumb|right|Porta parallela (Centronics)]]
[[File:SerialPort ATX.jpg|90px|thumb|right|Porta seriale]]
Riga 254:
Questa descrizione è da riferirsi solamente alla scheda di sistema di alcuni personal computer da tavolo, principalmente i maggiormente diffusi. Tutti i dispositivi diversi, tipo i [[computer mobile|computer mobili]] come i [[carputer]], [[palmtop]], [[Smartphone]], [[Netbook]], [[UMPC]], [[Console (videogiochi)|console per videogiochi]] e tutti gli altri dispositivi informatici alternativi, possono presentare un'architettura interna anche notevolmente differente. I [[computer portatili]], ad esempio, per esigenze di spazio possono integrare il chipset in altri componenti (o viceversa). Le console per videogiochi sono sprovviste di [[BIOS]] (una serie di sub-routine necessarie per l'avvio sono memorizzate ed automaticamente eseguite direttamente da un unico integrato).
 
Inoltre alcuni computer di vecchia generazione (e tutte le console per videogiochi, anche le più moderne) integrano la CPU direttamente saldate sulla scheda madre e quindi non rimovibile. Altri dispositivi invece (come [[supercomputer]], [[workstation]] e [[server]]) possono integrare sulla scheda madre due o più [[Socket (elettronica)|socket]] per l'installazione di più CPU (per sistemi multiprocessore) oppure più schede madri per ottenere configurazioni avanzate basate su sistemi con centinaia o anche migliaia di CPU che funzionano in contemporanea.
 
Nel [[1995]], nel campo dei sistemi basati su processori IBM/Motorola, schede madri della classe ''Tsunami'', progettate per i processori [[PowerPC 604]] e successivi erano dotate di slot per ''daughtercard'' o scheda figlia, a singolo o multiplo processore essendone anch'esse sprovviste.
 
Ugualmente, alcune schede madri della metà degli [[anni 1990|anni novanta]], progettate per i processori [[Pentium II]] e per i primi processori [[Pentium III]] (con core non [[Coppermine]]) erano appositamente sprovviste di socket e montavano invece uno slot denominato ''[[Slot 1]]'' simile ai normali slot d'espansione PCI per alloggiare una scheda elettronica contenente 2 o più integrati, che insieme costituivano la CPU del Computer.
 
Oggi con la tecnologia [[dual core]] e la più recente [[multi core]] è invece possibile integrare direttamente all'interno di un unico processore due (per il dual core) o più (per il multi core) [[core (hardware)|core]] logici nello stesso [[package (elettronica)|package]], capaci di aumentare la potenza di calcolo senza aumentare la frequenza di funzionamento del processore.
Riga 279:
== Modularità ed espandibilità ==
In termini molto generali, dal punto di vista della possibilità di modifica, aggiornamento, espansione e personalizzazione dell'architettura hardware di un computer vi possono essere i seguenti casi:
* nulla o assai limitata possibilità di intervento. E'È il caso, ad esempio, dei microcontroller, dei notebook (o dei derivati [[netbook]] e [[ultrabook]]), dei palmari, degli smartphone, dei tablet<ref>Nel caso di prodotti realizzati da un costruttore che realizza contemporaneamente l'hardware e il sistema operativo specifico, la cosa è praticamente impossibile: basti pensare ad Apple</ref>;
* da buona a ottima possibilità di intervento. E'È il caso delle macchine server, dei personal di tipo desktop e simili. Per i server di tipo blade la modularità e la scalabilità è la caratteristica peculiare di questa tipologia di sistemi.
 
Nel secondo caso occorre fare però un'altra distinzione:
Riga 290:
Occorre anche considerare che i computer (di qualsiasi genere ma vale soprattutto per quelli "chiusi" come notebook per non parlare degli smartphone o dei tablet) vengono realizzati e venduti dai fabbricanti con il sistema operativo (e tutta la parte software delle periferiche hardware) su licenza OEM. In questi casi è il produttore che mette a disposizione il software del sistema e gli aggiornamenti stessi: spesso e volentieri il software "originale" del produttore del singolo componente (o un'applicazione qualsiasi) non funziona sul computer in quanto il produttore OEM lo ha modificato e personalizzato per quello specifico modello/versione di computer (questo accade spesso anche per i driver). Quindi, in questi casi, non solo è difficile (o fisicamente impossibile) cambiare un componente hardware (nel senso di evoluzione non certo di sostituzione per guasto), ma non può essere neppure aggiornato il software di una periferica (costruita e venduta singolaramente da un produttore) se non quello rilasciato dall'OEM dell'intero sistema.
 
E'È per questo che tutti i grandi produttori di computer invitano a scaricare il software e gli aggiornamenti unicamente dal proprio portale o mediante la funzione di ''update'' del dispositivo e quelli delle periferiche/accessori avvertono che il software (driver e strumenti) dei loro componenti potrebbe non funzionare su computer OEM.
 
Pertanto, sarebbe più corretto parlare di personalizzazione della '''configurazione''' del computer dovendo non solo considerare la possibilità di espansione/modifica dell'hardware ma anche del sistema operativo e del software (firmware, driver, applicazioni, ecc) in generale.