Sei sulla pagina 1di 21

Universit

Mirko Morati

March 7, 2017

Contents
1 Ingegneria del software 2
1.1 01/03/17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Grafica al calcolatore 5
2.1 02/03/07 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Storia . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Cos la computer graphics . . . . . . . . . . . . . . . 6
2.1.3 Applicazioni della CG . . . . . . . . . . . . . . . . . . 6
2.1.4 Definizioni . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.5 Applicazione grafica interattiva . . . . . . . . . . . . . 7
2.1.6 Grafica vettoriale vs raster . . . . . . . . . . . . . . . . 7
2.1.7 Colore . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Domande di verifica . . . . . . . . . . . . . . . . . . . . . . . 9

3 Sistemi operativi 10
3.1 03/03/17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.1 Sistemi Unix . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.2 Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4 Programmazione e sicurezza delle reti 19


4.1 07/03/17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.1 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.2 Esercizio 2 . . . . . . . . . . . . . . . . . . . . . . . . . 21

1
1 Ingegneria del software
1.1 01/03/17
Ingegneria del software: studio di metodologie e strumenti per supportare lo
sviluppo di software professionale. Un approccio artigianale non garantisce
la scalabilit del software. Una soluzione scalabile quando riesco ad usarla
per problemi di grandezza superiore a quelli iniziali.
I prodotti software possono essere:

generici: bisogna soddisfare la richiesta di pi clienti, poi sar lutente


a determinarne luso;

specifici/personalizzati: lutente chiede esplicitamente determinate


caratteristiche che dovranno essere presenti nel software

Attivit principali dellingegneria del software:

1. specifica del software (ingegneria dei requisiti)

considerazione dei requisiti richiesti e specifica delle caratteris-


tiche del software con eventuale realizzazione di prototipi

2. realizzazione del software

progettazione: progettare moduli, librerie, interazioni . . . Uso di


UML (Unified Modeling Language)
implementazione

3. validazione del software

validazione prima nel dettaglio, poi dei componenti e infine del


software completo

4. evoluzione del software

Nei software di vita medio-lunga (5-10 anni dopo lo sviluppo) la maggior


parte dei costi va nellevoluzione.
Sfide dellingegneria del software:

sicurezza

costi di produzione

eterogeneit (deve funzionare per pi piattaforme, versioni . . . )

2
tempi

Efficienza vs efficacia:

un software efficace se realizza le specifiche dellutente, soddisfa le


richieste implementative

un software efficiente quando usa il numero di risorse necessarie

Tipi di sistemi software:

sistemi standalone: non richiedono di essere collegati a una rete

applicazioni interattive basate su transizioni: si basano su uno scambio


di dati con un effetto o tutto o niente (esempio commercio elettronico)

sistemi embedded: sw dentro apparecchi con vincoli strutturali

applicazioni batch: elaborare dati in grossi gruppi

sistemi di intrattenimento

applicazioni di raccolta dati: esempio da sensori (ARPAV . . . )

sistemi di sistemi: esempio Amazon, sistemi semplici che si parlano e


creano sistemi complessi

Fondamenti di ingegneria del software:

importante avere una chiara metodologia o processo di sviluppo

metodologia: delineare le fasi dello sviluppo e avere gli strumenti


adatti
processo: esplicitare quello che dovr essere lo sviluppo

affidabilit e prestazioni

specifica e requisiti

devono essere compresi

riuso del software (necessita di un approccio diverso nello sviluppo)

3
1.2 FAQ
Che cos un software? Un software linsieme dei programmi informatici e
la documentazione relativa allo sviluppo.
Quali sono le caratteristiche di un buon prodotto software?

Manutenibilit: il prodotto deve poter essere gestito su una vita


medio-lunga. Essere in grado di gestire eventuali situazioni di errore,
il cambio delle specifiche e del software sottostante.

Affidabilit: il software deve fare quello che deve fare senza mettere
a rischio privacy, sicurezza . . .

Usabilit

4
2 Grafica al calcolatore
2.1 02/03/07
2.1.1 Storia
1960: William Fetter introduce il termine Computer Graphics per de-
scrivere la ricerca che stava svolgendo, in termini di modellazione 3D
al calcolatore

1961: Steve Russell al MIT crea il primo videogame: Spacewar

1963: Ivan Sutherland idea un sistema per disegnare a computer. Nasce


la computer grafica interattiva con la prima interfaccia.

1969: ACM forma A Special Interest Group in Graphics (SIGGRAPH)

1970: Nascono le moderne interfacce grafiche interattive (WIMP). La


grafica interattiva diventa parte integrante del sistema di interazione
uomo-macchina.

1972: Nasce il videogioco Pong (Atari)

Sempre negli anni 70 nascono gli algoritmi per creare immagini da


modelli 3D (rendering)

1972: Catmull (Universit dello Utah) crea la prima animazione di


grafica 3D.

Negli anni 60-70-80 vengono sviluppati gli algoritmi per creare linee
raster, riempire poligoni, proiettare oggetti 3D su telecamere virtuali

Negli anni 90 si creano le pipeline di rendering per creare velocemente


immagini sullo schermo a frame rate interattivi

Si creano standard e implementazioni di sistemi grafici

1992 Silicon Graphics crea lo standard OpenGL


1995 Microsoft rilascia Direct 3D

Le operazioni grafiche vengono implementate su hardware specifico

1985: Commodore Amiga uno dei primi home computer con una
GPU

1987: Primo PC IBM con operazioni 2D hardware

5
1995: Prime schede video per PC con pipeline grafica 3D (S3 Virge)

1999: Nvidia GeForce 256 la prima scheda con transform & lightning
engine

2.1.2 Cos la computer graphics


Tanta Roba Appunti

Creazione di video o immagini digitali

Tecniche di modellazione di oggetti 2D e 3D con anche comportamenti


fisici (modellazione di un sistema fisico)

Computer Aided Design (CAD)

Rendering di scene, ovvero creazione delle immagini simulando la


proiezione ottica della scena sulla camera

Animazione

Interfacce grafiche dei computer

Realt virtuale

Visualizzazione scientifica e dellinformazione

2.1.3 Applicazioni della CG


Modellazione 3D (prototipazione e stampa 3D, digital manufacturing
...)

Grafica non interattiva (cinema digitale, grafica pubblicitaria . . . )

Grafica interattiva (visualizzazione scientifica, visualizzazione dellinformazione,


realt virtuale o aumentata, interazione uomo-macchina, simulatori
...)

2.1.4 Definizioni
La disciplina che studia le tecniche e gli algoritmi per la rapp-
resentazione visuale di informazioni numeriche prodotte o sem-
plicemente elaborate dai computer R.Scateni

CG diversa da CV:

6
nella CG si passa da immagini a parametri, a interpretazione

nella CV si crea unimmagine da un input parametrico


Oggi si preferisce usare il termine Visual Computing

Visual Computing is a generic term for all computer science disci-


plines handling with images and 3D models, i.e. computer graph-
ics, image processing, visualization, computer vision, virtual and
augmented reality, video processing, but also includes aspects of
pattern recognition, human computer interaction, machine learn-
ing and digital libraries. The core challenges are the acquisition,
processing, analysis and rendering of visual information (mainly
images and video). Application areas include industrial quality
control, medical image processing and visualization, surveying,
robotics, multimedia systems, virtual heritage, special effects in
movies and television, and computer games. ndr

2.1.5 Applicazione grafica interattiva


Unapplicazione grafica interattiva realizzata con il seguente schema

al Calcolatore/images/ditaa1.png
Una caratteristica fondamentale delle applicazioni grafiche interattive
che per la parte di rendering si avvalgono di schede hardware dedicate che
implementano una pipeline di algoritmi (controllate attraverso librerie speci-
fiche).

2.1.6 Grafica vettoriale vs raster


Il display (output) in generale sar un display raster come un monitor, che
riproduce una matrice di punti su cui codificata una terna di valori di colore
RGB.
Possiamo rappresentare la grafica in due modi:
Vettoriale

7
Codifica limmagine mediante primitive di disegno (linee, curve,
aree)
Le immagini possono essere descritte mediante funzioni paramet-
riche e coordinate di punti
Vantaggi:
i dati sono espressi in una forma direttamente comprensibile
(e.g. lo standard SVG)
la codifica compatta rispetto allequivalente raster
posso scalare liberamente limmagine senza che si verifichi
una perdita di risoluzione
Limiti:
per la rappresentazione sulla maggior parte dei display oc-
corre rasterizzare limmagine

Raster

Le immagini sono rappresentate in matrici di pixel (bitmap)


La matrice viene caricata nel frame buffer prima di essere visu-
alizzata. nel frame buffer che il software costruisce limmagine
(leggendolo e scrivendolo).
I valori contenuti nella matrice rappresentano il colore (caratter-
istiche: risoluzione, profondit colore . . . )

La qualit della conversione di unimmagine da vettoriale a raster dipende


dalla risoluzione, nel caso in cui la risoluzione sia bassa abbiamo un effetto di
aliasing. Un metodo per ridurre leffetto sfumare la luminosit (antialias-
ing).
Laliasing si verifica perch limmagine un campionamento di un segnale
continuo, quindi avr sempre valori discreti da approssimare.

2.1.7 Colore
La rappresentazione del colore una terna di valori (RGB). Nei monitor si
generano i colori nei punti della griglia per sintesi additiva, nella stampa per
sintesi sottrattiva. Non tutti i colori possono essere generati in mescolanza
additiva o sottrattiva di tre colori primari (RGB e CMY(K) cercano di mas-
simizzare i colori rappresentabili). Luso di 3 componenti deriva dalla fisiolo-
gia della visione, che mostra che con 3 colori si possono approssimativamente

8
riprodurre i colori del mondo reale. I colori visibili per derivano da una vari-
azione continua di lunghezza donda delle radiazioni elettromagnetiche in un
intervallo 370-730nm.

360 380 400 420 440 460 480 500 520 540 560 580 600 620 640 660 680 700 720 740 760 780 800

1. Percezione del colore

2.2 Domande di verifica


Che cos la Computer Graphics?

Qual la relazione tra Computer Vision e Computer Graphics?

Quando sono apparse le prime schede grafiche per PC con accelerazione


3D?

Quando nata lanimazione grafica 3D?

9
3 Sistemi operativi
3.1 03/03/17
3.1.1 Sistemi Unix
Caratteristiche principali:

Sistema multitasking e multiutente

Ottima integrazione in rete (nasce sui sistemi Unix)

Ha uninterfaccia utente modificabile

un sistema modulare

File system generico (possono montarne diversi)

Vari strumenti di ausilio alla programmazione

1. Struttura Da fare img

3.1.2 Shell
1. Comandi base Inizio di una sessione:

Login:
Password:

Fine di una sessione: CTRL-d, exit, logout


Sintassi generale di un comando UNIX: Comando [-opzioni] args

I comandi troppo lunghi possono essere continuati sulla riga suc-


cessiva battendo \ come ultimo carattere della riga.
Posso eseguire pi comandi sulla stessa riga separandoli con ;

Informazioni sul sistema: ogni utente identificato dal suo login (UID)
ed appartiene ad uno o pi gruppi (GID).

whoami
who
w
id

10
groups
finger
uname
passwd
su
date

Help in linea: man comando, tutti i comandi di Unix sono documentati.


Organizzato in sezioni:

(a) Comands
(b) System Calls
(c) Library Function
(d) Administrative Files
(e) Miscellaneous Information
(f) Games
(g) I/O and Special Files
(h) Maintenance Commands

Oltre al man:

apropos chiave elenca le pagine del manuale contenente chiave


whatis comando indica le sezioni del manuale in cui si trova
comando

2. File System I path:

. la directory corrente
.. la directory padre di quella corrente
I file che iniziano con . sono nascosti
Path assoluto parte dalla radice (/dir/dir1/...)
Path relativo parte dalla cartella corrente (dir/dir1/...)

Tutti i file fisici sono byte stream. Ci sono 4 tipi di file logici:

Directory: contiene nomi ed indirizzi di altri file


Special File: entry point per un dispositivo di I/O

11
ogni device di I/O visto come un file
per questo i programmi non sanno se operano su file o device
di I/O, non c differenza
lettura/scrittura su Special File causano operazioni di I/O
sul relativo device
questo crea indipendenza dai dispositivi
Link: collegamento ad un altro file
Soft link: un file che contiene il nome di un altro file.
Hard link: un nome (in una directory) che punta ad un i-node
puntato anche da altri.
non si pu fare hard link di directory
non si pu fare hard link a file su altri file system
un file viene rimosso quando tutti i suoi hard link sono
stati rimossi
File ordinario: tutti gli altri file

ls [-opzioni] file ..., lista i file in una directory:

-a: visualizza anche i file che iniziano con il punto


-l: output in formato esteso
-g: include/sopprime lindicazione del proprietario
-r: ordine inverso (alfabetico o temporale)
-F: appende carattere per indicare i file particolari (/ per direc-
tories, * per eseguibili, @ per links)
-R: elenca ricorsivamente i file nelle sottodirectory

df [-k -h]: mostra loccupazione dei dischi

-k: mostra loccupazione in Kbyte


-h: mostra loccupazione in formato leggibile

du [-opzioni] directory ...: per vedere lo spazio in blocchi occu-


pato da una directory e tutte le sottodirectory

-a: mostra loccupazione di ciascun file


-s: mostra solo il totale complessivo
-h: mostra loccupazione in formato leggibile

12
3. Visualizzazione testo cat file1 file2 ...: concatena i file sullo std-
out
head [-n] file1 file2 ...: visualizza le prime n righe
tail [-+nrf] file1 file2 ...: visualizza le ultime (con + salta le
prime righe) 10 righe

-r: visualizza in ordine inverso


-f: continua a stampare il file anche se si aggiorna in real time
(utile per log)
-n: visualizza (salta) le ultime (prime) n righe

pg / more / less file1 file2 ...: visualizza un file per pagine.


possibile usare dei comandi interattivi:

space: prossima pagina


CR: prossima riga
b: pagina precedente
/pattern: prossima pagina con pattern
?pattern: pagina precedente con pattern
q: termina programma
v: edita file corrente

4. Manipolazione di file cp [-fir] src1 src2 ... dest: copia uno o


pi file
rm [-fir] file1 file2 ...: cancella i file elencati
mv [-fi] file1 file2 ... dest: sposta uno o pi file o cambia il
nome di un file

-f: non chiede mai conferma


-i: chiede conferma per ciascun file
-r: opera ricorsivamente nelle sottodirectory

5. Manipolazione di directory cd directory: cambia la directory in


quella indicata
pwd: mostra path directory corrente
mkdir directory: crea la directory specificata
rmdir dir1 dir2 ...: cancella una o pi directory (se sono vuote)

13
6. Permessi
chgrp [-R] gruppo file: cambia il gruppo del file
chown [-R] utente[:gruppo] file: cambia proprietario (e gruppo)
del file. Lopzione -R indica di propagare il comando alle sottodirectory
chmod [-R] protezione file:

Protezioni assolute: un numero di quattro cifre (il primo si pu


omettere). La sequenza supercresciente, la combinazione uni-
voca

user group other


421 421 421 421
sSt rwx rwx rwx

esempio: chmod 755 dir


Protezioni simboliche: una stringa di tre caratteri ugoa + - =
rwxst

Sticky bit (t):

non usato su file


per directory, solo il proprietario del file o root possono cancellare
o rinominare i file contenuti
uso: chmod -+t [files]

Setuid (s): diventare temporaneamente padrone del file


Setgid (S): diventare temporaneamente dello stesso gruppo del padrone
del file
umask maschera: definisce la maschera delle protezioni, da quel mo-
mento qualsiasi file creato ha i permessi definiti. Il comando umask
senza argomenti mostra i permessi che sono negati quando si crea un
file

7. Lavoro sui file find directory espressione: visita tutto lalbero


sotto la directory specificata e ritorna i file che rendono vera lespressione

-name pattern

14
-type tipo: b (block), c (char), d (directory), l (link), f (regular
file)
-user utente
-group gruppo
-newer file
-atime, mtime, ctime [+/-] giorni
-print
-size [+/-] blocchi

diff [-opzioni] [file1/dir1] [file2/dir2]: mostra le righe di-


verse indicando quelle da aggiungere (a), cancellare (d) e cambiare (c)

-b: ignora gli spazi a fine riga, collassa gli altri


-i: ignora la differenza tra maiuscolo e minuscolo
-w: ignora completamente la spaziatura

touch [-opzioni] [data] file ...: aggiorna data e ora dellultimo


accesso/modifica di un file

se data non specificata usa quella corrente


se il file non esiste lo crea vuoto
-a: modifica accesso
-m: ultima modifica

8. Processi Un processo un programma in esecuzione, una sequenza di


byte che la CPU interpreta come istruzioni (text e dati). Il processo
evolve attraverso un certo numero di stati.
Caratteristiche:

Organizzazione gerarchica
PID (assegnato dal sistema)
Priorit (assegnata dal sistema)

[Da inserire tikz]


ps: permette di analizzare lo stato di un processo.

A/-e: visualizza tutti i processi (tutti gli utenti)


x: visualizza anche i processi in background

15
u: visualizza info orientate allutente

Stati di un processo:

R: in esecuzione/eseguibile
T: stoppato
S: addormentato
Z: zombie
D: in attesa I/O non interrompibile

Processo Zombie: processo che ha terminato oppure stato ucciso, ma


non riesce a segnalare levento al padre.
Processo Daemon: processi che girano costantemente in background e
forniscono servizi al sistema. Sono disponibili in qualunque momento
per servire pi task o utenti

9. Gestione dei processi

I processi normalmente eseguono in foreground e hanno tre


canali standard connessi al terminale.
I processi attivati con & eseguono in background e sono privi di
stdin
Un processo in foreground pu essere sospeso con ^Z
I processi sospesi possono essere continuati sia in foreground che
in background
I processi in background possono essere riportati in foreground
Il comando at permette di lanciare e controllare processi batch

jobs [-l]: elenca i job in background o sospesi


bg [job-id]: esegue i job specificati in background
fg [job-id]: esegue i job indicati in foreground (ripristina da ^Z)
kill [-signal] process-id/%job-id: manda un segnale al pro-
cesso/job indicato (solitamente 1 HUP e 9 KILL)
kill -l: elenca tutti i segnali disponibili

10. La programmazione della Shell La shell lo strato pi esterno del SO,


offre due vie di comunicazione:

interattivo

16
shell script: un file di testo costituito da una sequenza di comandi

La shell non parte del kernel del SO ma un normale processo utente,


ci permette di poter modificare agevolmente linterfaccia verso il SO.
Caratteristiche:

Espansione/completamento dei nomi dei file


Ri-direzione dellI/O (stdin, stdout, stderr)
Pipeline dei comandi
Editing e history dei comandi
Aliasing
Gestione dei processi (foreground, background, sospensione e con-
tinuazione)
Linguaggio di comandi
Sostituzione delle variabili di shell

/etc/passwd contiene info relative al login, tra cui quale programma


viene automaticamente eseguito al login. Durante lesecuzione la shell
cerca nella directory corrente, nellordine, i seguenti file di configu-
razione:

.bash_profile
.bash_login
.profile

Se la shell non di tipo "login" viene eseguito il file .bashrc, se non


lo trova vengono usati quelli di sistema in /etc.
previsto anche un file .bash_logout che viene eseguito alla discon-
nessione.

(a) Funzionamento della shell Esempio who


[TODO tikz fork]
fork(): crea un nuovo processo figlio che esegue il medesimo
codice del padre
exec(): carica un nuovo codice nellambito del processo cor-
rente
exit(): termina il processo corrente

17
(b) Variabili La shell mantiene un insieme di variabili per la per-
sonalizzazione dellambiente, le assegnazioni vengono aggiunte
allinterno di .bash_profile.
Variabili di ambiente: variabili presenti nellambiente globale
della shell. Se le variabili sono locali, il figlio non le vede a meno
che non usi export.
PWD SHELL PATH HOME
HOST HOSTTYPE USER GROUP
MAIL MAILPATH OSTYPE MACHTYPE
EDITOR TERM LDLIBRARYPAT
Per accedere al valore di una variabile si usa loperatore $. I valori
delle variabili sono sempre stringhe, per valutazioni aritmetiche si
pu usare loperatore $(()) oppure il comando let.
(c) History

18
4 Programmazione e sicurezza delle reti
4.1 07/03/17
Una Protocol Data Unit (PDU) lunit dinformazione o pacchetto scambi-
ata tra due peer entities in un protocollo di comunicazione di unarchitettura
di rete a strati. formato da Protocol Control Information (PCI) e Service
Data Unit (SDU) che rappresentano, rispettivamente, lheader (se messo in
testa, o footer/trailer se messo in coda) e il payload.
man libpcap
Modalit promiscua: la scheda di rete riceve tutti i pacchetti Modalit
live: Wireshark deve essere in esecuzione come root
Wireshark interpreta i campi e li fa vedere in un formato human readable

4.1.1 Esercizi
***nnnn Esercizio 1

1. Che tipo di protocollo di livello datalink usato? Come fa Wireshark


a capirlo?

Viene usato il protocollo Ethernet II, linterfaccia che cattura il pacchetto


a dire da dove proviene (Encapsulation type: Ethernet (1)).

1. Disegnare la PDU di livello datalink indicando il valore dei vari campi.

Destination Source Type


Broadcast (ff:ff:ff:ff:ff:ff) TyanComp24 :dd:64 (00:e0:81:24:dd:64) IPv4 (0x0800)

1. Qual il MAC sorgente? DI che tipo (unicast o broadcast)?

Il MAC sorgente 00:e0:81:24:dd:64 ed di tipo unicast.

1. Qual il MAC destinazione? DI che tipo (unicast o broadcast)?

Il MAC destinazione ff:ff:ff:ff:ff:ff ed di tipo broadcast.

1. Che tipo di protocollo di livello network usato? Come fa Wireshark


a capirlo?

usato il protocollo IPv4, nellheader del livello 2 definito il tipo di pro-


tocollo usato (ethertype), IPv4 0x0800.

19
1. Qual la lunghezza dellheader IP?

20 bytes.

1. Quali sono gli indirizzi IP sorgente e destinazione?

Src: 157.27.252.223, Dst: 157.27.252.255

1. Che tipo di protocollo di livello di trasporto contenuto in IP? Come


fa Wireshark a capirlo?

In IP (protocollo di livello 3) definito il protocollo di livello di trasporto


utilizzato, in questo caso UDP (Protocol: UDP (17)).

1. Quali sono le porte sorgente e destinazione a livello trasporto?

Src Port: 631, Dst Port: 631

1. Creare un filtro per visualizzare solo i pacchetti che hanno ARP come
protocollo. (Basta scrivere ARP come filtro)

2. Dopo aver applicato il filtro precedente qual la percentuale di pacchetti


che rimangono visualizzati rispetto al totale?

63.6% (173/272)

1. Creare un filtro per visualizzare solo i pacchetti che hanno sorgente


MAC 00:22:19:c7:2b:ee.

eth.src == 00:22:19:c7:2b:ee

1. Dopo aver applicato il filtro precedente qual la percentuale di pacchetti


che rimangono visualizzati rispetto al totale?

5.1% (14/272)

1. Creare un filtro per visualizzare solo i pacchetti che hanno destinazione


MAC boradcast.

eth.dst == ff:ff:ff:ff:ff:ff

1. Dopo aver applicato il filtro precedene qual la percentuale di pacchetti


che rimangono visualizzati rispetto al totale?

83.8% (228/272)

20
4.1.2 Esercizio 2
prova

1. Colorare di rosso tutti i pacchetti che contengono UDP e di verde tutti


i pacchetti che contengono TCP.

2. Cosa contengono i primi due pacchetti della sessione di cattura?

Pacchetto 1 Pacchetto 2
Src 157.27.252.202 157.27.10.10
Dst 157.27.10.10 157.27.252.202
Protocollo di trasporto UDP UDP
Protocollo di applicazione DNS (UDP usa porta dst 53) DNS (src port UDP 53)
Payload livello applicazione www.polito.it: type A, class IN

21