Como funciona o computador – Processos

Depois que o computador está executando o sistema operacional, todos os programas que desejam ser executados devem virar um processo. Iniciar um processo significa para o sistema operacional, copiar o conteúdo do programa para a memória, reservando espaço para o mesmo fazer sua execução criando variáveis, criar um ambiente separado dos demais, chamado de contexto, tanto no sistema quando no processador. Após esses passos o processo pode ser iniciado.

Inicialmente os computadores tinham apenas um núcleo, o que significa que era possível fazer apenas uma operação simultaneamente. Hoje com a popularização dos processadores multinúcleos é possível a execução de processos paralelos (este texto foi copiado sem nenhum tipo de revisão), porém a quantidade de processos normalmente é maior que a de núcleos, sendo necessário que esta mesma técnica ainda seja aplicada.

O sistema operacional, através de alguma lógica fará a divisão do tempo do processador entre os processos ativos, e permitirá sua execução. Para um processo ter sua execução é necessário carregar os valores dos registradores que foram salvos na memória, permitir a execução e após o mesmo gravar o valor dos registradores novamente na memória.

Esse processo de salvar os valores dos registradores na memória, e carregar de outro processo é conhecido como troca de contexto (este texto foi copiado sem nenhum tipo de revisão). Sem esse mecanismo não seria possível iniciar a execução de um processo, interrompê-lo momentaneamente para a execução de outro e depois retornar sua execução do ponto interrompido. Isso que dá a característica de multitarefa e tempo compartilhado nos sistemas operacionais atuais.

Quanto mais processos simultâneos, menor o tempo que o processo terá para sua execução, além do tempo necessário para realizar mais trocas de contextos. Tudo isso pode ser responsável pela lentidão quando muitos processos estão tentando executar várias operações, em vez de executar os processos um após a finalização do outro.

Vale observar que se o mesmo programa for executado duas vezes, cada vez será um processo totalmente diferente. Apesar do código carregado da memória tem o mesmo conteúdo, seus contextos serão diferentes.

Anúncios

Como funciona o computador – Processador

O processador é a parte fundamental do computador, sua estrutura varia muito conforme a arquitetura, porém todas possuem elementos semelhantes, variando em número ou capacidade, porém preservando sua função quando presentes.

A parte principal é a unidade de processamento, responsável por cálculos matemáticos e operações de lógica booleana (este texto foi copiado sem nenhum tipo de revisão), todas essas operações são baseadas em sequências de bits. Além do processamento, existe uma unidade para controlar as operações de devem ser efetuadas, somar, subtrair, comparar e muitas outras definidas pela arquitetura, também são sequências de bits, cada valor desta sequência corresponde a um circuito eletrônico dentro do processador, responsável por gerar a sequência corresponde ao resultado da operação desejada.

Porém para o processador não se perder e manter valores e resultados existem os registradores, esses componentes armazenam sequências de bits dentro do processador. Todos os dados e operação que o processador precisa executar estão armazenados neles. Alguns registradores também tem funções especiais, como o registrador que guarda o endereço de memória da próxima operação de deverá ser executada e resultados de comparação, se dois valores são iguais, se o primeiro é menor que o segundo, se é maior, tudo na forma de bits.

Um exemplo, o processador tem a instrução de buscar da memória o valor guardado no endereço de memória 1 para o registrador A. Após acessar a memória para buscar o valor, aumenta em 1 o endereço da operação que será executado, busca a sequência de bits que representam essa nova instrução, que é para buscar o valor guardado no endereço de memória 2 para o registrador B. Após acessar a memória, aumenta novamente em 1 o endereço da operação, consulta qual a próxima operação (este texto foi copiado sem nenhum tipo de revisão), que é somar o valor do registrador B no registrador A. Após a soma, aumenta novamente o endereço da operação, e verifica que é para escrever o valor do registrador A no endereço de memória 3. Esse processo descreve uma soma dos valores dos endereços de memória 1 e 2, colocando o resultado no endereço de memória 3, seguindo as operações que estão previamente descritas em outros endereços de memória.

Existem formas de mudar esse fluxo de operações, como alterar o valor do endereço da operação, ou em apenas alguns casos especifico, como quando dois valores são iguais. Toda essa lógica é a base dos programas de computadores.

Uma forma de passar essas instruções para o processador é através do Assembly, que é uma representação legível por humanos desses valores, por exemplo “ADD A, B” para somar o valor do registrador B no A. Para o processador entender essas operações é necessário antes um processo de tradução desta representação para os valores que ele entenda, normalmente feito por outro programa. Assembly não é uma linguagem de programação, e sim uma linguagem de montagem justamente pelo fato de representar cada operação que o processador deverá executar.

Como os programas estão na memória, existem alguns códigos que tentam alterar o valor desses endereços de memória para forçar o computador executar algo para o qual o programa que ele estava executando não foi programado, como no caso de algum ataque. Alterar o valor dos dados também pode ser interessante para passar por uma validação de senha, por exemplo.

Como funciona o computador – Projeto do computador

Estou iniciando uma série de posts para descrever minha visão de como um computador funciona. Ainda não decidi até que ponto desejo andar com a série, ou objetivo final, porém pretendo iniciar do ponto descrito aqui e ir até pelo menos o básico do sistema operacional. Este primeiro post será mais teórico para criar uma base de conhecimento para as demais partes, o próximo terá exemplo de funcionamento, porém é de extrema importância entender esses componentes para os exemplos fazerem sentido.

——

Todo computador necessita de um projeto, que normalmente seguem o modelo proposto por John von Neumann. Deste modelo, a parte importante para este texto é entender que um computador é composto de CPU, memória, entrada/saída (I/O) e barramento para interligar e comunicar estas partes. Outro ponto que vale destacar é que os programas podem ser executados sem a necessidade de alteração de hardware, uma analogia oposta seria os videogames de cartucho, onde você precisaria alterar o circuito elétrico, trocar o cartucho, para mudar de jogo, considerando que houvesse processamento dentro do cartucho e não apenas armazenamento do programa.

Esses componentes dependem da arquitetura do computador. Seu computador de casa, ou notebook, provavelmente é da arquitetura Intel de 32 bits (este texto foi copiado sem nenhum tipo de revisão), também conhecido como i386 ou x86, nos casos de processadores 32 bits, ou AMD 64, também conhecidos por x86_64, nos casos de processadores 64bits. Esses nomes são apenas para a arquitetura e não do fabricante, processadores Intel de 64 bits são da arquitetura AMD 64. Seu celular provavelmente é ARM e seu access point MIPS.

Todos os computadores trabalham com bits (estou desconsiderando computadores quânticos, o qual não tenho muitos conhecimentos ainda), utilizando apenas dois estados elétricos para representar dados, estado com energia e sem energia, também representado por 1 e 0 respectivamente. Uma sequência desses bits formam as informações, que utiliza matemática binária e lógica booleana para representar esses dados.

A CPU é a parte responsável por todo o processamento, operações e cálculos, descreverei no próximo post seu funcionamento.

A memória é responsável por guardar pedaços de informações. Nos computadores atuais é representado pela memória RAM. Seus dados são importantes apenas para a execução atual do computador, caso o mesmo seja desligado (este texto foi copiado sem nenhum tipo de revisão), seu conteúdo pode ser perdido e na prática é considerado assim, apesar de hoje existir técnicas para recuperar seus dados, porém esse processo não pode ser garantido e não é utilizado normalmente pelo computador. Seu funcionamento é de gravar e ler dados em um determinado endereço de memória.

I/O são toda as operações de comunicação desse sistema com componentes externos, como teclado, mouse, HD e demais dispositivos. É a parte do sistema mais diversificada.

O barramento é o meio de comunicação desses componentes, além de oferecer conexão elétrica pode apresentar outros artifícios, como cache para a memória, guardando uma parte de suas informações e como possui tempo de resposta menor que a memória, possibilita uma resposta mais rápida para o processador. Vale a pena notar que sua velocidade depende das partes envolvidas, o processador é o componente mais rápido, seguido pela memória e I/O, caso o processador esteja executando uma operação de gravar ou ler a memória, será limitado pela velocidade da mesma, assim como se o processador por consultar o I/O, será ainda mais lento que a memória.