CAP9. Device drivers

Documenti analoghi
Struttura interna del sistema operativo Linux

2. Tipi di periferiche e classificazione dei gestori

Drivers. Introduzione Tipologie Struttura Interazione con il kernel

2. Nucleo del sistema operativo (la gestione dei processi)

2. Nucleo del sistema operativo (la gestione dei processi)

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

Input/Output. Livelli del sottosistema di I/O

8. IL FILE SYSTEM. 1. I servizi per la gestione dei file

LA GESTIONE DELLA I/O

Organizzazione di un SO monolitico

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU

Il software: Istruzioni per il computer

File System ext2. Struttura del filesystem ext2.

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Modulo 3. Software. Corso di Sistemi di elaborazione delle informazioni -Autore: Ing. Maurizio Patanè

Il Sistema Operativo. Informatica Sistema Operativo 1

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Il Sistema Operativo

Il sistema di I/O. Sistemi Operativi 13.1

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.

Sistema Operativo (Software di base)

Struttura Logica del S.O:

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Lo strato di applicazione in Internet

6. IL NUCLEO DEL SISTEMA OPERATIVO. 1. Meccanismo base di funzionamento del nucleo

Architettura degli elaboratori Docente:

Sistema operativo & file system 1

Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente

1. Caratteristiche dello hardware

Componenti e connessioni. Capitolo 3

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Sistemi Operativi. Sottosistema di I/O

IL SOFTWARE DI SISTEMA

Directory. Le directory unix sono file.

Linguaggio C: i file

Modi di esecuzione user / kernel

A confronto Linux e Microsoft. d i A g n e s e D a i d o n e

Il sistema operativo

IO 1 Input Output a livello Hardware

- Dispensa V - IL SISTEMA OPERATIVO

I SISTEMI OPERATIVI (1)

AXO Architettura dei Calcolatori e Sistemi Operativi

Il software di sistema

I Sistemi Operativi. Introduzione ai Sistemi Operativi (parte A) Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Il file È un insieme di informazioni: programmi. Il File System. Il file system

Informatica Generale 06 - Introduzione ai Sistemi Operativi

Personal Computer: introduzione

Gestione di files Motivazioni

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

Linux la gestione dei dischi

CAP. 4: Aspetti generali del Sistema Operativo Linux. l

Esame di INFORMATICA Lezione 4

Architettura dei calcolatori e Software di sistema

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

Reti (già Reti di Calcolatori )

Input/Output (Cap. 7, Stallings)

File system: aspetti implementativi

Struttura dei Sistemi di Calcolo

Corso di Calcolatori Elettronici I

SISTEMI OPERATIVI DISTRIBUITI

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO

ACSO Programmazione di Sistema e Concorrente

Sistemi di I/O. Contenuti. L hardware di I/O. Bus in un PC. L hardware di I/O. Le interfacce I/O per le applicazioni.

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Architettura di Von Neumann

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Sottosistema d ingresso uscita

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

2. Strutture dei Sistemi Operativi. 2.2 Interfaccia col Sistema Operativo Interprete dei comandi

La gestione dell I/O (Cap. 5, Tanenbaum)

Secondo l architettura di Von Neumann il bus rappresenta il punto di interconnessione di tutti i componenti del calcolatore.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Esercizi per il recupero del debito formativo:

Le Memorie. Si distinguono per: Supporti sui quali le informazioni vengono fisicamente memorizzate.

Introduzione alle gerarchie di memoria

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Realizzazione del file system. Fabio Buttussi HCI Lab Dipart. Di Matematica ed Informatica Università degli studi di Udine

Memoria cache. Memoria cache. Miss e Hit. Problemi. Fondamenti di Informatica

Architettura di Von Neumann. Architettura di Von Neumann. Architettura di Von Neumann INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Capitolo Silberschatz

Sistemi Operativi. Sottosistema di I/O

Sistema operativo. Interazione con il SO

IL SISTEMA OPERATIVO

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi (prima parte) Appunti di TPI Elaborati dal prof. Ing. Mario Catalano Per la classe 3 Einf.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Lezione 2: Comandi avanzati della Shell di Unix

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi. Lezione 4 I processi: implementazioni

Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per:

I sistemi operativi. Prof. Daniele Contarino

Sistemi Operativi ed interazione con HW e CAD

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Video e Tastiera con le interruzioni software del BIOS e di MSDOS

Parte II. Introduzione ai sistemi operativi e WindowsX. Parte II 1

Modello a scambio di messaggi

Transcript:

Struttura interna del sistema operativo Linux CAP9. Device drivers Device drivers Gestori di periferiche Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con il file system perché tutte le periferiche vengono viste come file speciali Interagiscono con il nucleo del Sistema Operativo per gestire la sincronizzazione tra la periferica e il calcolatore e il trasferimento dati Sono la parte di Sistema Operativo che viene aggiornata con maggior frequenza (per gestire nuovi tipi di periferiche). 2 Pag. 1 1

Tipi di periferiche In LINUX esiste un driver (gestore) per ogni tipo di periferica installata Il progettista di un device driver deve conoscere sia le caratteristiche HW della periferica sia il modo in cui il device driver deve interfacciarsi con il SO. I tipi di periferiche (devices) sono divisi in due classi Periferiche a blocchi (block devices) Periferiche a carattere (character devices) Tipi di periferiche I dispositivi a blocchi (block devices) sono gestiti dal sistema come dispositivi di memorizzazione ad accesso casuale o diretto (es. dischi): un blocco può essere indirizzato, indipendentemente dagli altri, per un trasferimento (indirizzabilità del blocco) Il trasferimento dei blocchi si appoggia ai buffer (tramite il gestore dei buffer di memoria) che regolano il trasferimento dei dati con il file system. I blocchi sono individuabili prima e dopo il trasferimento I dispositivi a carattere (character devices) sono quelli ad accesso sequenziale nei quali l indirizzamento di un blocco non è significativo. Questi dispositivi interagiscono direttamente con il file system In generale il trasferimento avviene carattere per carattere (es. terminali...). Il trasferimento può anche avvenire a blocchi di byte (es. stampanti) ma sempre sequenzialmente. I blocchi sono significativi solo durante il trasferimento stesso 3 4 Pag. 2 2

Tipi di device driver I gestori di periferiche (device drivers) sono divisi in due classi: Gestori di periferiche a blocchi (block device drivers) Gestori di periferiche a carattere (character device drivers) I gestori a carattere interagiscono direttamente solo con il file system. I gestori a blocchi interagiscono anche con il gestore della memoria ( in particolare con il gestore dei buffer di memoria). Connessioni con il file system File System Buffer Cache Character Block Device Drivers Devices hardware 5 6 Pag. 3 3

PROGR RAMMI APPLICATIVI SVC GESTO ORE SVC FILE SYSTEM NUCLEO GESTIONE PROCESSI Servizi del F.S: Read, Write, Open, ecc Sleep_on, Wakeup, Change, Preempt, Se ervizi di G.P.: Fo ork, Exec, Wait, Exit GESTORI PERIFERICHE E GES STIONE MEM MORIA Servizi di gestione periferiche Routine di I nterrupt Gestion ne Buffer Buffer Cache Interrupt PERIFERICHE MMU e MEMORIA File speciali (1) Ogni periferica installata nel sistema ha associato un file speciale (blocco o carattere) ed è identificata da una coppia di numeri <major, minor> I file speciali delle periferiche sono memorizzati nella directory /dev Esempio di visualizzazione della directory /dev: brw 1 root system 11, 65 re1a brw 1 root system 11, 66 re1b brw 1 root system 11, 67 re1c crwrwrw 1 root system 9, 5124 rmt0m crwrwrw 1 root system 9, 5120 rmt0l crw 1 root system 44, 6 rre0g 7 8 Pag. 4 4

File speciali (2) Un file speciale può essere creato solo dall amministratore di sistema (root) tramite la primitiva: mknod (pathname, type, major, minor) Type corrisponde a b block device o c character device I valori del major e del minor number sono posti all interno dell inode che rappresenta il file speciale (l inode di un file speciale non contiene puntatori a blocchi di dati) Esempio di utilizzo: mknod /dev/tty5 c 4 5 mknod /dev/lp0 c 6 0 9 File speciali (3) Tutte le periferiche dello stesso tipo, cioè gestite dallo stesso driver hanno lo stesso major number e quindi condividono gli stessi servizi Il minor number serve invece a identificare le diverse periferiche dello stesso tipo L esecuzione del servizio richiesto ad una periferica è parametrizzata tramite major e minor number L accesso alle periferiche è attuato tramite le chiamate di accesso ai file (open, close, read, write...) specificando il descrittore associato al file speciale Esempio: invio del contenuto di buffer alla stampante /dev/lp0: fd = open( /dev/lp0, O_WRONLY); write(fd, buffer, buffer_length); close (fd); 10 Pag. 5 5

Struttura di un driver (1) Le principali funzioni di un driver di periferica (device driver) sono: inizializzazione del dispositivo alla partenza del Sistema Operativo gestione dello stato della periferica (in servizio/fuori servizio) ricezione e/o trasmissione dati dalla periferica gestione degli errori gestione degli interrupt da periferica 11 Struttura di un driver (2) Ogni driver può essere visto come costituito da una routine di inizializzazione che esegue delle operazioni di inizializzazione del driver un insieme di routine che costituiscono i servizi eseguibili e implementati per quel tipo di periferica la routine di risposta all interrupt attivata dall interrupt della periferica, il cui indirizzo viene inserito nel corrispondente vettore di interrupt 12 Pag. 6 6

Struttura di un driver (3) Ogni device driver ha associata una tabella delle operazioni, realizzata tramite la struct file_operations, che contiene i puntatori alle routine di servizio del driver stesso struct file_operations { int (*lseek) ( ); int (*read) ( ); int (*write) ( ); int (*ioctl) ( ); int (*open) ( ); void (*release) ( ); } La funzione di inizializzazione di ogni driver di periferica, al termine dell operazione di inizializzazione, restituisce al S.O. (nucleo) un puntatore alla propria tabella delle operazioni 0 lseek 1 read 2 write open 13 Strutture dati del nucleo per la gestione dei device driver Alla partenza del S.O. viene attivata una funzione di inizializzazione per ogni gestore di periferica installato La funzione restituisce al nucleo da parte di ogni driver, il puntatore alla tabella delle operazioni del driver L interfaccia tra sistema operativo e driver è descritta da due tabelle: Block device switch table tabella driver per i dispositivi a blocchi Character device switch table tabella driver per i dispositivi a carattere Ogni tipo di dispositivo ha una riga nella corrispondente tabella che indirizza al driver corrispondente (contiene quindi il puntatore alla tabella delle operazioni del driver passato al termine dell inizializzazione) In pratica, dato il major number associato al driver, si accede alla riga della tabella corrispondente che contiene il puntatore alla tabella delle operazioni del driver che consente di trovare l indirizzo di una qualsiasi routine di servizio del driver corrispondente 14 Pag. 7 7

Driver di periferica open close read write ioctl open close read write mount unmount buffer Char device switch table Block device switch table Driver Gestore interrupt dispositivo vettore di interrupt Interrupt dispositivi Driver Gestore interrupt dispositivo vettore di interrupt 15 Chiamate di sistema e driver Le chiamate di sistema fanno riferimento a un descrittore di file (o al nome) che consente, attraverso la tabelle dei file aperti, di identificare il corrispondente inode associato al file speciale L inode di un file speciale identifica il tipo (a carattere o a blocchi) di file speciale e contiene i valori del major e minor number. Il major number (contenuto nell inode) indirizza la riga corretta della tabella dei driver per dispositivi a blocchi o a carattere Il servizio richiesto (read, write,ecc.) identifica la colonna della tabella delle operazioni associata al driver. Al servizio viene passato come parametro il numero di identificazione univoca del dispositivo (minor number), anch esso contenuto nell inode 16 Pag. 8 8

Indirizzamento di una routine di servizio di un driver A livello di processo: invocazione di open (/dev/tty1, ) che si traduce in una SVC A livello di S.O.: attivazione di open ( ) nel File System ricerca tramite il nome del file dell i node corrispondente inode del file speciale a car. /dev/tty1 major=4, minor=1 Tabella dei driver a carattere 0 1 2 3 4 5 Tabella delle operazioni del driver 4 0 lseek 1 read 2 write open Funzione open del driver 4 lancio in esecuzione della routine open con il minor =1 17 Principi di funzionamento per driver a carattere Scrittura e lettura nel caso di periferiche gestite a interrupt: 1. Quando un processo P richiede un servizio ad una periferica X, se X non è pronta, il processo P viene posto in stato di attesa e un altro processo Q viene posto in esecuzione. 2. Quando la periferica X sarà pronta, invierà un interrupt per segnalare l evento che porterà P dallo stato di attesa allo stato di pronto 3. L interruzione si verifica nel contesto di un processo Q diverso da quello che ha invocato il servizio della periferica e che si trova in attesa dell evento associato all interrupt stesso Le routine del driver devono memorizzare temporaneamente t i dati che devono inviare (o devono ricevere) alla periferica in un buffer del driver allocato appositamente 18 Pag. 9 9

Esempio di scrittura su una periferica (1) 1. Il processo richiede un servizio di scrittura di N caratteri tramite una write ( ) su stampante. Viene attivato il S.O. che attraverso il major, associato al dispositivo stampante, attiva la routine write del driver specificando il minor 2. La routine write del driver copia i dati dallo spazio utente nel buffer del driver. I dati copiabili sono pari alla dimensione B del buffer del driver 3. La routine write esegue la OUT del primo carattere da buffer a stampante 4. La routine di write deve attendere che la stampante abbia stampato il carattere e sia pronta a ricevere il prossimo. La routine write invoca la Sleep_on per sospendere il processo in attesa che la stampante sia pronta a ricevere il prossimo carattere da stampare. Un nuovo processo viene mandato in esecuzione 5. La stampante genera un interrupt, segnalando che è pronta a ricevere un nuovo dato 19 Esempio di scrittura su una periferica (2) 6. Viene attivata la routine di risposta all interrupt associata al driver della stampante. Se nel buffer esistono altri caratteri da stampare, esegue una nuova OUT e termina (IRET da interrupt). La routine di risposta all interrupt viene attivata tante volte quanti sono i caratteri presenti nel buffer da stampare 7. Quando il buffer del driver è vuoto, la routine di risposta all interrupt invoca la funzione wake_up che risveglia il processo nella routine write. 8. wake_up ha svegliato il processo ponendolo in stato di pronto. Prima o poi il processo verrà posto in esecuzione e riprende la routine write. Se esistono altri caratteri da stampare (N>B), la routine write copia i rimanenti caratteri nel buffer del driver e ritorna al passo 2, altrimenti procede al passo 9. 9. Se i caratteri da stampare sono terminati, la routine write torna al gestore di SVC e si esegue il ritorno al modo U del processo (IRET da SVC). 20 Pag. 10 10

Scrittura 1 (SVC) 9 (IRET) Processo che richiede servizio di scrittura di N caratteri write 2 C caratteri = min (N, B) 4 sleep_on (E) 8 buffer del driver (B caratteri) wakeup(e) 7 6 3 1 carattere routine di interrupt 21 5 Pronta! stampante Driver dei dispositivi a blocchi Nei driver dei dispositivi a blocchi, la lettura da disco di un blocco viene invocata dal gestore dei buffer di sistema (buffer cache) in funzione delle richieste del file system Il gestore dei buffer di sistema richiede al driver del disco la lettura o scrittura di un certo numero di settori del disco (corrispondenti ad un blocco). Il gestore dei buffer deve quindi fornire al driver del disco: l indirizzo del settore iniziale su disco il numero di settori da trasferire l indirizzo del buffer di sistema per l operazione Tali parametri costituiscono i l inizializzazione i i li i del DMA per il trasferimento t di quel particolare blocco. Il gestore dei buffer accoda le richieste e procede nell elaborazione L interrupt di fine DMA viene utilizzato dal gestore dei buffer per considerare conclusa un operazione di trasferimento di un blocco 22 Pag. 11 11

Tabella driver dispositivi a blocchi Major number Open Close Read Write Mount Unmount 1 2 3 4 5 6 Driver 0 Driver 1 Driver 2 Indirizzo della routine del driver 2 23 Pag. 12 12