Input/output. Sistemi Operativi Lez. 12. Corso: Sistemi Operativi Danilo Bruschi A.A. 2014/2015

Documenti analoghi
Input/output. Sistemi Operativi Lez. 32. Corso: Sistemi Operativi Danilo Bruschi A.A. 2011/2012

Input/output. Sistemi Operativi Lez. 11. Corso: Sistemi Operativi Danilo Bruschi A.A. 2013/2014

Input/output. Sistemi Operativi Lez. 32. Corso: Sistemi Operativi Danilo Bruschi A.A. 2009/2010

Input/output. Sistemi Operativi Lez.14. Corso: Sistemi Operativi Danilo Bruschi A.A. 2006/2007

Sistemi Operativi. Bruschi Martignoni Monga. La gestione. Concetti generali Comandi Interrupt Pila sw Deadlock Gestione dei deadlock

Input/output. Sistemi Operativi Lez. 21. Corso: Sistemi Operativi Danilo Bruschi A.A. 2009/2010

Struttura dei Sistemi di Calcolo

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Trasparenze del Corso di Sistemi Operativi

Architettura dei sistemi di elaborazione (Input/Output parte 1)

Struttura dei Sistemi di Calcolo

PD-32. Connessione di dispositivi esterni (periferiche)

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

Sistemi operativi 2003/2004. Input e output

Dispositivi di I/O. Dispositivi di I/O

ISA Input / Output (I/O) Data register Controller

Livelli del sottosistema di I/O

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

Input / Output. M. Dominoni A.A. 2002/2003. Input/Output A.A. 2002/2003 1

Dispositivi di I/O. Dispositivi di I/O. Prestazioni degli hard disk. Dispositivi di I/O (2) Architetture dei Calcolatori (lettere A-I)

Sottosistemi ed Architetture Memorie

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

Periferiche CPU. Misure e Sistemi Microelettronici Sistemi 6-1 SREG. Data Bus Address Bus Control Bus

Sistemi Operativi. Sottosistema di I/O

I dispositivi di input/output

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Input/Output (Cap. 7, Stallings)

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA COMPITI DEL SOTTOSISTEMA DI I/O ARGOMENTI

Il sistema di I/O. Sistemi Operativi 13.1

Modulo 10: Gestione dei dispositivi di I/O

LA GESTIONE DELLA I/O

Il problema dello I/O e gli Interrupt. Appunti di Sistemi per la cl. 4 sez. D A cura del prof. Ing. Mario Catalano

Gestione dell I/O. Nuovo Corso di Calcolatori Elettronici I. Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II

Input/Output. Livelli del sottosistema di I/O

ARCHITETTURA DEL CALCOLATORE

Input/Output. Input/Output

Il sistema di Input/Output

Università degli Studi di Cassino

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Tecniche di gestione dell I/O

Sistemi Operativi. Sottosistema di I/O

Il sistema di I/O. Calcolatori Elettronici

Gestione periferiche I/O

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Input / Output. M. Dominoni A.A. 2004/2005. Input/Output A.A. 2004/2005 1

Tipi di Bus. Bus sincrono. Comunicazioni nell elaboratore (e oltre) Bus sincroni e asincroni Standard commerciali (PCI,SCSI,USB)

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

Architettura di una CPU

Architettura dei calcolatori

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

BIU - Bus Interface Unit. EU - Execution Unit. indipendente e asincrono: Costituito da due unità che operano in modo parzialmente

memoria virtuale protezione

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.

Input/Output. bus, interfacce, periferiche

Influenza dell' I/O sulle prestazioni (globali) di un sistema

verso espandibili eterogenei tempo di accesso tempo di risposta throughput

Capitolo2: Architettura del calcolatore

I bus. Sommario. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Università degli Studi di Milano

La gestione del clock in Minix

Architettura di un calcolatore: primi cenni introduttivi

Input/Output. bus, interfacce, periferiche

Sistemi operativi. Lez. 18 Interrupt ed Eccezioni in IA-32. Corso: Sistemi Operativi Danilo Bruschi A.A. 2010/2011

Incremento prestazioni

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Indice lezione: repeat. until CPU halt. Richiami e notazioni:

Architettura di von Neumann

I dispositivi di input/output

Lezione 3: AVVISI IMPORTANTI. Compiti del S.O. Architettura di un Sistema di Calcolo. Come interagiscono hardware e sistemi operativi

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S Microprocessori - Microcontrollori.

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008

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

INTERFACCE MEMORY-MAPPED. Grazia Pagano DMI, Seminario di Sistemi dedicati 8 Gennaio 2018

Corso di Calcolatori Elettronici I Interruzioni ing. Alessandro Cilardo

6: Macchina di Von Neumann

Secondo biennio Articolazione Informatica Sistemi e Reti Prova Terza

Input/Output. bus, interfacce, periferiche

Capitolo 2. Elaborazione dei dati. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

A controllo di programma diretto A controllo di programma con polling Ad interruzione Ad accesso diretto alla memoria (DMA)

Strutture dei sistemi di calcolo

Indice lezione: Pagina 2

Si pone allora il problema fondamentale: come far dialogare la CPU con le periferiche nel modo più efficiente possibile CPU

CALCOLATORI ELETTRONICI II

Architettura di un sistema di calcolo

La CPU e la Memoria. Sistemi e Tecnologie Informatiche 1. Struttura del computer. Sistemi e Tecnologie Informatiche 2

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 7 Input/Output

Sistemi Operativi. Input/Output

Contenuti. Introduzione. Interfacciamento su Porta Parallela. Introduzione Hardware Software Applicazioni Sistemi Operativi Links

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver

Cenni sull architettura del calcolatore

Sommario. Gestione dell I/O e Scheduling dei Dischi. Categorie di Dispositivi di I/O. Human readable

Microcontrollori 12/03/2014. Progettazione Sistemi Elettronici 2013/2014 1

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo. Classificazione. I microcontrollori

L input/output. Architettura degli Elaboratori e delle Reti

I dischi ottici. Fondamenti di Informatica -- Rossano Gaeta

Transcript:

Input/output Sistemi Operativi Lez. 12 1

Ruolo del SO Le periferiche di I/O sono i dispositivi attraverso i quali un calcolatore scambia dati/ interagisce con la realtà esterna Per ogni periferica collegata ad un calcolatore il SO deve essere in grado di Inviare comandi alla periferica Acquisire dati dalla periferica (periferica di input) Inviare dati alla periferica (periferica di output) Gestire errori Per capire come possono essere realizzate queste funzionalità è necessario conoscere i principi di funzionamento di una periferica 2

Velocità di trasferimento 3

Dispositivi di I/O I dispositivi di I/O hanno: Una componente meccanica Una componente elettronica La componente elettronica chiamata device controller impartisce comandi al dispositivo fisico (drive/device) e ne controlla la corretta esecuzione L insieme dei comandi impartiti dal controller al device, il loro formato, i codici di errore riportati definiscono l interfaccia tra il device ed il dispositivo Un controller può controllare più device purché abbiano la stessa interfaccia Interfacce famose: IDE (Integrated Device electronics, SCSI (Small Computer System Interface), USB (Universal Serial BUS) 4

Tipi di Device I dispositivi possono essere suddivisi in due grosse categorie in funzione delle modalità con cui manipolano i dati su cui operano: Dispositivi a blocchi: memorizzano e trasferiscono le informazioni in blocchi di dimensione fissa, e ciascun con un suo indirizzo. La dimensione del blocco varia da 512-32,768 byte Dispositivi a carattere: memorizzano e trasferiscono stringhe di byte senza riferimento ad alcuna struttura di blocco Il clock è un dispositivo di I/O che non ricade in nessuna delle due predette categorie 5

Device Controller Interposti tra il SO e la periferica, offrono un interfaccia di comunicazione tra i due mondi Possono essere programmati usando appositi registri ed in alcuni casi data buffer Caricando opportune sequenze di bit all interno di questi registri, il sistema operativo può richiedere l esecuzione di comandi il cui risultato può essere prelevato sempre attraverso questi registri L insieme di comandi usati per comunicare con il controller, il loro formato, ed i codici di errore costituiscono l interfaccia del controller verso il sistema operativo, questa interfaccia è devicedependent 6

Device Controller 7

A Typical PC Bus Structure 8

Comunicare con il controller Al controller vanno impartiti ordini specifici Come fa un programmatore a svolgere questa operazione? I problemi da affrontare sono due: Accedere ai registri del controller dipende dalle modalità di I/O mapping» Memory-mapped I/O» Isolated I/O Sincronizzarsi con un controller Programmed I/O & Polling Direct memory access (DMA) Interrupt-driven I/O 9

Memory mapped I/O I controller condividono lo spazio fisico della memoria, cioè ai registri dei controller sono assegnate determinate locazioni di memoria centrale Le operazioni di I/O sono le stesse operazioni usate per la gestione delle memoria (LW,SW) Non esiste alcuna istruzione particolare di I/O A livello hw è necessario prevedere degli opportuni meccanismi (I/O bus, linee dedicate) per discernere gli indirizzi di I/O da quelli relativi alla memoria 10

Isolated I/O Le spazio degli indirizzi dei controller è diverso da quello della memoria centrale Si adottano istruzioni di I/O dedicate alla manipolazione dei registri del controller 11

I/O in INTEL: sistema ibrido I/O port: ad ogni registro è assegnato un numero di 8/16 bit, che specifica la porta di I/O corrispondente a cui ci si riferisce usando istruzioni dedicate di I/O Es. movb outb $0x20, %al %al, 0x20 Sistema ibrido: Buffer dati memory mapped Registri di controllo come I/O port 12

Keyboard Controller Pins P10-P17 is the controllers input port. Pins P20-P27 is the controllers output port. And pin T0-T1 is the controller test port. The exact meaning of these pins depend on the mode of operation the controller is in. 13

Keyboard Registers I registri per la gestione della tastiera sono: Input buffer (8bit- read only) contiene i dati provenienti dalla tastiera; Output buffer (8bit write only) contiene i dati (tipicamente comandi) che devono essere inviati alla tastiera Status register 8bit status flags; read-only Command register 8bit read/write La prima coppia di registri è presente su un controller della Keyb l altra sull 8042 (di fatto ci sono due controller per la tastiera ) 14

Keyboard Port 15

Registri keyb Status Register: fornisce informazioni sullo stato della tastiera IN_BUF: può essere usato per leggere: Scancode Valori di ritorno di operazioni svolte Massaggi per il protocollo di comunicazione tra 8042 e tastiera: ACK, Resend, ecc OUT_BUF: può essere usato per scrivere: Comandi alla keyb attraverso l indirizzo 0x60 Argomenti dei comandi attraverso l indirizzo 0x60 Comandi al controller attraverso l indirizzo 0x64 16

Status register 17

Leggere un dato da tastiera (con Int. disabilitati) Quando la tastiera riceve un dato, il relativo codice (scan code) viene inserito nel buffer di input ed il flag IBF viene settato a 1. La tastiera non acquisirà più alcun dato sino a che il buffer non sarà svuotato Per acquisire il dato letto è quindi necessario testare il valore di IBF e quando questi è == 1 acquisire il dato dal buffer di input Waitloop: inb 0x64,%al and $0x02,%al jz Waitloop inb 0x60,%al 18

Inviare comandi al controller Il sistema operativo può inviare un comando al controller attraverso la porta 0x64, prima di inviare il comando è però necessario verificare che il buffer di input sia vuoto e quindi IBF == 0 Waitloop: inb 0x64,%al and $0x02,%al jnz Waitloop movb $0xAD,%al outb %al,0x64 19

Comandi controller 20

Maschere per status register enum KYBRD_CTRL_STATS_MASK { }; KYBRD_CTRL_STATS_MASK_OUT_BUF = 1, //00000001 KYBRD_CTRL_STATS_MASK_IN_BUF = 2, //00000010 KYBRD_CTRL_STATS_MASK_SYSTEM = 4, //00000100 KYBRD_CTRL_STATS_MASK_CMD_DATA = 8, //00001000 KYBRD_CTRL_STATS_MASK_LOCKED = 0x10, //00010000 KYBRD_CTRL_STATS_MASK_AUX_BUF = 0x20, //00100000 KYBRD_CTRL_STATS_MASK_TIMEOUT = 0x40, //01000000 KYBRD_CTRL_STATS_MASK_PARITY = 0x80 //10000000 21

Leggi status register enum KYBRD_ENCODER_IO { KYBRD_ENC_INPUT_BUF = 0x60, }; KYBRD_ENC_CMD_REG = 0x60 enum KYBRD_CTRL_IO { KYBRD_CTRL_STATS_REG = 0x64, }; KYBRD_CTRL_CMD_REG = 0x64 //! read status from keyboard controller uint8_t kybrd_ctrl_read_status () { } return inportb (KYBRD_CTRL_STATS_REG); 22

Send command /! send command byte to keyboard controller void kybrd_ctrl_send_cmd (uint8_t cmd) { //! wait for kkybrd controller input buffer to be clear while (1) if ( (kybrd_ctrl_read_status () & KYBRD_CTRL_STATS_MASK_IN_BUF) == 0) break; outportb (KYBRD_CTRL_CMD_REG, cmd); } 23

Read data /! Read input buffer from keyboard void kybrd_read_data (uint8_t data) { //! wait for kkybrd controller input buffer to be clear while (1) if ( (kybrd_ctrl_read_status () & KYBRD_CTRL_STATS_MASK_IN_BUF) == 0) break; data = inportb (KYBRD_CTRL_STATS_REG); } 24

I/O port INTEL 25

Modalità di comunicazione tra controller e driver

Programmed I/O & Polling Periodic Polling: in alcuni casi, il driver verifica periodicamente se un dispositivo è pronto ad operare, in caso affermativo procede altrimenti si blocca e ripete l operazione ad intervalli di tempo prefissati Es: un mouse USB deve essere interrogato con una frequenza di 100 Hz Continuous polling: all interno del driver è presente un loop di busy waiting che continuamente verifica se il dispositivo è pronto o meno ad accettare dati o comandi, oppure a produrre un output 27

Continuous Polling (Controllo Programma) 28

Interrupt Driven I/O I registri di controllo di un device controller posseggono almeno uno status bit che indica se un operazione di ouput è stata completata oppure se c è un nuovo dato da consumare Nelle periferiche più sofisticate insieme a questi bit viene asserita una linea di IRQ sul bus di sistema Quindi ogni volta che si inserisce un nuovo controller su un sistema va indicato l IRQ di riferimento, per evitare conflitti questa scelta viene spesso demandata al BIOS in fase di boot 29

Keyboard interrupt 30

Interrupt driven I/O 31

Interrupt-driven I/O 32

DMA-CPU La CPU (il driver) programma il DMA controller, predisponendone i registri con i seguenti dati: indirizzo di memoria da dove prelevare o depositare i dati; Numero di byte da acquisire/prelevare Informazione di controllo (read/write) Dopodiché riprende la normale operatività Il DMA controller prende il controllo del memory bus direttamente e impartisce i comandi all I/O controller per effettuare lo spostamento di dati richiesto dalla CPU Il Disk controller transferisce i dati in memoria principale Terminato il trasferimento il disk controller invia un ACK al DMA controller Il DMA controller invia un interrupt al processore per avvertirlo del completamento dell operazione 33

Six Step Process to Perform DMA Transfer Silberschatz, Galvin and Gagne 2005 34

DMA PRO Allegerisce la CPU dall overhead imposto dalla gestione degli interrupt nel caso di periferiche veloci CONS Il DMA è in genere più lento della CPU, in molti sistemi la CPU (più lenta) si trova spesso in attesa del DMA Il DMA aumenta i costi del sistema 35

Maximum Transfer Rate Worst-Case Latency Hardware Cost Software Complexity Polled Waiting Loop Unpredictable Interrupt- Driven Slowest Direct Memory Access Fastest Best Least Low Moderate Low Moderate Moderate Copyright 2000, Daniel W. Lewis. All Rights Reserved.

Polled Waiting Loops Test device status in a waiting loop before transferring each data byte. Maximum data rate: Time required to execute one iteration of the waiting loop plus the transfer. Latency: Time from device ready until the moment that the CPU transfers data. Unpredictable - no guarantee when the program will arrive at the waiting loop. Copyright 2000, Daniel W. Lewis. All Rights Reserved.

Estimating Performance Performance limited by memory bandwidth (bytes/second): Typical memory cycle time 60 ns = 60 10-9 sec. Determines how fast instructions can be fetched. We ignore speedup due to cache, so estimate is pessimistic. Copyright 2000, Daniel W. Lewis. All Rights Reserved.

Maximum Data Rate (Polled Waiting Loop) Time for one iteration of waiting loop plus subsequent I/O transfer: memory cycles: 300 ns I/O cycles: 60 ns total time: 360 ns maximum data rate = 2.78 MB/Sec Fastest serial I/O: = 115,000 bps 10 KB/Sec. = 1/360 ns per byte Copyright 2000, Daniel W. Lewis. All Rights Reserved.

Interrupt-Driven I/O Hardware interrupt request occurs: CPU finishes the current instruction and then initiates an interrupt response sequence. Interrupt Response Sequence: CPU pushes flags and return address, disables interrupts, reads an interrupt type code from the requesting device, and transfers control to the corresponding Interrupt Service Routine. Interrupt Complete: Interrupted code continues where it left off as if nothing happened. Interrupt Service Routine: 1. Re-enable higher priority interrupts. 2. Preserve CPU registers. 3. Transfer data (also clears the interrupt request). 4. Re-enable lower priority interrupts. 5. Restore CPU registers. 6. Pop flags and return address and return to interrupted code. Copyright 2000, Daniel W. Lewis. All Rights Reserved.

Interrupt-Driven Latency Time to finish longest instruction Time of hardware response Time in ISR until data is transferred. Copyright 2000, Daniel W. Lewis. All Rights Reserved.

Total Time Per Byte Time to Execute Longest Instruction Hardware Response Time to Execute the entire Interrupt Service Routine PUSHA: 0.54 µs 0.45 µs 0.84 µs Total time per transfer = 1.95 µs Maximum Data Rate = 1/1.95 µs = 0.513 MB/Sec Copyright 2000, Daniel W. Lewis. All Rights Reserved.

Estimate Summary Polled Waiting Loop Interrupt- Driven Worst-Case Latency Unpredictable Maximum Data Rate 2.78 MB/Sec 1.26 µs 0.513 MB/Sec DMA?? Copyright 2000, Daniel W. Lewis. All Rights Reserved.

Estimate Summary Polled Waiting Loop Interrupt- Driven Worst-Case Latency Unpredictable Maximum Data Rate 2.78 MB/Sec 1.26 µs 0.513 MB/Sec DMA 0.06 µs 66.7 MB/Sec Copyright 2000, Daniel W. Lewis. All Rights Reserved.

I/O sw system Il sottosistema per la gestione dell I/O viene solitamente strutturato in 5 livelli, ciascuno formato da diverse componenti 45

Interrupt Handler Gli Interrupt handler sono la parte più nascosta dell architettura e sono caratterizzati da stretti vincoli di tempo, eseguono quindi lo stretto necessario per Acquisire i dati dell ultima operazione di I/O Predisporre le condizione per garantire l esecuzione delle prossima operazione di I/O Risvegliare il driver della periferica che stava attendendo il completamento dell operazione di I/ O 46

Device Driver Ogni periferica è caratterizzata da un proprio insieme di registri e di comandi, affinché la periferica funzioni correttamente è necessario che registri e comandi siano correttamente predisposti e impartiti Il device driver è un programma che svolge esattamente queste funzioni Esiste un device driver per ogni periferica solitamente realizzato dal costruttore della periferica stessa Solitamente concepito come parte del kernel, per consentire l accesso rapido alle periferiche, in Minix i driver operano in user mode 47

Device driver Il driver costituisce quindi l interfaccia tra il SO e il controller della periferica Riceve dal device independent sw la richiesta per l esecuzione di comandi d alto livello, che traduce in una sequenza di comandi per il controller Avvia il controller e resta in attesa di essere risvegliato da un interrupt, tramite l interrupt handler 48

A Kernel I/O Structure 49

Device-Independent I/O Software Scopi: Fornire un interfaccia standard alle applicazioni per la gestione dell I/O fornire le funzionalità comuni a tutti i dispositivi di I/ O Uniform interfacing for device drivers Buffering Error reporting Allocating and releasing dedicate devices Providing a device-independent block size 50

Interfaccia verso i driver l l Interfaccia Driver-SO: le funzioni che il driver deve mettere a disposizione e le funzioni di kernel che può chiamare Un interfaccia uniforme facilita la stesura di driver, e rende possibile l aggiunta di driver senza ricorrere alla modifica del kernel 51

Device-Independent I/O Software Uniform naming: si preoccupa di mappare il nome simbolico di un dispositivo nel corrispondente driver Buffering: si preoccupa di gestire la diversità tra i dati acquisiti da un dispositivo e i dati richiesti da un applicazione Error Reporting: si preoccupa di fornire un interfaccia comune verso i diversi messaggi di errore che possono derivare dai driver, a seguito di errori nei dispositivi 52

Device-Independent I/O Software Allocating/Releasing : si preoccupa di allocare deallocare l uso di risorse ai processi utente, funzionalità particolarmente critica per risorse non condivisibili, a causa del deadlock Device independent block size: nasconde al livello superiore alcuni dettagli implementativi come ad esempio la diversa dimensione dei blocchi 53

Riassumendo 54