Uma Implementação de Broadcast File System para

Propaganda
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.
Download