Posts Tagged "so"

Confusões entre padrões de 32 bits e 64 bits do Windows

index_32-bit_vs_64-bitEstou na Universidade Federal Rural de Pernambuco na unidade de Serra Talhada esses dias. Na lanchonete, sentei ao lado de um grupo de alunos e uma “aluninha” fez uma pergunta simples ao seu colega de mesa, porém a resposta quase derreteu meus ouvidos, aqui vai uma breve transcrição da conversa:

Aluna: “Troquei meu notebook , no entando não estou conseguindo utilizar o software que a professora passou. Aparece a mensagem dizendo que o sistema é para máquinas de 64 bits. Qual a diferença entre processadores de 32 e 64 bits?”

Aluno: “É muito simples Aninha! você vai saber o que é 32 bits, ou 64 bits abrindo a máquina e vendo um PROCESSADOR. O processador é uma peça pequena quadrada que tem: 32 pinos ou 64 pinos de ouro. Isso mesmo OURO. Na placa mãe, vem uma peça quadrada branca que tem 32 buraquinhos, ou 64 buraquinho. Onde você vai acoplar o processador, nos buraquinhos.”

Aluna: “Que bom ter colegas inteligentes. Chegar em casa faço isso!”

Aluno: “Depois da aula passo em sua casa e faço isso para você…”

Notei um ar de sarcasmo na resposta final do aluno, pois sei que ele quer abrir muito mais do que o computador da colega. E quase engasguei com a resposta do sujeito. Intervi na conversa, falando que era professor novato do curso e estava conhecendo a Universidade. Elogiei o aluno, para ele não ficar triste se o consertasse, e perguntei onde ele tinha aprendido isso. O mesmo me disse: “No programa Olhar Digital!” Não revelei minha identidade secreta… ainda… pois os mesmos me convidaram para uma cervejada a noite na praça da cidade….

Vamos a algumas observações. Objetos no padrão de 32 bits (executáveis, bibliotecas e DLL´s do Windows) tem diferentes números mágicos (magic numbers) e cabeçalhos (headers) e não são iguais aos de 64 bits. Essa confusão sempre é feita principalmente pelos alunos de Computação nos primeiros anos de curso. A criar um programa o desenvolvedor tem de está atento a essas obscuridades. Executáveis de 32 bits requerem temporizadores e bibliotecas de 32 bits e de 64 bits também requerem temporizadores e bibliotecas de 64 bits. Isto implica diretamente no modo de execução das aplicações. Apenas processos de 32 bits são suportados em Windows de 32 bits, no entanto ambos, 32 e 64 bit, podem ser executados em Windows de 64 bits.

A diferença vai além de você ficar contando pinos dos processadores. A DLL de tempo de execução nativa do Windows sempre busca no PATH do sistema pelos executáveis. O sistema entende que todos executáveis no PATH estão no mesmo padrão da máquina e que “teoricamente” não teriam problemas em sua execução. O tamanho do tipo HANDLE no sistema da Microsoft é de 32 bits em um Windows de 32 bits e de 64 bits em Windows de 64 bits, mas apenas em processos de ordem baixa de 32 bits podem ser utilizados em sistemas de 64 bits. Além disso outros manipuladores com a mesma ordem baixa podem ser trocados entre processos de 32 e 64 bits.

Um único bit pode assumir duas possibilidades: 1 ou 0, o que é lógico, pois POW(2,1) (2 elevado a 1) é igual a 2 (possibilidades de com binação). Pelo mesmo raciocínio, POW(2,32) = 4294967296 possibilidades e, de igual modo, POW(2,64) = 18446744073709551616 .

Qual a diferença ou a vantagem? Simplesmente a precisão. Suponha que você trocou a placa de vídeo do seu computador, uma de 8 bits para uma com 16 bits. Nas especificações da placa mãe a amplitude máxima da voltagem do circuito é de 10V. Se o nosso processador da placa de vídeo fosse de apenas 8 bits, teríamos POW(2,8) = 256 combinações. Como o nível máximo é de 10V, temos = 10V/256 = 0,0390625V ≈ 39062,5 microvolts (1 microvolt é 1Volt / 1000000 = 0,000001V).

Isso significa que um pixel na tela somente seria identificado se ele subisse ou abaixasse 39062,5 microvolts. Por outro lado, com 64K (POW(2,16)) teríamos 10V/65536 ≈ 153 microvolts. Logo, para sentirmos uma variação na intensidade/tonalidade de determinada cor numa tela de vídeo, seriam precisos apenas 153 microvolts, o que determinaria uma resolução ou qualidade de imagem quase que reais. Ou seja, quanto menor o número na voltagem mais rápido e quanto mais bits mais rápido ou melhor resolução uma dada informação é processada.

O problema do WOW!

Windows on Windows, ou simplesmente WOW é uma terminologia que a Microsoft utiliza para ter suporte de 32 bits em máquinas nativas 64 bits. É uma emulação contínua que todo sistema Windows de 64 bits tem. Mais informações podem ser obtidas aqui. É fácil de entender o que é isso simplesmente pensando que grandes sistemas legados ainda utilizam o Windows como principal base de controle. Se retirar isso bilhões podem ser perdidos simplesmente pelo fato da migração. Isso é uma verdadeira bagunça!.

A lógica de armazenamento nos Windows de 32/64 bits é:

  • Executáveis do sistema e DLLs estão em: “C:\Windows\System32″;
  • Entradas de registros estão em: “HKLM\…”.

No entanto, certas chaves de registro tem visões de 32 e 64 bits. Em alguns casos as visões são separadas e mantidas consistentes entre elas no Windows. Em outros casos elas são completamente separadas:

O local de instalação de software no Windows:

  • Em Windows de 32 bits aplicações são instaladas em: “C:\Program Files”.
  • Em Windows de 64 bits aplicações são instaladas em “C:\Program Files (x86)” e aplicações de 64 bits são instaladas em: “C:\Program Files”.
  • Se considerarmos os arquivos de duplicação de nomes para linguagens fora do Inglês tem: “C:\Arquivos de Programas”.

Isso significa que o instalador deve mudar o diretório de instalação entre um e outro. Porém aí vem a complicação da Microsoft. Quem tiver o Visual Studio 11 – Visual C (mas pode ser outra versão) :

  • Compilador e binários do SDK 32 bits além das bibliotecas estão instalados nesses diretórios:
    C:\Program Files (x86)\Microsoft Visual Studio 11\VC\bin
    C:\Program Files (x86)\Microsoft Visual Studio 11\VC\lib
    C:\Program Files\Microsoft SDKs\Windows\vx86\bin
    C:\Program Files\Microsoft SDKs\Windows\amd\lib
  • Compilador e binários do SDK e bibliotecas de 64 bits:
    C:\Program Files (x86)\Microsoft Visual Studio 11\VC\bin\(amd64|x64)
    C:\Program Files (x86)\Microsoft Visual Studio 11\VC\lib\(amd64|x64)
    C:\Program Files\Microsoft SDKs\Windows\vx86\bin\x64
    C:\Program Files\Microsoft SDKs\Windows\amd\lib\x64

Notem que a Microsoft quebrou a própria regra dela! O Visual C por convenção deveria está instalado na pasta de 64 bits mas está nas duas!!! 'C:\Program Files (x86)’.

A bagaça mesmo acontece quando um processo de 32 bits tenta acessar arquivos e registros de 64 bits:

  • Em 64 bit o diretório 'C:\Windows\System32′ é 'C:\Windows\SysNative’.
  • Registros e chaves de de 64 bits devem ser acessados via flag KEY_WOW64_64KEY no Reg*() API. Não há nenhum nome ou mecanismo de registro e para isto requer recodificação no nível de aplicação.
  • O Visual C de 64 bits é envolto nisso, deve sempre ser recodificado para executar em um ambiente de 64 bits!

Mais engraçado ainda é quando um processo de 64 bits tenta acessar arquivos ou registros de 32 bits:

  • O diretório de 32 bit 'C:\Windows\System32′ é 'C:\Windows\SysWOW64′.
  • 'C:\Windows\System32′ é para executáveis e DLL´s de  for 64 bits, mas 'C:\Windows\SysNative’ é um caminho inválido para processos de 64 bits;
  • As chaves de registros de 32 bits devem ser acessados via flag KEY_WOW64_32KEY em Reg*() API. Não existe um mecanismo de registro de nomes: todas as chaves de 32 bits são alocadas em uma subchave de Wow6432Node, mas toas as documentações da Microsoft alesta sobre o uso disso!

Existem uma série de API que podem ajudar o Windows a se livrar de emulação da WOW tais como: GetSystemWow64Directory, Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirection e Wow64RevertWow64FsRedirection. Isso não é coisa para crianças então não aconselho usar tais ferramentas.

As chaves de 32 e 64 bits são incompatíveis, a solução poderia utilizar recursos semelhantes ao Linux que não permite  uso de chaves de um em outro. Além das modificações diretas entre o que é de um sistema e outro no SO. Então cuidado quando for falar de SO de 32/64 bits… a não ser que queira impressionar as coleguinhas….

Mais informações em: blog.tune-up.com/windows-insights/32-bit-vs-64-bit-more-bit-more-performance/

Colocando o ícone do som no Ubuntu 10.04

Muitos alunos, incluindo eu, notamos que ao fazer a atualização do Ubuntu 9.10 para o 10.04 (Lucid) vimos que o ícone do som na barra de tarefas sumiu. De acordo com o site Neowin.net o Lucid tem um novo ícone de som.

Figura 1: Novo ícone de som do Ubuntu 10.04 (Fonte: www.neowin.net)

Mas ainda não o vi…. será que reinstalando o SO todo novamente ele aparece? Enquanto não faço isso aí vai uma dica para colocar um ícone na barra de tarefas! Agradeço a ajuda de meu aluno Edigilson Bento.

1º) Abra um terminal e digite:

gnome-volume-control-applet &

Vai aparecer o ícone do som na barra de tarefas conforme a figura a seguir:

Figura 2: Ícone clássico de som do Gnome

2º) Caso o comando acima não funcione, verifique se o pacote gnome-media está instalado, caso não esteja apt-get install nele!

3º) Caso queira que o ícone de som apareça toda vez que iniciar o Ubuntu, digite em um terminal:

gnome-session-properties

Esse comando vai executar o configurador de inicialização de programas:

Figura 3: Inicializador de Aplicações do Ubuntu

Depois disso clique no botão Add e digite as seguintes informações:

Name: Applet de Som

Command: gnome-volume-control-applet

Commento: Volume Control Icon

Figura 4: Inclusão do volume applet na inicialização automática

Após isso toda vez que você inicializar o SO o ícone do som irá aparecer na barra.

SOSIm – Simulador de SO

Pessoal,

O SOSIm simulador de Sistemas Operacionais, criado pelo Prof. Luiz Paulo Maia, está disponível para download no nosso site. Essa ferramenta irá auxiliar e muito os nossos conhecimentos sobre Sistemas Operacionais.

Até

Base para criação de um SO

Pessoal da turma Y6-RC.4V, informo que no link de projeto de Sistemas Operacionais já está a base de nosso projeto. É bom logo ter em mente a aplicação que o sistema operacional irá controlar.