Sistemi Operativi Supporto allle applicazioni multimediali Dario Maggiorini (dario@di.unimi.it) A.A. 2018-2019
Il dato multimediale 1. Va consumato al volo È soft real time 2. Segue delle dinamiche tutte sue Posso tollerale delle perdite, ma dipende dal tipo di dato. Le perdite video vengono tollerate molto meglio di quelle audio 3. È analogico Mentre un calcolatore è digitale 4. Occupa un sacco di spazio Se però accetto di vedere/sentire male allora posso trovare un compromesso
È spesso una questione di rete Telefonia: la prima rete multimediale della storia (e provate a dire di no)
Cambiano le tecnologie, ma alla fine sempre li si rimane Dario Maggiorini (dario@di.unimi.it) moderna
E veloce disponibile Allo stesso modo in cui leggo dalla rete posso recuperare informazioni da un dispositivo hardware, i parametri in gioco non cambiano
Caratteristiche delle informazioni multimediali (all interno di un sistema operativo) Sono digitali (stanno in un file) Devo essere codificate in qualche modo Occupano un sacco di spazio Devo comprimerle (comprimere è un modo di codificare) Devo poterne garantire la fruizione in real time Se un video prevede 20 frame al secondo 20 devono essere Devono poter essere usate alla stregua di un media classico Ovvero, mi aspetto di fare pause, play, fast forward etc etc
Codifica di un dato multimediale Codifica à stabilire un formato digitale Senza, non si va da nessuna parte Vuol dire stabilire una corrispondenza tra informazione (analogica) e sequenze di bit per rappresentarla
Motivi per codificare Per dare sicurezza Proteggere il contenuto (cifratura) Proteggere la proprietà intellettuale Watermarking Steganografia Per dare affidabilità Una giusta codifica può aiutare a correggere gli errori di trasmissione NON vuol dire comprimere Una codifica che risparmia spazio siamo abituati a chiamarla compressione La compressione di un contenuto è un effetto collaterale (piacevole) di una codifica ben strutturata
Dumb coding Prendiamo un video 640 x 480, 25 fps, 60 secondi È meno di quello che potete fare con il vostro cellulare Codifico il filmato come una sequenza di frame Codifico ogni frame come una matrice di pixel Codifico ogni pixel in formato RGB (3 byte) Spazio necessario: 3 * 640 * 480 * 25 * 60 byte = 1.28 GB 640x480 Schermo iphone 7
Ottimizzazione dello spazio Esistono tecniche per creare delle associazioni tra un insieme di informazioni da rappresentare e stringhe binarie (bit) tali per cui il numero totale di bit utilizzati è minimo Codici a lunghezza media uniformemente minima (per gli amici, codifica di Huffman) Queste tecniche non fanno perdere informazioni; riducono solo lo spazio totale occupato Codifica lossless
Ridondanza Un sistema di codifica può tentare di scartare le informazioni inutili o che potrebbero essere ricostruite in maniera automatica Compressione lossy Ridondanza spaziale Come in un contenuto che prevede informazioni simili aggregate Zone di colore omogeneo in un immagine Ridondanza temporale I contenuti che evolvono nel tempo non variano enormemente in due istanti successivi In un video con una persona che parla non ho bisogno di mandare sempre anche lo sfondo
Correlazione orizzontale Dario Maggiorini (dario@di.unimi.it) Ridondanza spaziale Correlazione verticale
Ridondanza temporale
Ridondanza temporale
Come la vedete?
Non è così semplice La compressione dei dati è una cosa difficoltosa da trattare Dipende da parametri difficili da controllare: Dal mezzo con cui si fruisce del contenuto Da agenti fisiologici Da agenti psicologici
Il mezzo di fruizione Impone un limite tecnologico non evitabile, rischiamo di codificare/inviare delle informazioni che semplicemente non potranno essere fruite Video a colori a una televisione in bianco e nero Video 4K a un cellulare (non tutti) Audio stereo a un cellulare GSM
Parametri fisiologici Non tutte le informazioni hanno la stessa importanza per il nostro centro di raccolta (cervello) Di una figura percepiamo più facilmente la forma Di un suono siamo più sensibili alle variazioni istantanee Il cervello ricostruisce autonomamente parte dell informazione, ma per ogni senso lo fa con soglie e parametri diversi
Parametri psicologici L essere umano ha una strana tendenza a riconoscere gli oggetti istintivamente Non ci ragioniamo Lo facciamo a volte in base alla nostra esperienza Ci ricordiamo solo gli aspetti importanti Il cervello ricostruisce l informazione mancante, ma COME LA VORREMMO e non come realmente è
Audio e video Sono tipi di dati multimediali profondamente diversi e vanno trattati in maniera disgiunta Differenti vincoli Tecnici Frequenza e campionamento Fisiologici Sensibilità non uniforme o distribuita diversamente Psicologici Diversa tolleranza alla perdita dei dati
MPEG Non è la soluzione di tutti i mali, ma solo uno standard Ed è italiano, per giunta! Abbiamo dato delle regole alla compressione spaziale e temporale in maniera tale da non disturbare troppo la percezione dell utente medio Quanti musicisti ascoltano MP3? Quanti grafici professionisti non gradiscono i DVD?
Moving Picture Experts Group (MPEG) È una organizzazione fondata dalla ISO nel 1988 Ha il compito di definire gli standard per la compressione audio e video Di versioni di MPEG ce ne sono tante
MPEG-1 MPEG-2 MPEG-4 Dario Maggiorini (dario@di.unimi.it) Vari tipi di MPEG PS TS
La codifica MPEG È una codifica asimmetrica Lo standard detta solo le linee guida per la creazione di un byte-stream Il codificatore fa tutto il lavoro pesante e deve creare uno stream corretto Il decodificatore fa operazioni semplici e deve essere poco oneroso per il calcolatore Tenendo fisso lo standard, è possibile far evolvere parallelamente i due estremi Posso implementare codificatori più efficienti senza modificare il software di visualizzazione Posso creare nuovi player (e nuovi dispositivi) senza codificare nuovamente i contenuti
Codifica MPEG MPEG costruisce un video codificando una sequenza di fotogrammi Attenzione, non sono una sequenza di immagini jpeg; quello si chiama MJPEG Durante la codifica si punta ad eliminare il più possibile la ridondanza secondo certi parametri che vengono dati al sistema
Dario Maggiorini (dario@di.unimi.it) Ridondanza spaziale Codifiche separate e distinte vengono effettuate per i tre colori in formato YUV L immagine divisa in tessere di 8x8 viene ripulita delle basse frequenze (teniamo solo i contorni degli oggetti) In più, tutti i valori vengono espressi come differenza rispetto al primo Risultato finale: una serie di zeri che si comprimono tantissimo
Linearizzazione Un blocco, dopo essere stato trattato viene reso lineare (da matrice ad array) secondo questo schema: Ricordiamoci che in alto a sinistra si trova il valore più grande, mentre tutti gli altri contributi saranno spesso molto vicini a 0 Con queste condizioni di partenza la costruzione di un codice a lunghezza minima è molto efficiente
Questo però non basta Rimane ancora il problema della ridondanza temporale Si, perché quello appena descritto è il processo di creazione di una immagine JPEG 2000 Soluzione: Definiamo diversi tipi di frame e distinguiamo frame indipendenti (I) da altri che predicono (P) la variazione nel tempo Questa variazione può essere trasmessa come differenza di immagini o come lo spostamento di un rettangolo all interno dell immagine Questi rettangoli prendono il nome di macro-blocchi
Ridondanza temporale
Motion vector
Si può fare ancora di più La predizione non è in tutti i casi la soluzione migliore Pensate ad una automobile che scompare temporaneamente dietro un albero; perché dovremmo dimenticare di averla vista per poi ricostruirla? Definiamo un terzo tipo di frame bidirezionale (B) che descrive una scena per differenza con quelle sia precedenti che successive
B-Frame In pratica, prendiamo in prestito un macroblocco da un frame successivo (I o P) e ne diamo un motion vector rispetto al futuro
GOP Group Of Pictures Gli I-frame sono codificati indipendentemente Come immagini jpeg-2000 I P-frame sono codificati per differenza rispetto all I-frame che li precede Includono i vettori di movimento Codificano i cambiamenti dell immagine I B-frame sono codificati come differenza con gli I/P-frame che li precedeno/seguono (pensate ad una predizione bidirezionale )
Giusto per non confondersi Codifica e contenitore sono due cose profondamente diverse Una codifica esprime il modo in cui l informazione audio o video viene trattata (MPEG piuttosto che Wavelet) Un container dichiara la sintassi con cui i bit codificati vengono scritti in un file (.AVI piuttosto che.mov) Ovviamente, alcuni container sono progettati per ospitare in maniera più efficiente certi tipi di codifica È perfettamente possibile (anche se non molto ottimizzato) avere un video codificato in MPEG dentro in file.avi come avere un video codificato Wavelet dentro un file.mov
Per i curiosi S.R. Ely (BBC), "MPEG video coding, a simple introduction", EBU Technical Review, 1995 http://downloads.bbc.co.uk/rd/pubs/reports/1996-03.pdf No, non verrà chiesto all esame
E poi arrivò lo streaming Una moda degli anni 90 Un contenuto multimediale doveva essere fruito secondo un profilo controllato attraverso la rete Oggi, su alcuni libri, qualunque cosa circola sulla rete è in streaming In realtà, la discriminante è come i dati vengono prodotti Una webcam fa streaming verso la scheda grafica?
Streaming Main Entry: stream Pronunciation: \ˈstrēm\ Function: noun 1 : a body of running water (as a river or brook) flowing on the earth; also : any body of flowing fluid (as water or gas) 2 a : a steady succession (as of words or events) <kept up an endless stream of chatter> b : a constantly renewed or steady supply <a stream of revenue> c : a continuous moving procession <a stream of traffic> 3 : an unbroken flow (as of gas or particles of matter) 4 : a ray of light 5 a : a prevailing attitude or group <has always run against the stream of current fashion> b : a dominant influence or line of development <the influence of two streams of inheritance: genetic and cultural P. B. Baltes> 6 British : track
Streaming Si dovrebbe parlare di streaming tutte le volte che: Vi è del contenuto che cominciamo ad utilizzare prima che sia arrivato completamente L invio del contenuto avviene in maniera continua e asincrona fintanto che non è stato inviato tutto Il contenuto potrebbe essere infinito E la rete che fine ha fatto? È sparita! Perché, che ci sia di mezzo la rete o meno, i problemi sono sempre gli stessi
Cumulative data Dario Maggiorini (dario@di.unimi.it) Questa è una presa in giro (!) 1. video recorded 2. video retrieved processing delay 3. video playout time Storage streaming: at this time, consumer is playing out early part of video, while producer still creating later part of video
Cumulative data La dura realtà constant bit rate video video reception constant bit rate video playout variable processing delay buffered video prefetch delay time
Perché succede questo? Il tempo di trasferimento dal vostro hard drive (file system) non è regolare. E mai lo sarà! 1. Perché il sistema operativo sta facendo anche altro 2. Perché disco e video non sono sincronizzati 3. Perché gli interrupt non chiedono permesso a nessuno In più, per non farci mancare nulla, neanche i frame sono tutti uguali I, P e B hanno tempi di trasferimento diversi Sono di dimensioni diverse I, P e B hanno tempi di elaborazione diversi Abbiamo bisogno di tutti i B che precedono un P per elaborare il prossimo frame mentre un I è indipendente
Buffering L unico modo che un applicazione ha di rendere nuovamente regolare un contenuto multimediale è quello di farlo passare per un buffer I dati entrano come il sistema concede I dati escono secondo il profilo richiesto Hard drive and video device driver
Dimensionamento del buffer Troppo piccono non va bene C è troppo poco gioco tra ricezione e smaltimento dei dati Se non c è spazio, i dati in arrivo verranno scartati e persi Buffer overrun/underrun Troppo grande non va bene Sono risorse concesse dal sistema operativo Il dispositivo potrebbe non averle fisicamente Si introducono ritardi a volte inaccettabili
Cumulative data Buffer underrun constant bit rate video video reception variable processing delay buffer size constant rate video playout time
constant rate video playout time Dario Maggiorini (dario@di.unimi.it) Cumulative data Buffer overrun constant bit rate video video reception current size variable processing delay buffer size
E se perdiamo dei dati? Nessun problema, il dato multimediale è strutturato appunto per tollerare questo Basta semplicemente fornire dei dati a caso (rumore) o degli zeri (buio) e lui, prima o poi, ne uscirà Certo, a volte il risultato non è propriamente bello
E le funzionalità VCR? Nessuno di noi userebbe youtube senza la possibilità di andare avanti e indietro veloce o selezionare il punto di riproduzione A proposito, avete mai notato che: 1. Ci mette sempre un po a ripartire? 2. Non parte quasi mai esattamente dal fotogramma che avete scelto con tanta cura? La soluzione è semplice: buttiamo via il contenuto del buffer e lo ricarichiamo (quindi, punto 1) e poi, per evitare effetto mosaico ripartiamo dal frame I più vicino (e quindi punto 2) Quello di cui abbiamo bisogno è un modo efficiente per saltare da un frame I all altro
Possibili contromisure Per minimizzare i disturbi alla fruizione dei dati dobbiamo agire sul sistema operativo 1. Tempo di elaborazione il più costante possibile Serve uno scheduler specializzato 2. Tempo di estrazione più uniforme possibile Serve un file system specializzato 3. Funzionalità VCR senza problemi Di nuovo un file system specializzato
Processi multimediali I processi multimediali, per nostra fortuna, sono una categoria specifica di processi realtime: sono processi periodici Se genero 20 frame al secondo, allora ho bisogno dello scheduler necessariamente ogni ventesimo di secondo In più, ogni volta richiedo sempre lo stesso burst di CPU Come i processi real-time ragionano in termini di scadenze temporali (deadline), solo che in questo caso sono: 1. Ricorrenti 2. Note a priori Diciamo cioè che hanno un periodo noto
Processi periodici Possiamo in questo caso esprimere la condizione di schedulabilità in funzione di periodo e burst
RMS (Rate Monotonic Scheduling) È una politica di scheduling pensata appositamente per I processi periodici 1. Il burst di ogni processo deve essere terminato entro lo scadere del suo periodo 2. Non ci sono dipendenze tra processi 3. I burst richiesti sono sempre gli stessi ad ogni periodo 4. La prelazione della CPU si presuppone abbia un overhead negligibile 5. I processi non periodici (se ce ne sono) vengono schedulati solo se la CPU non ha altro da fare (non hanno deadline)
RMS RMS è un algoritmo di scheduling a priorità statica Ogni processo riceve una priorità inversamente proporzionale al periodo Processi con periodi brevi (ovvero, frequenza di esecuzione alta) verranno schedulati con precedenza In questo modo, il mio riproduttore CD a 44.1 KHz avrà una priorità più alta del decoder video che genera 20 frame al secondo (20 Hz)
RMS
RMS Funziona sempre? Ovviamente no Si dimostra formalmente che RSM funziona solo sotto la seguente condizione di schedulabilità: Inoltre % & ' "#$ * + 2 1 ( ' lim * + 2 1 =ln2=~0.7 % 3
EDS (Earliest Deadline First Scheduling) EDS è una variante di RMS che prevede priorità dinamiche Ogni processo riceve una priorità inversamente proporzionale al tempo rimanente alla sua deadline Con EDS non è più strettamente necessario che i processi siano periodici e neppure che abbiamo un burst sempre uguale Di fatto, è una politica di schedulazione real-time generica Può raggiungere un rendimento del 100% a fronte però di un algoritmo molto più complesso
EDS
File system con supporto multimediale Abbiamo di implementare un file system con due caratteristiche: Tempo di accesso ridotto al minimo Ma questo lo sappiamo già fare Facilità di passare da un punto all altro della riproduzione E, per questo, possiamo sfruttare le caratteristiche di MPEG
Minimo tempo di accesso Questa è facile: basta memorizzare tutti i file sul disco in modalità sequenziale Non a caso, avevamo già detto che si usa con CD, DVD e BLUERAY Ovviamente, tenendo conto di codifica e container
Manipolazione della riproduzione Aggiungiamo ai file dei metadati: un array di indici che puntano a dei segmenti di disco dove memorizziamo in maniera sequenziale un I-frame seguito da tutto il suo GOP Si parla di allocazione indicizzata La discriminante diventa allora la dimensione di un blocco di disco Dimensione blocco < dimensione GOP Uso un frame index Devo gestirmi delle allocazioni sequenziali Non ho spreco di spazio Dimensione blocco >= dimensione GOP Uso un block index Non ho bisogno di gestire allocazioni sequenziali Ho della frammentazione interna
Allocazione indicizzata GOP GOP
Da qui a fine corso 22/11 Seminario su digital transformation e cloud Stefano Inelli IT Director, Mediaset 4/12 Seminario su sistemi di virtualizzazione enterprise Simon Coter PM VirtualBox, Oracle EMEA 11/12 Seminario su opzioni avanzate di windows Michele Sensalari IT Specialist, Università di Milano Dario Maggiorini (dario@di.unimi.it)
Da qui a fine corso 18/12 Esercitazioni per la prima parte di orale Giacomo Cappellini Mio assistente, CNR Milano 20/12 Ricevimento in aula Dario Maggiorini (dario@di.unimi.it)