UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO TECNOLÓGICO E CIENTÍFICO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO Uma Implementação de Broadcast File System para Transmissão de Dados de TV Digital Relatório de Trabalho de Conclusão do Curso George Elias Ferreira da Silva Prof. Dr. Antônio Augusto Medeiros Fröhlich Orientador Florianópolis, novembro de 2007 Uma implementação de Broadcast File System para Transmissão de Dados de TV Digital Relatório de Trabalho de Conclusão do Curso George Elias Ferreira da Silva ___________________________________________ Prof. Dr. Antônio Augusto Medeiros Fröhlich Orientador Banca Examinadora: ___________________________________________ Msc. Lucas Francisco Wanner ___________________________________________ Hugo Marcondes SUMÁRIO LISTA DE FIGURAS LISTA DE TABELAS 1. INTRODUÇÃO...............................................................................................5 1.1. Objetivos..........................................................................................5 1.1.1 Geral....................................................................................5 1.1.2 Específicos..........................................................................5 1.2. Motivação e Justificativa..................................................................6 1.3. Organização do Trabalho.................................................................6 2. CAPÍTULO 2..................................................................................................7 2.1. Sistemas de Arquivos.......................................................................7 2.1.1 Armazenamento..................................................................7 2.1.2 Arquivos..............................................................................7 2.2. Sistema de Televisão Digital............................................................9 2.2.1 Subsistema de Transmissão e Recepção...........................9 2.1.2 Codificação de Dados.........................................................9 2.3. MPEG-2...........................................................................................11 2.3.1 Feixe de Tranposrte MPEG-2 (Transport Stream)..............11 2.3.2 DSM-CC.............................................................................11 2.3.3 Carrossel de Dados............................................................12 2.3.3.1 Download Data Messages...............................................12 2.3.3.2 Download Control Messages...........................................13 REFERÊNCIAS LISTA DE FIGURAS 2.1 – Codificador de Dados X Multiplexador......................................................14 CAPÍTULO 1 INTRODUÇÃO Este trabalho consiste no estudo e implementação de um broadcast file system que permita o armazenamento das informações em mídia persistente e permita a transmissão das informações através dos canais de televisão digital. 1.1. OBJETIVOS 1.1.1. GERAL Desenvolver um sistema de arquivos para transmissão de dados (Broadcast File System – BFS) de código aberto que possa ser utilizado por um carrossel de dados implementado seguindo as recomendações ISO/IEC 13818-6 e ITU-T H.222 como estabelecido para o Sistema Brasileiro de Televisão Digital Terrestre. 1.1.2. ESPECÍFICOS O BFS implementado será implementado como sistema de arquivos para o EPOS (Embedded Paralalel Operation System). Toda sua implementação e modelagem será feita com foco nos sistemas embarcados, que em geral possuem recursos, como memória, processamento e energia limitados. 1.2. MOTIVAÇÃO E JUSTIFICATIVA O Brasil possui em torno de 60 milhões de aparelhos de televisão, que com a chegada da televisão digital deverão ser trocados ou ligados a set-top boxes para que possam receber o sinal do Sistema Brasileiro de Televisão Digital Terrestre (SBTVD). Estes set-top boxes assim os multiplexadores e demultiplexadores fazem parte do mundo de sistemas dedidacos ou embarcados e necessitam de ferramentas adequadas para executarem suas funcionalidades. Como a televisão digital possui um canal para transmissão de dados, estes aparelhos necessitam de um Sistema de Arquivos específico em seu sistema operacional para tratar estar informações de acordo com as normas estabelecidas. O próprio sistema operacional deve ser pensado para tirar o máximo proveito dos aparelhos utilizados. Uma vez que os sistemas operacionais mais populares no mercado atendem com eficiência apenas os requisitos na área de computação de propósito geral, principalmente pelo fato de serem sistemas de grande extensibilidade [Fröhlich 2003], visto que as aplicações que irão rodar nele são desconhecidas de antemão. Esta abordagem torna-se inadequada ao mundo de sistemas embarcados, uma vez que em geral a aplicação é conhecida de antemão, podendo-se assim evitar todo o custo da extensibilidade de um sistema operacional de propósito geral, como acontece no escopo deste trabalho. Visando isso o sistema operacional EPOS, define um sistema altamente adaptável a aplicação para suportar sistemas de computação dedicados, mais especificamente, sistemas paralelos e embutidos [Fröhlich 2002]. Com a introdução da televisão digital no Brasil, faz-se necessário o desenvolvimento de tecnologia nacional, evitando altos custos de implantação e manutenção. Assim um sistema de arquivos para a transmissão dos dados de TV digital nacional é fundamental. Este projeto contribui para a comunidade científica através do desenvolvimento deste sistema de arquivos com código fonte aberto. Além disto, este sistema de arquivos será modelado e implementado com foco em sistemas embarcados. Pessoalmente, a realização deste trará uma carga adicional de conhecimento científico ao meu currículo acadêmico nas áreas de engenharia de software básico e sistemas embarcados. 1.3. ORGANIZAÇÃO DO TRABALHO Este trabalho está dividido em mais quatro capítulos. No capítulo 2 são apresentados conceitos sobre sistemas de arquivos, televisão digital e MPEG-2, que darão suporte ao entendimento do trabalho. O capítulo 3 apresenta a modelagem e a estrutura da implementação do BFS proposto. O capítulo 4 abrange basicamente o projeto do BFS e sua atual versão. No capítulo 5 apresenta quais as atividades a serem realizadas no restante do desenvolvimento do presente trabalho. CAPÍTULO 2 2.1. SISTEMAS DE ARQUIVOS Sistema de arquivos é a parte do sistema operacional responsável por gerenciar arquivos, o modo como são estruturados, nomeados, acessados, usados, protegidos e implementados. O sistema de arquivos visa solucionar três fatores limitantes para execução de uma aplicação: ● Quantidade limitada de memória para armazenamento de informações no espaço de endereçamento. ● Perda das informações do espaço de endereçamento após o término da execução de um processo. ● Compartilhamento de informações entre distintos processos em um sistema. Segundo [Tanenbaum e Woodhull 1997], a solução mais comum para esses fatores é o armazenamento de informações em discos ou outras mídias externas em unidades chamadas de arquivos. Assim os processos podem ler e escrever em arquivos as informações que necessitam ser compartilhadas, mantidas após a sua execução e as informações que são grandes o suficiente para não caberem na memória principal do sistema, dentro do espaço de endereçamento do processo. Assim os arquivos são gerenciados pelo sistema operacional e a maneira como eles são estruturados, nomeados, acessados, utilizados, protegidos e implementados são tópicos importantes no desenvolvimento de um sistema operacional [Tanenbaum e Woodhull 1997]. Dá-se o nome de sistemas de arquivos a parte do sistema operacional que manipula os arquivos. 2.1.1. ARMAZENAMENTO Apesar de já existirem tecnologias de armazenamento em memórias não voláteis, como memórias FLASH, que se assemelham a memórias SDRAM mas que garantem a persistência dos dados. Ainda assim grande parte dos dados são armazenados em discos rígidos magnéticos ou ópticos devido ao menor custo, de forma que não inviabilizem dispositivos que necessitam armazenar grandes quantidades de dados. Ambas as tecnologias trabalham orientados a blocos, sendo seu espaço de armazenamento acessado e divido como blocos físicos. Tamanho do bloco físico varia de acordo com o projeto de hardware e forma geométrica no caso de discos. Em geral, discos magnéticos possuem blocos de 512bytes isso significa que cada endereço físico acessa blocos de 512bytes. É comum encontrarmos discos magnéticos variando entre alguns megabytes e a terabytes. Hoje usuários domésticos em geral, possuem discos em torno de 80Gb, estes discos se divididos em blocos 512bytes possuiriam espaço de endereçamento com 167.772.160 endereços. O sistema de arquivos precisa saber quais desses blocos possuem dados que precisam ser mantidos ou que podem ser realocados para criação e redimensionamento de arquivos. Para atingir este objetivo uma estrutura de controle é necessária. O gerenciamento dessa estrutura pode ser uma terefa de alto custo para o sistema se o número de blocos físicos seja elevado. Por este motivo, existe um outro nível de blocos, chamado de blocos lógicos que é utilizado pelo sistema. A escolha do tamanho dos blocos pelo sistema de arquivos é vital para o desempenho do sistema. Blocos pequenos significam arquivos com muitos blocos, reduzindo a performance devido ao aumento do tempo de busca dos blocos no disco. Já blocos muito grandes aumentam a fragmentação interna, desperdiçando capacidade de armazenamento. Um estudo de [Mullender e Tannembaum 1984] mostra que o tamanho médio de um arquivo no sistema UNIX é por volta de 1Kb. Uma possível solução para este problema é a utilização de blocos de tamanho variável, infelizmente eta implementação não é nada trivial, fazendo com que a escolha de um tamanho fixo ideal para os blocos de acordo com o tamanho do disco seja uma solução mais utilizada. Um disco pode ser particionado em diversos volumes, de capacidade inferior a capacidade do disco como um todo. Os sistemas de arquivos estão contidos nos volumes e só conhecem o volume a qual pertencem, sendo assim, cada volume é uma unidade independente para o sistema. Somente uma parte do sistema operacional diferencia um disco físico e um volume, sendo que o resto do sistema conhece apenas os volumes. [Fröhlich 1994] Segundo [Fröhlich 1994] a principal vantagem no uso de volumes é a sua maior tolerância a falhas, uma vez que se algum dado for corrompido, apenas o volume ao qual ele pertence é corrompido. 2.1.2. ARQUIVOS Arquivos são um mecanismo de abstração [Tanenbaum e Woodhull 1997]. Arquivos fornecem uma maneira de armazenar informações de forma persistente, possibilitando o acesso futuro. [Tanenbaum e Woodhull 1997] cita como característica mais importante a um mecanimsmo de abstração a forma como estes são nomeados, apesar disso, um arquivo não necessita de um nome definido pelo seu criador que geralmente tem alguma relação com seu conteúdo. Se olharmos um sistema de arquivos como um conjunto de arquivos podemos referenciá-los, acessá-los através de sua posição neste conjunto. A falta de um sistema de nomeação pode ser inaceitável para um sistema interativo como Windows, mas no mundo de sistema embarcados, este conceito é bastante razoável. 2.2. SISTEMA DE TELEVISÃO DIGITAL Conforme definido pela especificação do sistema brasileiro de televisão digital terrestre, o sistema de televisão digital é composto de subsistemas que seguem determinados padrões, normas e recomendações internacionais, com o intuito de viabilizar a interconexão com diversos sistemas de comunicação. Nos sistemas de televisão digitais existentes no mundo, recomendados por organismos internacionais de padronização, os padrões referentes a cada subsistema são amplos e flexíveis, permitindo vários níveis de configuração permitindo seu uso em diferentes tipos de serviços. O sistema brasileiro de televisão digital foi divido em 6 subsistemas. 2.2.1. SUBSISTEMA DE TRANSMISSÃO E RECEPÇÃO Este subsistema, na parte da estação transmissora (Difusão e Acesso) recebe o feixe de transporte (TS), disponibilizado pela camada de transporte, processá-lo para sua irradiação no canal de radiofrequencia (RF) e realizar a recepção e regeneração do TS no Terminal de Acesso, entregando-o adequadamente recuperado à camada de transporte. Para realização de todas as tarefas que competem a este subsistema ele é dividido em módulos, o módulo que interessa a este trabalho é denominado Codificação de Dados. 2.2.1.1. CODIFICAÇÃO DE DADOS Assim como informações de áudio e vídeo são submetidos a processos de codificação e compressão para transporte no feixe de transporte (Transporte Stream – TS) MPEG-2, os demais dados devem se submeter processos similares para posterior multiplexação e transporte. O subsistema de codificação de dados é composto por apenas um módulo no lado da difusão e acesso, módulo codificador de dados e no lado do Terminal de Acesso, estas informações serão tratadas pelo subsistema de Middleware. A codificação de dados, processo de fragmentação e organização de entidades de dados para inserção e multiplexação nos pacotes TS (Transport Stream Packets), pode ser realizada através de diversos mecanismos que irão depender do tipo de informação que será transmitida e sua aplicação. Sendo assim, em princípio, como não existe restrição pela camada de transporte sobre o tipo de informação que será transmitida através dos datagramas das redes, uma vez que a informação é tratada como seqüência de pacotes TS MPEG-2. Um datagrama é uma estrutura lógica que contém as informações de definição dos dados que estão sendo transmitidos: tamanho e conteúdo, destino e como deve chegar. Na camada de transporte estes dados são transmitidos dentro dos pacotes do feixe de transporte (TS) MPEG-2, que possuem comprimento de 188 bytes (payload de até 184 bytes) conforme (UIT, 2000a). Assim, os datagramas precisam ser fragmentados no lado da difusão (Difusão e Acesso) e desfragmentados no lado da recepção (Terminal de Acesso). A figura a seguir ilustra a relação entre codificador de dados e multiplexador. Figura 2.1 : Codificador de dados X Multiplexador Como pode ser visto na figura, o bloco codificador de dados possui dois possíveis mecanismos de transporte: Encapsulamento Multiprotocolo e Carrossel. Estes mecanismos são responsáveis pela fragmentação e recomposição dos dados, confiabilidade, suporte a detecção de erros e pelo endereçamento dos mesmos. Neste trabalho, será tratado apenas do carrossel. 2.3. MPEG-2 Largamente utilizado como formato para o sinal de televisão digital terrestre (sinal enviado pelo ar), cabo ou satélite, também é utilizado como formato de distribuição de filmes em DVDs e discos similares. Assim, aparelhos de TV, DVD e outros equipamentos são desenvolvidos para este padrão. Apesar de ser a base para para a maioria dos formatos de televisão e DVD, ele não os define completamente, instituições regionais podem adaptá-lo às suas necessidades, restringindo e aumentando suas especificações. 2.3.1. Feixe de Transporte MPEG-2 (Transport Stream) Especificado na parte 1 do padrão MPEG-2 (ISO/IEC 13818-1), é um protocolo para transmissão de áudio, vídeo e dados. Seu objetivo principal é permitir multiplexação de áudio e vídeo e a sincronizar a saída. Este protocolo oferece dispositivos de correção de erros para transporte em mídia não confiável é também utilizado em aplicações de transmissão como DVB e ATSC. 2.3.2. DSM-CC DSM-CC (Digital Storage Media – Command and Control) foi originalmente desenvolvido para trabalhar com máquinas VTR e similares. Desde que foi criado, foi muito extendido e hoje inclui controle de servidores de vídeo MPEG, suporte para transmissão de dados MPEG-2, timecodes para vídeo MPEG-2 e broadcast file systems. Definido na parte 6 do padrão MPEG-2 ( ISO/IEC 13818-6), o DSM-CC é uma série de protocolos que podem ser combinados ou não para prover várias funcionalidades para serem utilizadas por tecnologias multimídia emergentes. Uma das vantagens do DSM-CC é a abstração que faz das camadas inferiores, deixando um conjunto de interfaces uniformes para a aplicação, protegendo-a dos detalhes internos de funcionamento entre redes heterogênias. O DSM-CC também fornece uma interface para controle do sistema de arquivos (BFS) utilizado. 2.3.3. Carrossel de dados Uma das diferenças de utilizar o DSM-CC em TV digital em relação ao cenário onde o DSM-CC foi originalmente pensado, é que na TV digital não existe apenas um nodo onde a informação pode ser requisitada por quem precisar, mas existe um servidor que fica transmitindo a informação. Desta forma, o receptor não consegue requisitar um arquivo específico do servidor, logo se faz necessária um abordagem diferenciada. A solução é simples, a informação é retransmitida periodicamente, bastando ao receptor apenas esperar que a informação que necessita seja retransmitida. Este tipo de solução é conhecida como carrossel. Em um DSM-CC a informação é dividida e transmitida em módulos. Os módulos ainda podem ser divididos em blocos, facilitando a transmissão dos dados. No carrossel de dados, os blocos não possuem informação sobre que tipo de dados estão sendo transmitidos nos blocos, cabe ao receptor decodificar a informação de forma que faça sentido para ele. Os módulos ainda possuem informações adicionais para que o receptor possa saber se um módulos foi divido em vários blocos e se este for o caso, permite que o receptor saiba quando um módulo inicia e acaba. Os elementos que permitem esta funcionalidade estão contidos em um conjunto de mensagens do DSM-CC (DSM-CC Messages). Estas dividem-se em duas categorias: DSM-CC download data messages possuem os dados que estão sendo transmitidos e DSM-CC download control messages dizem ao receptor como os dados estão organizados nos módulos. 2.3.3.1. Download Data Messages Existe apenas um tipo de download data message, a DownloadDataBlock, que corresponde a um bloco de dados que é transmitido como uma única unidade. Além disso, cada DownloadDataBlock possui o mesmo tamanho, com exceção do último, facilitando a decodificação no lado do receptor. Cada DownloadDataBlock ainda possui o ID e a versão do módulo ao qual pertence, o número do bloco dentro do módulo e os dados. O ID e a versão do módulo permitem que o receptor saiba se deve ou não carregar o módulo, evitando desperdícios. 2.3.3.2. Download Control Messages REFERÊNCIAS Eckel, B. (2000). Thinking in C++. Planet PDF. Fröhlich, A. A. M. (1994). Pyxis: Um sistema de arquivos distribuídos. Fröhlich, A. A. M. (2001). Application-Oriented Operating Systems. GMD – Forschungszentrum Informationstechnik, 1 edition. Stroustrup, B. (1997). The C++ Programming Language. Addison-Wesley, 3 edition. Tanenbaum, A. S. andWoodhull, A. S. (1997). Operational Systems - Design and Implementation. Prentice Hall, 2 edition. "Information Technology - Generic Coding of Moving Pictures and Associated Audio: Digital Storage Media Command and Control," 13818-6 Int'l. Std., ISO/IEC JTCl/SC29/WGI 1 MPEG96/N1300pl, Julho, 1996. Regis J. Crinon. The DSM-CC Object Carrousel for Broadcast Data Services. Sharp Laboratories of America Inc.