Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL...

54
1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Transcript of Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL...

Page 1: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

1

Lezione 8Struttura di un SOSistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015Dipartimento di Scienze Fisiche, Informatiche e MatematicheUniversità di Modena e Reggio Emiliahttp://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Page 2: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

2

Quote of the day(Meditate, gente, meditate ...)

“There are two ways of constructing a software design. One way is to make it so simple that there are no obvious deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”Sir Charles Anthony Richard Hoare (1943-)Inventore dell'algoritmo di ordinamento QuickSortVincitore del Turing Award (1980)

Page 3: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

3

SISTEMI OPERATIVI A STRATI

Page 4: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

4

Stratificazione(O pensate forse di sbattere 50M di righe di codice in un solo file?)

Un SO moderno è concepito per strati. Le funzionalità fornite dal SO sono organizzate in strati software successivi impilati uno sopra l'altro.L'insieme degli strati forma uno stack software.Ciascuno strato implementa le proprie funzioni basandosi esclusivamente sulle funzioni definite negli strati inferiori.

Page 5: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

5

Un esempio di stack software(Che continua a valere più di mille parole, forse)

Strato 0: funzionalità di accesso all'hw.

HARDWARE

Strato 1: driver dei dispositivi

Strato 2: scheduling, memoria, file system

Strato 3: chiamate di sistema

Strato 4: librerie di sistema

Strato 5: sistema di base

Strato 6: applicazioni utente

Page 6: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

6

Che cosa contiene uno strato software?(Bella domanda)

Uno strato contiene l'implementazione delle funzioni e delle strutture dati atte a fornire la funzionalità necessaria allo strato superiore.Implementazione: in due modi possibili.

Software: libreria (statica o dinamica).Hardware: chip (ROM, EEPROM).

Page 7: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

7

Il generico strato funzionale(Un po' di sana modellistica ogni tanto non guasta)

Le funzionalità dello strato m fannouso delle funzionalità definite nellostrato m-1. Qui, f

jm è una funzione

pubblica, usabile dallo strato m+1.

Strato m-1fkm−1 f l

m−1

Strato mfunzione j-madello strato mf j

m

Page 8: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

8

Il generico strato funzionale(Un po' di sana modellistica ogni tanto non guasta)

Lo strato m definisce anche dellefunzioni private, non visibili aglistrati superiori. Tali funzioni sono disupporto e possono usare le funzionipubbliche dello strato m-1.

Strato m-1fkm−1 f l

m−1

Strato mf jm

f lm funzione

privatafunzionepubblica

fpm−1 fq

m−1

Page 9: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

9

Il generico strato funzionale(Un po' di sana modellistica ogni tanto non guasta)

Le funzioni dello strato m+1utilizzano le funzioni definite nellostrato m. Non sono visibili le funzionidi supporto.

Strato m-1fkm−1 f l

m−1

Strato mf jm

f lm funzione

privatafunzionepubblica

fpm−1 fq

m−1

Strato m+1fcm+1

X

Page 10: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

10

Vantaggi: modularità(Divide et impera)

Nello sviluppo.Il primo strato può essere progettato senza alcunaconsiderazione per il resto del sistema. Il secondo strato si appoggia sulle funzioni del primo.

Nel debugging.In un sistema ad m strati, se i primi m-1 sono corretticiò implica che l'eventuale errore stia nell'm-mo.

→ Approccio incrementale, per compartimenti.

Page 11: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

11

Svantaggi: come definire gli strati?(Come divido?)

Dove finisce uno strato ed inizia il successivo?Esempio: il sistema di gestione della memoria habisogno del driver del disco per poter implementare il meccanismo di swapping.

→ Il driver del disco deve essere collocato “al di sotto” del gestore della memoria.Un SO moderno è soggetto a moltissimi vincoli di questo genere.

Page 12: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

12

Svantaggi: riduzione dell'efficienza(Quanto costa dividere et imperare?)

L'uso di più strati introduce ritardi nella fruizione del servizio per via delle cascate più lunghe di funzioni.Con l'aumentare della potenza di calcolo, tali ritardi possono oramai essere considerati trascurabili.

Page 13: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

13

MACRO, MICRO, HYBRID KERNEL

Page 14: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

14

SO basato su Macro kernel(Detto anche “kernel monolitico”)

L'intero insieme dei servizi esegue in kernel mode. Le funzionalità essenziali del kernel sono contenute in una singola immagine eseguita al boot della macchina.L'intero insieme delle applicazioni esegue in user mode.Esempi:

Kernel Unix-like (Linux, BSD, AIX, System V).

Page 15: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

15

Vantaggi e svantaggi(Conviene usarli?)

Vantaggi.L'esecuzione dei servizi è la più veloce possibile (duecommutazioni: user kernel e kernel user).→ →

Svantaggi.Marcata fragilità (un crash del kernel pianta la CPU).Dimensione del kernel enorme (la sezione di testorischia di non entrare nelle CPU cache, con unasensibile riduzione delle prestazioni).

Page 16: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

16

Esempio di Macro kernel: UNIX(By Ken Thompson & Dennis Ritchie)

Usermode

Kernelmode

Utenti

Interprete comandi Comandi base Librerie di sistema

Interfaccia system call kernel↔

Segnali, gestioneterminali, I/O caratteri,

driver terminali

File system, swapping,I/O blocchi, driver

nastri e dischi

Scheduling CPU,demand paging,memoria virtuale

Interfaccia kernel architettura fisica↔

Controller terminaliTerminali

Controller nastri/dischiNastri/dischi

Controller memoriaMemoria

Page 17: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

17

La dimensione della code base di UNIX(Because size matters)

Con l'aumentare dei servizi, il kernel dei sistemi UNIX è cresciuto notevolmente.

Problemi funzionali (manutenzione del codice).Problemi di sicurezza (maggiore probabilità di crash).Problemi prestazionali (kernel non cache friendly).

Strategie risolutive:uso di moduli caricabili.adozione dell'architettura basata su Micro kernel.

Page 18: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

18

Moduli caricabili(“Loadable kernel module”: una idea grandiosa)

Modulo caricabile: file oggettocontenente funzionalità del kernel (file system, driverdi dispositivi, algoritmi di schedulazione, ...).(dis)attivabile a tempo di esecuzione (a mano oppureautomaticamente).

Esempi:Linux, FreeBSD, Mac OS X.

Page 19: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

19

Vantaggi e svantaggi(Conviene usarli?)

Vantaggi.La dimensione di base del kernel diminuiscesensibilmente (a pieno vantaggio delle CPU cache).Un crash di un modulo non pregiudica ilfunzionamento del sistema.

Svantaggi.Lieve penalità di prestazioni dovuta alla(dis)attivazione.

Page 20: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

20

SO basato su Micro kernel(L'esatto contrario di un kernel monolitico)

Il kernel esegue solo i servizi essenziali. Il resto è eseguito sotto forma di server applicativo. I server parlano fra di loro tramite un sistema a messaggi.Kernel: sistema di messaggistica per i server,scheduler CPU, allocatore memoria.Applicazioni: driver dei dispositivi, gestore filesystem.Esempi:

Tru64 UNIX (Digital), Mach, Minix.

Page 21: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

21

Vantaggi e svantaggi(Conviene usarli?)

Vantaggi.Facilità di estensione (nuovo servizio nuovo server);→il kernel non è toccato.Kernel ridotto all'osso, CPU cache friendly.SO robusto rispetto ai crash (muore il server, si ripara,se ne lancia una nuova istanza; nel frattempo, il SOcontinua ad eseguire).

Page 22: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

22

Vantaggi e svantaggi(Conviene usarli?)

Svantaggi.Un Micro kernel è meno performante di un kernelmonolitico. Presenza di commutazioni user kernel→e kernel user per ogni chiamata di sistema e per→ogni messaggio scambiato fra server.

Page 23: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

23

Esempio di Micro kernel: Minix(By Andrew Tanenbaum)

bash vim make lynx...

Fileserver

Processmanager

Networkserver

Reinc.server

Datastore

SATAdriver

Audiodriver

SCSIdriver

... Printerdriver

IRQ, MMU, IPC Clockdriver

Systemtask

Usermode

Kernelmode

Driver deidispositivi

Servizi

Applicazioni

Chiamate di sistema, messaggi

Chiamate di kernel, messaggi

Chiamate di kernel, messaggi

Page 24: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

24

SO basato su Hybrid kernel(Una via di mezzo fra Micro e Macro kernel)

Variante di Micro kernel con una unica differenza:i driver dei dispositivi eseguono in kernel mode.Tentativo di combinare il meglio dei Macro e dei Micro kernel. Funzionalità, prestazioni e sicurezza si collocano come intermedie fra Macro e Micro kernel.Esempi:

Windows, Plan 9, OS X.

Page 25: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

25

Esempio di Hybrid kernel: Windows(By Willam Henry Gates)

Usermode

Kernelmode

Hardware Abstraction Layer

Kernel mode driver Micro kernel

Object manager

I/Omanager

IPCmanager

VMmanager

Processmanager GDI

Executive Services

I/Omanager

Workstationservice

Serverservice

Serverservice Win32 POSIX OS/2

Win32appl.

POSIXappl.

OS/2appl.

Page 26: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

26

Macro vs. Micro vs. Hybrid(Un'immagine vale più di 1000 parole)

Applicazione

Macro Kernel Micro Kernel

Virtual File System

SchedulerMemoria virtuale

IPCFile System

Device driver

Hardware Hardware

IPC di baseMemoria virtuale

Scheduler CPU

Appl.IPC

Unixserver

Devicedriver

Fileserver

UserKernel

Hybrid kernel

Hardware

IPC di baseMemoria virtuale

Scheduler CPU

Appl.IPC

Unixserver

Devicedriver

Fileserver

Applicazione Applicazione

Page 27: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

27

Progetto e studio di sistemi stratificati(Approcci Top Down e Bottom Up)

Approccio “Top Down”. Si va dagli strati più alti a quelli più bassi.Vantaggio: progetto e studio delle applicazioni sono inizialmente molto facili e liberi da vincoli.Svantaggio: Scendendo agli strati inferiori ci si scontra rapidamente con i vincoli imposti di funzionamento dall'hardware. Se non si conosce l'hardware sottostante:

la comprensione degli strati intermedi e bassiè molto difficile.il progetto di uno strato intermedio rischia di esserefondato su assunzioni sbalgliate.

Page 28: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

28

Progetto e studio di sistemi stratificati(Approcci Top Down e Bottom Up)

Approccio “Bottom Up”. Si va dagli strati più bassi a quelli più alti.Vantaggio: il progetto può essere condotto e validato in maniera modulare. Lo studio permette di comprendere a fondo l'hardware e le successive scelte progettuali degli strati superiori.Svantaggio: la fase iniziale del progetto o studio è la più ostica, poiché coinvolge la programmazione dell'hardware.

Page 29: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

29

“Yes, there are two paths you can go by”(“but in the long run, there's still time to change the road you're on”)

Page 30: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

30

STRUTTURAZIONE DI LINUX

Page 31: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

31

Scheda descrittiva(La carta d'identità)

Architettura: Macro kernel con moduliVersione iniziale: 0.01 (settembre 1991)Versione attuale: 3.17 (ottobre 2014)Licenza: GPL v2.0 + blob proprietari forniti

esternamenteLinguaggio: C (architecture-independent)

Assembly (architecture-dependent)Standard: Linux Standard Base

Page 32: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

32

Livelli di stratificazione(Sono giusti giusti quelli che servono)

Stratificazione del kernel Linux.http://www.makelinux.net/kernel_map/

Stratificazione dell'ecosistema GNU.http://www.makelinux.net/system/

Una utilissima pagina di riferimento.http://www.makelinux.net/reference

Page 33: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

33

Organizzazione del codice(Come giustificare quei 70 e rotti MB di archivio compresso)

$LINUXDocumentation

archdrivers fs include init ipc kernel lib mm

net

scripts

Page 34: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

34

Organizzazione del codice(Come giustificare quei 70MB di archivio compresso)

arch

La directory arch contiene la porzione di codice detta “architecture-dependent” (dipendente dall'architettura).Qui sono implementati (tipicamente in assembly) tutti i meccanismi di interazione a basso livello con il processore.

$LINUXDocumentation

drivers fs include init ipc kernel lib mm net

scripts

Page 35: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

35

Organizzazione del codice(Come giustificare quei 70MB di archivio compresso)

Queste directory contengono la porzione di codice detta “architecture-independent” (indipendente dalla architettura).Qui sono implementati (tipicamente in C) tutti i sottosistemi del kernel (che possono far uso delle funzionalità architecture-dependent).

$LINUXDocumentation

archdrivers fs include init ipc kernel lib mm

net

scripts

Page 36: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

36

Organizzazione del codice(Come giustificare quei 70MB di archivio compresso)

La directory scripts contiene una miriade di script e programmi di amministrazione del processo di build del kernel.

$LINUXDocumentation

archdrivers fs include init ipc kernel lib mm

net

scripts

Page 37: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

37

Riassumendo(Uno schema di massima, largamente incompleto)

Hardware

Architecture-dependent code

Architecture-independent code

Gestorememoria

VirtualFile System

SchedulerCPU

SistemaI/O

Gestoreinterruzioni

Estensioniprocessore Boot

Kernel

...

...

Page 38: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

38

Implementazione object-oriented in C(Object oriented in C? Eh?)

L'implementazione dei servizi principali del kernel (gestore memoria, gestore file system, sistema di I/O) segue un approccio orientato agli oggetti.

Uno scheletro di codice generico scritto in C.Uso di puntatori a funzione per l'invocazione difunzioni specifiche.Inizializzazione dei puntatori a funzione con gliindirizzi delle funzioni di una data implementazione.

Page 39: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

39

How is this even possible?(“Come with me, and you'll be, in a world of pure imagination”)

Page 40: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

40

Esempio: Virtual File System(In UNIX, everything is a file)

Virtual File System: gestisce le operazioni su file. In Linux, tutto è un file (file regolari, directory, file rappresentanti un dispositivo, socket di rete, …).La semantica di uso dei file è sempre la stessa: open(), read(), write(), seek(), close(). Cambiano i dettagli implementativi.

Page 41: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

41

Lettura da file regolare e da dispositivo(In UNIX, everything is a file)

Un file regolare rappresenta contenuto generato dall'utente. Ad esempio, il comando cat file.txt stampa il contenuto del file file.txt, prelevando i blocchi tramite il file system.Un file speciale a blocchi rappresenta il contenuto di un disco a basso livello. Ad esempio, il file speciale /dev/sda1 rappresenta la prima partizione del primo disco SATA/SCSI. Il comando cat /dev/sda1 stampa il contenuto binario del disco a basso livello, prelevando i blocchi tramite il relativo device driver.

Page 42: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

42

La funzione di lettura “ad oggetti”(Esempio di scheletro di codice con invocazione opaca)

La funzione vfs_read() implementa una lettura da un qualunque file aperto.

Definita in $LINUX/fs/read_write.cSi noti lo statement

ret = file->f_op->read(file, buf, count, pos);

Il puntatore a funzione read() può puntare ad una qualunque implementazione di read().

Page 43: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

43

La struttura file_operations(Dove stanno le implementazioni di read()?)

Componenti diversi facenti uso del VFS forniscono implementazioni diverse di read().La struttura dati struct file_operations definisce i puntatori a funzioni da implementare.Nel caso del file system EXT4, tale struttura dati:

è definita alla fine di $LINUX/fs/ext4/file.c.è associata al file aperto in seguito ad una open().

Per tale file, nel kernel fino alla versione 3.15, read() → do_sync_read().A partire dal kernel v3.16,read() → new_sync_read().

Page 44: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

44

Vantaggi e svantaggi(Conviene usare la stratificazione?)

Vantaggi.Riuso di codice (si implementa una volta sola loscheletro funzionale).Modularità (un file contiene lo scheletro funzionale,un altro file contiene l'implementazione).

Svantaggi.Difficoltà di interpretazione del codice (bisognaconoscere le strutture dati implementanti leoperazioni).

Page 45: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

45

Esercizi (5 min.)

1. Quale funzione di lettura viene usata da NTFS?

Page 46: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

47

Portabilità(Come in Java?)

L'implementazione del kernel è portabile con relativo sforzo su architetture diverse.Architetture diverse hanno dimensioni dei tipi ed organizzazione interna dei dati diverse.

Architetture a 32 e a 64 bit.Architetture Big e Little Endian.

La parte architecture-independent del kernel non può fare assunzioni sui tipi di dato.

→ Definizione di nuovi tipi di dato via typedef.

Page 47: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

48

Tipo di dato opaco(Viene ridefinito opportunamente in funzione della configurazione)

Un tipo di dato opaco è un alias di un tipo di dato preesistente ed è definito mediante typedef. Ciò può rendere il codice più leggibile.

Esempio: typedef BYTE unsigned char;BYTE è un alias di unsigned char.

Un tipo di dato opaco può essere ridefinito in funzione della configurazione utente.#ifdef LONG_OFFSETStypedef ssize_t long long;#elsetypedef ssize_t long;#endif

Page 48: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

49

Esempio(uid_t)

User ID: ID numerico di un utente (unsigned short). È utilizzato in diverse funzioni del kernel.

→ Il codice diventa più leggibile se si definisce il tipo di dato opaco uid_t.

Esempio: chown_common() in $LINUX/fs/open.c.La signature rende ovvio il compito di tale funzione (cambiaowner e group di un file).

Page 49: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

50

Tipo di dato esplicito(Assume sempre la stessa dimensione, indipendentemente dall'architettura)

Un tipo di dato esplicito è un alias di un tipo di dato preesistente ed è definito mediante typedef. Esso deve assumere la stessa dimensione indipendentemente dalla architettura. Ad esempio, per definire un intero a 64 bit senza segno sulle architetture x86_32 e su x86_64:#ifdef X86_64typedef u64 unsigned long;#endif#ifdef X86_32typedef u64 unsigned long long;#endif

Page 50: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

51

Esempio(__be32)

Indirizzo IP: è un numero a 32 bit in formato Big Endian, indipendentemente dall'architettura.

→ Si definisce un tipo di dato esplicito __be32 con dimensione fissa di 32 bit e rappresentazione Big Endian, indipendentemente dall'architettura.

Esempio: struct iphdr (intestazione IP) definisce i campisaddr e daddr (IP sorgente e destinazione) come __be32.

Page 51: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

52

Esercizi (3 min.)

2. Si identifichi la dimensione del tipo di dato opaco gid_t che rappresenta l'identificatore di un gruppo.

Page 52: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

54

Esercizi (3 min.)

3. Si identifichi la natura del tipo di dato s32. È esplicito oppure opaco?

Page 53: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

56

È vietato l'uso della libreria del C(Niente printf()!)

Il kernel implementa i servizi richiesti dalla libreria dal C.Per il kernel non è possibile usare alcun servizio della libreria del C. Semmai, è la libreria del C ad usare i servizi del kernel.

Niente printf(), niente malloc()!Alcune funzioni di utilità sono ridefinite.

printk(): stampa messaggi sulla console.kmalloc(), kfree(): (de)allocazione dinamicadella memoria.

Page 54: Lezione 8 Struttura di un SO · 1 Lezione 8 Struttura di un SO Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

57

Esercizi (2 min.)

4. Si trovi la definizione delle funzioni printk() e kmalloc().