Struttura interna del sistema operativo Linux

Documenti analoghi
CAP9. Device drivers

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)

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

Input/Output. Livelli del sottosistema di I/O

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

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

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

Organizzazione di un SO monolitico

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

LA GESTIONE DELLA I/O

Il software: Istruzioni per il computer

Il sistema di I/O. Sistemi Operativi 13.1

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

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

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Il Sistema Operativo. Informatica Sistema Operativo 1

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

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

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

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

1. Caratteristiche dello hardware

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

AXO Architettura dei Calcolatori e Sistemi Operativi

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

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

File System ext2. Struttura del filesystem ext2.

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

- Dispensa V - IL SISTEMA OPERATIVO

Directory. Le directory unix sono file.

Informatica Generale 06 - Introduzione ai Sistemi Operativi

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

Input/Output (Cap. 7, Stallings)

Lo strato di applicazione in Internet

Architettura degli elaboratori Docente:

Il software di sistema

Sistemi Operativi. Sottosistema di I/O

IL SOFTWARE DI SISTEMA

Struttura Logica del S.O:

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

Sistema operativo & file system 1

Il Sistema Operativo

Gestione di files Motivazioni

Architettura dei calcolatori e Software di sistema

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

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

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

IO 1 Input Output a livello Hardware

Struttura dei Sistemi di Calcolo

Reti (già Reti di Calcolatori )

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.

Linguaggio C: i file

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

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

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Sistemi Operativi. Lezione 4 I processi: implementazioni

File system: aspetti implementativi

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

Sistema Operativo (Software di base)

Linux la gestione dei dischi

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Personal Computer: introduzione

ACSO Programmazione di Sistema e Concorrente

Modi di esecuzione user / kernel

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

Sottosistema d ingresso uscita

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

I Processi nel SO UNIX

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

Sistemi Operativi. Sottosistema di I/O

Funzionamento dei sistemi di calcolo Struttura dell I/O Struttura della memoria Gerarchie delle memorie Architetture di protezione Strutture delle

Informatica 2 Esame di venerdì 2 marzo 2007

Lezione 2 Chiamate di procedura e risposta alle interruzioni

Esercizi per il recupero del debito formativo:

I THREAD O PROCESSI LEGGERI

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

Il sistema operativo

I SISTEMI OPERATIVI (1)

Esame di INFORMATICA Lezione 4

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

SISTEMI OPERATIVI DISTRIBUITI

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

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

Memoria cache, interrupt e DMA

I Processi nel Sistema Operativo Unix

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

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

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

I/O in Minix3. Sistemi Operativi Lez. 15

Componenti e connessioni. Capitolo 3

Francia dalla contrazione delle parole INFORmazione e automatica. Elaborazione e trattamento automatico delle informazioni INFORMATICA

Capitolo 6 Le infrastrutture SoftWare

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

Struttura dell elaboratore elettronico

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1

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

Corso di Calcolatori Elettronici I

Transcript:

Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04 Informatica II - Linux: i device driver 1

Device driver - gestori delle periferiche Interagiscono con il file system: 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 1-04.-04 Informatica II - Linux: i device driver 2

Connessioni con il file system File System Buffer Cache Carattere Blocco Driver dispositivi Controllori dei dei dispositivi hardware 1-04.-04 Informatica II - Linux: i device driver 3

PROGRAMMI APPLICATIVI SVC SuperVisor Call GESTORE SVC FILE SYSTEM Servizi del F.S: Read, Write, Open, ecc NUCLEO Sleep_on, Wakeup, Change, Preempt, GESTIONE PROCESSI Servizi di G.P.: Fork, Exec, Wait, Exit GESTORI PERIFERICHE GESTIONE MEMORIA Servizi di gestione periferiche Routine di Interrupt Gestione Buffer Buffer Cache PERIFERICHE Interrupt MMU e MEMORIA

Tipi di periferiche In LINUX esiste un driver (gestore) per ogni tipo di periferica I tipi di periferiche sono divise in due classi Periferiche a blocchi (block devices) Periferiche a carattere (charcter devices) I dispositivi a blocchi vengono gestiti dal sistema come dispositivi di memorizzazione ad accesso casuale (es. dischi, nastri... ) grazie alla presenza dei buffer che regolano il trasferimento dei dati con il file system. Un blocco può essere indirizzato, indipendentemente dagli altri, per un trasferimento I dispositivi a carattere sono tutti gli altri dispositivi e interagiscono direttamente con il file system, un carattere per volta (es. terminali...). Il trasferimento dei dati può avvenire a blocchi, ma i blocchi sono significativi solo durante il trasferimento stesso 1-04.-04 Informatica II - Linux: i device driver 5

File speciali e driver (1) I file speciali delle periferiche sono memorizzati nel direttorio /dev La visualizzazione del direttorio /dev è del tipo brw------- 1 root system 11, 65 re1a brw------- 1 root system 11, 66 re1b brw------- 1 root system 11, 67 re1c crw-rw-rw- 1 root system 9, 5124 rmt0m crw-rw-rw- 1 root system 9, 5120 rmt0l crw------- 1 root system 44, 6 rre0g 1-04.-04 Informatica II - Linux: i device driver 6

File speciali e driver (2) Ogni dispositivo ha associato un file speciale (blocco o carattere) ed è identificato da una coppia di numeri <major, minor> I file speciali possono venire creati solo dall amministratore di sistema (root) tramite la funzione mknod (pathname, type, major, minor) L accesso alle periferiche è attuato tramite le chiamate di accesso ai file (open, close, read, write...) Tutte le periferiche dello stesso tipo, cioè gestite dallo stesso driver hanno lo stesso major e quindi condividono gli stessi servizi L esecuzione del servizio richiesto è parametrizzata tramite il minor 1-04.-04 Informatica II - Linux: i device driver 7

Struttura del driver (1) Le principali funzioni di un driver di periferica sono inizializzazione del dispositivo alla partenza del Sistema Operativo e gestione dello stato della periferica (in servizio/fuori servizio) ricezione e/o trasmissione dati dalla periferica gestione degli errori gestione degli interrupt da periferica 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 1-04.-04 Informatica II - Linux: i device driver 8

Struttura del driver (2) Ogni driver ha associata una tabella, 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, restituisce al S.O. (nucleo) un puntatore alla propria tabella delle operazioni 1-04.-04 Informatica II - Linux: i device driver 9

Strutture dati del nucleo per i driver 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 tabella appropriata, che indirizza al driver corrispondente (contiene il puntatore della tabella delle operazioni passato al termine dell inizializzazione) 1-04.-04 Informatica II - Linux: i device driver 10

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 1-04.-04 Informatica II - Linux: i device driver 11 ioctl = input/output control

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 1-04.-04 Informatica II - Linux: i device driver 11 ioctl = input/output control

Chiamate di sistema e driver Le chiamate di sistema fanno riferimento a un descrittore di file (o al nome) per il quale, attraverso la tabelle dei file aperti si identifica il corrispondente i-node. L i-node identifica il tipo di file speciale e indirizza alla riga della tabella dei driver per dispositivi a blocchi o alla tabella per dispositivi a carattere identificandone la riga attraverso un numero contenuto nell i-node (major number) Il servizio richiesto identifica la colonna della tabella che contiene l indirizzo della routine del driver che svolge questo servizio a cui viene passato come parametro il numero di identificazione univoca del dispositivo (minor number), anch esso contenuto nell i-node 1-04.-04 Informatica II - Linux: i device driver 13

Indirizzamento di una routine di servizio di un A livello di processo: invocazione di open (/dev/tty1, ) che si traduce in una SVC i-node del file speciale /dev/tty1 major=4, minor=1 driver A livello di S.O.: attivazionedi open ( ) nel File System ricerca tramite il nome del file dell inode corrispondente Tabella dei driver a carattere 0 1 2 3 4 5 Tabella delle operazioni del driver 4 0 1 2 lseek read write open Funzione open del driver 4 lancio in esecuzione della routine open con il minor =1 1-04.-04 Informatica II - Linux: i device driver 12

Principi di funzionamento per driver a carattere Scrittura e lettura nel caso di periferiche gestite a interrupt, l interruzione si verifica nel contesto di un processo diverso da quello che ha invocato il servizio della periferica le routine del driver possono memorizzare temporaneamente i dati che devono inviare (o devono ricevere) alla periferica in un buffer del driver allocato appositamente 1-04.-04 Informatica II - Linux: i device driver 14

Esempio di scrittura (1) Il processo richiede un servizio di scrittura di N caratteri tramite una write ( ). Viene attivato il S.O. che attraverso il major, associato al dispositivo stampante, attiva la routine write del driver specificando il minor 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 La routine write esegue la OUT del primo carattere da buffer a stampante 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 La stampante genera un interrupt, segnalando che è pronta a ricevere un nuovo dato Viene attivata la routine di risposta all interrupt associata al driver della stampante che, se nel buffer esistono altri caratteri da stampare, esegue una nuova OUT e termina. La routine di risposta all interrupt viene attivata tante volte quanti sono i caratteri presenti nel buffer da stampare 1-04.-04 Informatica II - Linux: i device driver 15

Esempio di scrittura (2) Quando il buffer è vuoto, la routine di risposta all interrupt invoca la funzione wakeup che risveglia il processo nella routine write. Se esistono altri caratteri da stampare (N>B), la routine write copia i rimanenti caratteri nel buffer del driver ed esegue la prima OUT e pone il attesa il processo tramite una nuova Sleep_on I caratteri vengono trasferiti dal buffer alla stampante tramite l attivazione della routine di risposta all interrupt, come visto prima. Quando il buffer è vuoto, la routine di risposta all interrupt invoca la funzione wakeup che risveglia il processo nella routine write. Se i caratteri da stampare sono terminati, la routine write esegue il ritorno al modo U del processo 1-04.-04 Informatica II - Linux: i device driver 16

Scrittura 1 9 Processo che richiede servizio di scrittura di N caratteri write 2 Ccaratteri 4 sleep_on (E) 8 wakeup(e) buffer del gestore (B caratteri) 7 routine di interrupt 5 6 3 stampante 1carattere 1-04.-04 Informatica II - Linux: i device driver 17

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 l inizializzazione del DMA per il trasferimento 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 1-04.-04 Informatica II - Linux: i device driver 18

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 1-04.-04 Informatica II - Linux: i device driver 19

Sintassi mknod Per creare un file speciale per il dispositivo /dev/ra2 a blocchi, con il major uguale a 1 ed il minor uguale a 2: mknod /dev/ra2 b 1 2 b=block device, c=character device, p=pipe file Per creare un file speciale per il dispositivo /dev/ttya2 a caratteri, con il major uguale a 2 ed il minor uguale a 1: mknod /dev/ttya2 c 2 1 b=block device, c=character device, p=pipe file 1-04.-04 Informatica II - Linux: i device driver 20

1-04.-04 Informatica II - Linux: i device driver 21