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


Introduzione all'informatica: CPU, Memoria, Sistemi Operativi e Database, Schemi e mappe concettuali di Informatica Legale

Una panoramica generale dei concetti fondamentali dell'informatica, tra cui la cpu, la memoria, i sistemi operativi e i database. Esplora il funzionamento della cpu, i diversi tipi di memoria, le funzioni dei sistemi operativi e i principi di base dei database. Utile per comprendere i concetti di base dell'informatica e come questi elementi interagiscono per consentire il funzionamento dei computer.

Tipologia: Schemi e mappe concettuali

2022/2023

Caricato il 16/01/2025

alessio-nardelli-1
alessio-nardelli-1 🇮🇹

1 documento

1 / 40

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Analogico e digitale
La differenza fra analogico e digitale corrisponde alla differenza fra la rappresentazione continua e
quella discreta di una grandezza.
Esempi di rappresentazione analogica:
La lancetta che si sposta sul quadrante di uno strumento
Un termometro analogico dove mostra la misura la temperatura attraverso l’altezza della
colonnina del mercurio
Un orologio tramite le lancette
Una bilancia attraverso il movimento dell’ago
Esempi rappresentazione digitale che avviene principalmente attraverso i numeri
Un termometro digitale che mostra la temperatura su uno schermo
L’orologio digitale
Una bilancia
La differenza di precisione tra la rappresentazione digitale e analogica sta nel fatto che la
rappresentazione digitale risulta più precisa e più economica.
L’elettronica digitale sfrutta due possibili stati di funzionamento, 1 e 0 che costituiscono il bit, un
segnale analogico può assumere tutti i valori continui appartenenti a un erto intervallo, un segnale
digitale può assumere solo due valori, la differenza fondamentale è che mentre in quelli analogici
l’informazione è contenuta nella forma stessa del segnale, mentre nei segnali digitali
l’informazione da elaborare è codificata in serie di simboli es. 0 e 1.
Hardware e software
L’hardware è la componente fisica di un computer costituita da un insieme di risorse elettriche ed
elettroniche che cooperano alla memorizzazione per un breve o lungo periodo i dati e a compiere
elaborazioni complesse necessarie a interfacciarsi con il mondo esterno.
Il software è la parte intangibile costituita da un insieme di istruzioni che consente di far operare
l’hardware, consente la giusta gestione delle risorse hardware in modo che l’utente possa
utilizzarle in modo semplice senza concentrarsi su come avvengano determinati passaggi a livello
hardware,
schema generale di un sistema di elaborazione dati
5 componenti essenziali di un elaboratore elettronico
(Hardware) CPU: La CPU è il cuore operativo di qualsiasi computer, che sia un PC o un
laptop/tablet o anche uno smartphone.
CPU è un acronimo che sta per central processing unit, cioè unità centrale di elaborazione. È la
parte di un computer che coordina l’attività delle altre unità di elaborazione, schede audio e video,
schede di rete.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28

Anteprima parziale del testo

Scarica Introduzione all'informatica: CPU, Memoria, Sistemi Operativi e Database e più Schemi e mappe concettuali in PDF di Informatica Legale solo su Docsity!

Analogico e digitale La differenza fra analogico e digitale corrisponde alla differenza fra la rappresentazione continua e quella discreta di una grandezza. Esempi di rappresentazione analogica: La lancetta che si sposta sul quadrante di uno strumento Un termometro analogico dove mostra la misura la temperatura attraverso l’altezza della colonnina del mercurio Un orologio tramite le lancette Una bilancia attraverso il movimento dell’ago Esempi rappresentazione digitale che avviene principalmente attraverso i numeri Un termometro digitale che mostra la temperatura su uno schermo L’orologio digitale Una bilancia La differenza di precisione tra la rappresentazione digitale e analogica sta nel fatto che la rappresentazione digitale risulta più precisa e più economica. L’elettronica digitale sfrutta due possibili stati di funzionamento, 1 e 0 che costituiscono il bit, un segnale analogico può assumere tutti i valori continui appartenenti a un erto intervallo, un segnale digitale può assumere solo due valori, la differenza fondamentale è che mentre in quelli analogici l’informazione è contenuta nella forma stessa del segnale, mentre nei segnali digitali l’informazione da elaborare è codificata in serie di simboli es. 0 e 1. Hardware e software L’hardware è la componente fisica di un computer costituita da un insieme di risorse elettriche ed elettroniche che cooperano alla memorizzazione per un breve o lungo periodo i dati e a compiere elaborazioni complesse necessarie a interfacciarsi con il mondo esterno. Il software è la parte intangibile costituita da un insieme di istruzioni che consente di far operare l’hardware, consente la giusta gestione delle risorse hardware in modo che l’utente possa utilizzarle in modo semplice senza concentrarsi su come avvengano determinati passaggi a livello hardware, schema generale di un sistema di elaborazione dati 5 componenti essenziali di un elaboratore elettronico (Hardware) CPU: La CPU è il cuore operativo di qualsiasi computer , che sia un PC o un laptop/tablet o anche uno smartphone. CPU è un acronimo che sta per central processing unit , cioè unità centrale di elaborazione. È la parte di un computer che coordina l’attività delle altre unità di elaborazione, schede audio e video, schede di rete.

Da quali parti è composta una CPU? Il compito di una CPU è quello di eseguire le istruzioni dei programmi che vengono prelevati dalla memoria di massa, un hard disk per esempio, e aperti nella memoria ad accesso casuale, la RAM. Solitamente, una CPU ha al suo interno:  l’ unità di controllo : legge le istruzioni presenti nella memoria centrale (RAM) e memorizza il risultato delle operazioni;  l’ unità aritmetica e logica : esegue le operazioni aritmetiche e logiche come una sorta di calcolatrice;  lo shifter : elabora i dati e li modifica in relazione alle operazioni da compiere;  alcuni registri : sono parti di memoria all’interno della CPU, importanti perché accedervi è molto più veloce che accedere alla RAM. Cosa accade ai dati nella CPU? La frequenza di clock. Si tratta di un valore espresso in Hertz e indica la velocità con la quale la CPU esegue un ciclo composto da:  Lettura dell’istruzione : la CPU acquisisce l’istruzione dalla memoria centrale;  Decodifica : il processore determina quale operazione deve eseguire;  Esecuzione : l’esecuzione vera e proprie delle operazioni richieste dal programma tramite le istruzioni;  Attivazione della memoria ;  Scrittura del risultato nell’opportuno registro. Si sarebbe tentati di dire che più alta la frequenza di clock, maggiore sarà la velocità del processore. Nella scelta di una CPU concorrono anche altri parametri, ugualmente importanti. Per esempio: le IPC o Instructions per Cycle , il processo produttivo, l’efficienza energetica e il numero dei core. Le frequenze di clock rimangono comunque una caratteristica su cui potersi fare un’idea, ma variano a seconda del dispositivo. Se per un PC fisso o un portatile possono arrivare a 3 o 4 GHz per core , sugli smartphone e su alcuni tablet di solito sono comprese fra 1 e 2 GHz. Anche i router WiFi e i modem router hanno processori multi core , dove la frequenza può aiutare a capire come gestiranno i processi complessi della rete LAN e della connessione a Internet.

  1. computer monoprocessore;
  2. computer multiprocessore. Un computer monoprocessore è dotato di un solo processore, quest’ultimo esegue le istruzioni del programma. Un computer multiprocessore possiede, invece, più di un processore che eseguono le istruzioni. computer monoprocessore rappresenta la gran parte dei personal computer, gli smartphone, i tablet e i notebook; i server e i supercalcolatori sono invece multiprocessore.

proprio come una memoria cache, serve a migliorare le prestazioni della periferica a cui è associata. (Hardware) Dispositivi Input/Output (Hardware) Memorie di massa (Software) Programmi Un calcolatore digitale è un sistema in cui processori, memorie e dispositivi periferici sono connessi tra loro, Il processore è l’esecutore di tutte le istruzioni dei programmi; quindi, ogni singola istruzione dei programmi è eseguita dal processore. La CPU dialoga con la RAM per il corretto funzionamento dell’elaboratore elettronico; quest’ultimo, a sua volta, è in grado di realizzare i compiti più svariati a condizione che l’uomo realizzi i programmi Le memorie di massa Le memorie di massa sono in gradi di conservare i dati anche quando non alimentate da una fonte di energia, si basa su due aspetti fondamentali: una tecnologia di registrazione un metodo di rapido accesso alla risorsa la tecnologia si basa secondo il tipo di supporto usato: magnetismo: la magnetite ha la proprietà di attirare il ferro, viene gettata su un magnete della limatura di ferro che rimane attaccata all’interno del magnete. La memorizzazione digitale su supporti magnetici funziona in base al concetto che la superficie è vista come un insieme di punti, ciascuno dei quali rappresenta un bit che secondo il tipo di magnetizzazione positiva o negativa assume il valore 0 o 1. Ottica: un raggio laser legge i dati memorizzati sotto forma di microscopiche aree che a loro volta possono o non riflettere la luce del laser Elettronica: i dati sono memorizzati su memorie di semiconduttori generalmente chiamate memorie flash es. pen drive USB. Metodi di accesso rapido alle informazioni registrate su memoria di massa:  accesso sequenziale: l’accesso al contenuto avviene previo passaggio obbligato su tutte le locazioni di memoria precedenti.  Accesso diretto: accesso sequenziale o random ove l’accesso alla locazione avviene in modo diretto. Le memorie di massa sono classificate in base ad alcune caratteristiche:  la capacità  il tempo di accesso  la velocità di trasferimento

i dischi magnetici rappresentavano la tipica memoria dove salvare permanentemente i dati; è magnetica la tecnologia dei diffusissimi dischi fissi (hard disk), sono realizzati in alluminio o vetro, ma sono stati surclassati dalle SSD in cui non è presente alcun disco. I dischi magnetici sono una memoria di massa ad accesso diretto con capacità variabili, il tempo di accesso e la velocità di trasferimento sono inferiori a quelli dei dischi allo stato solido. Dischi allo stato solido (SSD) Le SSD sono memorie ad alta velocità e alta efficienza, sono i supporti per lo storage attualmente più utilizzati e performanti, con la loro architettura senza parti mobili e la loro velocità di trasmissione surclassano i tradizionali hard disk consumando anche meno energia. Le unità SSD sono dotate da chip che consentono di ottenere determinati vantaggi:  hanno un minore consumo di energia, poiché non ci sono parti in movimento;  sono maggiormente resistenti alle vibrazioni e/o cadute; per cui hanno minori possibilità di rottura;  operano in assenza di rumorosità;  hanno un tempo di accesso ai dati molto inferiore a quello di un disco meccanico;  consentono di ottenere velocità di lettura e scrittura maggiori;  sono indifferenti alla frammentazione dei dati perché l’unità legge i dati con la stessa velocità in tutte le celle. L’unità è performante allo stesso modo a prescindere se i dati sono contigui oppure frammentati. Questa unità, quindi, non deve essere deframmentata; anzi la deframmentazione è dannosa poiché sottopone le celle a un lavoro di scrittura/cancellazione (totalmente inutile) che naturalmente accorcia il ciclo di vita del disco;  producono meno calore. Svantaggi:  maggiori costi; a parità di capienza una unità SSD costa di più di un disco fisso magnetico;  potenzialmente le unità SSD hanno un ciclo di vita inferiore degli hard disk tradizionali. Infatti, ogni cella ha un numero limitato di scritture che va da diecimila a un milione di volte. Tali numeri, comunque, garantiscono molti anni di vita dell’unità SSD. I sistemi di archiviazione rimovibili Nascono dalla necessità di trasportare dati, uno dei primi fu il floppi disk. I nastri magnetici I nastri magnetici o tape sono simili al nastro su cui erano memorizzati i brani musicali. Si tratta di un supporto di memorizzazione ad accesso sequenziale ad accesso lento. I CD-ROM Il CD-ROM è una memoria di massa ad accesso diretto a tecnologia ottica tra quelli che possono essere scritti (masterizzati) una sola volta in maniera permanente ed essere letti molte volte. Hanno una capacità di circa 700 Mb ed hanno un ciclo di vita di circa 100 anni. I CD sono essenzialmente di due tipi:

  • CD-ROM (Compact Disk Read Only Memory)
  • CD-RW (Compact Disk Read Write)

pieno possesso delle risorse da gestire. Alla fine di tali operazioni, il sistema operativo mostra il suo “prompt”, ovvero il messaggio con cui comunica all’utente che la fase di avvio è terminata ed egli può iniziare a lavorare. Input/Output Il computer vive in un mondo che richiede l’esecuzione di programmi precaricati con cui inserire dati al fine di ottenere dei risultati. L’interazione tra computer e mondo esterno avviene tramite periferiche che consentono all’uomo di impartire comandi o inserire dati nel computer, quelle di output sono utilizzate per mostrare i risultati parziali o totali conseguiti. Le Unità di Input sono il luogo in cui inizia l’interazione tra utente e computer; sono strumenti pensati per codificare in forma digitale, e quindi gestibili da un computer, i dati prelevati dal mondo esterno. Es. unità di input: tastiera mouse touch pad trackball scanner joystick touch screen fotocamera digitale le unità di output l’unità di output può essere considerata il luogo dove l’utente apprende i risultati di ogni comando impartito all’elaboratore elettronico. Es. unità di output sono: le memorie di massa lo schermo la stampante e il plotter. Accessibilità Si intende la capacità dei sistemi informatici di erogare servizi e fornire informazioni fruibili. Molti utenti possono operare in contesti assai differenti, come non essere in grado di vedere, ascoltare o muoversi o possono non essere in grado di trattare alcuni tipi di informazioni facilmente o del tutto, Possono avere difficoltà nella lettura o nella comprensione del testo e possono non avere o non essere in grado di usare una tastiera o un mouse. Capitolo 2 i sistemi di numerazione Sistemi di numerazione posizionali Si definisce base di un sistema di numerazione il numero di simboli che compongono l’alfabeto dello stesso.

La rappresentazione dei numeri più grandi di quelli presenti nell’alfabeto si ottiene con un’opportuna combinazione dei dieci simboli, la posizione occupata da una cifra all’interno di un numero determina il peso della stessa che concorre alla quantificazione del numero stesso. Sistema di numerazione binario Il sistema di numerazione binario ha base b=2, visto che il suo alfabeto è composto da 2 simboli: {0,1}. Conversione di un numero binario in un numero decimale applicare la notazione pesata dei numeri nei sistemi di numerazione posizionali Esempio: (N)2= 01010011 numero di cifre = 8; per cui nella notazione pesata il peso maggiore, applicato alla cifra più significativa, sarà 7. (N)10 =027 + 126 + 025 + 124 + 023 + 022 + 121 + 120 = 64 + 16 + 2 + 1 = (83) Conversione di un numero decimale in un numero binario 1010011 Il sistema di numerazione complemento a due Il complemento a due permette di rappresentare i numeri interi con segno Regole: il peso di una cifra dipende dalla posizione occupata nel numero il peso di una cifra aumenta man mano che ci si sposta verso sinistra secondo la regola dei sistemi di numerazione posizionali in base 2.

Il valore di C sarà falso nel momento in cui le variabili indipendenti A e B saranno contemporaneamente vere. Negli altri tre casi C assumerà sempre valore vero. I circuiti logici Gli elaboratori elettronici eseguono funzioni, come somme tra numeri, memorizzazione di bit ecc., esprimibili tramite funzioni booleane. Questo vuol dire che, se si riuscisse a progettare dei circuiti corrispondenti ai vari operatori booleani, questi opportunamente combinati potrebbero essere utilizzati per la rappresentazione fisica delle funzioni booleane Porta NOT Esegue l’operazione booleana NOT, ha un ingresso e un’uscita, si comporta in modo che, se in ingresso si ha la variabile booleana A, in uscita si raccoglie il suo valore complementato. Porta OR Ha due ingressi e un’uscita Porta AND Ha due ingressi e un’uscita Porta OR ESCLUSIVO Ha due ingressi e un’uscita Porta NOR Ha due ingressi e un’uscita ed è costituito da una porta OR la cui uscita entra in una porta NOT Porta NAND Ha due ingressi e un’uscita ed è costituito da una porta AND la cui uscita entra in una porta NOT Il software Il concetto di algoritmo Un algoritmo è una sequenza ordinata e finita di passi, ripetibili e non ambigui, che se eseguita da un esecutore con dei dati in input produce in output i risultati ovvero la soluzione di una classe di problemi. Caratteristiche:  Finitezza; l’algoritmo deve essere una sequenza ordinata e finita di passi

 Non ambiguità: non devono mai esserci dubbi per l’esecutore  Generalità: l’algoritmo deve risolvere tutti i problemi di una stessa classe  Ripetitività: l’algoritmo deve poter essere ripetibile dal computer, la sequenza di passi deve essere eseguita da un esecutore Un algoritmo deve avere una durata di esecuzione finita, la sequenza di istruzioni deve fornire il risultato sempre in un i intervallo di tempo finito. Costanti, variabili e istruzioni di un algoritmo l’algoritmo è formalizzato con un pseudolinguaggio che richiama il linguaggio naturale e serve per descrivere la strategia dell’algoritmo senza volersi vincolare ad alcun linguaggio di programmazione in particolare Le istruzioni costituiscono i tasselli della strategia. L’esecutore che dovrà eseguire l’algoritmo dovrà ripercorrere le istruzioni nell’ordine stabilito dall’ingegnere del software, i valori manipolati dalle istruzioni possono essere costanti (0, “Ciao”) o variabili (A). Una costante mantiene inalterato il suo valore durante l’esecuzione di un programma, mentre il valore di una variabile può variare. Una variabile è definita nel momento in cui sono stabiliti i seguenti parametri: il nome univoco il tipo  numerico intero senza segno; per esempio 56;  numerico intero con segno; per esempio +56;  numerico reale; per esempio +56,39;  alfanumerico; per esempio “ciao”  data; per esempio 14/08/  booleano; per esempio True la dimensione le istruzioni sono classificabili secondo le seguenti categorie: istruzione di inizio programma istruzioni di assegnazione, es. A= istruzioni di input e output istruzioni condizionali. Sono istruzioni che consentono al computer di operare delle scelte sulla base della veridicità o meno di una condizione istruzioni iterative che consentono di eseguire più volte il “corpo del ciclo” in base al verificarsi o meno di una condizione I linguaggi di programmazione Il processore conosce e utilizza un solo linguaggio denominato linguaggio macchina, formato da due simboli {0,1}. Gli esseri umani utilizzano più linguaggi di programmazione: linguaggi di programmazione di basso livello, Low-Level Language (LLL);

 una sintassi, ovvero quell’insieme di regole per la corretta scrittura delle istruzioni del programma  una semantica, ovvero il significato assunto da ogni istruzione del linguaggio simbolico che determina  il tipo di operandi che ogni istruzione può “trattare”.  Tassonomia degli errori  Un errore è la causa di un malfunzionamento possono generare un difetto,  fault, nel software; tale imperfezione si manifesta con un malfunzionamento, o failure.  esempi di errori:  l’espressione che è in un’istruzione di assegnazione che ha operatori od operandi errati;  la condizione che governa un punto di decisione che è espressa in modo errato;  il valore di una variabile che può indurre il software a commettere un errore.  L’evidenza di un failure richiede un intervento di manutenzione per scoprire la causa e riparare il difetto presente nel codice Errori sintattici Un errore sintattico viene commesso dall’ingegnere del software nel momento in cui digita un’istruzione che non rispetta la sintassi del linguaggio di programmazione utilizzato Errori Semantici Nella programmazione informatica la semantica definisce il significato dei programmi sintatticamente corretti Errori logici Gli errori che impediscono al programma di fornire risultati esatti, il codice è sintatticamente e semanticamente corretto, ma il risultato fornito non è quello previsto. Se un software è formato da migliaia di istruzioni non è semplice capire il perché di un malfunzionamento di questo tipo, gli errori logici sono i più difficili da individuale e correggere e richiedono un’attenta fase di test per la loro individuazione. Gli errori di run-time Gli errori di run- time di verificano durante l’esecuzione del programma, generalmente quando il programma tenta di eseguire un’operazione che non può essere completata. Quando si verifica un errore di run-time il computer blocca l’esecuzione del programma avvertendo l’utente, con un messaggio sul monitor, che si è verificato un run-time error. Quando si verifica un errore di loop, invece, il computer non si blocca poiché continua all’infinito ad effettuare sempre la/e stessa/e istruzione/i del corpo ciclo. I processi di traduzione dei programmi Quindi, i programmi realizzati in un qualsiasi linguaggio simbolico, non essendo comprensibili dal processore, devono essere tradotti per essere eseguiti. La traduzione può avvenire secondo due processi alternativi: interpretazione; procedimento effettuato da un software denominato interprete; esso è applicabile solo a programmi scritti in HLL;

compilazione, procedimento effettuato da un software denominato compilatore per gli hill e assembler per i linguaggi assembly. Il software Il software è intangibile e duttile. L’intangibilità è dovuta al fatto che diversamente dall’hardware e dalle opere ingegneristiche tipiche non si può toccare, mentre la duttilità si riferisce alla qualità che consente la modifica diretta del prodotto senza intaccare il progetto da cui deriva. Il software è human intensive poiché richiede un intenso lavoro umano di tipo ingegneristico, per la progettazione dei codici sorgenti piuttosto che di fabbricazione. La fabbricazione si riduce ad un semplice processo di duplicazione motivo per cui non incide sul costo finale del prodotto che, di conseguenza è determinato solo ed esclusivamente dal lavoro di progettazione:  tassonomizzare il software:  software di base o software di sistema  software applicativo il software di base è costituito dai programmi basilari per il funzionamento dei componenti del computer, rientrano di componenti quali il processore e la RAM anche i cosiddetti programmi di UTILITÀ quali: antivirus, programmi per il backup dei dati e quelli per la compressione dei file. Il software applicativo è composto dai programmi che supportano l’utente della risoluzione di problemi specifici:  i wordprocessor o elaborazione di testi che consentono di creare e gestire documenti  gli spreadsheet  i DBMS  i software di fotoritocco  i software di animazione video i processo di produzione del software Per realizzare un software si utilizza un processo per sviluppo del software si intende un processo che consente la produzione, manutenzione e gestione dei programmi e che è composto dalle seguenti fasi: analisi e specifica dei requisiti: l’analisi dei requisiti richiede un’ampia e stretta interazione tra il cliente, che usufruirà del software, e gli ingegneri che lo realizzeranno. Il prodotto dell’analisi dei requisiti è il documento Functional Requirements Specifications in cui si specificano le funzioni del sistema software. Tale documento deve contenere un di requisiti funzionali individuabili con certezza. Progettazione del Sistema; ovvero, come si risolve il problema. In questa fase gli ingegneri del software progettano il sistema software. Tipicamente è divisa in due sotto fasi:

  • progetto architetturale o di alto livello;
  • progetto di dettaglio.
  • Codifica e Test del Software, si effettuano più tipologie di test: testi di unità: di analizzare la singola funzionalità implementata nel modulo

La manutenibilità L’attività di manutenzione del software consente la modifica dei codici sorgenti corrispondenti dopo il suo rilascio iniziale, modifiche che non sono solo per gli errori. si riferisce alle azioni svolte al fine di continuare a garantire il buon funzionamento del prodotto. Le modifiche possono essere classificate in tre tipologie  La tipologia correttiva, finalizzata alla rimozione degli errori e volta a riportare il software nello stato in cui possa eseguire la funzione richiesta  La manutenzione adattiva, finalizzata ai cambiamenti dell’ambiente in cui opera  La manutenzione perfettiva, finalizzata a migliorarne le funzioni offerte. Le licenze d’uso del software Una licenza d’uso è un permesso concesso da un soggetto ad un altro, chi concede è l’autore. Il documento di licenza definisce quali usi si possono fare dell’opera, dall’altro stabilisce quali condizioni devono rispettare gli utilizzatori dell’opera. “La licenza o contratto d'uso, in informatica, è il contratto con il quale il titolare dei diritti di sfruttamento economico sul software definisce il regime giuridico di circolazione e le limitazioni nell'utilizzo e nella cessione dell'opera. Le licenze per il software libero e open source Le licenze a codice sorgente aperto garantiscono l’accessibilità ai codici sorgenti, la possibilità di copiarli e modificarli nonché di ridistribuire il programma modificato In questo caso l’autore o il titolare dei diritti intellettuali preferisce che l’opera circoli libera dai tradizionali vincoli del copyright Le licenze per il software proprietario o closed source Le licenze d’uso proprietarie di un software sono per definizione close by default; esse non consentono lo studio, la modifica e la copia del codice sorgente né la distribuzione di quello eseguibile. Queste licenze impongono il “close source”, ovvero il codice sorgente non è disponibile per l’utente finale. Le licenze proprietarie autorizzano l’utilizzo del software imponendo, però, una serie di vincoli e condizioni. Quando si acquista un computer Windows o Mac la prima cosa a fare è accettare la licenza d’uso in cui i permessi sono pochi, in realtà uno solo: poter utilizzare l’opera. I sistemi operativi Il sistema operativo opera a stretto contatto con l’hardware di cui gestisce le funzionalità, essi è quel software orizzontale che gestisce tutte le risorse del computer. il sistema operativo ha il compito di astrarre, ad un livello di utilizzo più vicino alle abitudini umane, le risorse hardware e software del computer. L’interazione tra l’elaboratore elettronico e l’utente avviene mediante il sistema operativo. Un sistema operativo è formato da una collezione di programmi che hanno lo scopo di semplificare l’uso dell’elaboratore elettronico da part dell’utente nonché ottimizzare l0efficenza delle sue risorse. Tali programmi avvicinano l’hardware dell’elaboratore elettronico al modo di pensare dell’uomo sollevando quest’ultimo dalla conoscenza di molti concetti tecnici del

tipo interrupt, indirizzi di memoria, cluster e così via. Oggi i sistemi operativi sono costituiti da un variopinto insieme di programmi di utilità che si pongono tra l’hardware ed il software applicativo; essi consentono agli utenti di utilizzare device quali, per esempio, personal computer, tablet e smartphone senza conoscerne le caratteristiche fisiche. Inoltre, le interfacce grafiche virtualizzando sempre più le caratteristiche specifiche dei dispositivi hardware consentono un loro utilizzo senza che l’utente conosca i comandi del sistema operativo. In tal modo l’utente può concentrarsi sulle applicazioni di suo interesse circostanziando molto le proprie conoscenze Caratteristiche dei sistemi operativi I sistemi operativi si possono classificare in due categorie:

  • i sistemi operativi monotasking che consentono di eseguire un solo task alla volta;
  • i sistemi operativi multitasking che consentono di eseguire più task parallelamente. I sistemi operativi multitasking possono operare essenzialmente in due distinte modalità:
  • modalità batch;
  • modalità interattiva. La modalità batch ’elaboratore elettronico perde molto tempo nella fase di interazione con l’utente, per esempio nel momento dell’inserimento dei dati. Ridurre tali momenti e di migliorare le prestazioni Generali del sistema. La modalità batch prevede che l’utente prepari i dati da elaborare prima dell’esecuzione del programma e li memorizzi su dispositivi di input quali il disco magnetico. nel momento in cui è in esecuzione, ha già i dati da manipolare a disposizione e non deve più dialogare con l’utente, che perde, quindi, la possibilità di interagire con l’elaboratore elettronico; L modalità interattiva restituisce all’utente l’opportunità di interagire, in un tempo reali con il computer. Il modello Onion Skin Il sistema operativo è il gestore delle risorse hardware e software dell’elaboratore elettronico, per analizzare le funzionalità svolte dal sistema operativo si utilizza il modello a buccia di cipolla che lo divide in diversi strati. Ciascuno strato è costituito dai programmi, i moduli del sistema operativo, che utilizzano le procedure implementate negli strati sottostanti e possono essere utilizzate dai moduli dello strato successivo elaborato da H. M. Deitel nel 1983 schematizza un sistema operativo che insiste su una macchina hardware e nei vari strati virtualizza i vari dispositivi rendendo friendly il loro utilizzo da parte degli utenti. Il livello di astrazione dell’hardware diventa man mano più elevato quanto più ci si allontana dal centro del modello “a cipolla”. Il primo livello : il gestore del processore si trovano tutti i moduli che gestiscono il processore con l’obiettivo di:
  1. slegare le particolarità hardware del processore dal software che lo utilizzerà
  2. realizzare il multitasking che si vedrà nel seguito di questo capitolo il secondo livello : il gestore della memoria

 le unità di Input/Output come la stampante un tipico sistema operativo monotasking è stato l’MS-DOS i sistemi operativi multitasking il multitasking sfrutta al meglio tutte le risorse disponibili, ovvero sfruttare i tempi morti dovuti alle operazioni di Input/Output che chiamano in causa gli esseri umani o le periferiche lente facendo eseguire alla CPU altre operazioni. Il task Un sistema operativo multitasking è in grado di eseguire parallelamente più processi o task. Un task è un programma in esecuzione definito da due componenti:

  1. una componente statica, costituita dal codice del programma relativo;
  2. una componente dinamica, costituita da: l’insieme dei valori assunti dai registri del processore la rappresentazione del suo stato di avanzamento la priorità che gli è stata attribuita il gestore del processore il ciclo di vita di un task inizia con l’esecuzione del programma corrispondente. Il task appena nato è nello stato NEW e nel momento in cui il sistema operativo lo riterrò opportuno passerò nello stato di READY per essere eseguito. Nello stato di READY ci possono essere più processi. Lo stato RUN è quello di effettiva esecuzione, durante la fase di RUN un processo possiede in modo esclusivo la risorsa CPU. Dallo stato di RUN un processo può passare in due stati diversi.
  3. stato di WAIT, nel momento in cui non ha più bisogno della CPU perché deve effettuare un’operazione di I/O
  4. stato di STOP, nel momento in cui il task ha finito le istruzioni da eseguire. In questo caso il processo termina di esistere Quando un processo rilascia la CPU, per uno dei motivi esposti, questa è assegnata, dal sistema operativo, ad un altro task che è nello stato di READY. Il processore e le periferiche possono eseguire, in un determinato istante, un solo compito, mentre la memoria centrale può ospitare più processi contemporaneamente facendo in modo che il sistema operativo possa permettere al processore l’esecuzione ora di un processo. Per realizzare ciò il sistema operativo gestisce una coda dei processi in attesa, le Process Queues. La coda della CPU è chiamata coda dei pronti (Ready Queue) ad indicare che i processi in essa sono pronti ad essere messi in esecuzione. Durante la sua esistenza un processo risiede in memoria centrale. Lo scheduler Lo scheduler si occupa di selezionare un processo da una coda.

Esistono due tipi di scheduler

  1. long-term scheduler
  2. short-term scheduler il long-term scheduler si occupa dell’immissione dei task nella cosa dei pronti, quando un task viene lanciato assume lo stato di NEW, in attesa di passare nella ready queue e regola il livello di multiprogrammazione del sistema. Viene invocato quando si deve creare un nuovo processo Lo short-term scheduler si occupa della scelta della cosa dei pronti, del processo che deve andare nello stato di RUN. Viene invocato ogni qual volta il corrente processo in esecuzione rilascia il processore. Algoritmi di scheduling Per il long-term scheduler la scelta migliore è quella di regolare un giusto equilibrio tra task di tipo CPU-burst e task di tipo I/O-burst. Se ciò non avvenisse si potrebbe ottenere una cattiva distribuzione dei processi nelle code. Ad esempio, ci si potrebbe trovare nella seguente situazione:
  • stato NEW con n task, con n diverso da 0;
  • stato READY vuota;
  • stato RUN senza alcun task;
  • stato WAIT con i task impegnati in operazioni di I/O. Per lo short-term scheduler gli algoritmi di scheduling che si sono succeduti hanno di fatto scandito l’evoluzione del sistema operativo che inizialmente era di tipo batch e dagli anni 70 del XX secolo è diventato interattivo. Algoritmo FIFO o FCFS Il primo algoritmo utilizzato dallo short-term scheduler prevedeva una coda di tipo FIFO (First in first out) perché il primo task che arriva nello stato READY è il primo ad essere scelto per passare nello stato di RUN. FCFS (first come first served) in quanto il primo processo che arriva è sicuramente il primo ad essere servito dal processore, ma non è detto che sia il primo a terminare. Algoritmo SJF (Shortest Job First) Eseguire prima il processo più breve migliora sicuramente le prestazioni in quanto diminuisce i Wait Time di tutti i task in coda permette di ottenere dei tempi di attesa minore Algoritmo di scheduling basato sulla priorità del task legato alla priorità che può essere associata ad ogni processo; in tal caso lo scheduler seleziona il task con più alta priorità. La priorità poteva essere associata ad un processo in base a vari fattori quali, la tipologia di utenza oppure in modo dinamico che si rivelò nella necessità e di evitare la cosiddetta morte per fame di un task. Algoritmo Round Robin