• Non ci sono risultati.

Sistemioperativiedinformatica(A. Andreazza)Scuola di Specializzazione in Fisica Medica

N/A
N/A
Protected

Academic year: 2021

Condividi "Sistemioperativiedinformatica(A. Andreazza)Scuola di Specializzazione in Fisica Medica"

Copied!
117
0
0

Testo completo

(1)

Sistemi operativi ed informatica

(A. Andreazza)

Scuola di Specializzazione in Fisica Medica

(2)

“Sistemi operativi ed informatica”?

• Non sarà un vero e proprio corso,

ma piuttosto un insieme di informazioni e stimoli (spero) utili.

• I temi sono stati scelti in base alla mia esperienza personale (ed ignoranza):

– Scripting in bash

– Il funzionamento di internet (modello a strati)

– Regole basi di sicurezza (password e certificati)

• Feedback per le prossime edizioni:

– Attività concrete che secondo voi sarebbe utile trattare – Equilibrio lezioni teoriche/laboratorio

(3)

A. Andreazza – Sistemi operativi ed informatica

Piano del corso

• Giovedì 2 maggio

– Connessione ai PC del laboratorio – Introduzione a Linux/bash

– Informazioni sulle reti

– Dissertazioni sulla sicurezza

• Lunedì 6 maggio

– Introduzione a Matlab o bash scripting

• Mercoledì 8 e Lunedì 13 maggio

– Tecniche di Calcolo (prof. Stefano Ferrari)

3

PC del laboratorio (o su vs. laptop)

(4)

Lezione 1: Introduzione alla bash

La shell

Programmazione in bash

Referenze:

Gareth Anderson, GNU/Linux Command-Line Tools Summary http://tldp.org/guides.html

Machtelt Garrels, Bash Guide for Beginners http://tldp.org/guides.html

Mendel Cooper, Advanced Bash-Scripting Guide http://tldp.org/guides.html

(5)

A. Andreazza – Sistemi operativi ed informatica

Un salto nella preistoria

• Siamo abituati ad interagire con un calcolatore tramite una Graphical User Interface (GUI).

– Semplifica le operazioni – Protegge dagli errori

più comuni

– Non è sempre stato così – Non sempre è il modo più

efficiente

• Oggi interagiremo con il calcolatore attraverso un terminale, usando la linea di comando.

5

Un editor non interattivo!

Ricerca di espressioni

Linguaggio per

manipolazione di testi

(6)

Un salto nella preistoria

GUI

Olduvai stone chopping tool Neil MacGregor,

A History of the World in 100 objects

http://www.britishmuseum.org/explore/a_history_of_

the_world.aspx

(7)

A. Andreazza – Sistemi operativi ed informatica

Connessione ai PC del laboratorio

• Account di ateneo:

– Username: nome.cognome (senza @unimi.it))

– Password: quella del vostro account e-mail di ateneo

• Per chi ha già frequentato questo laboratorio:

– esiste ancora il vostro account @studenti.unimi.it – fateci sapere se avete problemi di accesso

• Queste slides su:

http://www2.fisica.unimi.it/andreazz – Per aprire un browser web:

selezionare Applications⇒Internet⇒Firefox Web Broswer – Per aprire il Nautilus explorer:

cliccare sull’icona Home

– Per aprire una finestra terminale:

selezionare Applications⇒System Tools⇒Terminal

7

(8)

Benvenuti in Linux!

• Linux è un sistema operativo della famiglia UNIX.

• Le componenti principali sono:

– Kernel: gestisce le risorse del calcolatore

– Librerie di sistema: software che realizza le funzionalità di uso generale (shared libraries, equivalenti alle DLL di Windows)

– Tool di base (generalmente operanti da linea di comando) – Shell: l’interprete delle istruzioni date sulla linea di comando.

• In pratica l’interfaccia tra utente e calcolatore

• Linux in senso stretto è il Kernel del sistema operativo

• I tool di base sono forniti dal progetto GNU (www.gnu.org)

– Sarebbe più corretto parlare di GNU/Linux

• Interfaccia grafica X Windows: www.x.org

• Distribuzioni: insieme coerente di sistema operativo ed applicativi.

• Software open source, distribuito secondo la licenza GPL:

http://www.gnu.org/licenses/gpl.html

(9)

A. Andreazza – Sistemi operativi ed informatica

La shell

• La shell o interprete dei comandi è un programma che serve ad impartire comandi al sistema operativo.

• Ci sono numerose scelte: sh, bash, ksh, zsh, csh, tcsh…

– bash è diventata il default di Linux, di Mac OS X e di Cygwin (Windows)

– anche Windows ha una sua shell (Windows PowerShell), ma qui (e nel resto del corso) preferiamo enfatizzare la portabilità.

• I comandi sono righe di testo inserite al prompt, che vengono interpretate ed eseguite quando si preme il tasto di invio.

• L’immissione di un comando interpretabile fa partire un sotto-processo in cui quel comando viene eseguito.

• Numerose funzionalità:

– utilizzo di variabili, wild-character, espressioni

– auto-completion (tasto TAB ) per i nomi di comandi, file, variabili – ridirezione di input e output

– gestione dei processi e del flusso di esecuzione – history dei comandi (usando il cursore)

9

(10)

Chi siamo?

• Unix è un sistema operativo multi-utente.

• Ciascun utente ha un nome testuale (username) ed un numero (UID), che viene utilizzato internamente al sistema operativo.

• Utenti possono appartenere a uno o più gruppi

• Gli utenti accedono alle risorse del sistema in base ai loro privilegi:

• Esiste un super-user (username=root), preposto all’amministrazione e alla supervisione del sistema.

Sul terminale

• whoami mostra il nome dell’utente

• who quali utenti sono connessi sulla macchina

• groups a quali gruppi apparteniamo

• echo $SHELL che shell stiamo usando

(11)

A. Andreazza – Sistemi operativi ed informatica

Dove siamo?

• Il sistema operativo è organizzato in file raccolti in directory.

– Il concetto di file è generico: sono visti come file dal sistema operativo non solo i dati su disco ma anche tutti i dispositivi hardware (tastiera, interfacce di rete...) ed i

processi stessi.

– Una directory può avere sotto-directory, e tutte partono dalla directory root: / – Il carattere ‘/’ serve per separare i nomi delle sotto-directory in un path che

definisce la posizione di un file.

• Ogni utente ha a disposizione una propria home directory sulla quale mette i suoi file

– Noi useremo in aggiunta una directory /home/comune per il materiale condiviso

11

Sul terminale

• pwd mostra in quale directory ci troviamo

• uname -a informazioni sul kernel e sulla macchina

• df elenco dei file system disponibili

(12)

File system

• È il componente che gestisce i dati sui dispositivi di archiviazione

• Diversi tipi di filesystem

– Disco: ext2, ext3, reiserfs, xfs, vfat, ntfs, iso, udf,…

– Virtuali: proc, sys, dev, tmpfs – Di rete: nfs, coda, smb/cifs

• Provate a inserire una chiavetta USB e vedere dove compare.

– fare umount path_della_chiavetta prima di estrarla!

nomi dei file corrispondenti al disco fisico

path da cui accedere al contenuto del file system

dischi montati via rete (tutte le home directory)

(13)

A. Andreazza – Sistemi operativi ed informatica

Guardiamoci attorno

13

Sul terminale

• ls path mostra il contenuto di una directory (quella corrente se non si fornice il path)

• ls -a path mostra anche i file nascosti (che iniziano con ‘.’)

• ls -l path mostra informazioni dettagliate sui file

• ls -al path fa entrambe le cose di cui sopra

owner group dimensione [B] Due directory speciali:

. = questa directory .. = la directory superiore Altre directory importanti:

~ = home directory / = root directory d= directory

Privilegi dell’owner:

r = lettura w = scrittura x = esecuzione

Privilegi dei membri del gruppo Privilegi di tutti

(14)

AIUTO!!!

• Nel sistema operativo (e nella distribuzione) ci sono moltissimi comandi:

– C’è un comando per fare quasi tutto

– Anche i comandi più semplici hanno spesso opzioni molto utili – Le opzioni normalmente si forniscono con:

-lettera oppure --parola

• Quasi tutti i comandi forniscono un sommario con l’opzione –h o –-help

• Per avere informazioni più dettagliate:

– man comando o info comando

– man –k parola_chiave cerca comandi relativi alla parola chiave.

Sul terminale

• ls –h non funziona! la risposta al prossimo comando

• ls --help sommario del comando

• man ls descrizione dettagliata del comando

• info ls descrizione dettagliata del comando

• man –k directory tutti i comandi che riguardano le directory

...e ricerca in rete!

(15)

A. Andreazza – Sistemi operativi ed informatica

File e directory

• mkdir path : crea una nuova directory

• cd path : ci si sposta nella directory indicata

(cd .. si sale al livello superiore, cd da solo o cd ~ si torna nella home)

• cp sorgente destinazione : copia il file sorgente nella destinazione (può essere un altro file o una directory)

• mv sorgente destinazione : sposta (rinomina) il file sorgente in destinazione. Se la destinazione è una directory, possiamo fornire anche più di un file sorgente.

• cat nomefile o less nomefile : stampa il contenuto di un file

(il secondo permette di muoversi all’interno del file con il cursore, q per uscire)

• rm nomefile : cancella il file

• rm –r nomedirectory : cancella una directory

15

(16)

File e directory

Esercizio:

1) creare una sottodirectory SSFM nella vostra home 2) fare un cd in /home/comune/SSFM/datafiles

(cercare di usare il TAB per completare il nome)

3) scegliere un file .txt e provare a cambiargli nome 4) copiarlo nella directory creata precedentemente

5) spostarsi in quella directory e provare nuovamente a rinominarlo 6) vederne il contenuto con cat e con less

7) fare pulizia: cancellare il file e la directory

8) copiare tutta la directory /home/comune/SSFM/datafiles nella propria home

Per chi vuole usare il proprio PC

potete scaricare i file da:

http://www2.fisica.unimi.it/andreazz/SSFM_datafiles.zip

chiaramente i passi 2), 4), 5), 7) e 8) non sono più necessari/utili

(17)

A. Andreazza – Sistemi operativi ed informatica

Wild character, ridirezione e piping

• Nello scrivere il nome di un file possiamo usare dei caratteri generici:

* rappresenta un qualunque numero (anche 0) di caratteri ? rappresenta esattamente un carattere

– [afg] rappresenta esattamente un carattere che può essere a o f o g – [a-g] rappresenta esattamente un carattere compreso tra a e g

• Nell’eseguire un comando la shell sostituirà il nome contenente i caratteri generici con la lista dei file che soddisfano la descrizione fornita.

• Normalmente un comando riceve dati dallo standard input e scrive i risultati sullo standard output

• Normalmente standard input ed output sono il terminale

– comando < nomefile : utilizza il file come standard input invece del terminale – comando > nomefile : utilizza il file come standard output invece del terminale

– comando | comando : utilizza lo standard output di un comando come standard input del comando successivo

• Sono istruzioni molto potenti perché permettono di salvare il risultato di un comando in un file, o di concatenare due comandi (piping).

17

(18)

Wild character, ridirezione e piping

• wc nomefile : stampa il numero di caratteri, parole e righe nel file

– o nello standard input se il nomefile non è fornito (utile per il piping) – se lo standard input è dato da terminale, per terminare dare Ctrl-D

Esercizio:

considerare i file copiati da datafiles

fare un file con la lista dei file con il cognome Moretti

(usare ls con ridirezione dell’output)

verificarne il contenuto con cat e con less

contare il numero dei file, usando wc:

passando il file come argomento

ridirigendo lo standard input di wc

contare il numero dei file corrispondenti ad esami nel 2011 facendo una pipe da ls a wc

contare il numero dei file corrispondenti ad esami fatti nel mese di luglio

Dividere i file in due directory, una con i file prima del 2003 ed una con quelli successivi.

(19)

A. Andreazza – Sistemi operativi ed informatica

Espressioni regolari

• Espressioni regolari definiscono come sono fatte delle stringhe.

• Possono poi venire usate per verificare se delle stringhe di prova soddisfano o meno tali criteri.

– Caratteri:

^ rappresenta l’inizio della stringa $ rappresenta la fine della stringa . rappresenta un carattere generico

– [afg] rappresenta esattamente un carattere che può essere a o f o g – [a-g] rappresenta esattamente un carattere compreso tra a e g

– caratteri speciali vanno fatti precedere dal carattere di escape \

– Molteplicità:

* rappresenta un qualunque numero (anche 0) del carattere che lo precede

• grep espressione nomi_di_file : stampa le righe dei file che contengono l’espressione

– spesso conviene delimitare l’espressione con singoli o doppi apici

– l’opzione –c stampa solo il numero di righe che contengono l’espressione – l’opzione –l stampa solo il nome dei file che contengono l’espressione

19

(20)

Espressioni regolari

Esercizio:

considerare i file copiati da datafiles

stampare i nomi delle persone di cognome Rossi

stampare i file delle persone il cui nome finisce per due vocali

fare una lista dei file corrispondenti al sig. Stefano Bianchi

(21)

A. Andreazza – Sistemi operativi ed informatica

Variabili

• La shell permette di definire due tipi di variabili:

– locali: nomevariabile=valore

– di ambiente: export nomevariabile=valore – le variabili ambiente sono passate ai sottoprocessi – env elenca le variabili d’ambiente ed i loro valori

• Per accedere al loro valore si utilizza il prefisso $

– Spesso conviene mettere il nome tra parentesi

• Le variabili vengono trattate come stringhe di caratteri

– Per effettuare operazioni aritmetiche, l’operazione deve venire inclusa tra (( ... ))

• Confrontare il risultato delle seguenti serie di istruzioni:

• Suggerimento: si possono mettere più istruzioni su una stessa riga, separate da ;

21

a=1 b=2 c=a+b echo $c

a=1 b=2

c=$a+$b echo $c

a=1 b=2

((c=a+b)) echo $c

a=1 b=2

((c=$a+$b)) echo $c

(22)

Shell scripting

• La bash è anche un linguaggio di programmazione:

– si possono inserire delle sequenze di istruzioni in un file (script) – eseguire il file

• Permette di automatizzare delle operazioni ripetitive.

• In generale, gli scripting language sono linguaggi di programmazione in cui delle istruzioni vengono passare ad un interprete al momento dell’esecuzione.

– diversamente dai linguaggi compilati dove l’interpretazione viene fatta prima dell’esecuzione e risulta nella costruzione di un file eseguibile.

– sviluppo più rapido (non necessita di compilazione) – sintassi molto più accomodante

– spesso hanno una migliore manipolazione delle stringhe – sono meno efficienti (interpretazione ad ogni esecuzione)

(23)

A. Andreazza – Sistemi operativi ed informatica

Il nostro primo script

• Ripetiamo l’ultimo esercizio usando uno script

• gedit listfiles.sh & : apre l’editor per il nostro script in background

• chmod u+x listfiles.sh : diamo al file il privilegio di esecuzione

• ./listfiles.sh Stefano Bianchi : eseguiamo lo script

23

sha-bang: il path dell’interprete

argomenti: all’interno dello script sono predefinte le variabili 1, 2, 3... corrispondenti al primo, secondo, terzo argomento della riga di comando

(24)

Controllo del flusso

• Per essere utile, un linguaggio di programmazione deve permettere di controllare il flusso di un programma:

– eseguire cicli:

for variabile in lista_di_valori do

...

done

– controllare il verificarsi di determinate condizioni:

if [[ condizione ]]

then ...

fi

• Queste sono solo quelle che servono per fare degli esercizi:

– tutte le strutture di controllo sono nelle pagine indicate in bibliografia – in particolare si possono fare:

• cicli su variabili numeriche

• cicli while

• condizioni alternative (else, elif)

(25)

A. Andreazza – Sistemi operativi ed informatica

Ciclo for ... in

• Nel ciclo for:

– for variabile in lista_di_valori do

...

done

• la lista_di_valori può venire data esplicitamente, o risultare da una sostituzione operata dalla shell:

– wild character

– sostituzione con l’output di un comando (usando gli accenti): `comando`

25

(26)

creadirectory.sh

(copia i file in una directory individuale)

Lista dei file relativi ad una persona messi in un file temporaneo

Lista dei valori della

variabile filename creata dall’output di cat

Rimuovo il file temporaneo

Esercizio:

scrivere lo script invocando lo script dell’esempio precedente

(27)

A. Andreazza – Sistemi operativi ed informatica

Test di condizioni

• La condizioni tra parentesi [[...]] dell’if può essere:

– un comando: vera se il comando viene eseguito con successo – un test, tipicamente su di un file o directory, ad esempio:

• -d directory vero se la directory esiste

• -f file vero se il file esiste

• -r file vero se il file esiste ed è leggibile

• -w file vero se il file esiste ed è scrivibile

• -x file vero se il file esiste ed è eseguibile

• Si possono usare gli operatori logici ! (not) && (and) || (or) tra i test

• Si possono usare confronti aritmetici, ma bisogna usare ((...)) invece di [[...]]

27

(28)

creadirectorysafe.sh

(con controllo di esistenza della directory)

(29)

A. Andreazza – Sistemi operativi ed informatica

Manipolazione di stringhe e file

• La bash ha delle funzioni molto potenti per manipolare le stringhe.

• Questo, oltre alla stretta interazione con il sistema operativo, la rende utile per effettuare operazioni sui file.

– un’operazione su stringhe è racchiusa tra ${...}

– ${#string} restituisce la lunghezza di $string

– ${string:position} restituisce una sottostringa di $string a partire da $position – ${string:position:length} restituisce una sottostringa di $string lunga $length a

partire da $position

– ${string#pattern} cancella il primo match di $pattern all’inizio di $string

– ${string##pattern} cancella il più lungo match di $pattern all’inizio di $string – ${string%pattern} cancella il primo match di $pattern alla fine di $string

– ${string%%pattern} cancella il più lungo match di $pattern alla fine di $string

• sed “comando” nomefile : lo stream editor della GNU, produce in output il file modificato dal comando:

– Ad esempio un comando per sostituire Prova con Test è “s|Prova|Test|”

29

(30)

Manipolazione di stringhe e file

Esempio:

• modificare la data da giorno/mese/anno in anno/mese/giorno.

• Lo script cambiadata.sh prende come argomento il nome di un file e restituisce nello standard output il file con la data modificata.

Esercizio:

scrivere uno script che, utilizzando cambiadata.sh e la ridirezione dell’output crei una cartella newfiles, e metta in questa tutti i file in datafiles dopo il

cambiamento del formato della data.

Esempio con Bianchi_20020826.txt data⇐“Data⇥26/08/2002”

vecchiadata⇐“26/08/2002”

anno⇐“2002”

giorno⇐“26”

data⇐“26/08”

mese⇐“08”

(31)

A. Andreazza – Sistemi operativi ed informatica

L’esercizione

31

Esercizio:

considerare i file copiati da datafiles

per ogni persona che abbia fatto almeno un esame, creare una cartella con il suo nome e cognome e copiare in questa cartella i file che le corrispondono.

L’esercizio quindi richiede:

ciclare su tutti i file

per ogni file estrarre il nome della persona

controllare se la directory corrispondente esiste

se non esiste, crearla

copiare il file nella directory

Altri esercizi:

cambiare in tutti i file il suffisso .txt in .dat

modificare il nome del file in modo che compaia prima la data e dopo il cognome.

(32)

Windows Subsystem for Linux

• Versioni di diverse distribuzioni linux integrate in Windows

– Ubuntu, Debian, Suse, Fedora…

• Disponibile a partire da:

– Windows 10 Anniversary Update build 14393 (solo versione a 64-bit)

Istruzioni e tutorial: https://msdn.microsoft.com/commandline/wsl/about

Per interfaccia grafica necessita di un X server come VcXsrv https://sourceforge.net/projects/vcxsrv/

(33)

Lezione 2: Reti

Cos’é la rete

Architettura di internet:

Applicazione e Trasporto

Network: Internet Protocol

Data link e livello fisico

Referenze:

1. Lezioni del prof. Campanella (a.a. 2013/14)

(34)

Cos’è internet

• La rete principale per il trasporto dell’informazione

1. Tante reti fisiche di trasmissione dati (domini), come una rete autostradale fra paesi diversi gestita in modo cooperativo.

2. I calcolatori ad essa collegati ed i protocolli di comunicazione.

3. Le applicazioni ed i programmi (e-mail, web, broadcasting…).

4. …e soprattutto il contenuto disponibile

(35)

A. Andreazza – Sistemi operativi ed informatica

Cos’è internet

• La rete principale per il trasporto dell’informazione

1. Tante reti fisiche di trasmissione dati (domini), come una rete autostradale fra paesi diversi gestita in modo cooperativo.

2. I calcolatori ad essa collegati ed i protocolli di comunicazione.

3. Le applicazioni ed i programmi (e-mail, web, broadcasting…).

4. …e soprattutto il contenuto disponibile

35

https://www.internetworldstats.com

(36)

Cos’è internet

• La rete principale per il trasporto dell’informazione

1. Tante reti fisiche di trasmissione dati (domini), come una rete autostradale fra paesi diversi gestita in modo cooperativo.

2. I calcolatori ad essa collegati ed i protocolli di comunicazione.

3. Le applicazioni ed i programmi (e-mail, web, broadcasting…).

4. …e soprattutto il contenuto disponibile

(37)

A. Andreazza – Sistemi operativi ed informatica

SCUOLA DI SPECIALIZZAZIONE IN FISICA MEDICA

https://www2.telegeography.com/global-internet-map37

(38)

In Italia: GARR,

la rete dell’Università e della Ricerca

GARR-X è l’attuale infrastruttura di rete a banda ultralarga dell’istruzione e della ricerca.

Entrata in funzione nel 2012, conta oggi più di 8.850 km di fibra ottica di dorsale e altri 6.400 km di accesso e vanta una banda aggregata di oltre 1900Gbps.

I link di dorsale hanno una capacità minima di 10Gbps e possono arrivare fino ai 200Gbps per le tratte a maggior traffico, mentre la capacità minima dei collegamenti di accesso è di 100Mbps simmetrici, che possono arrivare fino a multipli di 10Gbps nel caso di sedi caratterizzate da requisiti particolarmente elevati.

La rete dispone di circa 100 punti di presenza (PoP) distribuiti sul territorio nazionale ed è integrata con varie reti regionali e metropolitane.

https://www.garr.it

(39)

A. Andreazza – Sistemi operativi ed informatica

39

Il primo sito web:

http://info.cern.ch/hypertext/WWW/TheProject.html

(40)

Il costo della rete

• Spazio di archiviazione: 1 TB ~100 € 10-10 €/B

• Abbonamento ADSL: 20 €/mese 2×10-5 €/s velocità 8 Mb/s 106 B/s

• Wikipedia: 2807 volumi × 8’000’000 caratteri (1600000 parole)

= 22×109 B

– archiviazione: 2.2 €

– download: 21000 s 0.44 €

By VGrigas (WMF) - Own work, CC BY-SA 3.0,

https://commons.wikimedia.org/w/index.php?curid=41054498

(41)

A. Andreazza – Sistemi operativi ed informatica

Architettura a strati

Applicazione Trasporto

Rete Data Link

Fisico

• Posta elettronica, trasferimento file, browser web...

• Protocollo per il trasferimento dei dati, ad esempio TCP, UDP

• Internet Protocol (IP): si occupa della consegna dei pacchetti di dati

• Diverse tecnologie per il trasferimento dei dati

41

softwarehardware

(42)

Architettura a strati

Applicazione Trasporto

Rete Data Link

Fisico

• Ogni strato:

– svolge una funzione specifica tramite servizi, forniti attraverso protocolli

– comunica solo con gli strati adiacenti tramite opportune interfacce

• Riduzione della complessità, permettendo di identificare le funzioni e le relazioni tra di esse

• Modularità del sistema, separando le parti e rendendo il sistema indipendenta dalla realizzazione di esse.

• È la chiave della scalabilità ed evoluzione dell’architettura di internet.

softwarehardware

(43)

A. Andreazza – Sistemi operativi ed informatica

Un esempio di struttura a strati

Ufficio Vendite Magazzino Spedizioniere

Strada

43

Ufficio Acquisti Magazzino Spedizioniere

Strada

ordine

pacco

camion camion

ricevimento

pacco

Protocolli

corrispondenza

documenti di trasporto

codice della strada tracciamento spedizione

(44)

Strati e dati: incapsulamento

Trasmittente Applicazione

Trasporto Rete Data Link

Fisico

• Messaggio

• Segmento

• Datagramma

• Frame

Ricevente Applicazione

Trasporto Rete Data Link

Fisico

M M Ht

M Ht Hr

M Ht Hr

Hl

M M Ht

M Ht Hr

M Ht Hr

Hl

sequenza di bit

(45)

A. Andreazza – Sistemi operativi ed informatica

Strati e dati: incapsulamento

45

message segment datagram frame

source

application transport

network link physical

Ht Hn

Hl M Ht Hn M

Ht M M

destination application

transport network

link physical

Ht Hn

Hl M Ht Hn M

Ht M M

network link physical

link physical

Ht Hn

Hl M Ht Hn M

Ht Hn

Hl M Ht Hn M Ht

Hn

Hl M Hl Hn Ht M

router switch

Riassunto (4)

Incapsulamento

(46)

Strati e dati: dimensioni

Trasmittente Applicazione

Trasporto Rete Data Link

Fisico

• Messaggio:

virtualmente infinito, limitato dal più grande indirizzo del sistema operativo

• Segmento

illimitato, in pratica MSS < 65535 e normalmente ≈1500 byte

• Datagramma

< 65535, scelto in funzione del valore massimo del data link

• Frame

Ogni data link ha una MTU (Maximum Transmission Unit) diversa < 65535

M M Ht

M Ht Hr

M Ht Hr

Hl

(47)

SOCKET, TCP, UDP

(48)

Socket

Applicazione Trasporto

Rete Data Link

Fisico

• Una “porta”

– controllata da un descrittore di file

– creata dall’applicazione

– controllata dal sistema operativo

– attraverso cui un processo può ricevere e/o inviare messaggi ad un altro processo

• Interfaccia tra i livelli di applicazione e trasporto

– specifica il servizio di trasporto da usare – TCP: Transmission Control Protocol

– UDP: User Datagram Protocol

sistema operativo

socket

applicazio- ne utente

In Unix tutte le operazione di I/O avvengono su “file”

(49)

A. Andreazza – Sistemi operativi ed informatica

Trasporto e Rete

• Il servizio di trasporto fornisce la comunicazione logica (orizzontale) fra applicazioni nei due nodi.

• Trasporto e Rete svolgono funzioni simili ma:

– Il servizio di Rete viene suddiviso tra vari nodi che compongono la rete stessa

– Il servizio di trasporto opera solo nei nodi iniziali e finali del trasferimento, indipendentemente dalle prestazioni dello stato di rete

• l’esistenza dello strato di trasporto rende possibile

– fornire un servizio globale di trasporto più affidabile e sicuro di quello che offrirebbe da sola la rete

• Per esempio nella rete esistono errori fisici nei pacchetti, duplicazioni, perdite ...

– rende l’applicazione indipendente dalla tecnologia di rete.

49

(50)

UDP – User Datagram Protocol

• Definisce un trasporto semplice in cui ogni operazione di invio da parte dell  ’applicazione produce esattamente un datagramma.

– senza connessione (nessun ritardo nella spedizione) – semplice: nessuno stato nel mittente e nel ricevente – header minimo

– nessun controllo di congestione o flusso: i pacchetti possono essere inviati costantemente alla massima velocità

• Non garantisce la consegna e quindi neanche altri

parametri di qualità.

(51)

A. Andreazza – Sistemi operativi ed informatica

TCP – Transmission Control Protocol

• Il principale protocollo di trasporto dei dati in Internet

– fornisce un servizio affidabile

– orientato alla connessione punto–punto fra mittente e destinatario (end-to-end)

– trasporta uno stream di byte (non riconosce o inserisce

delimitazioni nel flusso di dati passato dall’  applicazione) diviso in segmenti.

– in grado di riordinare i dati nei segmenti ricevuti – in grado di eliminare i duplicati

• Flusso dati sempre bidirezionale

51

(52)

TCP: apertura connessione

client! server! stato

LISTEN

ESTABLISHED SYN_RCVD

SYN 2347:2347 (0) ACK 14156

stato

CLOSED

SYN_SENT

SYN 14155:14155 (0)

ACK 2348 (0)

ESTABLISHED

• SYNchronize + numero casuale di inizio sequenza A

• ACKnowledge: restituisce A+1

(53)

A. Andreazza – Sistemi operativi ed informatica

Porte TCP importanti

Service Port Service Port

FTP 20,21 NNTP 119

SSH 22 NTP 123

telnet 23 IMAP4 143

SMTP 25 LDAP 389

DNS 53 HTTPS 443

DHCP 67,68 IMAPS 993

TFTP 69 RADIUS 1812

HTTP 80 AIM 5190

POP3 110

53

(54)

INTERNET PROTOCOL

(55)

A. Andreazza – Sistemi operativi ed informatica

Lo strato di rete e il modello di internet

• Scopo dello strato di rete è di trasportare i pacchetti dalla sorgente alla destinazione utilizzando uno schema di indirizzamento

• La funzione principale è di individuare un percorso, possibilmente ottimizzando alcuni parametri:

– protocolli (e algoritmi) di routing

• Il modello di Internet:

– nessuna chiamata all’inizio della connessione

– i router smistano i pacchetti usando l’indirizzo di destinazione:

– nessun stato per connessione (flusso) ovvero la gestione è pacchetto per pacchetto, senza memoria:

• pacchetti fra la stessa sorgente e destinazione possono percorrere percorsi diversi

• il percorso inverso può seguire un cammino differente

– Modello cooperativo basato sul best effort dei nodi:

• Il servizio non viene mai rifiutato

• degradazione ridotta per la perdita di un nodo (compensato dagli altri)

55

(56)

IP – Internet Protocol

• IP è progettato per:

– l’uso in reti a commutazione di pacchetto

– tramettere datagrammi da una sorgente ad una destinazione identificata da indirizzi di lunghezza fissata

– permettere la frammentazione di datagrammi lunghi, se necessario

• IP è specificamente limitato nello scopo:

– fornisce le funzioni necessarie a consegnare un datagramma dalla sorgente alla destinazione attraverso un sistema interconnesso di reti

– non possiede meccanismi per aumentare l’affidabilità end to end quali il controllo di flusso, consegna in sequenza od altri servizi esistenti in

protocolli host-to-host.

– ...alcune di queste funzioni nello strato di trasporto

(57)

A. Andreazza – Sistemi operativi ed informatica

Digressione: un po’ di aritmetica

Prima di parlare degli indirizzi IP, ricordiamo come rappresentiamo i numeri:

2015 = 2×10

3

+ 0×10

2

+ 1×10

1

+ 5×10

0

– Diciamo che contiamo in base 10

In generale, un numero abcd in base m:

– abcd = a×m3 + b×m2 + c×m1 + d×m0 – le cifre del numero 0 ≤ a,b,c,d < m

• Sistema binario: m=2

– due cifre (bit) possibili: 0,1 – 2015 =

= 1×1024 + 1×512 + 1×256 + 1×128 + 1×64 + 0×32 + 1×16 +1×8 + 1×4 + 1×2 + 1

= 11111011111 in base 2

– Un numero di k cifre binarie può assumere i valori tra 0 e 2k-1

57

(58)

Digressione: un po’ di aritmetica

• L’unità più comune in informatica è il byte (B) costituito da 8 bit.

– Rappresenta un carattere

– Valori da 0 a 255: bbbbbbbb

– Oppure visto come due gruppi di 4 bit: bbbb bbbb – Ogni gruppo può assumere valori da 0 a 15

• è naturale l’uso della base 16

• cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E F

• Esempio:

– 48 in base 10

– 00110000 in base 2 – 00110000

– 30 in base 16

(59)

A. Andreazza – Sistemi operativi ed informatica

Indirizzo IP

• Un indirizzo IPv4 è un intero di 32 bit

– rappresentato in forma decimale puntata

– es.: labmaster.mi.infn.it (il nostro server) ha IP address 193.205.78.41

11000001 11001101 01001110 00101001

• I bit dell’indirizzo sono divisi tra:

– rete (bit più significativi) – nodo (bit meno significativi)

– L’indizzo viene spesso dato come indirizzo/bit di rete tali bit più significativi definiscono la subnet mask – es.: 193.205.78.41/24

11000001 11001101 01001110 00101001 subnet mask:

11111111 11111111 11111111 00000000 = 255.255.255.0

59

(60)

Indirizzamento IP

• Due nodi sulla stessa rete possono comunicare

direttamente:

Local Area Network (LAN)

• Due nodi su reti diverse possono comunicare solo attraverso uno o più router

– nodi con interfacce su reti multiple

3 reti locali

con subnet mask 255.255.255.0 3 reti estese

con subnet mask 255.255.255.252

Router Router Router

(61)

A. Andreazza – Sistemi operativi ed informatica

Indirizzamento IP

• ifconfig : stato delle interfacce di rete

61

[labmaster] ~ % /sbin/ifconfig

eth0 Link encap:Ethernet HWaddr 00:15:17:CC:A3:7C

inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: 2001:760:4210:1ab::ff/64 Scope:Global

inet6 addr: fe80::215:17ff:fecc:a37c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:142621117 errors:0 dropped:0 overruns:0 frame:0 TX packets:135070582 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:94629491348 (88.1 GiB) TX bytes:112620596922 (104.8 GiB) Interrupt:130 Memory:df3c0000-df3e0000

eth1 Link encap:Ethernet HWaddr 00:26:B9:48:3C:90

inet addr:193.205.78.41 Bcast:193.205.78.255 Mask:255.255.255.0 inet6 addr: 2001:760:4210:1::9/64 Scope:Global

inet6 addr: fe80::226:b9ff:fe48:3c90/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:243350016 errors:0 dropped:0 overruns:0 frame:0 TX packets:122948019 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:89558665765 (83.4 GiB) TX bytes:103300878387 (96.2 GiB) Interrupt:114 Memory:da000000-da012800

Interfaccia verso il laboratorio

calcolo

Interfaccia verso internet

(62)

Indirizzi particolari

rete nodo

0 0 “0.0.0.0” questo nodo

0 questo nodo in

questa rete

N “rete.N”

1 1 broadcast a tutti i

nodi rete locale

“255.255.255.255”

R 1 broadcast su una

rete locale remota

“rete.255”

127 (qualsiasi valore) “127.nodo” loopback

(63)

A. Andreazza – Sistemi operativi ed informatica

Indirizzi IP privati e IPv6

• Lo spazio IPv4 ha solo 232 indirizzi: non sono sufficienti globalmente

• Sono definiti tre blocchi di indirizzi che possono essere liberamente usati su una rete locale o privata, ma non esportati nell’Internet generale, perché ovviamente duplicati.

• Con IPv6 si passerà a indirizzi di 16 byte (128 bit)

– (232)4 ~ (4×109)4 = 256×1036 indirizzi

• I 16 byte sono scrivibili con otto gruppi di 4 cifre esadecimali (nibble) separate da “:”

63

da 10.0.0.0 a 10.255.255.255/8 (16777215 nodi) 1 rete di classe A da 172.16.0.0 a 172.31.255.254/12 (1048576 nodi) 16 reti di classe B da 192.168.0.0 a 192.168.255.254/16 (65535 nodi) 256 reti di classe C

(64)

Campfire

(65)

A. Andreazza – Sistemi operativi ed informatica

DHCP – Dynamic Host Configuration Protocol

• Assegna un indirizzo per un tempo massimo (lease) ed un nodo

deve rinnovare il

prestito dell’indirizzo in uso prima della scadenza

• Utilizza un pool di indirizzi, che sono riusati se necessario.

Un nodo mantiene

l’indirizzo solo quando è attivo.

65

DHCP server: 223.1.2.5 client

richiedente

tempo

DHCP discover src : 0.0.0.0, 68

dest.: 255.255.255.255,67 yiaddr: 0.0.0.0

transaction ID: 654 DHCP offer

src: 223.1.2.5, 67 dest: 255.255.255.255, 68 yiaddrr: 223.1.2.4

transaction ID: 654 Lifetime: 3600 secs DHCP request

src: 0.0.0.0, 68

dest:: 255.255.255.255, 67 yiaddrr: 223.1.2.4

transaction ID: 655 Lifetime: 3600 secs

DHCP ACK

src: 223.1.2.5, 67 dest: 255.255.255.255, 68 yiaddrr: 223.1.2.4

transaction ID: 655 Lifetime: 3600 secs

(66)

NAT – Network Address Translation

• Per ovviare alla scarsezza di indirizzi globali pubblici di IPv4, è stato inventato un metodo controverso di permettere l’accesso ad Internet a molti nodi utilizzando un solo indirizzo pubblico.

• NAT cambia “al volo” gli indirizzi IP ed altri campi dell’header IP con altri, permettendo di avere indirizzi IP diversi fra interno della rete privata e Internet.

• Poiché la rete locale usa solo un indirizzo IP pubblico:

– basta uno solo indirizzo pubblico

– si può cambiare ISP senza modificare l’indirizzamento interno

– i nodi interni non si possono raggiungere direttamente, né sono visibili dall’esterno, aumentandone la sicurezza

• Port forwarding.

– Per fornire accesso dall’esterno ad un nodo interno

– Una porta del router (corrispondente all’indirizzo pubblico) viene staticamente collegata alla stessa porta di un nodo al di là del NAT.

(67)

A. Andreazza – Sistemi operativi ed informatica

NAT – Network Address Translation

67

10.0.0.1 10.0.0.2

10.0.0.3 10.0.0.4

138.76.29.7

rete locale

(per esempio rete a casa) 10.0.0/24

resto di Internet

Datagrammi con sorgente o destinazione in questa rete hanno indirizzi 10.0.0/24 per

sorgente, destinazione (come normale)

Tutti i datagrammi uscenti dalla rete locale hanno il medesimo indirizzo

singolo IP NAT: 138.76.29.7, ma differenti numeri di porta

(68)

NAT – Network Address Translation

10.0.0.1

10.0.0.2

10.0.0.3

S: 10.0.0.1, 3345 D: 128.119.40.186, 80

1

10.0.0.4 138.76.29.7

1: Il nodo 10.0.0.1 invia un datagramma a 128.119.40, 80

tabella traduzione NAT

ind. lato WAN ind. lato LAN 138.76.29.7, 5001 10.0.0.1, 3345

…… ……

S: 128.119.40.186, 80

D: 10.0.0.1, 3345 4

S: 138.76.29.7, 5001 D: 128.119.40.186, 80

2 2: Il router NAT cambia l’indirizzo di sorgente del

datagramma da 10.0.0.1, 3345 a 138.76.29.7, 5001, e aggiorna la

tabella

S: 128.119.40.186, 80

D: 138.76.29.7, 5001 3 3: La risposta arriva

all’indirizzo di destinazione:

138.76.29.7, 5001

4: router NAT

cambia l’indirizzo di

destinazione del datagramma da 138.76.29.7, 5001 a 10.0.0.1, 3345

(69)

A. Andreazza – Sistemi operativi ed informatica

DNS – Domain Name System

• Uno schema di nomi gerarchico che si appoggia su un di un database distribuito

– Realizzato come un protocollo dello strato di applicazione – Permette ai nodi IP nella rete di risolvere (tradurre)

nomi indirizzi

• La struttura gerarchica è ad albero

– La radice dell’  albero (root) indicata col il   .  (punto) è presa come punto più alto della gerarchia e da lì si procede con la creazione di

  domini  per ramificazione.

– Il nome si legge, gerarchicamente, da destra a sinistra ed è del tipo:

nodo.sottodominio.dominio.country

69

(70)

DNS – Domain Name System

• La radice è il “.” e corrisponde ai Root Name Server

• seguono i domini corrispondenti ai vari paesi ed a pari livello i domini

“generici” (p.e. biz, info) e quelli USA originari: gov(ernament), mil(itary), edu(cation), com(mercial), int(ernational), org(anisation), net(work)

• la zona seguente corrisponde alle varie entità (es. apple) o sotto domini del paese (es co per commercial)

(71)

A. Andreazza – Sistemi operativi ed informatica

I 13 Root servers

Hostname IP Addresses Manager

a.root-servers.net 198.41.0.4, 2001:503:ba3e::2:30 VeriSign, Inc.

b.root-servers.net 192.228.79.201, 2001:500:84::b University of Southern California (ISI) c.root-servers.net 192.33.4.12, 2001:500:2::c Cogent Communications

d.root-servers.net 199.7.91.13, 2001:500:2d::d University of Maryland

e.root-servers.net 192.203.230.10 NASA (Ames Research Center) f.root-servers.net 192.5.5.241, 2001:500:2f::f Internet Systems Consortium, Inc.

g.root-servers.net 192.112.36.4 US Department of Defence (NIC) h.root-servers.net 128.63.2.53, 2001:500:1::803f:235 US Army (Research Lab)

i.root-servers.net 192.36.148.17, 2001:7fe::53 Netnod

j.root-servers.net 192.58.128.30, 2001:503:c27::2:30 VeriSign, Inc.

k.root-servers.net 193.0.14.129, 2001:7fd::1 RIPE NCC l.root-servers.net 199.7.83.42, 2001:500:3::42 ICANN

m.root-servers.net 202.12.27.33, 2001:dc3::35 WIDE Project

71

https://www.iana.org/domains/root/db

(72)

Alcuni comandi

• ifconfig

mostra la configurazione di rete della macchina

• host [nome o indirizzo IP]

effettua la traduzione nome indirizzo IP l’opzione –v fornisce ulteriori dettagli

• ping [nome o indirizzo IP]

scambia pacchetti di test con la macchina remota

• netstat

monitoraggio delle connessioni. In particolare l’opzione –s fornisce una statistica del traffico e degli errori

• traceroute [nome o indirizzo IP]

mostra il tragitto seguito per raggiungere un nodo remoto

(73)

A. Andreazza – Sistemi operativi ed informatica

Da casa a fisica

73

traceroute www2.fisica.unimi.it

traceroute to cucciolobal.fisica.unimi.it (159.149.45.67), 64 hops max, 52 byte packets 1 192.168.1.254 (192.168.1.254) 3.505 ms 2.053 ms 2.058 ms

2 10.49.132.67 (10.49.132.67) 4.697 ms 4.058 ms 11.861 ms 3 10.251.58.73 (10.251.58.73) 5.252 ms * 9.205 ms

4 10.251.54.33 (10.251.54.33) 4.861 ms 5.043 ms 3.579 ms 5 * 10.251.55.1 (10.251.55.1) 4.872 ms 6.101 ms

6 10.251.59.194 (10.251.59.194) 3.850 ms 5.659 ms 3.835 ms 7 10.0.44.53 (10.0.44.53) 4.877 ms 5.569 ms 4.867 ms

8 10.0.0.178 (10.0.0.178) 4.171 ms 3.554 ms 3.682 ms 9 10.254.2.174 (10.254.2.174) 4.300 ms 3.853 ms 3.974 ms 10 10.254.12.125 (10.254.12.125) 10.938 ms 4.485 ms 3.961 ms

11 62-101-124-98.fastres.net (62.101.124.98) 4.672 ms 4.123 ms 5.755 ms 12 93-63-100-222.ip27.fastwebnet.it (93.63.100.222) 5.302 ms

93-63-100-250.ip27.fastwebnet.it (93.63.100.250) 5.086 ms 93-63-100-218.ip27.fastwebnet.it (93.63.100.218) 8.762 ms 13 93-63-100-49.ip27.fastwebnet.it (93.63.100.49) 33.220 ms

93-63-100-165.ip27.fastwebnet.it (93.63.100.165) 4.974 ms 93-63-100-249.ip27.fastwebnet.it (93.63.100.249) 4.972 ms 14 garr.mix-it.net (217.29.66.39) 4.720 ms 4.833 ms 5.882 ms

15 r-mi2-rx1-mi2.mi2.garr.net (90.147.80.74) 5.441 ms 5.671 ms 5.262 ms 16 rx1-mi3-rx1-mi2.mi2.garr.net (90.147.80.230) 5.219 ms 7.422 ms 8.061 ms 17 rx1-mi3-ru-unimi.mi3.garr.net (193.206.129.178) 7.719 ms 5.590 ms 5.727 ms 18 divtlc-unimi-1.campus.unimi.it (159.149.95.2) 6.504 ms 6.355 ms 6.258 ms 19 agra-divtlc.campus.unimi.it (159.149.95.42) 6.731 ms 5.780 ms 6.269 ms 20 fisica-chim.campus.unimi.it (159.149.95.65) 6.854 ms 8.018 ms 6.108 ms 21 cucciolobal.fisica.unimi.it (159.149.45.67) 6.247 ms 5.993 ms 5.599 ms

(74)

DATA LINK E STRATO FISICO

(75)

A. Andreazza – Sistemi operativi ed informatica

Il data-link

• Host e router, componenti attivi della rete sono dei nodi.

• I nodi sono tra di loro collegati da un mezzo fisico: link

• Il data-link si occupa di trasmettere/ricevere i bit di un frame sul/dal mezzo fisico:

– è una funzione locale tra macchine sullo stesso mezzo fisico

• la connessione end-to-end tra due macchine può passare attraverso diversi data-link

– il protocollo è indipendente dal protocollo di rete

• protocolli ad accesso multiplo: mezzo fisico condiviso da più data-link, regola l’accesso al canale gestendo trasmissioni multiple.

– Identificato da un indirizzo Media Access Control (MAC address):

• 48 bit (6 byte, di solito espressi in esadecimale)

• Identificatore unico, scritto nella ROM della componente

75

(76)

MAC address

• Output di ifconfig

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 68:a8:6d:10:52:ea

inet6 fe80::6aa8:6dff:fe10:52ea%en0 prefixlen 64 scopeid 0x4 inet 192.168.1.128 netmask 0xffffff00 broadcast 192.168.1.255 nd6 options=1<PERFORMNUD>

media: autoselect status: active

MAC address

(77)

A. Andreazza – Sistemi operativi ed informatica

Ethernet

• Tecnologia dominante sulle reti cablate:

– economica

– ampio spettro di velocità (da 10 a 10’000 Mb/s)

– genitore dei protocolli wireless 802.11

• Mezzi fisici:

– cavi coassiali doppini incrociati

77

Il primo schizzo di ethernet

(78)

Switch ethernet

• Connessione a stella di diversi data-link di una rete locale

• Permette di connettere direttamente due link

• Diverse connessioni attive contemporaneamente

Ethernet senza collisioni

(79)

A. Andreazza – Sistemi operativi ed informatica

Fibre ottiche

• Riflessione totale della luce

– ncoresinθcore=ncladsinθclad

– θcrit=arc sin (nclad/ncore) ~16°

• Lunghezze d’onda usate nell’infrarosso

– non guardare dentro una fibra

79

• Fibre per trasmissioni a lunga distanza:

– attenuazione 0.2 db/km – db = 10 log10 (A1/A2)

– dopo 1 km la potenza è ridotta di un fattore:

10-0.2/10 = 0.95

(80)

Protocolli Wireless

https://en.wikipedia.org/wiki/IEEE_802.11

(81)

Lezione 3: Cenni di sicurezza informatica

Password e password managers

Crittografia e protezione dei dati

Crittografia in chiave pubblica

Referenze:

1. Ross J. Anderson, Security Engineering (2nd edition), Wiley 2. PGP 7.0 User Guide, An Introduction to Cryptography

ftp://ftp.zedz.net/pub/crypto/pgp/pgp_pdf_files/IntrotoCrypto.pdf Slides il futuro dell’hashing (dal sito di uno dei maggiori password cracker)

http://www.openwall.com/presentations/Passwords12-The-Future-Of-Hashing/

3. xkdb.com

(82)

I problemi

– Accesso a delle risorse

• solo chi ha diritto a farlo deve poter accedere a delle risorse:

siano esse strumenti (CPU, stampanti...) o dati

– Identità

• essere in grado di identificarsi con certezza

• essere sicuri che l’entità che ci sta di fronte è proprio chi dice di essere.

– Per voi:

• la legislazione sta diventando sempre più restrittiva nel resposabilizzare il proprietario/utente per l’utilizzo illecito del suo PC/account

– Per gli altri:

• una volta avuto accesso al sistema in qualche modo, l’hacker può implementare attacchi più in profondità

• anche se voi non avete informazioni sensibili in un sistema, potreste compromettere qualcun altro

(83)

A. Andreazza – Sistemi operativi ed informatica

La password

• La password è il metodo di identificazione più diffuso:

– economicità e comodità

83

(Ref. 3)

Riferimenti

Documenti correlati

Vers une diplomatie d’émigration : les signes annonciateurs Sans rompre totalement avec les postions de principe en matière de défenses des droits des ressortissants algériens

Ancora una volta era forte la presenza genovese, con membri delle famiglie Cattaneo, Centurione, Di Negro, Doria, Lomellino, Spinola e altre; tuttavia tra fine XV e inizio XVI

• il computer legge dal file fisico una quantità di dati tale da riempire il buffer (oppure legge tutti i dati del file se questi sono in quantità inferiore alla lunghezza del

 Per leggere dati da un file presente sul disco, Per leggere dati da un file presente sul disco, occorre dapprima costruire un oggetto di tipo occorre dapprima costruire un

si apre un nuovo pannello ed il file grafico.m compare nella directory di lavoro. • inserire nell’editor i comandi come

size_t fread (void *ptr, size_t size, size_t nObj, FILE *fp);. size_t fwrite (void *ptr, size_t size, size_t nObj,

) in questo modo i file si possono modificare senza creare sprechi di spazio e senza limitazioni sulla crescita delle dimensioni di un file (l’unico limite è quello di avere blocchi

Nonostante il recente Piano Nazionale per il diabete identifichi la condizione diabete e gravidanza come una delle aree ritenute prioritarie per il miglioramento