Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
IL SOFTWARE
Introduzione
Il termine è costituito dall'unione di due parole:
software
- (morbido)
soft
- (manufatto, componente, oggetto)
ware
L'origine del termine software risale alla Seconda Guerra Mondiale.
I tecnici dell'esercito inglese erano impegnati nel decriptare i codici tedeschi di
dispositivo elettromeccanico per cifrare e decifrare messaggi.
Enigma,
Oramai siamo talmente abituati a utilizzare software in qualunque momento della
giornata
Storia del software ed evoluzione del software
Se vogliamo trovare un inizio alla storia del software, possiamo affermare che
tutto ebbe inizio con interminabili sequenze binarie composte dai simboli 0 e 1,
ovvero la programmazione in codice binario.
1725, → dare a un telaio i comandi
Basile Bouchon intuizione straordinaria:
necessari per disegnare automaticamente sulla stoffa le fantasie da lui
desiderate
Macchina di → architettura di →
Turing von Neumann basi nello sviluppo del
"la prima programmatrice della storia": →
software Ada Lovelace Charles
Macchina Differenziale: equazioni di secondo grado
Babbage
Macchina Analitica: qualunque forma di calcolo
→ La cita nel suo testo fondamentale: "Computing Machinery and
Alan Turing
Intelligence"
Alcune tappe:
nasce Spacewar, il primo videogioco della storia
1961: viene creato al MIT un software che mette in collegamento vari computer e
1965:
invia brevi messaggi di testo: è l'alba delle email
nasce Telenet, il pilastro di Internet.
1975: viene lanciato Microsoft Word, che ha mandato in soffitta le macchine da
1983:
scrivere il formato JPEG ha rivoluzionato per sempre il nostro rapporto con
1992:
la fotografia Evoluzione del software → è bidirezionale → Evoluzione
dell'hardware
Tipi di software
L'hardware e il software sono organizzati a livelli
Ciascun livello corrisponde a una macchina dotata di un proprio insieme di
funzionalità Ogni macchina è caratterizzata da un proprio linguaggio, formato
dalle istruzioni che quella macchina sa eseguire
Ciascun livello fornisce un linguaggio più semplice da utilizzare rispetto a quello
del livello sottostante
Ciascun livello è realizzato in termini del linguaggio del livello immediatamente
sottostante Il software può essere diviso in due grandi categorie:
- Software di base
- Software applicativo
Nell'organizzazione a livelli l'hardware rappresenta l'unica
macchina reale Gli strati software corrispondono a cosiddette
macchine virtuali
Le diverse macchine e i relativi linguaggi divengono sempre più astratti
Licenze d'utilizzo e distribuzione
La licenza d'uso è un documento che accompagna il software e specifica i diritti e i
di chi lo riceve e di chi lo diffonde
doveri
Tutte le licenze d'uso traggono il loro valore legale dalle norme sul diritto d'autore,
il
copyright.
Esistono diversi tipi di licenze:
- libere
- Open Source
- proprietarie
gratuito, che però obbliga l'utente alla visualizzazione di banner
Adware:
pubblicitari. Attenzione agli spyware!
gratuito in cui l'autore chiede agli utenti un gesto di
Cardware:
cortesia si può usare legalmente solo dopo averlo
Commerciale:
acquistato programma dimostrativo, distribuito per far
Demo:
conoscere il software programma distribuito
Freeware:
gratuitamente
(GNU Public License): particolare forma di software open source, la cui
GPL
diffusione deve rispondere a precise regole codificate nella licenza
codice sorgente liberamente utilizzabile e a disposizione del
Open source:
pubblico. Esempi tipici di software open-source sono il browser Mozilla, il
sistema operativo Linux, la suite per ufficio Open Office
programmi che, pur essendo liberamente distribuibili, richiedono un
Shareware:
pagamento per poter essere utilizzati in tutte le loro funzioni e senza limitazioni di
tempo
Versione di prova. È un altro modo di definire lo shareware che prevede una
Trial:
scadenza dopo un periodo di utilizzo gratuito, in seguito al quale occorre
acquistare la versione completa
IL SISTEMA OPERATIVO
Concetti base
Un Sistema Operativo è un insieme di programmi standard che permettono di
realizzare un'efficiente comunicazione tra della macchina e
l'hardware l'utente.
Il sistema operativo è il software responsabile della gestione delle risorse del
calcolatore, e in particolare di come le risorse vengono allocate alle applicazioni.
L'utente può richiede al sistema operativo di eseguire un programma, facendo
un doppio click sull'icona di un programma sul desktop del calcolatore.
Per avviare l'esecuzione del programma, il sistema operativo svolge le seguenti
attività:
- individua il codice eseguibile del programma (memorizzato sul disco)
- alloca al programma le risorse necessarie per la sua esecuzione (ad
esempio, una certa quantità di memoria centrale)
- carica il codice eseguibile del programma in memoria centrale
- avvia il programma
Il Sistema Operativo permettere all'utilizzatore di usare in modo semplice e
immediato tutte le risorse (HW e SW) che il sistema di elaborazione mette a
disposizione
l'uso delle risorse a disposizione, attuando opportune
Ottimizzare politiche di
gestione
razionale delle stesse
Fornire un'immagine di tutte le risorse disponibili, da
astratta indipendentemente
come queste funzionino (risorse hardware) e dei dettagli implementativi necessari
al loro uso Programma:
Insieme di istruzioni che deve eseguire il calcolatore ovvero il microprocessore o
CPU per risolvere un particolare problema
Es.: risoluzione equazione di Il grado
Le istruzioni sono codificate in un apposito linguaggio di programmazione (e.g.
linguaggio C) Ogni istruzione, per essere eseguita, deve essere allocata in
memoria centrale
La CPU attraverso il ciclo istruzione esegue ciascuna istruzione (architettura di
von Neumann)
Un calcolatore è una macchina a stati finiti:
- a partire da uno stato iniziale evolve nel tempo attraverso una
sequenza di azioni deterministiche provocate dall'esecuzione di
istruzioni di un programma
Parametri caratteristici di uno stato:
- registri generali, stack pointer, program counter, registro di stato
Processi e risorse
Processo
Programma in esecuzione
Un processo per poter evolvere ha però bisogno di componenti
HW e SW Es.: microprocessore, scheda video, hard disk, etc. etc.
Risorsa
Qualsiasi elemento hardware o software che viene usato da un processo e che
ne condiziona l'avanzamento
Es.: un programma deve effettuare una lettura da un codice a barre per poi
elaborarlo => la risorsa hardware che si occupa della lettura del codice prima o
poi lo deve leggere altrimenti il processo non avanza
Funzionalità
generali Prima
funzione Verso
l'utente:
- Attraverso un'apposita interfaccia, permette di utilizzare applicativi e dati
presenti nel calcolatore (e di creare nuovi dati)
- Permette la condivisione della stessa macchina a più utenti (isolando lo
spazio di lavoro, coordinando l'accesso a risorse condivise)
Verso i programmi:
- Attivazione, esecuzione, terminazione
- Attribuzione delle risorse del calcolatore (CPU, memoria, I/O, ecc.) ai
programmi
- Coordinamento rispetto all'uso condiviso delle risorse
Più processi possono richiedere le stesse risorse, in genere limitate
Tutti i processi in competizione devono comunque ottenere la risorsa
prima o poi I tempi di inattività della risorsa devono essere minimi
Minimizzazione dei tempi di attesa dei processi
● a quale tra i processi in competizione deve essere assegnata
Scheduling:
una certa risorsa
Le responsabilità dello scheduling sono:
- Tenere aggiornate le informazioni sullo stato di ciascuna risorsa
- Gestire i conflitti
- Assegnare una risorsa ad un processo
- Prendere il controllo di una risorsa
il sistema operativo ha il compito di:
Classificazione standard:
- Gestore dei processori
- Gestore della memoria centrale
- Gestore delle periferiche
•Input/Output
- Gestore delle informazioni
•File System
Struttura del Sistema Operativo
Data la sua complessità, un sistema operativo è suddiviso logicamente in strati
con un'architettura a «buccia di cipolla>>>
- Ogni strato ha la responsabilità di una parte delle risorse
- Si appoggia allo strato sottostante
- Comunica con lo strato sovrastante
Ciascun livello costituisce una che:
macchina virtuale
- Usa le del livello sottostante
funzionalità
- Fornisce al livello che lo segue nella gerarchia
servizi
- Gestisce delle mediante politiche invisibili ai livelli superiori
risorse
L’ARCHITETTURA DEL SISTEMA OPERATIVO KERNEL, GESTORE DEI PROCESSI,
GESTORE DELLA MEMORIA
Introduzione
II SO è organizzato a strati
Ciascun strato costituisce una macchina virtuale che gestisce una risorsa
del calcolatore Le principali funzionalità offerte sono:
- La gestione dei processi
- La gestione della memoria
- La gestione delle periferiche
- La gestione del file system
- La gestione della rete
- La gestione dell'interfaccia utente
Esistono diversi tipi di sistema operativo, ma in generale si possono dividere in:
Mono Tasking e Mono Utente:
- Esecuzione di un solo programma applicativo alla volta
- Viene utilizzato da un solo utente per volta
Multi Tasking e Mono Utente:
- Consente di eseguire contemporaneamente più programmi applicativi
Multi Tasking e Multi Utente:
- Consente l'utilizzo contemporaneo da parte di più utenti
- É
multiprogrammato II
Kernel
Il ("nocciolo" o "fulcro in inglese") è il componente centrale di ogni
kernel
sistema operativo. È il primo programma ad essere caricato in memoria
quando si accende un computer e l'ultimo ad essere chiuso in fase di
spegnimento.
Fa da ponte tra le componenti hardware di un computer e i programmi in
esecuzione sul computer stesso.
È possibile individuare 5 tipi di kernel:
- Monolitico
- Microkernel
- Kernel ibrido
- Nanokernel
- Exokernel contiene in un unico file tutte le funzioni primarie di un
Kernel monolitico:
sistema operativo e i driver delle varie periferiche collegate al computer.
implementa solamente alcune funzioni basilari, affidando le altre
Microkernel:
funzionalità a programmi terzi chiamati server
possono essere considerati come un'estensione dei microkernel:
Kernel ibridi:
l'approccio struttu