Como um monte de letras de um código fonte transforma-se em voltagens?

Artigo de assunto geral. Como que um monte de letras de um código fonte transforma-se em voltagens?

[ Hits: 18.382 ]

Por: Buckminster em 18/12/2013


Introdução



Essa pergunta me foi feita por um conhecido e, apesar de eu ter dado uma explicação rápida e satisfatória na hora, percebi que essa dúvida, ainda que simples, é bastante pertinente. Então, resolvi desenvolver o assunto e a coisa foi aumentando, até resultar nestas laudas.

Vejam bem, os comentários aqui presentes, apesar de serem bastante básicos, são completos, mas de forma alguma encerram o assunto. Contudo, por uma questão de tamanho do artigo, optei por deixa-lo de forma básica. Não é um artigo que envolve GNU/Linux diretamente, mas ajuda a entender o funcionamento de um computador de forma geral.

Um computador funciona, logicamente, movido à eletricidade. Em grego, a palavra "elektron" significa âmbar, pois foi através do âmbar, que foi descoberta a eletricidade e a partir desse vocábulo, surgiram as palavras elétron e eletricidade.

Há cargas elétricas positivas e negativas. As cargas de nome igual (mesmo sinal), se repelem e as de nomes distintos (sinais diferentes), se atraem.
  • Elétron - partícula mais leve que leva carga elétrica negativa.
  • Próton - partícula de carga elétrica positiva.
  • Nêutron - tem quantidades iguais de cargas elétricas positiva e negativa.

Um corpo tem carga negativa, se nele há um excesso de elétrons e carga positiva, se há falta de elétrons em relação ao número de prótons.

Note que os termos carga elétrica "negativa" e carga elétrica "positiva", são convenções para distinguir as cargas. Poderiam ter chamado de carga branca e carga preta, carga yin e carga yang, sei lá.

Graças à força do seu campo eletrostático, uma carga pode realizar trabalho ao deslocar outra carga por atração ou repulsão. Essa capacidade de realizar trabalho, é chamada de potencial. Quando uma carga for diferente da outra, haverá entre elas uma diferença de potencial.

A Diferença de Potencial (ddp), mais conhecida como tensão elétrica, tem como unidade fundamental o volt (V).

A Corrente Elétrica, por sua vez, é simplesmente o fluxo de elétrons. Essa corrente é produzida pelo deslocamento de elétrons através de uma ddp (tensão) em um condutor (fio de cobre, por exemplo). A unidade fundamental de corrente é o ampère (A).

A fonte de alimentação converte a corrente alternada (AC - Alternate Current) da sua casa para corrente contínua (DC - Direct Current), necessária para o funcionamento do seu computador.

Ela é a responsável por converter os 110 ou 220 volts da rede elétrica para as voltagens básicas de 3.3V, 5V e 12V (que são voltagens baixas) fornecidas nas diferentes saídas da fonte, além de filtrar a corrente e atenuar picos de tensão. Alguns dos problemas que causam travamentos, erros na instalação de programas, etc., são ocasionados por problemas elétricos.

Vejam bem, em programação estamos, falando a grosso modo, manipulando voltagens, pois um computador é uma máquina movida à eletricidade e são as voltagens que correm por seus circuitos eletrônicos através da corrente elétrica. Não vou falar aqui das frequências, pois o assunto se estenderia demais sem ter razão para tal, uma vez que o escopo do artigo não é esse.

Os famosos "bits" são representados por voltagens. Um bit 0 em um determinado circuito, representa uma determinada voltagem. Um bit 1 num determinado circuito, representa uma voltagem também, e essa voltagem é um valor em volts, inclusive zero. Por exemplo, num circuito, um bit 0 pode ser 0,2V e em outro circuito, um bit 0 pode ser 0,5V. O bit 0 geralmente é um valor próximo de zero volt, mas depende do circuito.

As funções dos transistores, dos resistores, dos capacitores e etc, envolvem aumentar voltagens, diminuir voltagens e armazenar cargas elétricas, para que cada circuito receba a voltagem correta.

Há certo tempo atrás, os travamentos em sistemas operacionais, programas, etc, ocorriam mais por problemas de Hardware do que de Software; da seguinte forma, em um determinado circuito da placa mãe, por exemplo, deveria passar uma determinada voltagem, mas devido ao componente (capacitor, resistor, etc) não suportar essa voltagem, para mais ou para menos, ele apresentava mau funcionamento e interrompia o fluxo da eletricidade, fazendo a execução do programa travar. Esse mau funcionamento poderia ser causado por má qualidade do componente, por aquecimento do computador, etc. Para resolver esse problema, criou-se o conceito de "limites".

Um exemplo bem claro desses limites, são as memórias RAMs. Elas funcionam, geralmente, com voltagens de até 5V (SDRAM; as DDR3 trabalham com 1,5V, DDR2 com 1,8V e DDR com 2,5V). Um bit 0 pode ser, por exemplo, uma voltagem de 0 a 1V, ou seja, se é enviado 0,5V como sendo um bit 0, a memória aceitará. Esses números são apenas exemplos, a faixa varia muito, porém, são sempre voltagens muito baixas..

Às vezes, essa mudança aleatória de voltagem (e/ou de frequência) pode ocorrer por aquecimento dos componentes do circuito. Antigamente ocorriam mais travamentos, porque os computadores esquentavam demais e isso acarretava em mudança nas voltagens internas e quando determinado componente recebia uma voltagem errada, ele interrompia o fluxo.

Cada componente de um circuito eletrônico é fabricado para trabalhar com uma determinada voltagem e uma determinada frequência. Um exemplo claro, é ligar em 220 volts uma fonte de alimentação que está colocada para trabalhar em 110 volts. A fonte irá queimar, ou se for uma fonte de boa procedência, terá um mecanismo de proteção para evitar a queima dos componentes, ou se for uma fonte que tolera 90 Volts AC até 240 Volts AC dispensando a chave de mudança 110/220, não queimará.

Se acontecer um pico muito elevado de tensão na rede elétrica, esse pico irá passar tão rápido e atingirá os componentes do circuito e somente depois o fusível irá queimar. Nesse caso, diz-se que a fonte "torrou". A não ser que tenha um bom No-Break entre a fonte e a tomada. Os estabilizadores, principalmente aqui no Brasil, não oferecem uma boa segurança.

E se você ligar o computador em 110 volts com a fonte colocada em 220 volts, ele irá ligar, acender as luzinhas, mas não irá funcionar, pois não tem energia suficiente para seus componentes que foram fabricados para trabalhar naquelas determinadas voltagens, às quais não estão sendo fornecidas apropriadamente. Não terá "força".

    Próxima página

Páginas do artigo
   1. Introdução
   2. Código fonte em voltagens
   3. Respondendo à pergunta
Outros artigos deste autor

Compilação do Kernel

Problema no GRUB no Debian Squeeze 6.0.7 [Resolvido]

Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

O Kernel Linux

Compilando kernel no Debian Squeeze

Leitura recomendada

Trabalhando com datas no Linux

Linus Benedict Torvalds

Hierarquia do Sistema de Arquivos GNU/Linux

Como escolher sua distro (de forma imparcial)

O mínimo que você precisa saber sobre o terminal (parte 2)

  
Comentários
[1] Comentário enviado por px em 18/12/2013 - 03:13h

Só você para me fazer ler um artigo as 3 da matina, kk. Poderia estender esse último assunto sobre a edição de binários (assembly, registradores, etc...) acredito que assim chegaria mais a fundo e próximo de responder a pergunta do título, no mais nota 10, como de costume rsrs.

PS: 01000001 01100111 01110101 01100001 01110010 01100100 01100001 01101110 01100100 01101111 00100000 01101111 00100000 01110000 01110010 11110011 01111000 01101001 01101101 01101111 00100000 01011110 01011110

[2] Comentário enviado por darkstarfire em 18/12/2013 - 10:21h

px:

Aguardando o pr?ximo ^^

[3] Comentário enviado por Buckminster em 18/12/2013 - 14:24h


[2] Comentário enviado por darkstarfire em 18/12/2013 - 10:21h:

px:

Aguardando o pr?ximo ^^


Obrigado px:

01001111 00100000 01110000 01110010 11110011 01111000 01101001 01101101 01101111 00100000 01110011 01100101 01110010 11100001 00100000 01110011 01101111 01100010 01110010 01100101 00100000 01110100 01110010 01100001 01100100 01110101 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01100010 01101001 01101110 11100001 01110010 01101001 01101111 01110011 00100000 01100101 01101110 01110100 11100011 01101111 00101110

01001001 01110011 01110011 01101111 00100000 01110110 01100001 01101001 00100000 01101101 01100101 00100000 01100100 01100001 01110010 00100000 01110101 01101101 01100001 00100000 00100010 01110100 01110010 01100001 01100010 01100001 01101100 01101000 01100101 01101001 01110010 01100001 00100010 00100000 01100100 01100001 01101110 01100001 01100100 01100001 00100001

Não vale usar um tradutor automático!

[4] Comentário enviado por px em 18/12/2013 - 14:49h

@Buckminster:

O próximo será sobre tradução de binários então.

Isso vai me dar uma "trabalheira" danada!

De nada:

01000100 01100001 00100000 01110100 01110010 01100001 01100010 01100001 01101100 01101000 01101111 00100000 01101101 01100001 01101001 01110011 00100000 01100110 01101001 01100011 01100001 00100000 01101100 01100101 01100111 01100001 01101100 00100000 00111010 01000100

[5] Comentário enviado por Buckminster em 18/12/2013 - 15:37h

010101100110111101110101001000000010001001100101011011100110001101101000011001010111001000100010001000000110010001100101001000000110010101111000011001010111001001100011111011010110001101101001011011110111001100100000011100000110000101110010011000010010000001100110011000010111101001100101011100100010000001101110011011110010000001100001011100100111010001101001011001110110111100101110

[6] Comentário enviado por juno em 18/12/2013 - 15:45h

01000011 01100001 01110010 01100001 01101101 01100010 01100001 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 00100000 01110011 11110011 00100000 00100001 00100001 00100001

[7] Comentário enviado por Buckminster em 18/12/2013 - 19:13h


[6] Comentário enviado por juno em 18/12/2013 - 15:45h:

01000011 01100001 01110010 01100001 01101101 01100010 01100001 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 00100000 01110011 11110011 00100000 00100001 00100001 00100001


01000101 01110011 01110100 01101111 01110101 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 01101110 01100100 01101111 00100001

[8] Comentário enviado por px em 18/12/2013 - 19:42h


[7] Comentário enviado por Buckminster em 18/12/2013 - 19:13h:


[6] Comentário enviado por juno em 18/12/2013 - 15:45h:

01000011 01100001 01110010 01100001 01101101 01100010 01100001 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 00100000 01110011 11110011 00100000 00100001 00100001 00100001

01000101 01110011 01110100 01101111 01110101 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 01101110 01100100 01101111 00100001


01001111 00100000 01110000 01100101 01110011 01110011 01101111 01100001 01101100 00100000 01101001 01110010 11100001 00100000 01100110 01101001 01100011 01100001 01110010 00100000 01101100 01101111 01110101 01100011 01101111 00100001 00100000 01110010 01110011 01110010 01110011

[9] Comentário enviado por Buckminster em 18/12/2013 - 19:54h

01000011 01101111 01101110 01100011 01101111 01110010 01100100 01101111 00101110 00100000 01001101 01100001 01110011 00100000 01101100 01101111 01110101 01100011 01101111 00100000 01101010 11100001 00100000 01100101 01110011 01110100 01101111 01110101 00100000 01100101 01110101 00100000 01110100 01110010 01100001 01100100 01110101 01111010 01101001 01101110 01100100 01101111 00100000 01101110 01101111 00100000 00100010 01100010 01110010 01100001 11100111 01101111 00100010 00101110 00100000 01010110 01101111 01110101 00100000 01100011 01101111 01101101 01100101 11100111 01100001 01110010 00100000 01100001 00100000 01110101 01110011 01100001 01110010 00100000 01110101 01101101 00100000 01110100 01110010 01100001 01100100 01110101 01110100 01101111 01110010 00101100 00100000 01110000 01101111 01101001 01110011 00100000 01100100 01100101 01110000 01100101 01101110 01100100 01100101 01101110 01100100 01101111 00100000 01100001 00100000 01100011 01101111 01101001 01110011 01100001 00100000 01110110 01100001 01101001 00100000 01101100 01101111 01101110 01100111 01100101 00101110 00101110 00101110 00100000 01110010 01110011 01110010 01110011

[10] Comentário enviado por px em 18/12/2013 - 21:36h


[9] Comentário enviado por Buckminster em 18/12/2013 - 19:54h:

01000011 01101111 01101110 01100011 01101111 01110010 01100100 01101111 00101110 00100000 01001101 01100001 01110011 00100000 01101100 01101111 01110101 01100011 01101111 00100000 01101010 11100001 00100000 01100101 01110011 01110100 01101111 01110101 00100000 01100101 01110101 00100000 01110100 01110010 01100001 01100100 01110101 01111010 01101001 01101110 01100100 01101111 00100000 01101110 01101111 00100000 00100010 01100010 01110010 01100001 11100111 01101111 00100010 00101110 00100000 01010110 01101111 01110101 00100000 01100011 01101111 01101101 01100101 11100111 01100001 01110010 00100000 01100001 00100000 01110101 01110011 01100001 01110010 00100000 01110101 01101101 00100000 01110100 01110010 01100001 01100100 01110101 01110100 01101111 01110010 00101100 00100000 01110000 01101111 01101001 01110011 00100000 01100100 01100101 01110000 01100101 01101110 01100100 01100101 01101110 01100100 01101111 00100000 01100001 00100000 01100011 01101111 01101001 01110011 01100001 00100000 01110110 01100001 01101001 00100000 01101100 01101111 01101110 01100111 01100101 00101110 00101110 00101110 00100000 01110010 01110011 01110010 01110011


01001011 01001011 01001011 01001011 01001011 00101100 00100000 01101010 11100001 00100000 01100001 01110100 11101001 00100000 01100011 01100001 01101110 01110011 01100101 01101001 00100000 01100100 01100101 00100000 01101111 01101100 01101000 01100001 00100000 01100001 00100000 01110100 01100001 01100010 01100101 01101100 01100001 00101100 00100000 01110010 01110011 01110010 01110011 00101110

01010000 01010011 00111010 506172656920706f722061717569205e5e

[11] Comentário enviado por Buckminster em 18/12/2013 - 22:41h

45752074616d62e96d21

[12] Comentário enviado por juno em 18/12/2013 - 23:23h

20:61:75:61:75:61:75:75:61:20:2e:2e:2e:2e:20:73:1f:20:6d:61:74:65:6d:1f:74:69:63:61:20:70:75:72:61:20:2e:2e:2e:20:6b:6b:6b:6b:6b

[13] Comentário enviado por removido em 19/12/2013 - 07:10h

Traduzindo para o brasileiro: 4-3-3, 4-4-2, 3-5-2, 4-5-1, 3-6-1

[14] Comentário enviado por phoemur em 19/12/2013 - 09:53h

Eu uso python, é bem tranquilo:

>>> frase = 'Parabéns pelo artigo Buckminster'
>>> resultado = []
>>> for elem in frase:
... resultado.append(bin(ord(elem))[2:])
...
>>> lista = ' '.join(resultado)
>>> lista
'1010000 1100001 1110010 1100001 1100010 11101001 1101110 1110011 100000 1110000 1100101 1101100 1101111 100000 1100001 1110010 1110100 1101001 1100111 1101111 100000 1000010 1110101 1100011 1101011 1101101 1101001 1101110 1110011 1110100 1100101 1110010'
>>> lista = ['0b' + elem for elem in lista.split()]
>>> ''.join([chr(int(elem, base = 2)) for elem in lista])
'Parabéns pelo artigo Buckminster'

[15] Comentário enviado por junior em 19/12/2013 - 11:10h

Sou leigo no assunto, então pergunto:

É correto usar o termo "voltagem"?
Assim como, na proporção, poderíamos utilizar: amperagem, "vatagem (W)"?

-

Parabéns pelo artigo!

[16] Comentário enviado por lcavalheiro em 19/12/2013 - 11:47h


[15] Comentário enviado por junior.rocha em 19/12/2013 - 11:10h:

Sou leigo no assunto, então pergunto:

É correto usar o termo "voltagem"?
Assim como, na proporção, poderíamos utilizar: amperagem, "vatagem (W)"?

-

Parabéns pelo artigo!


Amperagem sim, mas uatágem (James Watt, como todo bom inglês, infartaria se seu nome fosse pronunciado como Vatt, já que pronunciar o W como V é um privilégio dos alemães que pronunciam ainda o V como F) não. Usa-se potência mesmo.

[17] Comentário enviado por Buckminster em 19/12/2013 - 18:54h

Obrigado phoemur e junior.rocha.

Voltagem - tensão elétrica medida em volts - Substantivo Feminino - (Está no Dicionário)

Amperagem - s.f. Intensidade da corrente elétrica (está no Dicionário).

[18] Comentário enviado por macalencar em 20/12/2013 - 09:55h

Ótimo artigo...
--
$ gcc comments.c -o bincomment
$ ./bincomment
Segmentation fault
_

[19] Comentário enviado por cytron em 27/12/2013 - 01:02h

Artigo legal !!!!!

Me fez entrar pelo túneo do tempo, voltei uns 15 anos atrás... lá no assembly... madrugadas e madrugadas intermináveis, controlando registradores e "desenroscando parafusos" usando assembly kkkkk. Usando como fonte de conhecimento a "bíblia do programador", tutorial "RBT" e "Guadilajara", algumas coisas do "Nash Leon" também... cadê ele heim? kkkkkk.

Droga! É nessas horas que fico triste por existir o "tempo" e ele "passar". Tem coisas que deveriam ser "etérnas". Como era bom!

Quem é da época sabe exatamente a sensação! Ter a tabela ASCII decorada, tando em decimal quando em hex, decorar até um monte de binários, saber a sequencia dos múltiplos de 8 e impressionar qualquer professor de matemática... 8, 16, 32, 64, 128, .... até o cara pedir pra parar. Coitado, mal sabia ele que era tudo decorado de tanto assembly.

Tinha uns que eram tão fissurados no assembly que já reconhecia até a "linguagem de máquina", (eu por exemplo kkkk), dava um "copy con" e mandava ver no ALT + ...., fazia um ".com" com uns 15 bytes que já mudava o cursos ou mostrava uma frase na tela.

Aqui no VOL deve ter muita gente que sabe e sente o que estou falando.

E quando apareceu o "BB" no Linux? Um verdadeiro show pirotécnico em ASCII, tinha gente que via mesmo um monte de "letrinhas" passando na tela kkkkk. Mas quem era do "underground" ficava "paralizado" com tamanha maravilha.

Mais uma vez torno a repetir.... COMO ERA BOM!

Entendo porque nossos avós e pais ficam as vezes relembrando a vida na roça e dizendo "como era bom" o fogão a lenha, o cheiro da terra, o canto dos pássaros ou qualquer outra coisa da infância. "No nosso mundo" o canto do pássaro era o som do modem US-Robotics conectando em uma BBS.

O que tem a ver essa retrospectiva com o artigo do nosso amigo????

Ele fala sobre os barramentos (indiretamente), ASCII, e outras coisas, tudo ligada diretamente com o programador assembly. O mais tocante para mim foi a parte do vídeo, onde o programador assembly tem que controlar "fisicamente" a placa de vídeo para conseguir mostrar algo na tela, as páginas de vídeo, os pixels e tudo mais! Que maravilha.

[20] Comentário enviado por devauxcl em 02/01/2014 - 21:56h

Excelente Artigo ! Interessante o assunto

[21] Comentário enviado por Buckminster em 03/01/2014 - 02:07h

macalencar, cytron e devauxcl:

obrigado!

[22] Comentário enviado por mrxrobot em 04/01/2014 - 22:41h

Execelente artigo !

[23] Comentário enviado por Buckminster em 05/01/2014 - 21:46h


[22] Comentário enviado por marcos_warlock em 04/01/2014 - 22:41h:

Execelente artigo !


Obrigado!

[24] Comentário enviado por Ghroll em 06/01/2014 - 20:47h

Post fantástico!!
A tecnologia e sua infinitas possibilidades. :)

[25] Comentário enviado por VandersonDiniz em 07/01/2014 - 15:43h

Para você, Buckminster: (y) <----- interprete como se estivesse no facebook.kkkk.

[26] Comentário enviado por albfneto em 07/01/2014 - 19:01h

Muito bom, Buck!
Seu artigo é excelente, alta qualidade, 10 e favoritado.
Obrigado por compartilhar
seu conhecimento aqui no VOL!

[27] Comentário enviado por Buckminster em 08/01/2014 - 21:17h

Ghroll e VandersonDiniz,

obrigado!

[28] Comentário enviado por Buckminster em 08/01/2014 - 21:19h

Opa, obrigado Alberto.
É sempre uma satisfação receber um elogio teu.

[29] Comentário enviado por mitz em 12/02/2014 - 23:32h

Há tempos não via alguém tão apaixonado por cargas eletricas.
Valeu pela aula, mas sinto choque quando ouço as expressões "voltagem", "amperagem" e outras do tipo.
Como está bem explicado no texto, correspondem a tensão elétrica e corrente elétrica e por aí vão...

[30] Comentário enviado por mitz em 12/02/2014 - 23:39h

[15] Comentário enviado por junior.rocha em 19/12/2013 - 11:10h: Sou leigo no assunto, então pergunto:É correto usar o termo "voltagem"?Assim como, na proporção, poderíamos utilizar: amperagem, "vatagem (W)"?-Parabéns pelo artigo!


O certo seria dizer tensão elétrica, corrente elétrica.
As expressões voltagem, amperagem e outras são termos normalmente usados por leigos ou profissionais que aprenderam fazendo, sem influência da teoria.
De qualquer forma não tira o valor do profissional de forma alguma...

Parabéns!

[31] Comentário enviado por asdf2 em 15/04/2014 - 01:33h

Um dos melhores Artigo que ja li aqui no no site, ficou perfeito, valeu demais. Foi pros favoritos

[32] Comentário enviado por JFurio em 19/05/2014 - 09:40h

Realmente muito bom !!! o que seria dos programados, desenvolvedores, arquitetos de rede, etc... se não fossem a união da física, química e a eletrônica!

[33] Comentário enviado por Buckminster em 19/06/2014 - 21:51h


[31] Comentário enviado por asdf2 em 15/04/2014 - 01:33h:

Um dos melhores Artigo que ja li aqui no no site, ficou perfeito, valeu demais. Foi pros favoritos


Obrigado.

[34] Comentário enviado por Buckminster em 19/06/2014 - 21:51h


[32] Comentário enviado por JFurio em 19/05/2014 - 09:40h:

Realmente muito bom !!! o que seria dos programados, desenvolvedores, arquitetos de rede, etc... se não fossem a união da física, química e a eletrônica!


Obrigado.

[35] Comentário enviado por JJSantos em 15/11/2014 - 22:46h

Excelente Artigo!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts