quarta-feira, 19 de janeiro de 2011

C/C++; biblioteca stdio

C/C++; biblioteca stdio
1. A biblioteca stdio engloba o conjunto de funções que são normalmente usadas na linguagem C para
I/O. Podem-se usar, praticamente da mesma forma, em C, C++ e, de forma muito semelhante, na
generalidade dos compiladores e variantes do Unix.
Para incluir as declarações associadas à biblioteca inclui-se o ficheiro stdio.h
#include
2. A função comum de escrita no ecrã é o printf que tem a seguinte forma geral:
printf( formato, argumentos...)
O formato é na realidade a mensagem que vai ser escrita no ecrã quando a função for chamada.
Exemplo: O seguinte código permite escrever no ecrã a mensagem Hello World
(terminando com uma mudança de linha, provocada pela escrita do caracter \n).
#include
main()
{
printf ("Hello World\n");
}
Exemplo: qual o efeito dos seguintes printf ?
printf ("Hello\nWorld\n");
printf ("Hello \n\n World\n");
printf ("\nHello\n World");
3. Na realidade, a maior parte das vezes a função será usada para escrever no ecrã valores das variáveis
do programa. Para escrever o valor de uma variável com o printf é preciso conjugar duas coisas:
- Assinalar essa intenção na mensagem (primeiro argumento)
- Veicular a variável como argumento adicional
Por exemplo:
int i = 10;
printf( "Aqui vai aparecer o valor de i que é %d e depois segue\n", i );
Neste caso o printf tem dois argumentos. O que vai ser escrito é (sempre!) o primeiro argumento.
Acontece que ao, escrever o primeiro argumento, se encontrar uma sequência especial como é o caso de
%d
Substitui essa sequência pelo valor da variável indicada no 2º argumento. Resultado, aparece a
mensagem:
Aqui vai aparecer o valor de i que é 10 e depois segue
4. O mesmo esquema aplica-se para mais que uma variável: as sequências especiais inscritas na
mensagem são substituídas, por ordem, pelas variáveis indicadas nos argumentos adicionais do printf.
Exemplo:
int i = 10, k = 35
printf( "Uma valor é %d e o outro é %d\n", i, k );
ISCTE – DCTI Sistemas Operativos – C/C++; biblioteca stdio Pág. 2
Ou seja, é preciso que o número de sequências especiais inscritas na mensagem seja igual ao número
de argumentos que são dados ao printf além do primeiro.
5. Na realidade os argumentos não precisam de ser variáveis simples; pode, ser, como em geral na
linguagem C/C++ expressões. Por exemplo:
int i = 10, k = 35
printf( "%d+%d=%d", i, k, i+k );
6. As sequências especiais, ditas sequências de formatação, indicam o tipo da variável. Se a sequência
de formatação for %d, é suposto que a variável correspondente seja int. Da mesma forma verificam-se
as seguintes correspondências:
%d - int
%ld - long
%c - caracter
%s - string (array de caracteres)
%f - float
%lf - double (float "longo")
...
Exemplo:
int i = 79;
float f = 10.5;
string *str = "Hello";
printf ("<%d><%f><%s>\n", i, f, str);
printf ("<%c><%d>\n", i, i );
printf ("<%f><%d>\n", f, (int) f);
printf ("<%c><%d>\n", str[0], str[0]);
7. É claro que, se as sequências de formatação não estiverem de acordo com os tipos das variáveis
correspondentes, podem ser escritos os maiores disparates.
Por exemplo:
int i = 79;
float f = 10.5;
printf ("<%d><%f>\n", f, i);
Ou seja, a sequências de formatação inscritas na mensagem e os correspondentes argumentos do
printf, devem concordar quer em número quer em género.
8. As sequências de formatação podem ser enriquecidas com elementos que, justamente, servem para
controlar a forma como os valores das variáveis são escritos no ecrã (ou seja, formatar).
Por exemplo:
%3d escreve o valor do número em, pelo menos, 3 posições.
%16.2f escreve um float com 16 posições, 2 para decimais;
%10s escreve uma string em 10 posições;
Exercício: faça um programa que escreva os números de 1 a 100, 10 em cada linha, alinhados à direita
em cada coluna.
9. Nada disto é segredo de estado., pelo contrário. No UNix as funções standard do C são directamente
documentadas. Se quiser saber mais pormenores sobre esta outras funções pode fazer o comando:
man 3 printf
10. O printf é na realidade uma versão específica de uma função mais geral fprintf. O fprintf tem a
seguinte forma geral:
fprintf ( canal , formato, argumentos...)
ISCTE – DCTI Sistemas Operativos – C/C++; biblioteca stdio Pág. 3
A diferença para o printf é apenas o primeiro argumento que indica o canal de escrita. No caso do
printf o canal de escrita é omitido: é, por construção, o canal standard de saída do programa
(normalmente o ecrã). Este canal standard de saída é descrito pela variável stdout (declarada por
inclusão do stdio.h) que pode também ser usada no fprintf. Ou seja, o printf
printf ( formato, argumentos...)
é o mesmo que
fprintf(stdout, formato, argumentos...)
10. A função de leitura correspondente ao printf é o scanf, que tem uma estrutura de argumentos
parecida:
scanf ( argumentos, variáveis...)
O primeiro argumento indica o que se pretende ler, através de sequências de formatação parecidas com
o printf. Os restantes argumentos indicam o endereço das variáveis que vão receber os valores lidos.
11. Um exemplo típico é a leitura de um número. Exemplo:
main()
{
int n;
printf ("Diga um número: ");
scanf ("%d", &n );
printf ("O número seguinte é: %d \n", i);
}
O primeiro scanf indica que se está à espera de ler um número inteiro. O segundo argumento denota
que o número inteiro lido deve ser colocado na variável n. Para isso é indicado como argumento o
endereço da variável n (um pointer para a variável n).
O comportamento do scanf é o seguinte: ultrapassa os separadores (espaços, mudanças de linha), lê
todos os caracteres que possam constituir um número (ou seja, os algarismos) e termina no primeiro que
não seja.
Exemplo, experimente o programa anterior com as seguintes entradas:
12 seguido de enter1
12xxx
123456789
123
x123
Experimente ainda mudar de linha antes de dar o número.
12. O scanf não garante que a entrada seja conforme ao que se espera (ou seja, não faz validações !).
Por exemplo, na situação anterior a entrada x123 faz com que, na realidade, não seja lido qualquer
número.
13. Além do %d aplicam-se as sequências semelhantes ao printf, sendo as mais comuns:
%s palavra
%c um caracter
%f um número decimal
Note que o %s lê apenas uma palavra (ou seja, termina no primeiro espaço ou mudança de linha
encontrado). Por exemplo:
main()
1 tem, seja com for, que terminar a entrada com enter; antes disso os caracteres escritos ficam apenas no
buffer de entrada - não chegam ao programa.
ISCTE – DCTI Sistemas Operativos – C/C++; biblioteca stdio Pág. 4
{
int n;
printf ("Diga o seu nome completo: ");
scanf ("%s", s );
printf ("Disse \n", i);
}
Note ainda que, neste caso, o s é dado sem &. É normal: trata-se de um array de caracteres; o s é ele
próprio um endereço (o do primeiro elemento do array).
14. Raramente se usa o scanf com sequências de formatação mais elaboradas que as anteriores. Mas o
scanf permite uma formatação mais geral perecida (numa óptica de leitura) com a do scanf. A
formatação do scanf indica o padrão que é suposto obedecer a sequência de caracteres de entrada: a
leitura só é bem sucedida se a entrada obedecer a esse padrão.
A indicação de um carácter comum na sequência de formatação indica que é suposto a entrada veicular
esse mesmo carácter.
Exemplo: experimente o seguinte programa e indique uma sequência de entrada que permita atribuir um
número à variável n.
main()
{
int n;
printf ("Diga um número: ");
scanf ("XXX%d", &n );
printf ("O número seguinte é: %d \n", i);
}
Pode também ser usado um repetidor. Exemplo: experimente o seguinte programa
main()
{
int n;
char s[100];
printf ("Diga um número: ");
scanf ("%3c%d", s, &n );
printf ("O número seguinte é: %d \n", i);
}
e indique uma sequência de entrada que permita atribuir um número à variável n.
O símbolo * permite ultrapassar caracteres (isto é, ler mas descartar).
Exemplo: experimente o seguinte programa
main()
{
int n;
printf ("Diga um número: ");
scanf ("%*3c%d", &n );
printf ("O número seguinte é: %d \n", i);
}
15. O exemplo do printf, o scanf é uma versão da função mais geral fscanf. O scanf lê de uma
canal standard de entrada (normalmente o teclado) descrito pela variável stdin. Ou seja:
fscanf ( formato, variáveis...)
é o mesmo que
fscanf ( stdin, formato, variáveis...)
16. Além do scanf à outras funções de leitura tanto ou mais utilizadas. Uma delas é o
ISCTE – DCTI Sistemas Operativos – C/C++; biblioteca stdio Pág. 5
getchar()
ou
fgetc(stdin)
que lê e devolve um caracter.
Exemplo:
#include
main()
{
printf ("Carregue em ENTER para continuar: ");
getchar();
}
O caracter lido é devolvido pela função. Exemplo:
#include
main()
{
int c;
printf ("Carregue em ENTER para continuar: ");
c=getchar();
if ( c != '\n' )
printf ("Era ENTER não era %c\n", c);
}
17. Considere o seguinte exemplo:
#include
main()
{
int c;
while ( getchar() != EOF )
;
}
Este lê todos os caracteres da entrada até ao "fim do ficheiro" (interactivamente o fim de ficheiro pode ser
dado com CTRL-D). Neste caso o fim de ficheiro é sinalizado pela própria função getchar() que devolve a
constante EOF (definida em stdio.h) nessas circunstâncias.
O mesmo efeito se pode obter através da função feof:
#include
main()
{
int c;
c = getchar();
while ( ! feof(stdin) )
{
c=getchar();
}
}
que devolve true (seja 1) quando se verificar o fim de ficheiro, neste caso no stdin.
18. Exemplo: o seguinte exemplo implemente um cat rudimentar
#include
main()
{
int c;
c = getchar();
while ( ! feof(stdin) )
{
ISCTE – DCTI Sistemas Operativos – C/C++; biblioteca stdio Pág. 6
putchar(c);
c=getchar();
}
}
Use este programa para fazer um comando que permita:
i) ver o conteúdo do ficheiro /etc/passwd
ii) criar, no seu directório de trabalho, um ficheiro com algumas palavras
iii) copiar o ficheiro /etc/passwd para o seu directório de trabalho;
19. As várias funções de leitura podem ser misturadas. Seja como for, relativamente à leitura, funciona
sempre a seguinte lógica: a entrada é uma sequência de caracteres, que têm que ser consumidos por
ordem; assim, cada operação de leitura consuma 0 ou mais caracteres; a próxima operação recomeça no
carácter seguinte (o primeiro carácter que a operação anterior não consumiu).
Exemplo, considere o seguinte programa ao qual se dá como entrada: 12 (seguido de enter).
main()
{
int n, c;
printf ("Diga um número: ");
scanf ("%d", &n );
printf ("Disse %d\n", &n);
printf ("Carregue em ENTER");
getchar();
}
Contrariamente ao que a as mensagens sugeriam, após a entrada do número o programa não fica à
espera. A leitura do número pelo scanf consome o 12 mas não o enter: logo o getchar não tem que
esperar por um novo carácter: prossegue imediatamente lendo o enter.
20. Outra função importante de leitura é a função gets() ou fgets(). A variante gets tem a forma
gets(s)
Sendo s uma string (array de caracteres). A variante fgets tem a forma:
fgets(s, dimensao, stdion)
Sendo dimensão uma expressão que indica o número máximo de caracteres a ler.
A segunda forma é a mais adequada porque permite evitar a leitura de mais caracteres do que a
dimensão do array de destino permite. Por exemplo:
main()
{
int s[21];
printf ("Diga uma frase (máx 20 caracteres): ");
fgets(s, 21, stdin):
printf ("Disse %sd\n", s);
}
Note que, neste caso, a função lê uma linha completa, até ao ENTER (a menos que o limite seja
ultrapassado). É portanto a função adequada para ler strings que possam ter espaços no meio.

segunda-feira, 27 de dezembro de 2010

Fotos da banda.




domingo, 26 de dezembro de 2010

quinta-feira, 23 de dezembro de 2010

Baixar chave de Kaspersky 2009. Aprenda como ativa o anti-vírus.

Fonte de Alimentação.

Introdução

A fonte de alimentação  é o dispositivo responsável por fornecer energia elétrica aos componentes de um computador. Portanto, é um tipo de equipamento que deve ser escolhido e manipulado com cuidado, afinal, qualquer equívoco pode resultar em provimento inadequado de eletricidade ou em danos à máquina. É por esse motivo que o InfoWester apresenta este artigo. Nele, você conhecerá as principais características das fontes, como tensão, potência, PFC, eficiência, tipos de conectores, entre outros. O foco do artigo serão as fontes do tipo ATX, por esse ser o tipo mais popular. Vamos lá?

Tipos de fontes de alimentação

Como já dito, as fontes de alimentação são equipamentos responsáveis pelo fornecimento de energia elétrica aos dispositivos dos computadores. Para isso, convertem corrente alternada (AC - Alternating Current) - grossamente falando, a energia recebida por meio de geradores, como uma hidroelétrica - em corrente contínua (DC - Direct Current), uma tensão apropriada para uso em aparelhos eletrônicos. Assim, a energia que chega nas tomadas da sua casa em 110 V (Volts) ou 220 V é transformada em tensões como 5 V e 12 V.
Os computadores usam fontes de alimentação do tipo chaveada. Trata-se de um padrão que faz uso de capacitores e indutores no processo de conversão de energia e recebe esse nome por possuir, grossamente falando, um controle de chaveamento que "liga e desliga" a passagem de energia de forma a gerar e fixar uma tensão de saída. Há também uma categoria chamada fonte linear, mas esse tipo não se mostra adequado aos computadores por vários motivos, entre eles, tamanho físico e peso elevado, além de menor eficiência (conceito que será explicado neste texto), uma vez que fontes lineares utilizam um "excesso" de energia para manter sua tensão de saída, gerando também mais calor. Nas fontes chaveadas isso não ocorre porque esse tipo simplesmente desativa o fluxo de energia em vez de dissipar a "sobra". Além disso, fontes chaveadas também exigem menor consumo, pois utilizam praticamente toda a energia que "entra" no dispositivo.
Fonte de alimentação ATX - Imagem por OCZ
Fonte de alimentação ATX - Imagem por OCZ
Por se tratar de um equipamento que gera campo eletromagnético (já que é capaz de trabalhar com frequências altas), as fontes devem ser blindadas para evitar interferência em outros aparelhos e no próprio computador.
Antes de ligar seu computador na rede elétrica, é de extrema importância verificar se o seletor de voltagem da fonte de alimentação corresponde à tensão da tomada (no Brasil, 110 V ou 220 V). Se o seletor estiver na posição errada, a fonte poderá ser danificada, assim como outros componentes da máquina. Menos comuns, há modelos de fontes que são capazes de fazer a seleção automaticamente.

Padrões de fontes de alimentação

Assim como qualquer tecnologia produzida por mais de um fabricante, as fontes de alimentação devem ser fornecidas dentro de padrões estabelecidos pela indústria de forma a garantir sua compatibilidade com outros dispositivos e o seu funcionamento regular. No caso das fontes, o padrão mais utilizado nos dias de hoje é o ATX (Advanced Tecnology Extendend), que surgiu em meados de 1996 e que também especifica formatos de gabinetes de computadores e de placas-mãe.
Com essa padronização, uma pessoa saberá que, ao montar uma computador, a placa-mãe se encaixará adequadamente no gabinete da máquina, assim como a fonte de alimentação. Também haverá certeza de provimento de certos recursos, por exemplo: as fontes ATX são capazes de fornecer tensão de 3,3 V, característica que não existia no padrão anterior, o AT (Advanced Tecnology). O padrão ATX, na verdade, é uma evolução deste último, portanto, adiciona melhorias em pontos deficientes do AT. Isso fica evidente, por exemplo, no conector de alimentação da placa-mãe: no padrão AT, esse plugue era dividido em dois, podendo facilmente fazer com que o usuário os invertesse e ocasionasse danos. No padrão ATX, esse conector é uma peça única e só possível de ser encaixada de uma forma, evitando problemas por conexão incorreta.
As fontes ATX também trouxeram um recurso que permite o desligamento do computador por software. Para isso, as fontes desse tipo contam com um sinal TTL (Transistor-Transistor Logic) chamado PS_ON (Power Supply On). Quando está ligada e em uso, a placa-mãe mantém o PS_ON em nível baixo, como se o estive deixando em um estado considerado "desligado". Se a placa-mãe estiver em desuso, ou seja, não estiver recebendo as tensões, deixa de gerar o nível baixo e o PS_ON fica em nível alto. Esse sinal pode mudar seu nível quando receber ordens de ativação ou desativação de determinados recursos, por exemplo:
- Soft Power Control: usado para ligar ou desligar a fonte por software. É graças a esse recurso que o sistema operacional consegue desligar o computador sem que o usuário tenha que apertar um botão para isso;
- Wake-on-LAN: permite ligar ou desligar a fonte por placa de rede.
O sinal PS_ON depende da existência de outro: o sinal +5 VSB ou Standby. Como o nome indica, esse sinal permite que determinados circuitos sejam alimentados quando as tensões em corrente contínua estão suspensas, mantendo ativa apenas a tensão de 5 V. Em outras palavras, esse recurso é o que permite ao computador entrar em "modo de descanso". É por isso que a placa de vídeo ou o HD, por exemplo, pode ser desativado e o computador permanecer ligado.
Há também outro sinal importante chamado Power Good que tem a função de comunicar à máquina que a fonte está apresentando funcionamento correto. Se o sinal Power Good não existir ou for interrompido, geralmente o computador desliga automaticamente. Isso ocorre porque a interrupção do sinal indica que o dispositivo está operando com voltagens alteradas e isso pode danificar permanentemente um componente. O Power Good é capaz de impedir o funcionamento de chips enquanto não houver tensões aceitáveis. Esse sinal, na verdade, existe desde padrão AT. No caso do padrão ATX, sua denominação é PWR_OK (Power Good OK) e sua existência se refere às tensões de +3,3 V e de +5 V.
Como se trata de uma padrão relativamente antigo, o ATX passou - e passa - por algumas mudanças para se adequar a necessidades que foram - e vão - aparecendo por conta da evolução tecnológica de outros dispositivos. Com isso, surgiram várias versões:
- ATX12V 1.x: essa nova especificação surgiu em meados de 2000 e consiste, basicamente, em um conector adicional de 12 V formado por 4 pinos, e outro, opcional, de 6 pinos e tensão de 3,3 V ou 5 V. Essa versão foi sofrendo pequenas revisões ao longo do tempo. A última, a 1.3, teve como principal novidade a implementação de um conector de energia para dispositivos SATA;
- ATX12V 2.x: série de revisões que lançou um conector para a placa-mãe de 24 pinos (até então, o padrão era 20 pinos) e adicionou, na versão 2.2, um plugue para placas de vídeo que usam o slot PCI Express, recurso necessário devido ao alto consumo de energia desses dispositivos. Neste padrão, o conector opcional de 6 pinos foi removido;
- EPS12V: especificação muito parecida com a série ATX12V 2.x, definida pela SSI (Server System Infrastructure) inicialmente para ser aplicada em servidores. Seu principal diferencial é a oferta de um conector adicional de 8 pinos (que pode ser uma combinação de dois conectores de 4 pinos) e um opcional de 4. Para atender de forma expressiva o mercado, muitos fabricantes oferecem fontes que são, ao mesmo tempo, ATX12V v2.x e EPS12V.
Vale frisar que há ainda vários outros formatos menos comuns para atender determinadas necessidades, como variações do ATX (EATX, microATX, etc), EBX, ITX (e suas versões), entre outros.
Com tantos padrões, você pode estar se perguntando qual escolher, não é mesmo? Essa decisão pode ser mais fácil do que parece. Via de regra, se você está montando um computador novo, com componentes totalmente recentes, basta escolher o último padrão disponível, que muito provavelmente será o mais fácil de se encontrar no mercado. Em caso de dúvida, basta consultar a descrição de sua placa-mãe para ver qual padrão ela utiliza e checar se a fonte pela qual você se interessa oferece suporte a essa especificação.

Tensões das fontes de alimentação

Os dispositivos que compõem um computador são tão variados que requerem níveis diferentes de tensão para o seu funcionamento. Por isso, as fontes de alimentação fornecem, essencialmente, as seguintes tensões: +3,3 V, +5 V, +12 V, -5 V e -12 V (as antigas fontes AT não oferecem a tensão de +3,3 V). As saídas de +3,3 V e +5 V são mais direcionadas a dispositivos menores, como chips de memória. A tensão de +12 V é utilizada por dispositivos que consomem mais energia, tais como aqueles que contam com "motores", como HDs (cujo motor é responsável por girar os discos) e drives de DVD ou Blu-ray (que possuem motores para abrir a gaveta e para girar o disco). As tensões de -5 V e -12 V são pouco utilizadas - serviam ao antigo barramento ISA, por exemplo.
É claro que há dispositivos que exigem voltagens menores. Memórias RAM do tipo DDR3, por exemplo, podem trabalhar com +1,5 V. Para esses casos, a placa-mãe conta com reguladores que convertem uma saída de voltagem da fonte de alimentação para a tensão necessária ao componente em questão.

Potência das fontes de alimentação

Esse é o aspecto mais considerado por qualquer pessoa na hora de comprar uma fonte. E deve ser mesmo. Se adquirir uma fonte com potência mais baixa que a que seu computador necessita, vários problemas podem acontecer, como desligamento repentino da máquina ou reinicializações constantes. O ideal é optar por uma fonte que ofereça uma certa "folga" neste aspecto. Mas escolher uma requer alguns cuidados.
O principal problema está no fato de que algumas fontes, principalmente as de baixo custo, nem sempre oferecem toda a potência que é descrita em seu rótulo. Por exemplo, uma fonte de alimentação pode ter em sua descrição 500 W (Watts) de potência, mas em condições normais de uso pode oferecer, no máximo 400 W. Acontece que o fabricante pode ter atingindo a capacidade de 500 W em testes laboratoriais com temperaturas abaixo das que são encontradas dentro do computador ou ter informado esse número com base em cálculos duvidosos, por exemplo. Por isso, no ato da compra, é importante se informar sobre a potência real da fonte.
Para isso, é necessário fazer um cálculo que considera alguns aspectos, sendo o mais importante deles o conceito de potência combinada. Antes de compreendermos o que isso significa, vamos entender o seguinte: como você já viu, no que se refere às fontes ATX, temos as seguintes saídas: +3,3 V, +5 V, +12 V, -5 V e -12 V. Há mais uma chamada de +5 VSB (standby). O fabricante deve informar, para cada uma dessas saídas, o seu respectivo valor de corrente, que é medido em ampères (A). A definição da potência de cada saída é então calculada multiplicando o valor em volts pelo número de ampères. Por exemplo, se a saída de +5 V tem 30 A, basta fazer 5x30, que é igual a 150. A partir daí, resta fazer esse cálculo para todas as saídas e somar todos os resultados para conhecer a potência total da fonte, certo? Errado! Esse, aliás, é um dos cálculos duvidosos que alguns fabricantes usam para "maquiar" a potência de suas fontes.
É aí que entra em cena a potência combinada. As saídas de +3,3 V e +5 V são combinadas, assim como todas as saídas de +12 V. A potência máxima de cada uma só é possível de ser alcançada quando a saída "vizinha" não estiver em uso. Ou seja, no exemplo anterior, a potência da saída de +5 V só seria possível se a tensão de +3,3 V não fosse utilizada. Há ainda outro detalhe: uma outra medida de potência combinada considera os três tipos de saída mencionados: +3,3 V, +5 V, +12 V. Esse valor é então somado com as potências das saídas de -12 V (note que o sinal de negativo deve ser ignorado no cálculo) e +5 VSB. Daí obtém-se a potência total da fonte.
Para facilitar na compreensão, vamos partir para um exemplo. Vamos considerar uma fonte cujo rótulo informa o seguinte:
Tensões =>
+3,3 V
+5 V
+12 V (1)
+12 V (2)
-12 V
+5 VSB
Carga
28 A
30 A
22 A
22 A
0,6 A
3 A
Potência combinada
160 W
384 W
7,2 W
15 W
477,8 W
22,2 W
500 W
Observe que a potências combinada das tensões +3,3 V, + 5 V e +12 V é de 477,8 W, que é somada com a potência das saídas de - 12 V e +5 VSB, que é 22,2 W (7,2 + 15). Assim, a fonte tem 500 W de potência total. Mas aqui vai uma dica: no ato da compra, observe se as saídas de +12 V (sim, geralmente há mais de uma) fornecem uma potência combinada razoável. Essa é mais importante porque consiste na tensão que é utilizada pelos dispositivos que mais exigem energia, como o processador e a placa de vídeo. No nosso exemplo, esse valor é de 384 W.
Rótulo descritivo na lateral de uma fonte ATX
Rótulo descritivo na lateral de uma fonte ATX
Mas você deve estar se perguntando: como saber a potência adequada para o meu computador? Você já sabe que terá problemas se adquirir uma fonte com potência insuficiente. Por outro lado, se comprar uma fonte muito poderosa para uma PC que não precisa de tudo isso, vai ser como comprar um ônibus para uma família de 5 pessoas. A tabela a seguir pode te ajudar nisso. Ela fornece uma estimativa do quanto os principais componentes de um computador podem consumir:
Item
Consumo
Processadores medianos e top de linha 60 W - 110 W
Processadores econômicos 30 W - 80 W
Placa-mãe 20 W - 100 W
HDs e drives de DVD ou Blu-ray 25 W - 35 W
Placa de vídeo com instruções em 3D 35 W - 110 W
Módulos de memória 2 W - 10 W
Placas de expansão (placa de rede, placa de som, etc) 5 W - 10 W
Cooler 5 W - 10 W
Teclado e mouse 1 W - 15 W
Como já dito, processadores e placas de vídeo são os dispositivos que mais exigem energia. Para piorar a situação, essa medida pode variar muito de modelo para modelo. Por isso, é importante consultar as especificações desses itens para conhecer suas médias de consumo. Suponha, por exemplo, que você tenha escolhido a seguinte configuração:
Processador 95 W
HD (cada) 25 W + 25 W
Drive de DVD 25 W
Placa de vídeo 3D 80 W
Mouse óptico + teclado 10 W
Total 260 W
Veja que o total é de 260 W, sem considerar outros itens, como placas-mãe, pentes de memória, etc. Neste caso, uma fonte com pelo menos 400 W reais seria o ideal (lembre-se da dica de sempre contar com uma "folga").

Eficiência das fontes de alimentação

Esse é outro aspecto de extrema importância na hora de escolher uma fonte. Em poucas palavras, a eficiência é uma medida percentual que indica o quanto de energia da rede elétrica, isto é, da corrente alternada, é efetivamente transformada em corrente contínua. Para entender melhor, vamos a um rápido exemplo: suponha que você tenha um computador que exige 300 W, mas a fonte está extraindo 400 W. A eficiência aqui é então de 75%. Os 100 W a mais que não são utilizados são eliminados em forma de calor.
Com base nisso, perceba o seguinte: quanto maior a eficiência da fonte, menor é o calor gerador e menor é o desperdício de energia, fazendo bem para o seu bolso e evitando que seu computador tenha algum problema causado por aquecimento excessivo. Por isso que eficiência é um fator muito importante a ser considerado. Fontes de maior qualidade tem eficiência de pelo menos 80%, portanto, estas são as mais indicadas. Fontes com eficiência entre 70% e 80% são até aceitáveis, mas abaixo disso não são recomendadas.

Power Factor Correction (PFC)

O PFC (Power Factor Correction ou, em bom português, Fator de Correção de Potência) é, em poucas palavras, um meio de permitir o máximo de otimização possível na distribuição de energia. Vamos entender melhor: dispositivos constituídos por motores, transformadores, reatores, entre outros, lidam com dois tipos de energia: ativa e reativa. A diferença básica entre ambos é que a energia reativa é aquela que é utilizada apenas para magnetizar determinados componentes dos motores, transformadores, etc.
A questão é que o excesso de energia reativa pode causar vários problemas, como aquecimento, sobrecarga, entre outros. Isso acontece porque a energia reativa não é energia de "trabalho", cabendo à energia ativa esse papel, mas pode utilizar recursos que poderiam ser dedicados a esta última. Por isso, quanto menos energia reativa for usada, melhor.
Uma maneira de medir o uso de energia reativa é comparando-a com a energia ativa. Isso se chama Fator de Potência. A medição é feita analisando valores entre 0 e 1. Quanto mais próximo de 1, menor é a utilização de energia reativa. Pelo menos em aplicações industriais, o ideal é que o fator de potência seja de, pelo menos, 0,92.
Nas fontes de alimentação, o Fator de Correção de Potência é utilizado para manter essa relação em patamares aceitáveis. Há dois tipos de mecanismos para isso: PFC ativo e PFC passivo. O primeiro faz uso de componentes que conseguem deixar o fator de potência em 0,95 ou mais - pelo menos teoricamente - e que também conseguem reduzir interferências. O segundo tipo, por sua vez, é menos eficiente, pois utiliza componentes que não conseguem oferecer um "equilíbrio" tão otimizado quanto o PFC ativo. O fator de potência de fontes com PFC passivo fica em torno de 0,80, mas modelos de menor qualidade podem chegar a 0,60.
É evidente que fontes com PFC ativo são mais recomendadas, mesmo porque estas podem oferecer um recurso bastante interessante: seleção automática de voltagem. Note, no entanto, que em termos de benefícios para o usuário final, o PFC é vantajoso em seus aspectos de proteção. Não há relevância em termos de economia de energia, por exemplo. Fabricantes passaram a adotar esse recurso mais por determinação de autoridades reguladoras de alguns países.

Conectores das fontes de alimentação

As imagens a seguir mostram os principais conectores existentes em uma fonte ATX, começando pelo conector que é ligado à placa-mãe:
Conector de 24 pinos de fonte ATX
A foto acima mostra um conector de placa-mãe com 24 pinos, sendo que uma parte, com 4 pinos, é separada. Isso existe para garantir compatibilidade com placas-mãe que utilizam conectores de 20 pinos. Na imagem abaixo, é possível ver seu respectivo encaixe na placa-mãe:
Encaixe de fonte de alimentação em placa-mãe
A imagem abaixo mostra um conector utilizado em dispositivos como HDs e unidades de CD/DVD que utilizam a inferface PATA, também conhecida como IDE. Esse padrão está caindo em desuso, pois foi substituído pelas especificações SATA:
Conector de alimentação para dispositivos IDE ou PATA
Na figura abaixo é possível ver o encaixe desse conector na parte traseira de um HD:
Encaixe de alimentação em HD PATA
Por sua vez, a imagem abaixo mostra um conector utilizado em unidades de disquetes. Esse dispositivo também caiu em desuso, portanto, trata-se de um conector que tende a desaparecer:
Conector de alimentação para drive de disquete
Vemos abaixo um conector de energia do atual padrão SATA:
Conector de alimentação para dispositivos SATA
Na foto seguinte, o encaixe SATA na parte traseira de um disco rígido:
Entrada de alimentação em HD SATA
Chamado de ATX12V, o conector visto abaixo conta com 4 pinos, deve ser encaixado na placa-mãe e geralmente tem a função de fornecer alimentação elétrica para o processador. Há uma versão mais atual, denominada EPS12V, que utiliza 8 pinos e que pode ser formada também pela união de dois conectores de 4 pinos:
Conector auxiliar de alimentação
Na figura seguinte, o encaixe na placa-mãe do conector da imagem anterior:
Encaixe de conector auxiliar de alimentação

Ventoinha das fontes

Ao pegar uma fonte de alimentação, você vai perceber que ela possui uma ventoinha, isto é, um "ventilador" que tem a função de retirar o ar quente proveniente do calor que é gerado dentro do computador. Para o usuário, esse é um aspecto que é importante de ser analisado por um simples motivo: barulho. Boa parte das fontes disponíveis no mercado, principalmente as de baixo de custo, utilizam uma ventoinha que fica em sua parte traseira, geralmente de 80 mm, de forma que é possível visualizá-la ao olhar a parte de trás da máquina. Por outro lado, há modelos de fonte que utilizam uma ventoinha maior, quase sempre de 120 mm, que fica instalada na parte de baixo, de forma que só é possível vê-la com a abertura do gabinete da máquina, como mostra a imagem a seguir:
Ventoinha na parte de baixo de uma fonte ATX
A vantagem de utilizar um fonte deste último tipo é que a ventoinha é maior, portanto, requer um número menor de rotações para direcionar o fluxo de ar. Dessa forma, essa fonte também consegue ser mais silenciosa.
Modelos mais sofisticados também contam com um sensor de temperatura que é capaz de acelerar a rotação das ventoinhas em caso de aumento de calor. Esse recurso é interessante não só por oferecer proteção contra aumento excessivo de temperatura, como também por servir de alerta de que alguma coisa está atrapalhando a circulação de ar necessária para o bom funcionamento da máquina.

.: Livros sugeridos :.
:: Arquitetura de computadores
:: Hardware na prática
Via Shopping UOL

Finalizando

Como você deve ter percebido no decorrer do artigo, a fonte de alimentação tem mais importância para um computador do que pensa. Por isso, é necessário direcionar maior atenção a esse item na hora de fazer um upgrade ou montar uma máquina. Como dica final, uma orientação que é comum na comprar de qualquer produto: pesquise. Dê preferência por modelos de marcas conceituadas, que fornecem todos os detalhes de seus produtos e garantia. E, mesmo assim, pesquise na internet pelos modelos que te interessatrm, pois mesmo entre fabricantes reconhecidos há produtos que decepcionam. É claro que na maioria das vezes não é necessário adquirir uma fonte top de linha, por outro lado, fontes de custo muito baixo, apelidadas de "genéricas", devem ser evitadas sempre que possível, pois quase sempre são de baixa qualidade e podem inclusive representar algum risco ao seu computador.

Retirado de InfoWester.

sexta-feira, 17 de dezembro de 2010

Memórias ROM e RAM

Introdução

No que se refere ao hardware dos computadores, entendemos como memória os dispositivos que armazenam os dados com os quais o processador trabalha. Há, essencialmente, duas categorias de memórias: ROM (Read-Only Memory), que permite apenas a leitura dos dados e não perde informação na ausência de energia; e RAM (Random-Access Memory), que permite ao processador tanto a leitura quanto a gravação de dados e perde informação quando não há alimentação elétrica. Neste artigo, o InfoWester apresenta os principais tipos de memórias ROM e RAM, assim como mostra as características mais importantes desses dispositivos, como frequência, latência, encapsulamento, tecnologia, entre outros.

Memória ROM

As memórias ROM (Read-Only Memory  - Memória Somente de Leitura) recebem esse nome porque os dados são gravados nelas apenas uma vez. Depois disso, essas informações não podem ser apagadas ou alteradas, apenas lidas pelo computador, exceto por meio de procedimentos especiais. Outra característica das memórias ROM é que elas são do tipo não voláteis, isto é, os dados gravados não são perdidos na ausência de energia elétrica ao dispositivo. Eis os principais tipos de memória ROM:
- PROM (Programmable Read-Only Memory): esse é um dos primeiros tipos de memória ROM. A gravação de dados neste tipo é realizada por meio de aparelhos que trabalham através de uma reação física com elementos elétricos. Uma vez que isso ocorre, os dados gravados na memória PROM não podem ser apagados ou alterados;
- EPROM (Erasable Programmable Read-Only Memory): as memórias EPROM têm como principal característica a capacidade de permitir que dados sejam regravados no dispositivo. Isso é feito com o auxílio de um componente que emite luz ultravioleta. Nesse processo, os dados gravados precisam ser apagados por completo. Somente depois disso é que uma nova gravação pode ser feita;
- EEPROM (Electrically-Erasable Programmable Read-Only Memory): este tipo de memória ROM também permite a regravação de dados, no entanto, ao contrário do que acontece com as memórias EPROM, os processos para apagar e gravar dados são feitos eletricamente, fazendo com que não seja necessário mover o dispositivo de seu lugar para um aparelho especial para que a regravação ocorra;
- EAROM (Electrically-Alterable Programmable Read-Only Memory): as memórias EAROM podem ser vistas como um tipo de EEPROM. Sua principal característica é o fato de que os dados gravados podem ser alterados aos poucos, razão pela qual esse tipo é geralmente utilizado em aplicações que exigem apenas reescrita parcial de informações;
- Flash: as memórias Flash também podem ser vistas como um tipo de EEPROM, no entanto, o processo de gravação (e regravação) é muito mais rápido. Além disso, memórias Flash são mais duráveis e podem guardar um volume elevado de dados. É possível saber mais sobre esse tipo de memória no artigo Cartões de memória Flash, publicado aqui no InfoWester;
- CD-ROM, DVD-ROM e afins: essa é uma categoria de discos ópticos onde os dados são gravados apenas uma vez, seja de fábrica, como os CDs de músicas, ou com dados próprios do usuário, quando o próprio efetua a gravação. Há também uma categoria que pode ser comparada ao tipo EEPROM, pois permite a regravação de dados: CD-RW e DVD-RW e afins.

Memória RAM

As memórias RAM (Random-Access Memory - Memória de Acesso Aleatório) constituem uma das partes mais importantes dos computadores, pois são nelas que o processador armazena os dados com os quais está lidando. Esse tipo de memória tem um processo de gravação de dados extremamente rápido, se comparado aos vários tipos de memória ROM. No entanto, as informações gravadas se perdem quando não há mais energia elétrica, isto é, quando o computador é desligado, sendo, portanto, um tipo de memória volátil.
Há dois tipos de tecnologia de memória RAM que são muitos utilizados: estático e dinâmico, isto é, SRAM e DRAM, respectivamente. Há também um tipo mais recente chamado de MRAM. Eis uma breve explicação de cada tipo:
- SRAM (Static Random-Access Memory - RAM Estática): esse tipo é muito mais rápido que as memórias DRAM, porém armazena menos dados e possui preço elevado se considerarmos o custo por megabyte. Memórias SRAM costumam ser utilizadas como cache (saiba mais sobre cache neste artigo sobre processadores);
- DRAM (Dynamic Random-Access Memory - RAM Dinâmica): memórias desse tipo possuem capacidade alta, isto é, podem comportar grandes quantidades de dados. No entanto, o acesso a essas informações costuma ser mais lento que o acesso às memórias estáticas. Esse tipo também costuma ter preço bem menor quando comparado ao tipo estático;
- MRAM (Magnetoresistive Random-Access Memory - RAM Magneto-resistiva): a memória MRAM vem sendo estudada há tempos, mas somente nos últimos anos é que as primeiras unidades surgiram. Trata-se de um tipo de memória até certo ponto semelhante à DRAM, mas que utiliza células magnéticas. Graças a isso, essas memórias consomem menor quantidade de energia, são mais rápidas e armazenam dados por um longo tempo, mesmo na ausência de energia elétrica. O problema das memórias MRAM é que elas armazenam pouca quantidade de dados e são muito caras, portanto, pouco provavelmente serão adotadas em larga escala.

Aspectos do funcionamento das memórias RAM

As memórias DRAM são formadas por chips que contém uma quantidade elevadíssima de capacitores e transistores. Basicamente, um capacitor e um transistor, juntos, formam uma célula de memória. O primeiro tem a função de armazenar corrente elétrica por um certo tempo, enquanto que o segundo controla a passagem dessa corrente.
Se o capacitor estiver armazenamento corrente, tem-se um bit 1. Se não estiver, tem-se um bit 0. O problema é que a informação é mantida por um curto de período de tempo e, para que não haja perda de dados da memória, um componente do controlador de memória é responsável pela função de refresh (ou refrescamento), que consiste em regravar o conteúdo da célula de tempos em tempos. Note que esse processo é realizado milhares de vezes por segundo.
O refresh é uma solução, porém acompanhada de "feitos colaterais": esse processo aumenta o consumo de energia e, por consequência, aumenta o calor gerado. Além disso, a velocidade de acesso à memória acaba sendo reduzida.
A memória SRAM, por sua vez, é bastante diferente da DRAM e o principal motivo para isso é o fato de que utiliza seis transistores (ou quatro transistores e dois resistores) para formar uma célula de memória. Na verdade, dois transistores ficam responsáveis pela tarefa de controle, enquanto que os demais ficam responsáveis pelo armazenamento elétrico, isto é, pela formação do bit. A vantagem desse esquema é que o refresh acaba não sendo necessário, fazendo com que a memória SRAM seja mais rápida e consuma menos energia. Por outro lado, como sua fabricação é mais complexa e requer mais componentes, o seu custo acaba sendo extremamente elevado, encarecendo por demais a construção de um computador baseado somente nesse tipo. É por isso que sua utilização mais comum é como cache, pois para isso são necessárias pequenas quantidades de memória.
Como as memórias DRAM são mais comuns, eles serão o foco deste texto a partir deste ponto.

CAS e RAS

O processador armazena na memória RAM as informações com os quais trabalha, portanto, a todo momento, operações de gravação, eliminação e acesso aos dados são realizadas. Esse trabalho todo é possível graças ao trabalho de um circuito já citado chamado controlador de memória.
Para facilitar a realização dessas operações, as células de memória são organizadas em uma espécie de matriz, ou seja, são orientadas em um esquema que lembra linhas e colunas. O cruzamento de uma certa linha (também chamada de wordline), com uma determinada coluna (também chamada de bitline) forma o que conhecemos como endereço de memória. Assim, para acessar o endereço de uma posição na memória, o controlador obtém o seu valor de coluna, ou seja, o valor RAS (Row Address Strobe) e o seu valor de linha, ou seja, o valor CAS (Column Address Strobe).
RAS e CAS

Temporização e latência das memórias

Os parâmetros de temporização e latência indicam quanto tempo o controlador de memória gasta com as operações de leitura e escrita. Em geral, quanto menor esse valores, mais rápidas são as operações.
Para que você possa entender, tomemos como exemplo um módulo de memória que informa os seguintes valores em relação à latência: 5-4-4-15-1T. Esse valor está escrito nesta forma: tCL-tRCD-tRP-tRAS-CR. Vejamos o que cada um desses parâmetros significa:
- tCL (CAS Latency): quando uma operação de leitura de memória é iniciada, sinais são acionados para ativar as linhas (RAS) e as colunas (RAS) correspondentes, determinar se a operação é de leitura ou escrita (CS - Chip Select) e assim por diante. O parâmetro CAS Latency indica, em ciclos de clock (saiba mais sobre clock nesta matéria sobre processadores), qual o período que há entre o envio do sinal CAS e a disponibilização dos respectivos dados. Em outras palavras, é o intervalo existente entre a requisição de um dado pelo processador e a entrega deste pela memória. Assim, no caso do nosso exemplo, esse valor é de 5 ciclos de clock;
- tRCD (RAS to CAS Delay): esse parâmetro indica, também em ciclos de clock, o intervalo que há entre a ativação da linha e da coluna de um determinado dado. No exemplo acima, esse valor corresponde a 4;
- tRP (RAS Precharge): intervalo em clocks que informa o tempo gasto entre desativar o acesso a uma linha e ativar o acesso a outra. Em nosso exemplo, esse valor é de 4 ciclos;
- tRAS (Active to Precharge Delay): esse parâmetro indica o intervalo, também em clocks, necessário entre um comando de ativar linha e a próxima ação do mesmo tipo. Em nosso exemplo, esse valor é de 15 ciclos de clock;
- CR (Command Rate): intervalo que há entre a ativação do sinal CS e qualquer outro comando. Em geral, esse valor é de 1 ou 2 ciclos de clock e é acompanhado da letra T. No nosso exemplo esse valor é de 1 ciclo.
Esses parâmetros costumam ser informados pelo fabricante em um etiqueta colada ao pente de memória (muitas vezes, o valor de CMD não é informado). Quando isso não ocorre, é possível obter essa informação através de softwares específicos (como o gratuito CPU-Z, para Windows, mostrado abaixo) ou mesmo pelo setup do BIOS.
CPU-Z exibindo dados sobre memória
CPU-Z exibindo dados sobre memória

Os parâmetros de temporização fornecem uma boa noção do tempo de acesso das memórias. Note que, quando falamos disso, nos referimos ao tempo que a memória leva para fornecer os dados requisitados. O que não foi dito acima é que esse tempo é medido em nanossegundos (ns), isto é, 1 segundo dividido por 1.000.000.000.
Assim, para se ter uma noção de qual é a frequência máxima utilizada pela memória, basta dividir 1000 pelo seu tempo de acesso em nanossegundos (essa informação pode constar em uma etiqueta no módulo ou pode ser informada através de softwares especiais). Por exemplo: se um pente de memória trabalha com 15 ns, sua frequência é de 66 MHz, pois 1000/15=66.

Outros parâmetros

Algumas placas-mãe atuais ou direcionadas ao público que faz overclock (em poucas palavras, prática onde dispositivos de hardware são ajustados para que trabalhem além das especificações de fábrica) ou, ainda, softwares que detalham as características do hardware do computador, costumam informar outros parâmetros, além dos mencionados acima. Geralmente, estes parâmetros adicionais são informados da seguinte forma: tRC-tRFC-tRRD-tWR-tWTR-tRTP (por exemplo: 22-51-3-6-3-3), também considerando ciclos de clock. Vejamos o que cada um significa:
- tRC (Row Cycle): consiste no tempo necessário para que se complete um ciclo de acesso a uma linha da memória;
- tRFC (Row Refresh Cycle): consiste no tempo necessário para a execução dos ciclos de refresh da memória;
- tRRD (Row To Row Delay): semelhante ao tRP, mas considera o tempo que o controlador necesita esperar após uma nova linha ter sido ativada;
- tWR (Write Recovery): informa o tempo necessário para que o controlador de memória comece a efetuar uma operação de escrita após realizar uma operação do mesmo tipo;
- tWTR (Write to Read Delay): consiste no tempo necessário para que o controlador de memória comece a executar operações de leitura após efetuar uma operação de escrita;
- tRTP (Read to Precharge Delay): indica o tempo necessário entre uma operação de leitura efetuada e ativação do próximo sinal.

Voltagem

Em comparação com outros itens de um computador, as memórias são um dos componentes que menos consomem energia. O interessante é que esse consumo diminuiu com a evolução da tecnologia. Por exemplo, módulos de memória DDR2 (tecnologia que ainda será abordada neste texto), em geral, exigem entre 1,8 V e 2,5 V. É possível encontrar pentes de memória DDR3 (padrão que também será abordado neste artigo) cuja exigência é de 1,5 V. Módulos de memória antigos exigiam cerca de 5 V.
Algumas pessoas com bastante conhecimento no assunto fazem overclock nas memórias aumentando sua voltagem. Com esse ajuste, quando dentro de certos limites, é possível obter níveis maiores de clock.

SPD (Serial Presence Detect)

O SPD é um pequeno chip (geralmente do tipo EEPROM) inserido nos módulos de memória que contém diversas informações sobre as especificações do dispositivo, como tipo (DDR, DDR2, etc), voltagem, temporização/latência, fabricante, número de série, etc.
Chip SPD
Chip SPD
Muitas placas-mãe contam com um setup de BIOS que permite uma série de ajustes de configuração. Nesses casos, um usuário experimente pode definir os parâmetros da memória, no entanto, quem não quiser ter esse trabalho, pode manter a configuração padrão. Algumas vezes, essa configuração é indicada por algo relacionado ao SPD, como mostra a imagem abaixo:
Exemplo de ajuste de memória em setup de BIOS baseado em SPD
Exemplo de ajuste de memória em setup de BIOS baseado em SPD

Detecção de erros

Alguns mecanismos foram desenvolvidos para ajudar na detecção de erros da memória, falhas essas que podem ter várias causas. Esses recursos são especialmente úteis em aplicações de alta confiabilidade, como servidores de missão crítica, por exemplo.
Um desses mecanismos é a paridade, capaz apenas de ajudar a detectar erros, mas não de corrigí-los. Nesse esquema, um bit é adicionado a cada byte de memória (lembre-se: 1 byte corresponde a 8 bits). Esse bit assume o valor 1 se a quantidade de bits 1 do byte for par e assume o valor 0 (zero) se a referida quantidade por ímpar (o contrário também pode acontecer: 1 para ímpar e 0 para par). Quando a leitura de dados for feita, um circuito verificará se a paridade corresponde à quantidade de bits 1 (ou 0) do byte. Se for diferente, um erro foi detectado.
A paridade, no entanto, pode não ser tão precisa, pois um erro em dois bits, por exemplo, pode fazer com que o bit de paridade corresponda à quantidade par ou ímpar de bits 1 do byte. Assim, para aplicações que exigem alta precisão dos dados, pode-se contar com memórias que tenham ECC (Error Checking and Correction), um mecanismo mais complexo capaz de detectar e corrigir erros de bits.

Tipos de encapsulamento de memória

O encapsulamento correspondente ao artefato que dá forma física aos chips de memória. Eis uma breve descrição dos tipos de encapsulamento mais utilizados pela indústria:
- DIP (Dual In-line Package): um dos primeiros tipos de encapsulamento usados em memórias, sendo especialmente popular nas épocas dos computadores XT e 286. Como possui terminais de contato - "perninhas" - de grande espessura, seu encaixe ou mesmo sua colagem através de solda em placas pode ser feita facilmente de forma manual;
Encapsulamento DIP - Imagem por Wikipedia
Encapsulamento DIP - Imagem por Wikipedia
- SOJ (Small Outline J-Lead): esse encapsulamento recebe este nome porque seus terminais de contato lembram a letra 'J'. Foi bastante utilizado em módulos SIMM (vistos mais à frente) e sua forma de fixação em placas é feita através de solda, não requerendo furos na superfície do dispositivo;
Encapsulamento SOJ
Encapsulamento SOJ
- TSOP (Thin Small Outline Package): tipo de encapsulamento cuja espessura é bastante reduzida em relação aos padrões citados anteriormente (cerca de 1/3 menor que o SOJ). Por conta disso, seus terminais de contato são menores, além de mais finos, diminuindo a incidência de interferência na comunicação. É um tipo aplicado em módulos de memória SDRAM e DDR (que serão abordados adiante). Há uma variação desse encapsulamento chamado STSOP (Shrink Thin Small Outline Package) que é ainda mais fino;
Encapsulamento TSOP
Encapsulamento TSOP
- CSP (Chip Scale Package): mais recente, o encapsulamento CSP se destaca por ser "fino" e por não utilizar pinos de contato que lembram as tradicionais "perninhas". Ao invés disso, utiliza um tipo de encaixe chamado BGA (Ball Grid Array). Esse tipo é utilizado em módulos como DDR2 e DDR3 (que serão vistos à frente).
Encapsulamento CSP
Encapsulamento CSP

Módulos de memória

Entendemos como módulo ou, ainda, pente, uma pequena placa onde são instalados os encapsulamentos de memória. Essa placa é encaixada na placa-mãe por meio de encaixes (slots) específicos para isso. Eis uma breve descrição dos tipos mais comuns de módulos:
- SIPP (Single In-Line Pins Package): é um dos primeiros tipos de módulos que chegaram ao mercado. É formato por chips com encapsulamento DIP. Em geral, esses módulos eram soldados na placa-mãe;
- SIMM (Single In-Line Memory Module): módulos deste tipo não eram soldados, mas encaixados na placa-mãe. A primeira versão continha 30 terminais de contato (SIMM de 30 vias) e era formada por um conjunto de 8 chips (ou 9, para paridade). Com isso, podiam transferir um byte por ciclo de clock. Posteriormente surgiu uma versão com 72 pinos (SIMM de 72 vias), portanto, maior e capaz de transferir 32 bits por vez. Módulos SIMM de 30 vias podiam ser encontrados com capacidades que iam de 1 MB a 16 MB. Módulos SIMM de 72 vias, por sua vez, eram comumente encontrados com capacidades que iam de 4 MB a 64 MB;
- DIMM (Double In-Line Memory Module): os módulos DIMM levam esse nome por terem terminais de contatos em ambos os lados do pente. São capazes de transmitir 64 bits por vez. A primeira versão - aplicada em memória SDR SDRAM - tinha 168 pinos. Em seguida, foram lançados módulos de 184 vias, utilizados em memórias DDR, e módulos de 240 vias, utilizados em módulos DDR2 e DDR3. Existe um padrão DIMM de tamanho reduzido chamado SODIMM (Small Outline DIMM), que são utilizados principalmente em computadores portáteis, como notebooks;
- RIMM (Rambus In-Line Memory Module): formado por 168 vias, esse módulo é utilizado pelas memórias Rambus, que serão abordadas ainda neste artigo. Um fato curioso é que para cada pente de memória Rambus instalado no computador é necessário instalar um módulo "vazio", de 184 vias, chamado de C-RIMM (Continuity-RIMM).
Módulo de memória inserida em um slot
Módulo de memória inserida em um slot

Tecnologias de memórias

Várias tecnologias de memórias foram (e são) criadas com o passar do tempo. É graças a isso que, periodicamente, encontramos memórias mais rápidas, com maior capacidade e até memórias que exigem cada vez menos energia. Eis uma breve descrição dos principais tipos de memória RAM:
- FPM (Fast-Page Mode): uma das primeiras tecnologias de memória RAM. Com o FPM, a primeira leitura da memória tem um tempo de acesso maior que as leituras seguintes. Isso porque são feitos, na verdade, quatro operações de leitura seguidas, ao invés de apenas uma, em um esquema do tipo x-y-y-y, por exemplo: 3-2-2-2 ou 6-3-3-3. A primeira leitura acaba sendo mais demorada, mas as três seguintes são mais rápidas. Isso porque o controlador de memória trabalha apenas uma vez com o endereço de uma linha (RAS) e, em seguida, trabalha com uma sequência de quatro colunas (CAS), ao invés de trabalhar com um sinal de RAS e um de CAS para cada bit. Memórias FPM utilizavam módulos SIMM, tanto de 30 quanto de 72 vias;
- EDO (Extended Data Output): a sucessora da tecnologia FPM é a EDO, que possui como destaque a capacidade de permitir que um endereço da memória seja acessado ao mesmo tempo em que uma solicitação anterior ainda está em andamento. Esse tipo foi aplicado principalmente em módulos SIMM, mas também chegou a ser encontrado em módulos DIMM de 168 vias. Houve também uma tecnologia semelhante, chamada BEDO (Burst EDO), que trabalhava mais rapidamente por ter tempo de acesso menor, mas quase não foi utilizada, pois tinha custo maior por ser de propriedade da empresa Micron. Além disso, foi "ofuscada" pela chegada da tecnologia SDRAM;
Módulo de memória EDO
Módulo de memória EDO
- SDRAM (Synchronous Dynamic Random Access Memory): as memórias FPM e EDO são assíncronas, o que significa que não trabalham de forma sincronizada com o processador. O problema é que, com processadores cada vez mais rápidos, isso começou a se tornar um problema, pois muitas vezes o processador tinha que esperar demais para ter acesso aos dados da memória. As memórias SDRAM, por sua vez, trabalham de forma sincronizada com o processador, evitando os problemas de atraso. A partir dessa tecnologia, passou-se a considerar a frequência com a qual a memória trabalha para medida de velocidade. Surgiam então as memórias SDR SDRAM (Single Data Rate SDRAM), que podiam trabalhar com 66 MHz, 100 MHz e 133 MHz (também chamadas de PC66, PC100 e PC133, respectivamente). Muitas pessoas se referem a essa memória apenas como "memórias SDRAM" ou, ainda, como "memórias DIMM", por causa de seu módulo. No entanto, a denominação SDR é a mais adequada;
Módulo de memória SDR SDRAM
Módulo de memória SDR SDRAM -
Observe que neste tipo há duas divisões entre os terminais de contato

- DDR SDRAM (Double Data Rate SDRAM): as memórias DDR apresentam evolução significativa em relação ao padrão SDR, isso porque elas são capazes de lidar com o dobro de dados em cada ciclo de clock (memórias SDR trabalham apenas com uma operação por ciclo). Assim, uma memória DDR que trabalha à frequência de 100 MHz, por exemplo, acaba dobrando seu desempenho, como se trabalhasse à taxa de 200 MHz. Visualmente, é possível identificá-las facilmente em relação aos módulos SDR, porque este último contém duas divisões na parte inferior, onde estão seus contatos, enquanto que as memórias DDR2 possuem apenas uma divisão. Você pode saber mais sobre essa tecnologia na matéria Memória DDR, publicada aqui no InfoWester;
- DDR2 SDRAM: como o nome indica, as memórias DDR2 são uma evolução das memórias DDR. Sua principal característica é a capacidade de trabalhar com quatro operações por ciclo de clock, portanto, o dobro do padrão anterior. Os módulos DDR2 também contam com apenas uma divisão em sua parte inferior, no entanto, essa abertura é um pouco mais deslocada para o lado. Saiba mais sobre essa tecnologia na matéria Memória DDR2, disponibilizada aqui no InfoWester;
Memória DDR2 acima e DDR abaixo. Note que a posição da divisão entre os terminais de contato é diferente.
Memória DDR2 acima e DDR abaixo -
Note que a posição da divisão entre os terminais de contato é diferente

- DDR3 SDRAM: as memórias DDR3 são, obviamente, uma evolução das memórias DDR2. Novamente, aqui dobra-se a quantidade de operações por ciclo de clock, desta vez, de oito. Na época de fechamento deste artigo, as memórias DDR3 ainda não eram muito populares. Saiba mais sobre essa tecnologia nesta matéria da Wikipedia;
.: Livros sugeridos :.
:: Arquitetura de computadores
:: Hardware na prática
:: Hardware: o guia definitivo
Via Shopping UOL
- Rambus (Rambus DRAM): as memórias Rambus recebem esse nome por serem uma criação da empresa Rambus Inc. e chegaram ao mercado com o apoio da Intel. Elas são diferentes do padrão SDRAM, pois trabalham apenas com 16 bits por vez. Em compensação, memórias Rambus trabalham com frequência de 400 MHz e com duas operações por ciclo de clock. Tinham como desvantagens, no entanto, taxas de latência muito altas, aquecimento elevado e maior custo. Memórias Rambus nunca tiveram grande aceitação no mercado, mas também não foram um total fiasco: foram utilizadas, por exemplo, no console de jogos Nintendo 64. Curiosamente, as memórias Rambus trabalham em pares com "módulos vazios" ou "pentes cegos". Isso significa que, para cada módulo Rambus instalado, um "módulo vazio" tem que ser instalado em outro slot. Essa tecnologia acabou perdendo espaço para as memórias DDR.

Finalizando

Com o passar do tempo, a evolução das tecnologias de memórias não somente as torna mais rápidas, mas também faz com que passem a contar com maior capacidade de armazenamento de dados. Memórias ROM do tipo Flash, por exemplo, podem armazenar vários gigabytes. No que se refere às memórias RAM, o mesmo ocorre. Por conta disso, a pergunta natural é: quanto utilizar? A resposta depende de uma série de fatores, no entanto, a indústria não para de trabalhar para aumentar ainda mais a velocidade e a capacidade desses dispositivos. Portanto, não se espante: quando menos você esperar, vai ouvir falar de uma nova tecnologia de memória que poderá se tornar um novo padrão de mercado :)

postagem tirada do site InfoWester.

quarta-feira, 15 de dezembro de 2010

Principais comandos do MSDOS

ANSI.SYS_ Define as funções que alteram a exibição gráfica, controlam a movimentação do cursor e reatribuem teclas.
Append _ Possibilita que o programa abra os arquivos de dados nos diretórios especificados como se os arquivos estivessem no diretório atual.
Attrib_ Exibe ou altera os atributos de arquivo.
Break_ Define ou remove o controle de verificação CTRL+C
Buffers_ Aloca memória para um número especificado de memórias intermediárias
Call_ Chama um programa de lote a partir de outro sem interromper o primeiro programa de lote.
Cd_ Exibe o nome do diretório atual ou altera o diretório atual.
Chcp_ Exibe o número do conjunto de caracteres ativo (página de código).
Chdir_ Exibe o nome do diretório atual ou altera o diretório atual.
Chkdsk_ Verifica o status de um disco e exibe um relatório. Também corrige os erros encontrados no disco.
CHKSTATE.SYS_ Utilizado pelo programa de otimização de memória, o MemMaker, para controlar o processo de otimização.
Choice_ Exibe uma mensagem de aviso especificada, efetua uma pausa para o usuário escolher entre um conjunto de teclas especificado e fornece um parâmetro.
Cls _ limpa a tela de vídeo.


Comandos do CONFIG.SYS_

O arquivo CONFIG.SYS é um arquivo de texto que contém comandos especiais, que configuram os componentes de hardware do computador para que o MS-DOS e os aplicativos possam usá-lo.

Comandos Internacionais Altera as configurações específicas de país e conjuntos de caracteres (páginas de código).
Command_ Inicia uma nova ocorrência do interpretador de comando do MS-DOS, COMMAND.COM.


Configurações

Múltiplas Define diversas configurações de sistema no arquivo config.sys.
Controladores de dispositivos instaláveis do MS-DOS.
Copy_ Copia um ou mais dos arquivos para o local especificado.
Country_ Possibilita que o MS-DOS utilize horas, datas e moedas internacionais, conversões de letras maiúsculas/minúsculas e separadores decimais.
Ctty _ Altera o dispositivo de terminal utilizado para controlar o seu computador.

Date_ Exibe a data e emite um aviso se for necessário alterar a data.
Dblspace _ Configura as unidades que foram compactadas.
Debug_ Inicia o Debug, um programa que pode ser utilizado para testar e depurar arquivos executáveis.
Defrag_ Reorganiza os arquivos no disco visando otimizar o seu desempenho.
De_ l Exclui os arquivos especificados.
Deltree _ Exclui um diretório, seus arquivos e todos os subdiretórios e arquivos abaixo do mesmo.
Device_ Carrega na memória o controlador de dispositivo especificado. Este comando pode ser utilizado somente no arquivo CONFIG.SYS.
Devicehigh_ Carrega os controladores de dispositivo na área de memória superior.

Dicas sobre DriveSpace Responde algumas das perguntas mais comuns relativas ao DriveSpace.

Dir_ Exibe uma lista dos arquivos e subdiretórios de um diretório.
Diskcomp_ Compara o conteúdo de dois discos flexíveis.
Diskcopy_ Copia o conteúdo do disco flexível na unidade de origem para um disco flexível formatado ou não formatado na unidade de destino.
DISPLAY.SYS_ Suporta a alternação de conjuntos de caracteres para a sua tela e teclado.
Dos_ Especifica que o MS-DOS dever manter um vínculo com a área de memória superior, carregar uma parte de si mesmo na área de memória alta(HMA), ou ambos.
Doskey _ Possibilita a edição das linhas de comando e a criação e execução de macros.
Dosshel_ l Inicia o MS-DOS Shell, uma interface gráfica do MS-DOS.
DRIVER.SYS _ Cria uma unidade lógica que pode ser utilizada para fazer referência a uma unidade de disco flexível física.
Drivparm_ Define os parâmetros para os dispositivos de bloco, como unidades de disco, quando você inicia o MS-DOS.
Drvspace_ Compacta as unidades de disco rígido ou discos flexíveis, e configura as unidades que foram compactadas com a utilização do DriveSpace.
DRVSPACE.SYS_ Determina o local de memória final de DRVSPACE.BIN, a parte do MS-DOS que propicia acesso às suas unidades compactadas.

Echo _ Exibe ou oculta o texto em programas de lote quando o programa está sendo executado.
Edit _ Inicia Editor do MS-DOS, que pode ser utilizado para a criação e edição de arquivos de texto ASCII.
EGA.SYS_ Salva e restaura a exibição quando a Alternação entre Tarefas do MS-DOS_ Shell for utilizada com monitores EGA.
Emm386_ Ativa ou desativa o suporte para memória expandida EMM386 em um computador com um processador 80386 ou superior.
EMM386.EXE_ Propicia acesso á área de memória superior e simula memória expandida durante a utilização da memória estendida.
Erase_ Exclui os arquivos especificados.
Exit _ Finaliza o programa o interpretador de comando e retorna para o programa que iniciou.
Expand_ Expande um arquivo compactado.
Fasthelp _ Exibe uma lista de todos os comandos do MS-DOS e fornece uma breve explicação sobre cada um deles.
Fastopen_ Diminui o tempo necessário para abrir arquivos utilizados com frequência.
Fc_ Compara dois arquivos e exibe as diferenças entre eles.
Fcbs_ Especifica o número de blocos de controle de arquivos que o MS-DOS é capaz de manter abertos ao mesmo tempo.
Fdisk_ Configura um disco rígido para ser usado com o MS-DOS.
Files_ Especifica o número de arquivos que o MS-DOS é capaz de acessar de uma só vez.

Find_ Procura uma sequência de texto específica em um arquivo ou arquivos.
For_ Executa um comando especificado para cada arquivo de um grupo de arquivos.
Format _ Formata um disco para ser utilizado com o MS-DOS.
Goto_ Direciona o MS-DOS para a linha de um programa de lote marcada com um nome especificado.
Graphics_ Carrega na memória um programa que permite ao MS-DOS imprimir as informações exibidas na tela.
Help _ Inicia a Ajuda do MS-DOS
HIMEM.SYS_ Gerenciador de memória estendida, coordena o uso da memória.
If_ Executa processamento condicional em programas de lote.
Include _ Inclui o conteúdo de um bloco de configuração.
Instal_ l Carrega um programa residente na memória ao iniciar o MS-DOS.
Interlnk_ Conecta dois computadores através de portas paralelas ou seriais e habilita os computadores a compartilhar discos e portas de impressora.
INTERLNK.EXE_ Redireciona as solicitações de operações em uma ou mais unidades Interlnk de cliente ou portas de impressora para uma ou mais unidades ou portas de impressora no servidor Interlnk.
Intersvr_ Inicia o servidor Interlnk.
Keyb_ Inicia o programa Keyb que configura o teclado para um idioma específico.
Label_ Cria, altera ou exclui o nome do volume de um disco.
Lastdrive_ Especifica o número máximo de unidades que podem ser acessadas.
Lh_ Carrega um programa na área de memória alta.
Loadfix_ Assegura que um programa seja carregado acima dos primeiros 64K de memória convencional e executa o programa.
Loadhigh_ Carrega um programa na área de memória alta.
Md_ Cria um diretório.
Mem _ Exibe a quantidade de memória utilizada e livre no computador.
Memmaker_ Otimiza a memória do computador movendo os controladores de dispositivo e programas residentes para a memória alta.
MenuColor_ Define o texto e as cores de segundo plano do menu de inicialização.
MenuDefault_ Especifica o item padrão do menu do menu de inicialização e define um valor para intervalo entre operações, se desejado.
MenuItem_ Define um item no menu de inicialização.
Mkdir_ Cria um diretório.
Mode Commands _ Configura os dispositivos do sistema. Executa tarefas diferentes, tais como a exibição de status do sistema, a mudança de configurações do sistema ou portas ou dispositivos.
More_ Exibe uma tela de saída de cada vez.
Move_ Move um ou mais arquivos para outro local especificado.
Msav_ Procura por vírus conhecidos no computador.
Msbackup_ Executa o Microsoft Backup para o MS-DOS, o qual cria uma cópia de segurança ou restaura um ou mais arquivos de um disco para outro.
Mscdex _ Possibilita o acesso a unidades CD-ROM.
Msd_ Fornece informações técnicas detalhadas sobre o computador.
Nlsfunc_ Inicia o programa Nlsfunc, que carrega informações especificas de pais para o suporte de língua nacional (NLS).
Numlock_ Especifica se a configuração de NUM LOCK do teclado numérico está inicialmente definida como ON (ativada) ou OFF (desativada).
Path_ Indica os diretórios a serem pesquisados pelo MS-DOS à procura de arquivos executáveis.
Pause_ Suspende o processamento de um programa de lote e exibe uma mensagem solicitando ao usuário pressionar qualquer tecla para continuar.
Power_ Reduz o consumo de energia quando aplicativos e dispositivos estão inativos.
POWER.EXE _ Reduz o consumo de energia quando os aplicativos e dispositivos estiverem inativos.
Print_ Imprime um arquivo de texto enquanto você está usando outros comandos do MS-DOS.


Programa de lote Arquivo de texto não formatado que contém um ou mais comandos do MS-DOS, ao qual é atribuída uma extensão .BAT.

Prompt Muda a aparência do aviso de comando.

Qbasic_ Lê instruções escritas em linguagem Basic e as interpreta em código executável de computador.
RAMDRIVE.SYS _ Cria uma unidade RAM na memória de acesso aleatório (RAM) do computador para simular uma unidade de disco rígido.
Rd_ Exclui (remove) diretórios.
Rem _ Permite incluir comentários em arquivos de lote ou no arquivo CONFIG.SYS.
Ren_ Muda o nome de um arquivo ou arquivos.
Rename_ Muda o nome de um arquivo ou arquivos.
Replace_ Substitui arquivos incluídos no diretório de destino por arquivos do diretório de origem que possuem o mesmo nome.
Restore_ Restaura arquivos dos quais foram feitas cópias de segurança.
Rmdir _ Exclui (remove) diretórios.
ScanDisk_ Aplicatico de análise e correção de discos que procura erros em uma unidade e corrige os problemas encontrados.
Scandisk.ini_ Contem as configurações que podem ser utilizadas para personalizar o programa ScanDisk.
Set_ Exibe, define ou remove variáveis de ambiente do MS-DOS.
Setver _ Exibe a tabela de versões. Informa um número de versão (anterior á 6.0) a programas ou controladores de dispositivo que foram criados para versões anteriores do MS-DOS.
SETVER.EXE_ Carrega a tabela de versão do MS-DOS na memória.
Share_ Inicia o programa Share, que instala o compartilhamento de arquivos e os recursos que não permitem acesso aos discos e ás unidades de rede.
Shel_ Especifica o nome e a localização do interpretador de comandos a ser usado pelo MS-DOS.
Shift_ Muda a posição de parâmetros substituíveis em um arquivo de lote.
SIZER.EXE _ Usado pelo programa de otimização de memória MemMaker para determinar o tamanho da memória de controladores de dispositivo e programas residentes em memória.
Smartdrv_ Inicia ou configura o SMARTDrive, o qual cria um cachê de disco em memória estendida.
SMARTDRV.EXE_ Carrega o controlador de dispositivo SMARTDRV.EXE para executar a duplicação de memórias intermediárias.
Sort_ Lê entradas, classifica dados e grava os resultados na tela, em um arquivo ou em outro dispositivo.
Stacks _ Suporta o uso dinâmico de pilhas de dados para o gerenciamento de interrupções de hardware.
Submenu _ Define um item do menu de inicialização que, quando selecionado, exibe outro conjunto de opções.
Subst _ Associa um caminho a uma letra de unidade.
Switches _ Fornece opções especiais.
Sys _ Cria um disco de inicialização,
Time _ Exibe a hora do sistema e configura o relógio interno do computador.
Tree _ Exibe graficamente a estrutura de diretório de um caminho ou do disco em uma unidade.
Type_ Exibe o conteúdo de um arquivo de texto.
Undelete _ Restaura arquivos previamente excluídos com o comando DEL.
Unformat _ Restaura um disco apagado com o comando FORMAT.
Ver_ Exibe o número da versão do MS-DOS.
Verify _ Informa ao MS-DOS se deve verificar se os arquivos estão gravados corretamente em um disco, ou não.
Vol_ Exibe o nome de volume e o número de série do disco, se houver.
VSafe_ Monitora continuamente o computador á procura de vírus e exibe um alerta quando encontra algum.
Xcopy_ Copia arquivos (exceto arquivos ocultos e de sistema) e diretórios, inclusive subdiretórios.

ArquivoTipoTamanho 
Comandos MSDos.doc.docArquivo DOC161,5 KbBaixar o
 Arquivo