Linux Básico. Prof. Gutemberg Gonçalves dos Santos Júnior. Center of Electrical Engineering and Informatics Federal University of Campina Grande

Documentos relacionados
LINUX. Uma visão geral

A linha de comando do Unix e GNU/Linux

ADMINISTRAÇÃO DE SERVIÇOS EM SISTEMAS OPERACIONAIS DE ARQUITETURA ABERTA

Administração de Sistemas Operacionais Prof.: Marlon Marcon

Administração Central Cetec Capacitações Capacitação Sistema Operacional Linux Semana III

SISTEMAS DE ARQUIVOS E DIRETÓRIOS DO LINUX. Prof. Gleison Batista de Sousa

Programação Aplicada a Redes de Computadores Shell Script

Introdução ao Linux: Parte I

Estrutura de Diretórios Linux. Rodrigo Gentini

Informática. Linux. Professor Márcio Hunecke.

Instalação e Configuração de Servidores Linux Server Partições e Sist. de Arquivos. Prof. Alex Furtunato

Instalador e Operador de Sistemas de Telefonia e Comunicação de Dados

Programação para Servidores. Cassio Diego

AULA 3. Bruno L. Albrecht Felipe A. Chies Lucas F. Zawacki. PET Computação UFRGS

Administração de sistemas Linux. Estrutura de diretórios Linux

Shell Script. Rafael Silva Guimarães

Aula 9: Shell Script

Programação Shell Script: como dominar seu terminal

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Primeira Aula Prática

Administração de sistemas operacionais. Comandos de manipulação de arquivos/diretórios.

GNU/Linux/Bash. Aula 2

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 03. Prof. Gabriel Silva

Comandos. Sistema Operacional GNU/Linux. Para Manipulação de Diretórios

ADMINISTRAÇÃO DE REDES I LINUX. Shell Script. Frederico Madeira LPIC 1, CCNA

Introdução a. Shell Script. Clésio Matos

Introdução a Sistemas Abertos. Ambiente shell

Redes de Computadores

1º Ano - Técnico em Informática Integrado. Sistemas Operacionais

Gilberto A. S. Segundo. 24 de agosto de 2011

Introdução a shell scripts

Histórico e conceitos básicos. GSO I Gestão de Sistemas Operacionais

CÓDIGO FONTE CÓDIGO FONTE DO BOLO DE CHOCOLATE MOLHADINHO

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCENS UFES Departamento de Computação. Shell Script

A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão

Labgrad. Usúario: <matricula> Senha: senha

Revisão Aula Explique a MBR(Master Boot Record)

Programação Shell Script: como dominar seu terminal

Shell Script. Básico do básico

ADMINISTRAÇÃO DE SISTEMAS UNIX Aula Prática 01 Sistemas Operacionais Gil Eduardo de Andrade

pedrofilho.eti.br Linux Essentials 2.3 Acessando diretórios e arquivos 2.4 Criando, movendo e excluindo arquivos Prof. Pedro Filho

Comandos Diversos relacionados a Sistemas de Arquivos

Formação de Administradores de Redes Linux LPI level 1. Aula 3 SENAC TI Fernando Costa

Aula 04 Sistemas Embarcados LT38C

Fundamentos de Sistemas Operacionais. GNU / Linux. Prof. Edwar Saliba Júnior Março de Unidade GNU / Linux

Variáveis. Você pode ver as variáveis do sistema com os comandos printenv, env e set como mostra o exemplo abaixo:

Introdução ao Shell Script

b. Causa parada do processo c. Reinicia um processo parado d. O processo é enviado para primeiro plano e. O processo é enviado para segundo plano 5)

Administração de Redes de Computadores

Arquitetura e Organização de Computadores. Compiladores e processamento

Administração de Redes em Software Livre Aula 02 Instalando o GNU/Linux (CENTOS Minimal)

Minicurso Básico de Linux

Linux - comando essenciais

Preparatório LPIC-101

Programação para Servidores. Cassio Diego

MÓDULO 01 INTRODUÇÃO AO LINUX

Preparatório LPIC-1 Tópico 102

Objetivos Instalação Gerência de Pacotes UNIX Shell. Curso UNIX. Matheus Braun Magrin Felipe dos Santos Silveira

Figura 1: Operações para gerar um programa executável.

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Introdução aos Sistemas Operacionais. Subsistema de Entrada e Saída

Atividade 01 Introdução ao Linux

IFSC - SJ CURSO TÉCNICO DE TELECOMUNICAÇÕES DISCIPLINA: MAN / SOP

Preparatório LPIC-1 Tópico 103

Software Livre. Acesso ao código fonte Alterar o código fonte Redistribuir Utilizar como desejar

Programação. Folha Prática 1. Lab. 1. Departamento de Informática Universidade da Beira Interior Portugal Copyright Ó 2000 All rights reserved.

Estácio-FIC Graduação em Redes de Computadores

Oficina de ShellScript

1.1-Digitar o comando abaixo para entrar no manual on-line do sistema para buscar informações sobre o comando pwd. man pwd

Tutorial: Programando no Linux

Ambiente de desenvolvimento

Sistemas Operacionais de Rede Linux - Gerenciamento de Arquivos

Introdução ao Linux e Shell Script

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA SUDESTE DE MINAS GERAIS Campus Rio Pomba. Eu defendo!!! Mini Curso. Linux


Comandos de arquivos

Se não existisse uma variável de ambiente chamada PATH você teria que digitar todo o caminho do comando para listar por exemplo:

CEFET SC UNIDADE DE SÃO JOSÉ CURSO TÉCNICO EM TELECOMUNICAÇÕES REDES DE COMPUTADORES/TELEFONIA DISCIPLINA DE SISTEMAS OPERACIONAIS

EXERCÍCIOS PARA O UNIX BÁSICO. 1. Cada um dos usuários possui uma área de trabalho no Unix. Escreva no quadro abaixo o seu username.

Campus - Cachoeiro Curso Técnico de Informática. Sistema de Arquivos. Prof. João Paulo de Brito Gonçalves

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

Introdução à Informática

Práticas de Desenvolvimento de Software

Introdução à Linguagem C. K&R: Capitulo 1. Introdução IAED, 2014/2015 2

>>> OBJETIVOS... === FHS - Filesystem Hierarchy Standard. === Sistemas de arquivos e Partições

Aula 2 de Linux Modo Texto

SOFTWARE LIVRE. Distribuições Live CD. Kernel. Distribuição Linux

Permissões de acesso no Linux

Partição Partição primária: Partição estendida: Discos básicos e dinâmicos

Programação Shell Script: como dominar seu terminal (versão 2)

Planeamento. Introdução ao Sistema Operativo UNIX. Java: Ferramentas, Entradas/Saídas, Excepções. Threads e Semáforos. Problemas de Sincronização

Aula 02. Introdução ao Linux

Conceitos Básicos de Scripts

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO E AUTOMAÇÃO

Comandos de monitoração de ambiente e redes no Linux

Comandos Básicos do Linux/Unix

MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS

Aula 05 Estrutura de diretórios

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

Transcrição:

Linux Básico Prof. Gutemberg Gonçalves dos Santos Júnior Center of Electrical Engineering and Informatics Federal University of Campina Grande

História do Linux A história começa em 1991 com o estudante universitário finlandês Linus Torvalds (21 anos) Olá a todos que usam o Minix - Estou fazendo um sistema operacional (livre - apenas como um hobby, não será algo grande e profissional como o GNU) para máquinas AT 386 (486). Ele tem sido trabalhado desde abril, e está começando a ficar pronto. Eu gostaria de opiniões sobre coisas que as pessoas gostam/não gostam no Minix, já que o meu SO lembra um pouco ele (mesmo layout físico do sistema de arquivos (por motivos práticos), entre outros). Embedded - UFCG :: 2

História do Linux A história começa em 1991 com o estudante universitário finlandês Linus Torvalds Eu já portei o bash (1.08) e o gcc (1.40) e as coisas parecem funcionar. Isso indica que conseguirei alguma coisa prática dentro de alguns meses, e gostaria de saber quais recursos as pessoas mais gostaria de ter. Todas as sugestões serão bem-vindas, mas não prometo implementá-las :-) Linus (torvalds@kruuna.helsinki.fi) PS. Sim - ele está livre de qualquer código do Minix, e tem sistema de arquivos com multi-threading. Ele NÂO é portável (usa 386, chaveamento de tarefas, etc) e provavelmente nunca suportará qualquer coisa além de discos rígidos AT, pois é tudo o que eu tenho :-(. Embedded - UFCG :: 3

O que é Linux? Linux É um kernel de código aberto que vem sendo desenvolvido ao longo do tempo voluntariamente por desenvolvedores de várias partes do mundo; Kernel É o núcleo do sistema operacional; Faz a intermediação entre o hardware e os programas executados pelo computador; Sistema Operacional Kernel + softwares (drivers, protocolos de comunicação, etc.); Várias distribuições (Ubuntu, Red Hat, Debian, Slackware, CentOS, etc.); GNU GNU is Not Unix. Embedded - UFCG :: 4

Organização do GNU/Linux Espaço de usuário Onde as aplicações do usuário são executadas; Biblioteca GNU C Define as chamadas de sistemas (kernel 3.18 400 chamadas) SO com 2 níveis Espaço do Kernel Interface de chamadas de sistema Implementa funções básicas como read e write; Kernel Código independente da arquitetura; Código dependente da arquitetura. Embedded - UFCG :: 5

Estrutura do Sistema de Arquivos Não é imposta pelo sistema. Pode variar de um sistema para outro, mesmo entre duas instalações do GNU/Linux! / Diretório Root /bin/ /boot/ /dev/ /etc/ /home/ /lib/ Comandos básicos essenciais do sistema Imagens do kernel, initrd e arquivos de configuração Arquivos que representam dispositivos Ex: /dev/sda: primeiro disco rígido SATA do sistema Aquivos de configuração do sistema Diretórios dos usuários Bibliotecas compartilhadas básicas do sistema Embedded - UFCG :: 6

Estrutura do Sistema de Arquivos Não é imposta pelo sistema. Pode variar de um sistema para outro, mesmo entre duas instalações do GNU/Linux! /lost+found /mnt/ /opt/ /proc/ /root/ /sbin/ /sys/ Arquivos corrompidos que o sistema tentou recuperar Sistemas de arquivos montados (/mnt/usbdisk/, /mnt/windows/...) Programas instalados pelo administrador do sistema. (/usr/local/ às vezes usado com esse propósito) Acesso a informações do sistema (/proc/cpuinfo, /proc/version...) Diretório particular do usuário root Comandos acessíveis apenas pelo administrador. Controles do sistema e dispositivos (freqüência da CPU, módulos do kernel, etc.) Embedded - UFCG :: 7

Estrutura do Sistema de Arquivos Não é imposta pelo sistema. Pode variar de um sistema para outro, mesmo entre duas instalações do GNU/Linux! /tmp/ /usr/ /usr/local/ /var/ Arquivos temporários Programas dos usuários (não essenciais ao sistema) (/usr/bin/, /usr/lib/, /usr/sbin...) Programas instalados pelo administrador do sistema. (usado algumas vezes no lugar de /opt/) Dados usados pelo sistema ou programas servidores /var/log/ (logs do sistema e programas) /var/spool/mail (emails recebidos) /var/spool/lpd (trabalhos de impressão)... Embedded - UFCG :: 8

Tudo é um arquivo! Quase tudo no Linux é um arquivo! Arquivos comuns; Diretórios; Arquivos que listam um conjunto de outros arquivos; Links Simbólicos; Arquivos que referenciam o nome de outro arquivo; Dispositivos e periféricos; Lê e grava em dispositivos como se fossem arquivos comuns; Pipes; Usados para concatenar programas; Sockets; Comunicação interprocessos. Prompt [riscv@localhost]$ cd / [riscv@localhost]$ ls [riscv@localhost]$ vi etc Verifique que o diretório também é um arquivo! Para sair do VI digite :q [riscv@localhost]$ ls la Verifique os links simbólicos pelo símbolo -> [riscv@localhost]$ cd ~ [riscv@localhost]$ head c 30 /dev/urandom > arquivo /dev/urandom é um dispositivo que gera números aleatórios [riscv@localhost]$ hexdump arquivo Verifique os 30 bytes aleatórios que foram gerados [riscv@localhost]$ cd /etc [riscv@localhost]$ grep command wgetrc Procurando pela palavra command no arquivo wgetrc [riscv@localhost]$ grep command wgetrc grep line Utilizando um pipe para concatenar 2 grep Embedded - UFCG :: 9

Comando ls Lista os arquivos do diretório atual em ordem alfanumérica, exceto arquivos que iniciam com o caractere.. ls -a (all) Lista todos os arquivos (inclusive os arquivos.*) ls l ls -t ls -S ls -r ls -ltr (long) Listagem longa (tipo, data, tamanho, proprietário, permissões) (time) Lista os arquivos mais recentes primeiro (size) Lista os maiores arquivos primeiro (reverse) Inverte a ordenação (opções podem ser combinadas) Listagem longa, com os arquivos mais recentes no final. Reproduza os comandos acima a partir do diretório /etc/ Embedded - UFCG :: 10

Padrões de Substituição de nomes de arquivos Pode-se substituir uma parte do nome de um arquivo por alguns caracteres especiais: ls *txt O shell primeiro substitui *txt por todos os nomes de arquivos e diretórios que terminam com txt (incluindo.txt), exceto aqueles que iniciam com., e então executa o comando ls. ls -d.* Lista todos os arquivos e diretórios que iniciam com.. cat?.log -d instrui o ls a não exibir o conteúdo dos.* diretórios. Exibe todos os arquivos cujos nomes possuem 1 caractere e terminam com.log. Reproduza os comandos acima a partir do diretório /etc/ Embedded - UFCG :: 11

O comando grep grep <padrão> <arquivos> Pesquisa os arquivos passados como parâmetros e exibe as linhas que possuem o padrão. grep er *.log grep -i er *.log grep -ri er. grep -v info *.log Exibe todas as linhas que contém a string er nos arquivos *.log. Mesma situação, porém não diferencia maiúsculas de minúsculas. Mesma situação, porém faz a pesquisa recursivamente em todos os arquivos no diretório. e nos seus subdiretórios. Exibe todas as linhas dos arquivos *.log exceto aquelas que contêm a string info. Reproduza os comandos acima a partir do diretório /var/log/ Embedded - UFCG :: 12

Redirecionando a saída padrão Todos os comandos que exibem texto no seu terminal o fazem por meio da gravação de informações na sua saída padrão. A saída padrão pode ser gravada em (redirecionada para) um arquivo usando o símbolo > A saída padrão pode ser adicionada ao final de um arquivo existente usando o símbolo >> Prompt [riscv@localhost]$ cd ~ Acessa o diretório home do usuário atual [riscv@localhost]$ echo riscvbr Repete a sentença riscvbr e a grava na saída padrão (terminal) [riscv@localhost]$ echo riscvbr > saida Repete a sentença riscvbr e a grava (redireciona) para o arquivo saida [riscv@localhost]$ cat saida Exibe o conteúdo do arquivo saida [riscv@localhost]$ echo riscvbr2 > saida Repete a sentença riscvbr2 e a grava (redireciona) para o arquivo saída, substituindo o arquivo [riscv@localhost]$ echo riscvbr3 >> saida Repete a sentença riscvbr3 e a grava (redireciona) para o arquivo saída, adicionando-a ao final do arquivo [riscv@localhost]$ cat saida Exibe o conteúdo do arquivo saida Embedded - UFCG :: 13

O comando find find <diretório> <expressão> Pesquisa por arquivos de acordo com a expressão diretórios informados. e find ~ -name Downloads find ~ -name Do* Procura por arquivos no diretório ~ com o nome Downloads Procura por arquivos no diretório ~ com o nome começando por Do. find. -name *.log -exec gedit {} ; Procura todos os arquivos com final.log no diretório /var/log e os exibe, um após o outro, com o gedit; Reproduza os comandos acima a partir do diretório /var/log/ Embedded - UFCG :: 14

Comandos básicos Vamos combinar alguns comandos através de exemplos! Prompt [riscv@localhost]$ cd ~ Vai para a pasta home do usuário atual [riscv@localhost]$ mkdir teste_riscv Cria uma pasta com o nome teste_riscv [riscv@localhost]$ echo seunome > arquivo.txt O comando echo repete a expressão que segue (seunome) O comando > redireciona a saída do comando echo para um arquivo com o nome arquivo.txt [riscv@localhost]$ cat arquivo.txt Imprime o conteúdo de arquivo.txt no terminal [riscv@localhost]$ mv arquivo.txt teste_riscv Move o arquivo.txt para o diretório teste_riscv [riscv@localhost]$ ls -la Lista todos os arquivos do diretório com detalhes Prompt [riscv@localhost]$ ls lar Lista todos os arquivos do diretório com detalhes na ordem reversa [riscv@localhost]$ rm rf teste_riscv Apaga o diretório teste_riscv [riscv@localhost]$ head c 30 /dev/urandom Imprime 30 bytes do dispositivo que gera números aleatórios (entende como caracteres) [riscv@localhost]$ head c 30 /dev/urandom hexdump Passa a informação do comando head para o comando hexdump, imprimindo assim os bytes em hexadecimal [riscv@localhost]$ head c 30 /dev/urandom hexdump > aleatorio Cria um arquivo com o nome aleatorio com as informações do comando anterior Embedded - UFCG :: 15

Programando em Bash O bash possui uma poderosa linguagem de script embutido nele mesmo o shell script; Muito utilizado para facilitar a execução de tarefas no Linux; Por exemplo, o Slackware utiliza shell script para instalar e configurar toda a distribuição Uma das grandes vantagens é que o script não precisa ser compilado! Todo arquivo de script deve ter um cabeçalho indicando o tipo de shell que está sendo utilizado #!/bin/sh #!/bin/bash Embedded - UFCG :: 16

Programando em Bash Vamos criar o nosso primeiro script! Prompt [riscv@localhost]$ cd ~ Vá para a pasta home do usuário atual [riscv@localhost]$ gedit meu_primeiro_script Crie um arquivo com o nome meu_primeiro_script Arquivo aberto no gedit #!/bin/bash Echo Meu primeiro Script! Salve o arquivo e feche o gedit Prompt [riscv@localhost]$ bash meu_primeiro_script Execute o script utilizando o bash e verifique a saída Prompt [riscv@localhost]$./meu_primeiro_script Execute o script novamente Prompt [riscv@localhost]$ chmod +x meu_primeiro_script Torne o seu script executável Embedded - UFCG :: 17

Programando em Bash Variáveis em shell script são caracteres que armazenam dados; O bash reconhece uma variável pelo símbolo $ Definição de uma variável variavel= valor Prompt [riscv@localhost]$ var= Variavel do usuário $user Cria uma variável de ambiente com o nome var [riscv@localhost]$ echo var Exibe o nome var, não o conteúdo da variável var [riscv@localhost]$ echo $var Exibe o conteúdo da variável var [riscv@localhost]$ var2= Meu diretório atual é o `pwd` [riscv@localhost]$ echo $var2 Exibe o conteúdo de var2. Note que o símbolo ` foi utilizado para a execução de um comando dentro de outro O comando pwd exibe o caminho completo do diretório atual Embedded - UFCG :: 18

Programando em Bash Controle de fluxo If [condição] then comando a ser executado else comando a ser executado fi Algumas condições -eq (igual) -ne (diferente) -gt (maior) -lt (menor) -o (ou) #!/bin/bash Echo Meu primeiro Script! var=3 if [ $var -eq 3 ] then echo verdadeiro else echo falso fi Arquivo meu_primeiro_script Prompt [riscv@localhost]$./meu_primeiro_script Embedded - UFCG :: 19

Programando em Bash Se aprofundando mais! Arquivo meu_primeiro_script #!/bin/bash for i in {1..9}; do mkdir dir$i done pastas=`ls d dir*` for i in $pastas; do cd $i echo arquivo do diretório $i > texto_$i cd.. done Desafio! Altere o script ao lado para que a árvore de diretórios agora possua a seguinte organização: ~/scripts dir1 dir2 dir3 dir4 dir5 dir6 dir7 Os arquivos texto_$i devem estar nos respectivos diretórios dir8 dir9 dir10 Embedded - UFCG :: 20

Programando em C no Linux Um primeiro programa em C Arquivo hello_world.c #include <stdio.h> int main() { printf( Hello, World!\n ); return 0; Compilando [riscv@localhost]$ gcc -Wall hello.c -o programa Compila o arquivo hello.c -Wall habilita a maioria dos alertas -o especifica o nome do arquivo de saída [riscv@localhost]$./programa Executa o arquivo programa } Obviamente existem formas bem mais complexas: Utilização de múltiplos arquivos; Utilização de diretórios auxiliares; Otimização, ligação (Linking), etc. Embedded - UFCG :: 21

Programando em C no Linux Um programa em C com vários arquivos #include <stdio.h> #include calcula.h Arquivo main.c int main() { int a = 355; printf( O quadrado de %d é %d!\n, a, calcula(a)); return 0; } #ifndef CALCULA_H_ #define CALCULA_H_ int calcula(int num); #endif Arquivo calcula.h Arquivo calcula.c Compilando [riscv@localhost]$ gcc -c calcula.c o calcula.o Compila o arquivo calcula.c mas não realiza o link [riscv@localhost]$ gcc -c main.c -o main.o Compila o arquivo main.c mas não realiza o link [riscv@localhost]$ gcc calcula.o main.o -o programa Realiza o link e cria um executável com o nome programa [riscv@localhost]$./programa Executa o arquivo programa #include calcula.h int calcula(int num){ return num*num; } Embedded - UFCG :: 22

Programando em C no Linux Coloque o arquivo.h no diretório include; Pesquise e realize a compilação dos arquivos em questão! Embedded - UFCG :: 23

Utilizando Makefile Uma simples forma de organizar o processo de compilação Inserindo variáveis Arquivo Makefile programa2: calcula.c main.c gcc -o programa2 calcula.c main.c -I. Arquivo Makefile CC=gcc CFLAGS=-I. programa2: calcula.c main.c $(CC) -o programa2 calcula.c main.c $(CFLAGS) Compilando - Makefile [riscv@localhost]$ make Realiza a compilação dos arquivos assim como descritos no Makefile [riscv@localhost]$ make Só recompila se houve mudanças nos arquivos calcula.c e/ou main.c Embedded - UFCG :: 24

Utilizando Makefile Uma simples forma de organizar o processo de compilação Inserindo dependências Arquivo Makefile CC=gcc CFLAGS=-I. DEPS=calcula.h %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) programa2: calcula.c main.c $(CC) -o programa2 calcula.c main.c $(CFLAGS) Arquivo Makefile CC=gcc CFLAGS=-I. DEPS=calcula.h OBJ=calcula.c main.c %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) programa2: $(OBJ) $(CC) -o $@ $^ $(CFLAGS) %.o: %.c $(DEPS) Especifica que os arquivos.o dependem dos arquivos.c e dos.h definidos na macro DEPS; -o $@ Especifica que a saída da compilação deve ser no arquivo com nome definido no lado esquerdo de : $^ Especifica o lado direito de : $< Especifica o primeiro item da lista de dependências Embedded - UFCG :: 25

Utilizando Makefile Faça um Makefile mais completo Os arquivos headers (.h) devem estar localizados no diretório include; Que todos os arquivos.c sejam colocados no diretório src; O makefile também esteja localizado no diretório src; Que todos os arquivos.o sejam gerados no diretório obj; Que possua uma regra clean que apague todos os arquivos.o; Embedded - UFCG :: 26

Utilizando Git Embedded - UFCG :: 27

Contact Angelo Perkusich, D.Sc. Professor, CEO angelo.perkusich@embedded.ufcg.edu.br +55 83 8811.9545 Gutemberg Gonçalves, Ph.D. Professor gutemberg@embedded.ufcg.edu.br +55 83 99619.2600 Hyggo Almeida, D.Sc. Professor, CTO hyggo.almeida@embedded.ufcg.edu.br +55 83 8875.1894