Sei sulla pagina 1di 67

Università degli Studi di Enna ’’Kore’’

Facoltà di Ingegneria e Architettura

CdS in Ingegneria Informatica

Sistemi Operativi

A.A. 2021-2022

Prof. Ing. Giovanni Pau


Introduzione a Linux
Cenni storici (1/3)

šLinux è un sistema operativo free


basato su API POSIX
šNel 1985 Richard Stallman fondò la
Free Software Foundation, il cui
obiettivo era riassunto
nell'acronimo ricorsivo
GNU = Gnu's Not Unix

____
Prof. Ing. Giovanni Pau 3
Cenni storici (2/3)

šIn realtà, l'obiettivo era la scrittura di un intero


sistema operativo
šanalogo a UNIX
šcon delle caratteristiche innovative
švarie applicazioni di corredo
šinteramente free, negando così la natura
commerciale di UNIX
____
Prof. Ing. Giovanni Pau 4
Cenni storici (3/3)

šNel 1991 Linus Benedict Torvalds,


studente del corso di Sistemi
Operativi all'Università di Helsinki,
aprì la strada allo sviluppo di Linux
šad oggi è forse il segno più
tangibile della realizzazione del
progetto GNU

____
Prof. Ing. Giovanni Pau 5
Il kernel (1/3)

š Il kernel è il cuore di Linux


š Al suo interno sono implementate le funzioni più
importanti del sistema operativo
š È uno dei più riusciti esempi di software open source
šanche il kernel Linux è in continua evoluzione
šla dimensione del kernel cresce in maniera
esponenziale, con l'aggiunta di nuovi moduli,
nuovo hardware supportato …
____
Prof. Ing. Giovanni Pau 6
Il kernel (2/3)

š Kernel monolitico
šmeno complesso e estremamente
efficiente con implementazione
completa
štutti i moduli operano nello stesso
spazio di memoria -> bug critici
šnuovo hardware -> nuova
ricompilazione del kernel
ši kernel moderni possono caricare i
moduli dinamicamente -> aumenta la
dimensione del kernel
____
Prof. Ing. Giovanni Pau 7
Il kernel (3/3)

š Microkernel
škernel principale per implementare
servizi minimali
šsi utilizzano aree di memoria
separate
šun server che smette di funzionare
non blocca l'intero sistema
šspesso usati in sistemi embedded o
applicazioni tempo critiche
štendenzialmente "più lenti"
____
Prof. Ing. Giovanni Pau 8
Il file system (1/2)

šIl file system è la modalità con cui i file sono


posizionati e organizzati (albero delle directory)
su dispositivi di archiviazione
šNon tutte le installazioni di Linux hanno lo stesso
albero delle directory
šogni distribuzione può presentare delle
differenze anche significative

____
Prof. Ing. Giovanni Pau 9
Il file system (2/2)

____
Prof. Ing. Giovanni Pau 10
File system: radice e /"#$

šIl file system ha origine in /, detta "##$ o directory


radice
š%&&' è anche la username dell'amministratore di
sistema, la cui home directory è /%&&'
š/()* è la directory che contiene i programmi
principali del sistema
šquelli che devono essere disponibili subito
all'accensione, per poter avviare i sistema
____
Prof. Ing. Giovanni Pau 11
File system: /ℎ&'(

šQuesta directory contiene le "aree locali" dei


singoli utenti
šQuando un utente si collega facendo login, egli
non si trova nella directory principale (%&&') ma
viene posizionato in una directory "privata"
diversa per ogni utente
šquesta directory in genere ha il nome
dell'utente ed è una sottodirectory della
directory ℎ&,-
____
Prof. Ing. Giovanni Pau 12
File system: /)*+

šIn questa directory risiede la maggior parte del


sistema
šIn /./" e nelle sue sottodirectory risiedono tutti i
programmi installati, i file del manuale, la
documentazione ed altro ancora
šUna caratteristica di 01% è che, in molti casi, i
suoi file in genere possono essere solo letti

____
Prof. Ing. Giovanni Pau 13
File system: /,"#$ e /-,./,"#$

šAltre directory importanti sono //()* e /./"//()*


šsono analoghe a /234 e /01%/234, la 1 sta per
Superuser ed è riferita al %&&'
šQueste directory contengono soprattutto
comandi usati per l'amministrazione di sistema

____
Prof. Ing. Giovanni Pau 14
File system: /-,./'/$

šLa directory /./"/56* contiene delle


sottodirectory in cui si trovano dei file
corrispondenti alle pagine di manuale in linea

____
Prof. Ing. Giovanni Pau 15
File system: /(01

šLa directory /7$8 è una delle più importanti del


sistema perché contiene la quasi totalità dei file
di configurazione del sistema, compresi quelli
che servono per la fase di accensione

____
Prof. Ing. Giovanni Pau 16
File system: /2#"

šQuesta directory contiene le librerie di sistema


šSi trovano in questa directory le librerie di funzioni
utilizzate dal linguaggio C, richiamate da tutti i
programmi compilati in questo linguaggio, ma
anche varie librerie utilizzate da altri linguaggi o
sistemi

____
Prof. Ing. Giovanni Pau 17
File system: /'$0 e /3.&1

š /"#$ è una directory vuota, come la %&'() o la


*+(,,-, predisposta per poterci montare un
qualunque dispositivo
š Anche /./01 è una directory usata per montare un
filesystem
šquesto filesystem è però un filesystem virtuale, che
non corrisponde a spazio su nessun dispositivo,
ma consente di accedere alle informazioni su
tutto il sistema, come tipo di CPU, quantità di
memoria, dispositivi disponibili e altro
____
Prof. Ing. Giovanni Pau 18
File system: /0'3 e /4/.

š /$".: in questa directory vengono immagazzinati i


file temporanei durante le elaborazioni
šil contenuto di questa directory viene cancellato
ad ogni accensione
š La directory /23/ contiene, nelle sue sottodirectory, i
file che registrano gli eventi del sistema (i cosiddetti
log)
šoltre ai log in questa directory troviamo le code di
stampa ed in genere tutti i file di sistema che
vengono modificati
____
Prof. Ing. Giovanni Pau 19
File system: devices (1/2)

š/89"#5 è una directory vuota, alla quale


l'amministratore di sistema potrà collegare
(montare) un disco inserito nel lettore CD-Rom
šCome la directory /:;%&,, /<=#>>? è una
directory vuota, predisposta perché
l'amministratore di sistema vi "monti" un floppy
disk
š/97@ contiene dei file speciali che vengono usati
per indicare al sistema i dispositivi
____
Prof. Ing. Giovanni Pau 20
File system: devices (2/2)

š Per riferirsi ai dispositivi, Linux fa uso di file speciali


che sono visibili e in genere si trovano nella directory
/452
š Alcuni esempi sono:
š*&0: corrisponde al floppy A
š*&1: corrisponde al floppy B
šℎ&9, ℎ&:, ℎ&%, ℎ&& sono i quattro possibile dischi
fissi IDE
šℎ&91, ℎ&92, ℎ&93, ℎ&94 sono le quattro partizioni
primarie del primo disco fisso IDE
____
Prof. Ing. Giovanni Pau 21
Utenti

šEsistono differenze fra i vari utenti, definite dai


permessi e dall'acceso ai file e comandi che
un'utente può lanciare
šÈ convenzione che i semplici utenti possano
scrivere, leggere e modificare file solo all'interno
del loro ambiente (ℎ&,-)
špossono anche lanciare semplici comandi
che non influiscono sulla configurazione del
sistema
____
Prof. Ing. Giovanni Pau 22
Superutenti

šPer poter accedere completamente alle risorse


del sistema bisogna accedere al sistema come
/.>7"./7", detto %&&'
šL'utente %&&' è l'amministratore del sistema con
tutti i poteri che comporta questo ruolo
šquindi è molto importante che l'accesso a
%&&' sia limitato solo al reale amministratore di
sistema (comando 10;& 10)
____
Prof. Ing. Giovanni Pau 23
Utenti e gruppi

šPrima di accedere al sistema occorre


autenticarsi indicando un nome di utente
conosciuto dal sistema
šGli utenti, a loro volta, appartengono a gruppi
šOgni utente deve appartenere almeno ad un
gruppo, ma può appartenere a più gruppi

____
Prof. Ing. Giovanni Pau 24
Comandi Linux
Introduzione (1/3)

š La parte del sistema operativo Unix dedita alla


gestione dell’interazione con l’utente è la shell,
ovvero, un’interfaccia a carattere:
šl’utente impartisce i comandi al sistema
digitandoli ad un apposito prompt
šil sistema stampa sullo schermo del terminale
eventuali messaggi all’utente in seguito
all’esecuzione dei comandi, facendo poi
riapparire il prompt, in modo da continuare
l’interazione
____
Prof. Ing. Giovanni Pau 26
Introduzione (2/3)

š Quando viene invocata una shell automaticamente al


login o esplicitamente:
šviene letto un file speciale nella home directory dello
user, contenente informazioni per l’inizializzazione
šviene visualizzato un prompt in attesa che l’utente invii
un comando
šse l’utente invia un comando, la shell lo esegue e
ritorna allo step precedente;
šesempio: !"ℎ$ $&'()) stampa sullo schermo del
terminale il percorso della shell di login
____
Prof. Ing. Giovanni Pau 27
Introduzione (3/3)

____
Prof. Ing. Giovanni Pau 28
Terminare la shell

šPer terminare la shell si possono usare i seguenti


metodi:
špremere Ctrl-D
šdigitare i comandi A&B&0' (solo shell di login) o
-C3'

____
Prof. Ing. Giovanni Pau 29
Spostarsi nel file system (1/4)

šPresent working directory


>D9

šRestituisce la cartella di lavoro corrente


šnell'esempio /ℎ&,-/E&%-
____
Prof. Ing. Giovanni Pau 30
Spostarsi nel file system (2/4)

šChange directory
89 [*#57 9)"78$#"?]

šIl comando :; senza argomenti sposta l'utente


nella sua home directory
____
Prof. Ing. Giovanni Pau 31
Spostarsi nel file system (3/4)

šChange directory: tornare indietro


89 . .

šConsente di tornare alla directory precedente

____
Prof. Ing. Giovanni Pau 32
Spostarsi nel file system (4/4)

šEsempio: uso combinato di IJ; e :;

____
Prof. Ing. Giovanni Pau 33
Pathname

šPathname: percorso per raggiungere un file


all’interno del filesystem

ASSOLUTO RELATIVO

/ℎ#$%/&'#()**'/+%),$%. ./. +%),$%. ./. ./+%),$%. ./.

šNel relativo il "." è l'alias per la directory "madre"


____
Prof. Ing. Giovanni Pau 34
File e directory (1/4)

šComando =/: esegue il listing dei file


šIn UNIX, le opzioni aggiuntive dei comandi si
specificano tramite il simbolo − seguito dalla
lettera che identifica l’opzione

____
Prof. Ing. Giovanni Pau 35
File e directory (2/4)

šL’opzione −L permette di visualizzare i file


nascosti, che sono visualizzati preceduti dal
punto “.”

____
Prof. Ing. Giovanni Pau 36
File e directory (3/4)

šL’opzione −A (long) permette di visualizzare in


modo “verboso” (dettagliato) il contenuto di
una directory

____
Prof. Ing. Giovanni Pau 37
File e directory (4/4)

š Opzioni del comando >?:


š+@ – 9: elenca anche i file (normalmente invisibili) il
cui nome comincia per .
š+@ – +: elenca in formato lungo
š+@ – @: elenca per dimensione crescente
š+@ – C: elenca a partire dal file più recente
š+@ – D: incolonna l'elenco
š+@ – E: elenca ricorsivamente anche le subdir
____
Prof. Ing. Giovanni Pau 38
Attributi di un file in una
directory

Bit dei
permessi
sul file

Utente proprietario Dimensione


del file in byte del file Nome file
Gruppo di utenti
proprietario del file Data creazione/modifica
____
Prof. Ing. Giovanni Pau 39
Autorizzazione dei file (1/2)

šUnix è multiuser
šoccorre impostare una griglia di autorizzazioni
per leggere, scrivere o eseguire
šIl proprietario del file è l’utente che lo crea
šimposta le autorizzazioni

____
Prof. Ing. Giovanni Pau 40
Autorizzazione dei file (2/2)

− " # $ " − $ − − $

TIPO PROPRIETARIO GRUPPO ALTRI

šTipo: ; = directory; − = normale; 2 = a blocchi;


: = a caratteri
šPermessi: % = lettura; J = scrittura;
C = esecuzione
____
Prof. Ing. Giovanni Pau 41
Cambiare i permessi (1/3)

šIl proprietario di un file può cambiarne i permessi


tramite il comando 8N5#9
šSi utilizza con il numero ottale corrispondente
alla mappa di bit da attivare/disattivare
šEsempio: 8N5#9 OPP 5?<)=7
dove 755 = 111 101 101
*+, * − , * − ,

____
Prof. Ing. Giovanni Pau 42
Cambiare i permessi (2/3)

šSi può utilizzare l'indicazione 0 (user), B (group), &


(other), seguita dai caratteri + (attivare il
permesso) oppure – (disattivare il permesso) e
dai permessi da attivare o disattivare
šEsempio: 8N5#9 .W + "D # − D 5?<)=7
š8N#D* 0'-4'- X1 X2 … X4 cambia il proprietario
dei file indicati
š8NW"> B%0II& X1 X2 … X4 cambia il gruppo di
appartenenza dei file indicati
____
Prof. Ing. Giovanni Pau 43
Cambiare i permessi (3/3)

____
Prof. Ing. Giovanni Pau 44
Manipolazione di file e
directory (1/2)
š"5 X1 X2 … X4 cancellazione irreversibile dei file
š5[9)" IL'ℎ4L,- crea una nuova directory
š"59)" IL'ℎ4L,- cancella una directory esistente
šDN# serve a vedere gli utenti del sistema

____
Prof. Ing. Giovanni Pau 45
Manipolazione di file e
directory (2/2)
š56* :,; visualizza le pagine del manuale
šesempio: ,L4 A1
š8> X1 X2 … X4 ;-1' copia un file o un gruppo di
file
šesempio: :I %-L;,-. 'C' \&:0,-4'3
š5@ X1 X2 … X4 ;-1' sposta un file o un gruppo di
file
šesempio: ,] %-L;,-. 'C' ^&4;3]31L
____
Prof. Ing. Giovanni Pau 46
Output redirect (1/3)

šConsiste nel reindirizzare l’output verso un file


che può essere creato ex-novo o realizzando un
append dentro un file già esistente
šEsempio: -:ℎ& _3 :ℎ3L,& `30A3& > X3A-_&0'
šscrive “Mi chiamo Giulio” in file_out, che verrà
eventualmente sovrascritto

____
Prof. Ing. Giovanni Pau 47
Output redirect (2/3)

____
Prof. Ing. Giovanni Pau 48
Output redirect (3/3)

šEsempio: -:ℎ& c&4& 04& 1'0;-4'- >> X3A-_&0'


šscrive “Sono uno studente” in file_out
aggiungendolo al contenuto già esistente

____
Prof. Ing. Giovanni Pau 49
Input redirect

šAnalogamente a quanto visto


precedentemente è possibile ridirigere l’input da
file piuttosto che da tastiera
šPer fare questo si usa il comando 1&%' ed <
š/#"$: serve ad elaborare il file il cui contenuto
verrà stampato a video

1&%' < X3A-_&0'


____
Prof. Ing. Giovanni Pau 50
Pipe (1/3)

šUna cosa efficace e utile da fare con la


redirezione Input/Output, è la connessione di più
comandi attraverso le cosiddette pipe
šCon le pipe, lo standard output di un comando
viene convogliato dentro lo standard input di un
altro
I%&:-111 | I%&:-112

____
Prof. Ing. Giovanni Pau 51
Pipe (2/3)

šEsempio: A1 − A' | ℎ-L;


švisualizza i 10 file più recenti nella directory
corrente

____
Prof. Ing. Giovanni Pau 52
Pipe (3/3)

šEsempio: ;0 | 1&%' − 4%
švisualizza una lista di directory e quanto spazio
consumano, ordinati dalla più grande alla più
piccola

____
Prof. Ing. Giovanni Pau 53
Concatenazione (1/2)

š86$ X1 X2 … X4 concatena i file e li invia sulla


standard output
šEsempio: :L' -1-,I3&1 -1-,I3&2

____
Prof. Ing. Giovanni Pau 54
Concatenazione (2/2)

šEsempio: è possibile concatenare il contenuto di


due file e scriverli su file anziché su video

____
Prof. Ing. Giovanni Pau 55
Controllo dei jobs (1/3)

š Ogni processo del sistema ha un PID (Process


Identity Number)
š Ogni processo può generare nuovi processi (figli)
š La radice della gerarchia di processi è il processo
FGFC con PID=1
š FGFC è il primo processo che parte al boot di sistema
š Comando .?: mostra i processi presenti nel sistema
šfornisce i processi dell’utente associati al
terminale corrente
____
Prof. Ing. Giovanni Pau 56
Controllo dei jobs (2/3)

šPID: pid del processo


šTTY: terminale (virtuale)
šTIME: tempo di CPU utilizzato
šCMD: comando che ha generato il processo
____
Prof. Ing. Giovanni Pau 57
Controllo dei jobs (3/3)

šComando >/ – 6<: consente di mostrare tutti i


processi nel sistema associati ad un terminale
(−L) full listing (−X)
šUID: User Identifier PPID: parent PID
šc = informazione obsoleta sullo scheduling
šSTIME = data di inizio del processo
____
Prof. Ing. Giovanni Pau 58
Terminazione di un processo

šPer arrestare un processo in esecuzione si può


utilizzare il comando [)== seguito dal PID del
processo

____
Prof. Ing. Giovanni Pau 59
Esecuzione background &
foreground (1/2)
FOREGROUND

SHELL %"&' SHELL

Viene avviato %"&' termina


l'eseguibile %"&' la sua esecuzione Il controllo
torna alla
SHELL

____
Prof. Ing. Giovanni Pau 60
Esecuzione background &
foreground (2/2)
BACKGROUND
Viene avviato
l'eseguibile %"&'
in background %"&' %"&' e SHELL
eseguono in
SHELL parallelo

Il controllo SHELL
torna subito
alla SHELL

____
Prof. Ing. Giovanni Pau 61
Altri comandi utili (1/3)

š<)=7 ∗: informa sulla natura dei file in una


directory

____
Prof. Ing. Giovanni Pau 62
Altri comandi utili (2/3)

š9<: mostra lo spazio libero sul disco (su ciascun


file system)

____
Prof. Ing. Giovanni Pau 63
Altri comandi utili (3/3)

š9. [*#57 9)"78$#"?]: mostra l'uso della directory


e lo spazio occupato da ogni subdirectory in
blocchi

____
Prof. Ing. Giovanni Pau 64
Esercitazione (1/2)

š Creare una cartella CH), nella propria ℎ()H


š Entrare nella cartella appena creata
š Creare due sottocartelle:
š.$*/!01!
š@(CC(+FIH++(/&H@CFG9JF(GH
š Creare nella cartella @('KHGCH un file di nome
H@H),F( contenente la riga "%(GCHGLC("
š Aggiungere al file di nome H@H),F( la riga "9KKFLGC9"
____
Prof. Ing. Giovanni Pau 65
Esercitazione (2/2)

šCreare nella cartella !"#$%&'% un file di nome


%(%&)" contenente l’elenco dei file e delle
cartelle presenti nella #""' (/)
šCreare nella cartella !"''"(+,%(("/-%!'+&./+"&%
il file )"&).' prodotto dalla concatenazione
dei file %!%01+" ed %(%&)"
šCancellare la cartella '%01 e il suo contenuto
____
Prof. Ing. Giovanni Pau 66
Esercitazione: soluzione

š !"#$% &'!(
š )# &'!(
š !"#$% *+%,'-&'
š !"#$% − ( *+&&+/$0'//+/#'*&$-23$+-'
š ')ℎ+ “)+-&'-6&+” > *+%,'-&'/'*'!($+
š ')ℎ+ “2,,$6-&2” >> *+%,'-&'/'*'!($+
š /* / > *+%,'-&'/'/'-)+
š )2& *+%,'-&'/'*'!($+ *+%,'-&'/'/'-)+ > *+&&+/$0'//+/#'*&$-23$+-'/)+-)2&
š %! − %9 &'!(

____
Prof. Ing. Giovanni Pau 67

Potrebbero piacerti anche