Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Sistemi Operativi e Gestione della Memoria: Un'Introduzione, Appunti di Fondamenti di informatica

APPUNTI SULLE NOZIONI PRINCIPALI DELL'INFORMATICA

Tipologia: Appunti

2021/2022

Caricato il 09/01/2022

rebecca-cerrone-1
rebecca-cerrone-1 🇮🇹

1 documento

1 / 19

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Infromatica di Base
Termini Informatici:
-Algoritmo: un insieme di passaggi che definisce come un problema viene risolto.
-Programma: una rappresentazione di un algoritmo
-Programming: il processo di sviluppo di un programma.
-Software: rappresentano programmi ed algoritmi.
-Hardware: l’elettronica (la parte fisica el computer.
IL DATA STORAGE
La memorizzazione dei dati è la registrazione (memorizzazione) di informazioni (dati) in un supporto di
memorizzazione. Scrittura a mano, registrazione fonografica, nastro magnetico e dischi ottici sono tutti
esempi di supporti di memorizzazione. Alcuni autori propongono addirittura che il DNA sia un meccanismo
naturale di memorizzazione dei dati.[1][2] La registrazione può essere eseguita praticamente con qualsiasi
forma di energia. L'archiviazione elettronica dei dati richiede energia elettrica per archiviare e recuperare i
dati.
L'archiviazione dei dati in un supporto digitale leggibile da una macchina è talvolta chiamata dati digitali.
L'archiviazione dei dati del computer è una delle funzioni principali di un computer generico. I documenti
elettronici possono essere archiviati in uno spazio molto inferiore rispetto ai documenti cartacei.[3] I codici
a barre e il riconoscimento dei caratteri dell'inchiostro magnetico (MICR) sono due modi per registrare dati
leggibili dalla macchina su carta.
-Bits:
Binary Digit (0 o 1), unità fondamentale di informazione che può prendere solo due valori, zero o uno.
-Bit Patterns: sono usati per rappresentare l’informazione ( numeri, caratteri, immagini, suoni).
_Operazioni Booleane: L'algebra di Boole (anche detta algebra booleana o reticolo booleano),
in matematica e logica matematica, è il ramo dell'algebra in cui le variabili possono assumere solamente i
valori vero e falso (valori di verità), generalmente denotati rispettivamente come 1 e 0.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Anteprima parziale del testo

Scarica Sistemi Operativi e Gestione della Memoria: Un'Introduzione e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

Infromatica di Base Termini Informatici: -Algoritmo: un insieme di passaggi che definisce come un problema viene risolto. -Programma: una rappresentazione di un algoritmo -Programming: il processo di sviluppo di un programma. -Software: rappresentano programmi ed algoritmi. -Hardware: l’elettronica (la parte fisica el computer. IL DATA STORAGE La memorizzazione dei dati è la registrazione (memorizzazione) di informazioni (dati) in un supporto di memorizzazione. Scrittura a mano, registrazione fonografica, nastro magnetico e dischi ottici sono tutti esempi di supporti di memorizzazione. Alcuni autori propongono addirittura che il DNA sia un meccanismo naturale di memorizzazione dei dati.[1][2] La registrazione può essere eseguita praticamente con qualsiasi forma di energia. L'archiviazione elettronica dei dati richiede energia elettrica per archiviare e recuperare i dati. L'archiviazione dei dati in un supporto digitale leggibile da una macchina è talvolta chiamata dati digitali. L'archiviazione dei dati del computer è una delle funzioni principali di un computer generico. I documenti elettronici possono essere archiviati in uno spazio molto inferiore rispetto ai documenti cartacei.[3] I codici a barre e il riconoscimento dei caratteri dell'inchiostro magnetico (MICR) sono due modi per registrare dati leggibili dalla macchina su carta. -Bits: Binary Digit (0 o 1), unità fondamentale di informazione che può prendere solo due valori, zero o uno. -Bit Patterns: sono usati per rappresentare l’informazione ( numeri, caratteri, immagini, suoni). _Operazioni Booleane: L' algebra di Boole (anche detta algebra booleana o reticolo booleano ), in matematica e logica matematica, è il ramo dell'algebra in cui le variabili possono assumere solamente i valori vero e falso (valori di verità), generalmente denotati rispettivamente come 1 e 0.

La variabile che può annullare soltato i valori vero(1) o falso (0) è detta Variabile Booleana. Le operazioni tra variabili booleane sono dette Operazioni Booleane e sono : -and -xor -or not

  • NOTAZIONE ESADECIMALE Il sistema numerico esadecimale (spesso abbreviato come esa o hex ) è un sistema numerico posizionale in base 16, cioè che utilizza 16 simboli invece dei 10 del sistema numerico decimale tradizionale. Per l'esadecimale si usano in genere simboli da 0 a 9 per le prime dieci cifre, e poi le lettere da A a F per le successive sei cifre, per un totale di 16 simboli.[1]^ Il sistema esadecimale è molto usato in informatica, per la sua relazione diretta tra una cifra esadecimale e quattro cifre binarie. È spesso usato come intermediario, oppure come sistema numerico a sé stante. Per esempio, è possibile esprimere un byte con esattamente due cifre esadecimali (invece che con tre decimali). È interessante, infatti, notare come ogni cifra esadecimale corrisponda a un nibble, cioè a un numero binario di quattro cifre. Ci sono numerosi modi per denotare un numero come esadecimale, usati in differenti linguaggi di programmazione e di descrizione hardware:  Ada e VHDL racchiudono in numeri in "virgolette numeriche" che riportano anche la base, per esempio "16#5A3#" (Nota: Ada accetta questa notazione per tutte le basi dalla 2 alla 16, e per numeri sia interi che reali).  Il C e i linguaggi con una sintassi simile (come il Java) usano il prefisso '0x', per esempio "0x5A3". Lo zero iniziale è presente perché i numeri devono iniziare con un carattere numerico, e la 'x' significa esadecimale (in caso di assenza della 'x', il numero è inteso come ottale).  Il Pascal e alcuni Assembly indicano l'esadecimale con il suffisso 'h' (se il numero inizia con una lettera, si usa anche il prefisso '0'), per esempio "0A3Ch", "5A3h".  Altri assembly (AT&T, Motorola) e alcune versioni di BASIC usano il prefisso '$', per esempio "$5A3".  Altre versioni del BASIC usano il prefisso "&h", per esempio "&h5A3".  Quando usano sistemi di numerazione diversi dalla base dieci, o numerali in basi multiple, i matematici scrivono la base come pedice del numero, per esempio "5A3 16 " oppure "5A3SEDICI". Non esiste un simbolo standard, perciò tutte le convenzioni elencate sopra vengono utilizzate, e a volte lo stesso articolo può contenere due convenzioni diverse. Ciononostante, non si crea molta confusione perché tutte sono non ambigue. La parola "esadecimale" è peculiare, perché il prefisso esa è derivato dal greco έξι (exi) (che significa sei ), e decimale deriva dalla parola latina per dieci. Conversione con il Sistema binario La ragione per cui si adopera in informatica è che il sistema esadecimale può essere considerato come una scrittura più compatta del sistema binario. La conversione dalla base 16 alla base 2 e viceversa può essere svolta per sostituzione di gruppi di cifre invece che con algoritmi di divisione. Ad esempio, si consideri il seguente numero in base 16: A16BC9 16. Per convertirlo in base 2, è sufficiente prelevare ciascuna cifra esadecimale e sostituirla con il suo equivalente nel sistema binario, come riportato nella colonna a destra della tabella iniziale. Seguendo questa procedura, si perviene al seguente risultato: A16BC9 16 = A 1 6 B C (^916) = (^1010 0001 0110 1011 1100 ) = (^1010000101101011110010012) Per ottenere la conversione opposta, invece, bisogna procedere nella maniera inversa: si suddivide il numero binario in gruppi di 4 cifre a partire da destra (se l'ultimo gruppo contiene meno di 4 cifre, vanno

Scrittura. È l'operazione di memorizzazione delle informazioni. Un esempio di scrittura è assegnare il byte 123 alla cella di indirizzo 1000.  Lettura. È l'operazione di recupero di informazioni memorizzate. Un esempio di lettura è chiedere alla memoria il contenuto della cella di indirizzo 1000. Si accede inoltre alla memoria e ai suoi contenuti ogni qual volta l'Unità di Controllo ( Control Unit ) del Processore richiede dati utili su cui eseguire un'operazione di elaborazione. Tutto ciò avviene grazie alle procedure di indirizzamento gestite dall'Address Logic, sottosistema del processore. Per parlare indifferentemente di lettura o di scrittura, si usa il termine accesso. Per esempio, per indicare che una memoria è veloce sia in lettura che in scrittura, si dice che ha un basso tempo di accesso. Mentre l'operazione di cancellazione dei dati in memorie volatili in realtà non esiste in quanto più propriamente si può parlare di sovrascrittura dei dati, é diverso invece il concetto di cancellazione per il caso delle memorie non volatili dove, in base alle tecnologia utilizzata, ogni locazione può necessitare di una sequenza di inizializzazione del settore chiamata più propriamente cancellazione. Le memorie EEPROM ad esempio hanno semplicemente dei tempi lunghi di cancellazione del singolo byte rispetto alla lettura e scrittura, invece per le memorie flash la cancellazione avviene in blocchi di pagine scrivibili chiamati settori; successive letture dei bit dopo una cancellazione si osserva che i dati hanno tutti lo stesso valore, di norma il valore "1" binaro e la scrittura permette di invertire lo stato del bit a "0" binario, ma non da "0" a "1", rendendo necessaria un nuovo ciclo di cancellazione e scrittura. Le periferiche SSD contengono soffisticati controller al fine di ottimizzare i cicli di scrittura e rendere la memoria simile e a un disco rigido, ma non senza complicazioni. Per gerarchia Memoria primaria o centrale Collegata alla scheda madre tramite connettori chiamati socket ed alla CPU tramite il BUS di sistema, la memoria primaria, chiamata anche memoria centrale o memoria principale, contiene dati ed istruzioni prelevati dalla memoria di massa in attesa che questi siano a loro volta prelevati ed elaborati dal microprocessore, lavorando dunque in maniera strettamente accoppiata con esso ed essendo dunque assimilabile ad una memoria di transito o appoggio. Molto spesso si tratta di memoria RAM e memoria cache e nelle moderne architetture dei processori è spesso incorporata nella scheda CPU o direttamente nel chip del processore stesso. È una parte importante del computer in quanto dalle sue dimensioni in termini di capacità di immagazzinamento dipende dunque la quantità massima di dati che possono essere prelevati e dunque elaborati dal processore in condizioni di monotasking e multitasking ed è quindi considerata a tutti gli effetti un parametro prestazionale del computer stesso. Qualora la memoria primaria venga esaurita molti sistemi di elaborazione moderni sono in grado di implementare il cosiddetto meccanismo della memoria virtuale come estensione provvisoria della memoria primaria. Per realizzare una memoria principale vengono normalmente utilizzate tecnologie a semiconduttore (cioè vengono utilizzati circuiti integrati a base di silicio). Tale memoria è costituita da numerosissime celle di memoria , dispositivi bistabili, capaci cioè di assumere due stati stabili alternativi attraverso i quali è possibile memorizzare la quantità minima di informazione ( bit). Le operazioni che possono essere effettuate su questo componente sono due: lettura (load) e scrittura (store). Poiché nella realtà quotidiana le scelte possibili in vari casi sono molte più di due, un bit non è più sufficiente a rappresentarle e pertanto si è pensato di unire più celle di memoria in registri di memoria. Se con un solo bit è possibile ottenere solo due diversi stati, con due celle (2 bit) è possibile rappresentare 22 alternative, con l'associazione di 3 celle (3 bit) 2^3 alternative, e così via... In particolare, la dimensione del registro più diffusa è quella da 8 bit. L'unione di 8 bit forma infatti 1 byte di memoria, il primo multiplo del bit, il quale può rappresentare fino a 256 possibili combinazioni diverse (2^8 ). In un registro di memoria le operazioni di lettura/scrittura avvengono contemporaneamente su tutte le celle facenti parte del registro. In memorie con registri da 1 byte, quindi, vengono lette 8 celle alla volta. Ogni registro di memoria è denotato da un indirizzo.

L'operazione di lettura Nell'operazione di lettura sulla memoria principale la CPU assume una posizione master rispetto alla memoria che è lo slave. I due componenti sono collegati tra loro dal bus di sistema. Il processo consiste essenzialmente nella seguente sequenza di operazioni:  La CPU trasferisce l'indirizzo del dato da leggere dal Program Counter (PC) al Memory Address Register (MAR);  Il MAR invia tale indirizzo alla memoria tramite la linea degli indirizzi del bus di sistema parallelamente al segnale che specifica il tipo di operazione che si sta effettuando (in questo caso, lettura);  La memoria preleva il dato contenuto nell'indirizzo specificato dalla CPU e lo invia, tramite la linea dei dati (presente anch'essa sul BUS di sistema), al Memory Data Register (MDR) della CPU. MAR, PC e MDR sono registri speciali dell'unità centrale della macchina. L'operazione di scrittura La scrittura consiste principalmente nelle seguenti operazioni:  trasferimento dell'indirizzo che si intende scrivere dalla CPU al MAR e contemporaneamente trasferimento all'MDR del valore che si intende scrivere;  trasferimento del valore dell'MBR ( Memory Byte Register ) alla cella di memoria il cui indirizzo è presente nel MAR. La memoria centrale è organizzata come una tabella di celle, ciascuna delle quali è denotata da un indirizzo (celle che contengono una sequenza di bit; ogni bit può rappresentare l'informazione 0 oppure 1 tramite un diverso stato elettrico). Ogni cella ha una dimensione prefissata e gli indirizzi delle celle variano tra 0 e n, dove n è una potenza di 2. Le operazioni che la memoria può effettuare sono due: lettura (load) e scrittura (store). Bisogna distinguere tra vari tipi di memorie primarie, a seconda della funzione svolta e delle loro caratteristiche peculiari. Di seguito vengono elencate quelle più importanti.  RAM, l'acronimo per "random access memory", ovvero "memoria ad accesso casuale", è la memoria in cui vengono caricati i dati che devono essere utilizzati dal calcolatore per elaborare. La RAM può essere volatile (si cancella spontaneamente ed ha bisogno di essere aggiornata), statica o tamponata (mantiene l'alimentazione anche a macchina spenta). Il processore identifica le celle della RAM tramite indirizzi preassegnati che ne specificano la posizione: la memoria si presenta, quindi, come un enorme vettore (stringa ordinata di elementi detti byte, ciascuno individuabile con un indirizzo). Il termine "random" evidenzia che non ci sono differenze ad accedere alle varie celle della memoria. Le caratteristiche della RAM vengono ereditate anche da tutte le altre memorie ad accesso casuale (individuabili facilmente dal fatto che contengono RAM alla fine). Sostanzialmente le memorie RAM si suddividono in DRAM (dinamiche), SRAM statiche e che vengono utilizzate per la memoria cache.  Cache RAM, una memoria associativa integrata nel processore, che ha la caratteristica di essere molto veloce; dato l'elevato costo, viene utilizzata esclusivamente per contenere i dati e le istruzioni utilizzati più di frequente (in modo da migliorare notevolmente le prestazioni del processore).  ROM, l'acronimo per "read only memory", ovvero "memoria in sola lettura (o solamente leggibile)", è una memoria permanente (cioè ha un contenuto fisso che non può essere cancellato ed inoltre non è volatile), presente sulla scheda madre, che contiene le istruzioni che la CPU deve caricare per consentire l'avvio del sistema e le routine di base che prendono il nome di BIOS (Basic I/O System).  EPROM, l'acronimo per "erasable programmable read only memory", ovvero "ROM cancellabile e programmabile", che è una memoria in sola lettura, ma ha la particolarità di poter essere cancellata in particolari condizioni. Le EPROM si cancellano tramite l'esposizione ai raggi UV, mentre

Tra i vari tipi di nastri magnetici, le prestazioni migliori sono ottenute dai nastri per la memorizzazione di dati digitali.  La Memoria Flash , memoria elettronica non volatile di tipo EEPROM. Si presenta come schede di memoria dall'ingombro ridotto. Memoria olografica Un altro tipo di memorie secondarie, però ancora in fase di sviluppo, sono le memorie olografiche. Queste nuove tecnologie olografiche di archiviazione, avranno il pregio di poter memorizzare i dati non su una superficie (come fanno i supporti attuali) ma su un volume: queste nuove memorie saranno dunque caratterizzate da una elevata capacità di archiviazione ed in più da tempi di accesso brevi. Tra le varie idee, il modo più promettente per archiviare più immagini olografiche sullo stesso mezzo è utilizzare differenti angoli di divergenza tra i due laser. Cambiando l'angolo di incidenza del raggio di lettura è possibile infatti leggere pagine diverse. Ci sono però alcune problematiche che ostacolano la realizzazione di queste nuove memorie; le più importanti sono:  l'elevata precisione ottica richiesta per il progetto  la difficoltà per l'allineamento dei vari componenti  le problematiche legate all'imperfezione del materiale utilizzato  il rischio della collimazione dei fasci  il problema dell'elaborazione dei segnali di uscita dai quali vanno ricavati i bit inizialmente memorizzati Il motivo principale che spinge i ricercatori alla realizzazione di queste memorie, è che la registrazione di dati su media magnetici ed ottici arriverà velocemente a scontrarsi con i limiti fisici dei supporti e quindi le memorie, che ora sono adeguate, potrebbero non essere più sufficienti per le necessità future. Per tipo di accesso  Le memorie ad accesso sequenziale possono essere lette e scritte solamente all'indirizzo immediatamente successivo all'indirizzo a cui è avvenuto l'accesso precedente. I principali esempi di memorie ad accesso sequenziale sono i nastri magnetici.  Le memorie ad accesso diretto possono essere lette e scritte a qualunque indirizzo, con tempo di accesso variante e dipendente dall'indirizzo di memoria a cui è avvenuto l'accesso precedente.  Le memorie ad accesso casuale possono essere lette e scritte a qualunque indirizzo, ma con lo stesso tempo di accesso. Per possibilità di scrittura da parte dell'utente finale La tipica memoria può essere sia letta che scritta. Questi dispositivi sono detti memorie a lettura-scrittura. Tuttavia sono utilizzate anche memorie che vengono scritte solo in fase di inizializzazione, e per le quali non è possibile la scrittura nell'uso normale. Tale inizializzazione può essere effettuata in modo incrementale dalla stessa apparecchiatura con cui vengono riletti i dati scritti. Questi dispositivi sono detti memorie scrivibili una sola volta , o WORM (Write Once, Read Many). Alternativamente, può essere necessario scrivere tutti i dati con un'apposita apparecchiatura esterna prima di poter usare la memoria in lettura. Questi dispositivi sono detti memorie a sola lettura , o ROM (Read-Only Memory). Ecco gli esempi più diffusi per ognuno dei tre suddetti tipi:  Memorie a lettura-scrittura : memorie RAM, memorie EPROM, memorie EEPROM, dischi ottici CD-RW, dischi ottici DVD-RW, memorie elettroniche flash, nuclei di ferrite, dischi rigidi, floppy disk, dischi magneto-ottici RW.  Memorie scrivibili una sola volta : carta con penna a inchiostro indelebile, dischi magneto-ottici WORM, dischi ottici CD-R, dischi ottici DVD-R, memorie elettroniche PROM.

Memorie a sola lettura : carta stampata, memorie elettroniche ROM, dischi ottici CD-ROM, dischi ottici DVD-ROM. Sulla base della permanenza dei dati In base alla capacità di memorizzare in maniera permanente i dati si distinguono due tipi di memoria:  memoria volatile: memorie che perdono le informazioni se non alimentate elettricamente (lo sono la maggior parte delle memorie elettroniche RAM);  memoria non volatile: memorie che mantengono le informazioni anche se non alimentate elettricamente (lo sono tutti gli altri tipi di memoria). I difetti della volatilità sono i seguenti:  consumo di energia per conservare le informazioni;  la necessità di una fonte di energia rende meno portabile e maneggevole la memoria. I CD-ROM, per esempio, se dovessero avere un'alimentazione a batteria per mantenere le informazioni, sarebbero molto più costosi e scomodi;  perdita delle informazioni in caso di malfunzionamento o manutenzione del computer. Nonostante i loro difetti, le memorie volatili sono molto utilizzate, in quanto hanno tempi di accesso molto inferiori a quelli di altre memorie. -NOTAZIONE BINARIA Il sistema numerico binario è un sistema numerico posizionale in base 2. Esso utilizza solo due simboli, di solito indicati con 0 e 1, invece delle dieci cifre utilizzate dal sistema numerico decimale. Ciascuno dei numeri espressi nel sistema numerico binario è definito "numero binario". In informatica il sistema binario è utilizzato per la rappresentazione interna dell'informazione dalla quasi totalità degli elaboratori elettronici, in quanto le caratteristiche fisiche dei circuiti digitali rendono molto conveniente la gestione di due soli valori, rappresentati fisicamente da due diversi livelli di tensione elettrica. Tali valori assumono convenzionalmente il significato numerico di 0 e 1 o quelli di vero e falso della logica booleana. Un numero binario è una sequenza di cifre binarie (dette bit). Ogni cifra in posizione (contate da destra verso sinistra iniziando da 0) si considera moltiplicata per , anziché per , come avviene nella numerazione decimale. Nella seguente tabella vengono confrontate le rappresentazioni binarie, esadecimale e decimale dei numeri compresi tra 0 e 15: Binario Esadecimal e Decimale 0 0 0 1 1 1 10 2 2

esiste un limite alla dimensione ei valori che possono0 essere rappresentati in qualunque sistema. Avviene quando una computazione produce un valore che va oltre il range dei valori rappresentabili dalla macchina. -DISTANZA DI HAMMING -un numero di bit in cui differiscono due pattern : 0 1 1 0 1 0 0 1 0 0 0 0 - distanza di Hamming= 2 Questa distanza nota gli errori nei codici quando essa è maggiore o uguale a 3. -FUNZIONAMENTO DEL CODICE Il codice rileva l’errore di un bit e lo corregge. Il pattern modificato sarà ad una distanza pari a 1 rispetto all’ originale ed almeno a due dagli altri. Per codificare un messaggio : -confrontare ogni pattern ricevuto con quelli del codice fino a che D= Codice che rileva al massimo due errori e ne corregge uno. -ARCHITETTURA DEL COMPUTER Con architettura hardware si intende l'insieme dei criteri di progetto in base ai quali è progettato e realizzato un computer, oppure un dispositivo facente parte di esso. Per estensione, descrivere l'architettura di un dispositivo significa, in particolare, elencarne le sottoparti costituenti ed illustrarne i rapporti interfunzionali. I soggetti che si occupano di architettura dei calcolatori hanno il compito di costruire sistemi di elaborazione di diversa complessità (da una semplice scheda elettronica a un complesso sistema con grossa potenza di calcolo) mettendo insieme questi componenti elementari. È anche importante sottolineare la differenza che intercorre tra elettronica e architettura dei calcolatori: l'elettronico ha il compito di costruire circuiti veloci ed efficienti, si occupa quindi di migliorare i "mattoni", i componenti elementari del sistema; l'architetto dei calcolatori ha invece il compito di ottenere le migliori prestazioni possibili (in termini di potenza di calcolo, costi in termini economici) assemblando in maniera efficiente i componenti elementari. Elementi base Chip con porte logiche I "mattoni" che costituiscono un sistema di calcolo sono:  porte logiche (and, not, or)  generatori di segnali (ad es. clock)

Mettendo insieme le porte logiche, che sono tipicamente circuiti realizzati con diverse tecnologie elettroniche (CMOS, TTL, ECL) è possibile costruire le cosiddette macchine elementari che si dividono in macchine combinatorie e macchine sequenziali. Processori e sistemi Interconnessioni di reti logiche sotto forma di circuiti integrati danno vita a sistemi elettronici di elaborazione più complessi (es. programmable logic device e microcontrollori) fino ad arrivare ai processori. Il termine architettura viene dunque usato in riferimento alla configurazione di quest'ultimi (architettura x86, CISC, RISC, SPARC, 32-bit, 64-bit, pipeline, ecc...) e, quando si parla di prodotti di consumo, si usa in contrapposizione alla parola software: le soluzioni hardware risolvono le loro funzionalità sotto forma di dispositivo dedicato, quelle software sono soluzioni sviluppate sotto forma di programmi eseguibili che possono essere caricati su dispositivi general purpose. A livello più esteso il termine architettura si riferisce all'architettura logica del computer nel suo intero comprendendo processore, memoria, registri e collegamenti tra loro, scheda madre, schede di espansione, case o cabinet ecc...(architettura di von Neumann, architettura Harvard, architettura di un processore basato su registri generali ecc..). Nell'ambito dei sistemi informatici diffuse sono invece le architetture hardware n-tier, mentre nelle grandi realtà si parla di architettura telematica. Architettura software L' architettura software è l'organizzazione fondamentale di un sistema, definita dai suoi componenti, dalle relazioni reciproche tra i componenti e con l'ambiente, e i principi che ne governano la progettazione e l'evoluzione. Questa definizione deriva dallo standard IEEE 1471-2000. Al pari delle architetture hardware, descrivere l'architettura software di un sistema significa elencarne le sottoparti costituenti ed illustrarne i rapporti interfunzionali. Più precisamente, l'architettura software include l'insieme delle decisioni significative sull'organizzazione di un sistema software. L'implementazione di architetture software complesse spesso dà vita a piattaforme software. Nelle grandi realtà l'architettura software è parte dell'architettura telematica. Nell'ambito delle reti informatiche un esempio di architetture software sono le architetture di rete a strati, mentre nelle applicazioni web sono diffuse le architetture software multi-tier. -LINGUAGGIO MACCHINA Il linguaggio macchina (o codice macchina ), in informatica, indica il linguaggio in cui sono scritti i programmi eseguibili per computer: può venire classificato come linguaggio di programmazione, sebbene quest'ultima espressione sia più spesso riservata per indicare i linguaggi di alto livello con cui si scrivono programmi non direttamente eseguibili, ma che richiedono una traduzione in linguaggio macchina, per es. per mezzo di un compilatore. Il linguaggio macchina è basato su un alfabeto detto binario in quanto comprende due soli simboli, generalmente indicati con 0 e 1 : un simbolo di questo alfabeto viene detto bit. Il processore o CPU è quella componente hardware di un computer che è in grado di eseguire i programmi scritti in linguaggio macchina. In altre parole in linguaggio macchina sono definite l'insieme di istruzioni fondamentali che un processore è in grado di compiere ( instruction set ) in cui i codici di programmi da eseguire devono essere tradotti. In particolare i linguaggi a più basso livello si ottengono come semplice codifica (tabella di associazione) a partire dal linguaggio macchina in un crescendo di astrazione.

Per prima cosa il Sistema Operativo, dopo aver ricevuto comando dall'esterno (come un click su un'icona, o Enter, ecc.), avvia l'eseguibile che inserisce all'interno del PC (Program Counter) l'indirizzo associato alla prima cella di memoria contenente l'istruzione desiderata per l'esecuzione delle fasi successive del programma. La CPU carica l'istruzione dalla memoria principale mediante Data Bus nella Memory Data Register (MDR). Il valore dalla MDR è poi depositato nell'Instruction Register (IR), un circuito che trattiene l'istruzione temporaneamente così che possa essere decodificata ed eseguita.

2. Caricamento dei dati dalla memoria principale (Decode) La CPU legge l'indirizzo dalla memoria principale se l'istruzione ha un indirizzo indiretto. Dopodiché carica i dati richiesti dalla memoria principale per poi essere processati e depositati all'interno dei registri. Dall'Instruction Register, l'istruzione è decodificata dall'Unità di Controllo ( Control Unit ). Eventuali indirizzi di memoria in cui leggere o scrivere dati sono contenuti nel MEM register, un ulteriore registro oltre l'Instruction Register. Al termine della fase di Decode, il Program Counter aumenta di 1 l'indirizzo contenuto in memoria (ad esempio da 1000 passa a 1001), per indicare che la prossima istruzione sarà contenuta all'interno di questa nuova cella di memoria. 3. Esecuzione dell'istruzione (Execute) A questo punto, se l'istruzione decodificata è tale da portare i dati memorizzati precedentemente in IR all'interno dei registri ALU, i dati possono essere manipolati da quest'ultima: in generale il dato nuovo viene scritto mediante " scrittura distruttiva " in uno dei registri stessi dell'ALU, il che comporta la perdita eventuale di dati precedentemente memorizzati nello stesso registro. Nel caso invece l'istruzione non prevedesse la manipolazione, ma solo la scrittura di una cella o la sua lettura, l'ALU non viene interpellata. Se l'azione è terminata con successo, il ciclo può allora ricominciare. Ciclo non incrementale Se nella fase di FDE (Fetch, Decode & Execute) il puntamento di ogni fase di lettura e scrittura non è incrementale, il PC non avrà un puntamento del tipo: (PC = PC + 1), ma nel caso di un tipo LOOP, ci sarà un tipo "JUMP", ovvero non andrà all'istruzione successiva ma farà un "JUMP"(salto) all'inizio del ciclo di Fetch, fino ad arrivare alla fine del nLoop richiesto dall'esecuzione del programma. -Comunicazione con gli altri dispositivi: -Controller = gestisce la comunicazione tra computer ed altri dispositivi. -Porta= punto di connessione device-computer. -Direct Memory Access(DMA) = capacità dei controller di accedere alla memoria principale. -Collo di bottiglia di Vol Neuman = avviene quando la CPU ed i controllers competono per l’accesso ai Bus. -Handshakikg= processo di coordinamento durante il trasferimento dei dati tra computer e periferica. -I SISTEMI OPERATIVI Un sistema operativo (abbreviato in SO ), in informatica, è un software di base, detto anche piattaforma operativa (composto normalmente da più sottosistemi o componenti software: kernel, scheduler, file system, gestore della memoria, gestore delle periferiche, interfaccia utente e spooler di stampa), che gestisce le risorse hardware e software della macchina, fornendo servizi di base ai software applicativi; tra i sistemi operativi per computer desktop si citano Microsoft Windows, MacOS, le distribuzioni Linux, sistemi Unix-like, BSD e Chrome OS, mentre per i dispositivi mobili, quali smartphone e tablet, vi sono iOS, Android, Windows Phone, Sailfish OS, Symbian OS e KaiOS. Un sistema operativo è un insieme di software che fornisce all'utente una serie di comandi e servizi per usufruire al meglio della potenza di calcolo di un qualsivoglia elaboratore elettronico, spaziando dal più piccolo dei palmari al più potente tra i mainframe. I sistemi operativi nascondono tutti i dettagli tecnici legati allo specifico hardware e architettura rappresentando le informazioni ad un alto livello, meglio comprensibile dall'uomo.

Esso garantisce l'operatività di base di un calcolatore, coordinando e gestendo le risorse hardware di processamento (processore) e memorizzazione (memoria primaria), le periferiche, le risorse/attività software (processi) e facendo da interfaccia con l'utente, senza il quale quindi non sarebbe possibile l'utilizzo del computer stesso e dei programmi/software specifici, come applicazioni o librerie software. È dunque un componente essenziale del sistema di elaborazione che funge da interfaccia tra l'utente e la macchina ed inoltre è una base alla quale si appoggiano gli altri software, che dunque dovranno essere progettati e realizzati in modo da essere riconosciuti e supportati da quel particolare sistema operativo. Assieme al processore, con cui spesso è strettamente legato, costituisce la cosiddetta piattaforma del sistema di elaborazione. In generale un sistema operativo può essere:  monoutente , se un solo utente per volta può accedere alle risorse dell'elaboratore;  multiutente , se più utenti possono accedere alle risorse dell'elaboratore che a sua volta può essere: o seriale , sequenzialmente uno per volta; o parallelo , ciascuno parallelamente agli altri;  monotasking , se in grado di eseguire un solo compito o task (processo) alla volta:  multitasking o multithreading , se in grado di svolgere più compiti o sottocompiti parallelamente attraverso una certa politica di scheduling (es. timesharing).  portabile o meno su differenti architetture hardware di processori. Funzioni principali Secondo una definizione più rigorosa, il sistema operativo è un insieme di funzioni e strutture dati responsabile:  del controllo e della gestione delle risorse di sistema (CPU e Memoria primaria) e delle componenti hardware che costituiscono il computer (processi di Input/Output da e verso le periferiche collegate al sistema)  dell'esecuzione dei programmi (processi) che su di esso vengono eseguiti, assegnando ad essi le necessarie risorse per l'avanzamento dei processi.[1]. Se il sistema di elaborazione prevede la possibilità di memorizzazione aggiuntiva dei dati su memoria di massa, come accade nei computer general purpose, esso ha anche il compito di:  gestire l'archiviazione e l'accesso ai file. I programmi possono gestire l'archiviazione dei dati su memoria di massa (ottenendo strutture complesse, come una base di dati), servendosi delle procedure messe a disposizione del sistema operativo. La componente del SO che si occupa di tutto ciò viene chiamata file system. Infine, se è prevista interazione con l'utente, viene solitamente utilizzata allo scopo un'interfaccia software (grafica o testuale) per accedere alle risorse hardware (dischi, memoria, I/O in generale) del sistema. D'altra parte, un sistema operativo può essere utilizzato anche su una macchina che non preveda interazione diretta con un essere umano (per un esempio, vedi smart card o determinati sistemi embedded) spesso dunque più leggero e semplificato. Solitamente un sistema operativo installato su computer fornisce anche degli applicativi di base per svolgere elaborazioni di diverso tipo. Sebbene molte delle funzionalità sopraddette non siano spesso immediatamente visibili/percepibili dall'utente, l'importanza del sistema operativo di un calcolatore è cruciale: oltre alla necessità di gestione delle funzionalità di base sopraddette, al di là delle prestazioni massime offerte dall'hardware dell'elaboratore stesso, il sistema operativo determina di fatto efficienza e buona parte delle prestazioni effettive di funzionamento dell'intero sistema ad esempio in termini di latenze di processamento, stabilità, interruzioni o crash di sistema. Un generico sistema operativo moderno si compone di alcune parti standard, più o meno ben definite.

Schema di uno scheduler Nel primo sono i processi che, spontaneamente, cedono il controllo al sistema non appena hanno terminato la singola operazione in corso; nel secondo è lo scheduler che ferma i processi allo scadere del tempo assegnato e trasferisce il controllo dall'uno all'altro:  il cooperative multitasking assorbe meno risorse di calcolo e non ha quasi ritardo di commutazione per il cambio di task, e inoltre non richiede nessuna struttura hardware dedicata, il che rende possibile implementarlo su qualunque calcolatore; per contro è molto vulnerabile a errori nei programmi (in genere il crash di un processo fa cadere l'intero sistema) e l'isolamento fra processi è molto debole. È il modello usato dai vecchi sistemi.  il preemptive multitasking necessita di CPU che implementino in hardware sia dei livelli di privilegio per l'esecuzione del codice, sia una logica specifica per il context switch, il cambio di task eseguito dallo scheduler. Poiché l'interruzione dei processi è arbitraria, al cambio di task il sistema operativo è costretto a salvare tutti o quasi i registri della CPU e ricaricarli con quelli salvati dal task che subentra, perdendo molto tempo. A fronte di queste maggiori richieste, il preemptive multitasking offre una sicurezza del sistema maggiore e una virtuale immunità ai crash di sistema causati da errori nei programmi. È il modello usato dai moderni sistemi operativi. Lo scheduler scandisce dunque il tempo di esecuzione dei vari processi e assicura che ciascuno di essi venga eseguito per il tempo richiesto. Normalmente lo scheduler gestisce anche lo stato dei processi e può sospenderne l'esecuzione nel caso questi siano in attesa senza fare nulla, assegnando le risorse inutilizzate ad altri processi che le necessitano (esempio classico è la richiesta di dati da disco). Nei sistemi operativi realtime lo scheduler si occupa anche di garantire una timeline , cioè un tempo massimo di completamento per ciascun task in esecuzione, ed è notevolmente più complesso. Gestione input/output e periferiche ] La gestione dell'input/output ovvero delle periferiche di sistema è attuata attraverso il meccanismo dell'interrupt da parte delle periferiche stesse che chiamano in causa il sistema operativo il quale opererà un cambiamento di contesto (context switch) all'interno del ciclo del processore assegnando al processore il compito di input/output richiesto. Un'altra modalità tipica di gestione delle periferiche, alternativa agli interrupt, è il polling. Gestore di memoria Il gestore di memoria è la componente del sistema operativo che si occupa di gestire ed assegnare la memoria primaria ai processi che ne fanno richiesta immediatamente prima dell'elaborazione. La

gestione della memoria è necessaria anche per tenere traccia di quanta memoria è impegnata e di quanta invece è disponibile per soddisfare nuove richieste: in mancanza di un sistema di gestione, si avrebbe prima o poi il caso nefasto di processi che ne sovrascrivono altri, con gli ovvi inconvenienti. Esso è eseguito dal MMU ( Memory Management Unit ) che alloca la memoria primaria richiesta dai programmi e dal sistema operativo stesso, salva sulla memoria di massa le zone di memoria temporaneamente non usate dai programmi (memoria virtuale) e garantisce che le pagine swappate vengano riportate in memoria se richieste. Un altro buon motivo per registrare la memoria usata dai vari processi è il fatto che, in caso di errori gravi, i processi possono andare in crash e non essere più in grado di comunicare al sistema che la memoria che occupano può essere liberata: in questo caso è compito del gestore di memoria, dopo la terminazione anomala del processo, marcare come libere le zone di memoria possedute dal processo "defunto", rendendole disponibili per nuove allocazioni. Per poter gestire i programmi, divenuti processi, è necessario che tutti gli indirizzi definiti in essi siano calcolati in forma relativa alla prima istruzione del programma (come se il programma dovesse essere caricato a partire dall'indirizzo 0 di memoria centrale). Al momento del caricamento, che può essere eseguito in qualsiasi zona libera della memoria, gli indirizzi relativi verranno sommati al primo indirizzo di effettivo caricamento, diventando così assoluti: INDIRIZZO ASSOLUTO = INDIRIZZO RELATIVO + INDIRIZZO DI PARTENZA. Una modalità/meccanismo tipico di gestione/assegnazione della memoria ai programmi/processi da parte del sistema operativo è il paging. Nel caso il sistema disponga di un meccanismo di memoria virtuale, il gestore della memoria si occupa anche di mappare (indirizzare) la memoria virtuale offerta ai programmi sulla memoria fisica e sui dischi rigidi del sistema, copiando da memoria a disco rigido e viceversa le parti di memoria necessarie di volta in volta ai programmi, senza che i programmi stessi o gli utenti debbano preoccuparsi di nulla. Protezione della memoria La protezione della memoria è un sistema per prevenire la corruzione della memoria di un processo da parte di un altro. Di solito è gestito via hardware ad esempio con una MMU, (Memory management unit) e dal sistema operativo per allocare spazi di memoria distinti a processi differenti. File system Un computer diventa infatti molto più utile ed efficace se dotato di una memoria di massa: per gestirla serve un gestore di file system, cioè un software che in sintesi è composto da un insieme di funzioni che permetta di organizzare e gestire (accesso o lettura, scrittura o memorizzazione, ordinamento) i dati sulla superficie dei mezzi di memorizzazione secondo una struttura ben precisa. I sistemi operativi che risiedevano su disco e capaci di gestire un file system sono detti genericamente Disk Operating System, per l'appunto, DOS. L'esemplare più famoso è senz'altro l'MS-DOS di Microsoft, oggi sostituito dall'interfaccia grafica Windows, ma che era alla base dei sistemi operativi Windows 95/ 98 /Me. Ne esiste anche una versione libera compatibile con i suoi programmi, il FreeDOS, ed altre versioni come il DR-DOS. Il file system si occupa dunque di esaudire le richieste di accesso alle memorie di massa. Viene utilizzato ogni volta che si accede a un file sul disco, e oltre a fornire i dati richiesti tiene traccia dei file aperti, dei permessi di accesso ai file. Inoltre si occupa anche e soprattutto dell'astrazione logica dei dati memorizzati sul computer (directory, ecc). A seconda dei casi, un particolare sistema operativo può avere tutti questi componenti o solo alcuni. Un'ulteriore differenza fra i sistemi operativi è data dal tipo di comunicazione fra i vari componenti: i sistemi operativi classici sono basati su chiamate dirette di funzioni, mentre molti sistemi operativi moderni, soprattutto quelli che adottano microkernel, si basano sul message passing , sullo scambio di messaggi fra le loro varie parti e fra il sistema operativo e i programmi che fa girare. Interfaccia utente Il secondo passo verso una migliore gestione del computer si ha con lo sviluppo di un'interfaccia utente separata dal kernel, un interprete di comandi che funzioni anche da interfaccia utente ovvero da Shell.

Task manager e pannello di controllo Uno strumento molto utile per l'amministrazione è il task manager ovvero un programma, spesso presente di default sui sistemi operativi, utile per monitorare le risorse informatiche quali memoria RAM utilizzata e percentuale di utilizzo della CPU, nonché l'elenco di tutti i processi attivi in esecuzione e la possibilità di terminarli singolarmente. Molti sistemi mettono inoltre a disposizione per via grafica il cosiddetto pannello di controllo ovvero uno strumento di interfaccia grafica che consente di effettuare o rimuovere tutte le impostazioni di sistema (es. pannello di controllo di Windows). Sicurezza Gestione utenti La multiutenza fa sorgere una serie di problemi dal punto di vista della sicurezza dei sistemi operativi ovvero come distinguere i vari utenti tra loro, come accertarsi che nessun utente possa causare danni agli altri o alla macchina che sta usando. Questi problemi di sicurezza informatica si risolvono assegnando un account univoco per ciascun utente, assegnando un proprietario ai file ed ai programmi e gestendo un sistema di permessi per l'accesso ad essi, e prevedendo una gerarchia di utenti (cioè di account) per cui il sistema rifiuterà tutti i comandi potenzialmente "pericolosi" e li accetterà soltanto se impartiti da un utente in cima alla gerarchia, che è l'amministratore del sistema. Antivirus e firewall Alcuni sistemi operativi, tra cui i sistemi Microsoft Windows e MacOS, necessitano dell'installazione di opportuni antivirus o programmi anti-malware per scongiurare attacchi informatici al funzionamento e sicurezza del PC. I sistemi Unix-Linux non hanno bisogno di questo tipo di protezione essendo intrinsecamente più sicuri. Spesso è possibile installare e attivare anche opportuni firewall personali quando non è già presente un qualche tipo di firewall perimetrale nella rete. Questi programmi girano in background e tendono ad essere abbastanza pesanti ovvero tendono ad utilizzare risorse di memoria e processamento spesso non trascurabili. Aggiornamento Un'attività tipica di amministrazione, spesso eseguita in maniera automatica, è quella dell'aggiornamento ( update ) di sistema attraverso patch scaricate periodicamente dal sito del produttore o da repository opportuni. Si tratta di porzioni di codice che una volta installate rendono più sicuro il sistema ( patch di sicurezza ) eliminando vulnerabilità intrinseche o rendendo più affidabile il funzionamento del PC ( patch di sistema ). Su Windows questi aggiornamenti vengono detti service pack. L'aggiornamento a una versione superiore di sistema è detto invece upgrade.