Início > Diversos > O Troll nosso de cada dia nos dai hoje =)

O Troll nosso de cada dia nos dai hoje =)

Hi folks!

Certa vez, estavamos nós, os membros da comunidade mais r0x do Orkut (Linux vs. Windows) quando um membro com o ego maior que o Empire State, começou a ofender outros usuários, o que não tem nada de anormal. Infelizmente, ele não pode se conter e acabou me provocando. Então, para que o membro realmente provasse que ele tem um conhecimento sobrenatural sobre a tecnologia em geral, muito maior que o dos outros membros, elaborei rapidamente 11 questões e pedi para que ele a respondesse no prazo de 15 minutos (o que seria mais do que suficiente pra mim).

Infelizmente ele correu. E três semanas depois, ele volta com suas falácias, novamente com agressões verbais e o pior: Sem as respostas corretas… 3 semanas e ele sequer usou o Google? Complica bastante.

Enfim, para os que acompanharam a saga das 11 perguntas, posto agora as 11 respostas, segue. De cada pergunta, acompanha a resposta incorreta ou parcialmente correta apresenada pelo membro. Criei respostas completas e bem elaboradas, para facilitar o entendimento. Enfim…

1) O que é um kernel?
Resposta parcialmente correta 1: o kernel é a parte que gerencia o hardware, segurança, é um tipo de “core”, bem semelhante aos núcleos de processadores, sabe me dizer o que um núcleo faz Lucas?

Resposta correta 1: O Kernel é o núcleo do sistema operacional em si, o processo encarregado da comunicação com o hardware, da execução de outros processos e do gerenciamento de processos, threads e memória. Mas não tem relação com núcleos de processadores no aspecto apresentado por ele…

2) O que é um registrador?
Resposta incorreta 2: pow “registrador” é um termo bem maleável tu não acha não? Ae é foda…

Resposta correta 2: Registrador é a memória interna da CPU (CPU a que me refiro é o processador). É a memória mais rápida existente, pois é diretamente nela que o mesmo decodifica e executa a instrução dada pelo processo ou pela thread. São posições fisicas de memória dentro do processador, que trabalham na mesma frequencia de operação do mesmo.

 3) Detalhe a máquina de Von Neumann.
Resposta parcialmente correta 3: Vlw, ninguém nunca leu a historinha sobre o eniac né?

Resposta correta 3: A máquina de Von Neumann definiu toda a computação moderna. Era um projeto que desenhava como uma máquina eletrônica se comportaria, contendo a memória principal, a UCP (Unidade Central de Processamento, a CPU), a ULA (Unidade de Lógica e Aritmética) e o Circuito de Controle. Ligado na ULA haveria os E/Ss (I/Os, dispositivos de Entrada e Saída). O circuito de controle vai à memória principal através do barramento, busca a instrução e o dado para decodificar e executar na CPU.

Na arquitetura de Von Neumann, determinou-se um problema que ocorre ainda hoje em praticamente todos os processadores existentes: O gargalo de Von Neumann, o que significa que, o processador precisa baixar sua velocidade para acessar a memória – em média 3x mais lenta que o processador, desperdiçando velocidade. Um remendo para isso que NÃO HAVIA NA MÁQUINA e usado até hoje é a memória Cache.

4) Como surgiu a programação de alto nível?
Resposta incorreta da 4: Não sei, não sou programador, esse assunto “histórico” não me interessa

Resposta correta da 4: As linguagens em antigamente eram de baixo nível, e se determinado programa fosse portado para outra plataforma, teria de ser reescrito do zero. Então criou-se as linguagens de alto-nível, que facilitavam o entendimento (pois os programadores e engenheiros de software poderiam conversar mais “amigavelmente” com o código) e, no caso do programa ser portado para outra plataforma, ele não precisaria mais ser escrito do zero: Bastaria haver o compilador que transformasse a linguagem de alto nivel em binário.

 5) Defina pipelining.
Resposta incorreta da 5: A que blz, só pergunta de programação… Bom, de acordo com o termo, deve ser instruções usando as etapas do pipeline certo? Alias, dfina pra mim FPU, já que esta falando de pipeline… (Nota do Timm: hehehehe, essa foi ótima)

Resposta correta da 5: O pipeline é utilizado na computação atual para ganho de performance no processador. Ou seja, ao invés dele buscar uma instrução, decodificar, executar, guardar, pegar outra, decodificar, guardar, pegar outra (e assim vai), ele passa a trabalhar em ciclos, como em uma linha de produção. Ele pega a instrução 1. Decodifica a 1 e já pega a instrução 2. Executa a 1, decodifica a 2 e pega a instrução 3. Executa a 2, decodifica a 3 e pega a 4. E assim por diante. Foi implementado a partir do processador Intel 486, e é utilizado em todos os processadores atuais. Problemas que podem ocorrer: O processador Pentium 4, por exemplo, tem um pipelining de aproximadamente 30 instruções, o que acaba atrapalhando o processador: Ele demorará 30 segundos para retomar a instrução que ele havia terminado de executar. Se não houver pipelining os processos não terão sincronismo. Bem programação, mesmo!!!

6) CISC x RISC, prós e contras?
Resposta incorreta 6: RISC? Nostalgia purinha em, os processadores RISC oferecem melhor desempenho pra instruções complexas, o CISC melhor desempenho pra instruções simples, mas hj em dia acho que não existe mais processadores 100% RISC, a não ser que seja pra uso bem especifico.

Resposta correta da 6:
CISC: Complex Instruction Set Computer (Computador com Conjunto de Instruções Complexas)
RISC: Reduced Instruction Set Computer (Computador com Conjunto de Instruções Reduzidas)

Os processadores CISC trabalham no padrão buscar-decodificar-executar. Busca o dado e a instrução, define a ação à ser feita e executa o processo ou com as threads. Os processadores RISC trabalham apenas no buscar-executar. Ele não decodifica, o que ganha em desempenho. Mas, instruções complexas (cujo o CISC teria a instrução certa para execução), o processador RISC simplesmente não conhece, e precisa quebrá-las em várias instruções simples, o que gasta tempo. A principal grande diferença é que, os CISC tem instruções pra divisão e multiplicação. Os RISC não tem, e precisam quebra-las em várias somas e subtrações. E, apesar de tudo, os RISC costumam levar vantagem na maioria das aplicações, principalmente aplicações específicas. Mas, os CISC já estão numa potência tão grande que igualam ou batem os RISC no quesito desempenho.

Atualmente, não há uma boa definição de processadores CISC e RISC, essa geração é de processadores híbridos. Nos Apples mesmo, na época do G4 mesmo (ou seja, há uns 3 anos atrás), na placa mãe já havia um modem para interpretar as instruções complexas e passar pro processador apenas as simples. Já no mundo CISC, as principais funçoes dos processadores atuais também já não são mais decodificadas, ficando apenas no buscar-executar, onde um processador se comportaria com o um RISC apesar de ser um CISC!

7) Qual a diferença na computação de 32 bits e 64 bits?
Resposta parcialmente correta da 7:
32 bit = 2^32 = 4.294.967.296
64 bit = 2^64 = 18.446.744.073.709.551.616

Resposta correta da 7: Os processadores de 32bits interpretam palavras de 32bits, ou seja, podem manipular palavras com 2^32. Os processadores 64 bits podem interpretar palavras de 2^64, teoricamente, mas o sistema operacional precisa dar suporte a isso.

8) O quê é EPIC?
Resposta incorreta da 8: Me pegou nesse ae…

Resposta correta da 8: EPIC é um outro conjunto de instruções (Explicit Parallel Instruction Computer – Computador de Instruções Paralelas Explícitas). Nem RISC nem CISC, o EPIC dá enfase ao paralelismo de instruções, como um sucessor do PA-RISC. O processador que dá suporte à elas é o Intel Itanium, que também entende palavras de 64bits. O padrão EPIC não é compativel com o x86, e poucos sistemas operacionais dão suporte à ele. Os sistemas operacionais que utilizam-no é o Linux, o FreeBSD, o HP-UX, o OpenVMS e há um porte mal-feito do Windows 2003 Server com pouquíssimas aplicações disponíveis e desempenho muito aquém do esperado. Os Itanium são feitos para concorrência com o processador POWER (IBM) e com o Sparc (Sun), mas devido a problemas (principalmente relacionado à marketing), ele não compete nem com o “irmãozinho” Xeon. Pena…

9) Fale sobre o Padrão POSIX.
Resposta incorreta da 9: Tambem não sei esse

Resposta correta da 9: Padrão proposto para normatizar os sistemas operacionais baseados em Unix e Unix-Like. Sistemas que atendem à essa padronização se comportam de maneira semelhante, com facil interoperabilidade.

Mas… Uma coisa muita gente não sabe (acredito que seja o caso de mais esse Troll) é que, os sistemas operacionais Microsoft Windows 2000, Microsoft Windows XP e Microsoft Windows 2003 (e séries) atendem em parte ao padrão Posix! E isso que o cara diz que conhece o Windows, eu mereço.

10) Como funciona o gerenciamento de memória do Windows? E do Linux? Qual o melhor, na sua opinião? Por que?
Resposta incorreta da 10: Pow ae é foda, só rola pergunta ligada DIRETAMENTE programação, ae fica difícil de dizer, ainda mais falar sobre gerenciamento de memória entre os dois sistemas, sei que o gerenciamento da memória é a forma que os programas “colocão” e “retiram” os programas da memória, agora chegar a uma conclusão de qual é o melhor, não sei responder (nota do Lucas Timm: Programação? Porra!)

O Gerenciamento de memória do Microsoft Windows é baseado em paginação, utilizando o algoritmo FIFO. Os processos são alocados do jeito que vão chegando, lotou a memória já cai pra swap e azar se tava usando. Torna o gerenciamento de memória ineficiente.

No Linux e nos outros sistemas operacionais baseados em Unix, o gerenciamento de memória é feito através do algoritmo Buddie, e a paginação por LRU (Last Recent Used). Como funciona: Simulando, sua memória total é de 8MB, e há um processo de 1.5MB para ser alocado. Então, o sistema operacional racha os 8MBs em duas partes de 4MB, uma parte de 4MB em duas de 2MB, e numa delas aloca o processo. Haverá o desperdício nos 500KB restantes, e o inverso acontecerá quando o processo sair da memória. Os fragmentos de tamanhos iguais se juntam reestabelecendo o espaço imediatamente. Simples e eficaz.

 11) O quê são processos e threads?
Resposta incorreta da 11: Processo é o executável, threads são informações necessárias pra o funcionamento do programa

Simulando, fazer um bolo será considerado um programa. Durante o ato de fazer o bolo, são realizadas 4 sub-rotinas:

I – Adquirir os ingredientes;
II – Acender o forno;
III – Bater a massa;
IV – Lavar a louça utilizada enquanto o bolo está assando.

Os quatro procedimentos, então, são designados processos. O objetivo é fazer um bolo, mas ele não vai sair pronto sem determinados procedimentos. Do mesmo modo é um programa de computador. Apesar de eu estar editando esse texto no BrOffice Writer, vários processos estão fazendo com que este passem o texto que digito para o editor.

As threads já são as instruções que compõe os processos. Considerando ainda o exemplo do bolo, as threads de cada processo seria:

I -> Abrir a geladeira, pegar ovos, pegar farinha, pegar leite e pegar o fermento;
II -> Ir até o fogão, pegar os fósforos, girar a válvula, acender o fósforo, abrir a porta do forno, acender, fechar a porta do forno;
III -> Procurar uma bacia, colocar os ingredientes, bater até chegar em determinado ponto da massa, adquirir a forma, despejar na forma, colocar no forno.
IV -> Enquanto o bolo não assar, juntar a louça, colocar na pia, lavar a louça, calcular o tempo restante para aguardar o bolo terminar de assar.

Concluindo, assim sabemos que uma thread é a menor instrução a ser realizada. Um processo é um conjunto de threads. E um programa, um conjunto de processos!

Ultimo argumento:
Ae Lucas, tu joga muito baixo cara, tu pega um monte de perguntas baseadas em programação e manda eu responder, é obvio que vou ter dificuldade em responder, tu sabe muito bem que a minha área principal não é essa, assim fica fácil né, só mostra o tipo de covarde que vc é, vê se eu perco meu tempo aqui te perguntando assuntos relacionado a hardware? E te garanto que se eu fizer uma lista de 10 perguntas tu não responde 2, mas esses tipos de questões são bem covardes vc não acha?? Eu acho, por isso não faço.

Eu preciso falar mais alguma coisa?? Se ele não conhece nem o que elogia, conhecerá o que critica?🙂

Agradecimento especial: Lucília Ribeiro, professora de Sistemas Operacionais. Obrigado pelo conhecimento adquirido no segundo semestre através da matéria. Sim, vai deixar saudade =)
(tomara que ela leia isso :D)

Categorias:Diversos
  1. Caio César
    1 de fevereiro de 2007 às 3:09 am

    Muito bom!

    Tinha coisa aí que eu realmente não sabia. Valeu, Lucas por dar as respostas dessas perguntas que o carinha não soube responder.

    As respostas ficaram muito boas e de fácil entendimento.

    Falou
    Abraços

  2. Phantom X
    1 de fevereiro de 2007 às 4:46 am

    Arregaçou o coitado!

    Eu até que sacava algumas coisas antigamente (outras não), mas estou muito enferrujado… Foi ótimo relembrar.

    Falou!

  3. Lucília
    1 de fevereiro de 2007 às 10:53 am

    Esta é a grande diferença entre simplesmente “fazer”, e “saber por que faz”. A teoria aliada à prática é o que nos diferencia dos macacos (e dos papagaios). Parabéns pela categoria com que trata os assuntos. ESSE é o diferencial!

  4. 1 de fevereiro de 2007 às 11:13 am

    Professora, a sra. é o máximo. Com todo respeito 🙂

  5. Isis
    1 de fevereiro de 2007 às 11:34 am

    Lucas,isso me lembra um certo troll que a gente gosta de comentar por lá…
    Enfim,se entender de hardware nao implica em saber sobre como funciona,o que esse ser sabe?Citar marcas?

  6. aline
    1 de fevereiro de 2007 às 11:34 am

    Cara, parabéns!!!
    Só ficou uma dúvida: o que esse Troll entende por hardware???

    Muito bem elaboradas as suas respostas! Aprendi muita coisa que não sabia!

    É isso aí!

  7. 1 de fevereiro de 2007 às 11:48 am

    Isis e Aline,

    As pessoas esquecem que, nessa terra, ninguém é melhor do que ninguém e ninguém sabe de tudo. Eu sei um pouquinho sobre informática e tecnologia, e não sou arrogante por causa disso. Pergunto quando não sei, não falo do que não conheço, e nem uso agressão verbal contra ninguém.

    Então, como o mr. Linus costuma dizer: “Talk is cheap. Show me the code!” (Tradução: Falar é “merda”. Mostre o código!) O deixemos provar o quão bom ele é, nisso as máscaras costumam cair…

  8. Gilberto
    1 de fevereiro de 2007 às 12:07 pm

    Legal cara!!!!

    Ficou otimo!!!!!
    Realmente a Lucilia é demais, conseguiu enfiar isso na nossa cabeça, pelo menos na sua. =D

  9. 9 de fevereiro de 2007 às 7:04 pm

    Eu sabia: 1, 3, 4 e 9.

    Não é minhaa área, mas eu me esforço🙂

  10. Adriana
    14 de fevereiro de 2007 às 12:07 am

    Gostei muito das explicações, principamente pq estava pesquisando par aum trabalho do curso e achei metade das respostas. O que não tinha eram informações muito interessantes, que quase nunca nos perguntamos pra que serve isso?
    Vlw

  11. 20 de agosto de 2007 às 4:02 am

    Olá, td bem?

    Estava fazendo uma pesquisa no Google sobre Risc e Cisc para fazer um trabalha de Fundamentos da Computação e cai neste post, que por sinal, é muito bom.

    Vou mandar o link pra turma toda da sala ler.

    Abraços cara …

  12. Lala
    25 de setembro de 2007 às 1:29 pm

    Eu gostaria de saber sobre a Plataforma Troll (onde ela foi construida,ne que ano, que dia, para que é usada…) sua história em geral !!!
    Mas não encontrei nada disto aqui….

  13. Jota Junior
    4 de abril de 2008 às 7:54 am

    Muito bom o post!!

    ITANIUM COM OPENVMS é r0x =)

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: