Programmazione I - Introduzione
L’hardware
Definizione
L’hardware (in italiano “ferraglia”) è tutto ciò che è fisico in un elaboratore e che permette al software di operare. Il computer si differenzia dagli altri apparecchi elettronici (forse a differenza solo di smartphone e tablet) in quanto il suo hardware gli permette di essere programmato e di svolgere infinite (o quasi) operazioni.
Classificazione degli elaboratori
La prima classificazione da effettuare è tra i pc (Personal Computer) e gli elaboratori usati da più di un utente contemporaneamente (elaboratori delle banche, ecc...). Ai pc appartengono a loro volta diverse sottocategorie, tra cui i desktop (chiamati anche fissi), i portatili (laptop, notebook e netbook), i tablet e se vogliamo anche gli smartphone.
Figura 01. Schema di suddivisione degli elaboratori
Caratteristiche hardware dei desktop
Generalmente tutti i desktop sono composti da:
- Cabinet/Chassis: è la parte esterna dell’elaboratore, serve a proteggere le componenti interne dai danni;
- Periferiche esterne (mouse, tastiera, schermo, casse audio) e interne: permettono all’utente di interagire con il computer e viceversa. Vengono divise in periferiche di input (l’utente invia dati all’elaboratore) e di output (è il computer a inviare le informazioni all’utente). Il modem è un esempio di periferica I/O, in quanto permette sia l’invio che la ricezione di dati;
- Memorie: sono il posto dove vengono contenute le informazioni. Si dividono in memorie di massa (poco costose e abbastanza efficienti) e memoria centrale (molto costosa e veloce, è transiente, mantiene le informazioni solo quando è alimentata). A loro volta le memorie di massa si dividono in memorie di massa a tecnologia magnetica (hard disk e floppy disk), memorie di massa a tecnologia ottica (cd e dvd) e memorie di massa basate su microprocessori e semiconduttori (usb, schede delle macchine fotografiche).
Cosa contiene lo chassis
Se si apre lo chassis di un desktop, generalmente si possono vedere:
- Alimentatore: si occupa di convertire la corrente di casa, alternata ad alto voltaggio, in corrente continua a basso voltaggio, in modo da renderla utilizzabile dalle periferiche esterne ed interne;
- Ventole: raffreddano le parti più sensibili alle temperature elevate e che tendono facilmente a surriscaldarsi;
- Scheda madre (motherboard): è il cuore dell’elaboratore, ad essa sono collegate tutte le periferiche, spesso non in modo diretto, ma tramite delle interfacce. Queste possono essere molto sofisticate (schede video e audio) o molto semplici (periferiche standard, usb, firewire...). Alla scheda madre è collegata anche la CPU (Central Process Unit), che è il vero e proprio cuore del pc. La CPU, assieme alla memoria centrale (a cui è direttamente collegata) e alla velocità di clock, determina le prestazioni e la velocità del computer. L’unità di misura della memoria è il Byte (1B = 8b / 1KB' 1000B).
Velocità di clock: battito al quale le periferiche viaggiano, è misurato in multipli degli Hz.
Il software
Struttura del software
La struttura del software può essere rappresentata con uno schema a stratificazione (“onion skin”). Partendo dal nucleo e proseguendo con gli “strati” più esterni si trovano:
- Macchina nuda (“bare machine”): è ciò che viene venduto all’utente che acquista un computer;
- Sistema operativo: è un insieme di programmi che semplificano i vari compiti (gestione delle risorse, recupero di informazioni a livello hardware, gestione dei conflitti e dei programmi) ai livelli superiori. I sistemi operativi possono essere di tipo proprietario (Windows/OSx) o Unix-like (Ubuntu/Linux). Il sistema operativo si divide in due parti: il Kernel (“nucleo”), con il quale gli utenti non interagiscono, dove vengono gestite le risorse (periferiche, memoria utilizzata/libera, conflitti tra i programmi, problemi di Trashing), e la Shell (“conchiglia”), che è la parte del sistema operativo visibile (desktop) con la quale è possibile eseguire i programmi e gestire i file (attraverso il File System). Il sistema operativo viene selezionato e caricato durante il processo di Bootstrap;
- Software di base: è l’insieme di tutti i programmi indispensabili senza i quali sarebbe impossibile utilizzare il computer (software per masterizzare, ascoltare musica, guardare film, ...);
- Applicazioni: sono tutti i programmi che l’utente ha deciso di installare sul computer; tra questi possono essere presenti i software di sviluppo.
Trashing: processo con il quale il pc impiega più tempo a caricare in memoria parti di programmi che a renderli operativi.
File System: meccanismo che si occupa delle operazioni eseguibili su di un file (modifica, eliminazione, ...).
Bootstrap: processo che avviene durante l’accensione del computer, viene caricato il BIOS (Basic Input Output System, piccola parte permanente della memoria centrale che controlla le funzioni base del pc) e tramite la Boot Sequence viene stabilito l’ordine con il quale vengono caricate le periferiche sulle quali è possibile trovare il sistema operativo; una volta selezionata la periferica desiderata, viene eventualmente avviato il Boot Loader, che permette di selezionare uno tra i sistemi operativi esistenti.
Software di sviluppo: programmi non presenti inizialmente sul pc che vengono utilizzati per creare dei software.
La macchina di Von Neumann
Struttura dell’architettura
La macchina di Von Neumann è formata da cinque componenti fondamentali:
- CPU (Central Process Unit): è il cuore della macchina e al suo interno si trovano la ALU (Unità Aritmetico-Logica, esegue le principali operazioni aritmetiche), diversi registri (tra cui il program counter e l’instruction register);
- Memoria centrale: è formata da tantissimi bit in sequenza che possono assumere il valore di 0 o 1.