B.3. Funcionamento Interno de um Computador: As Diferentes Camadas Envolvidas
Um computador é muitas vezes considerado como algo bastante abstrato, e a interface visível externamente é muito mais simples do que a sua complexidade interna. Tal complexidade vem, em parte, do número de peças envolvidas. No entanto, estas peças podem ser vistas em camadas, em que uma camada apenas interage com aquelas imediatamente acima ou abaixo.
Um usuário final pode viver sem saber esses detalhes... enquanto tudo funciona. Ao encontrar um problema como: "A internet não funciona!", A primeira coisa a fazer é identificar em qual camada o problema se origina. A placa de rede (hardware) está funcionando? É reconhecida pelo computador? Será que o kernel do Linux vê a placa? Os parâmetros de rede estão configurados corretamente? Todas estas questões isolam uma camada apropriada e focam numa possível fonte do problema.
B.3.1. A Camada mais Profunda: o Hardware
Vamos começar com um lembrete básico de que um computador é, em primeiro lugar, um conjunto de elementos de hardware. Há geralmente uma placa principal (conhecida como a placa-mãe), com um (ou mais) processador(es), memória RAM, controladores de dispositivos e encaixes (slots) de extensão para placas opcionais (para outros controladores de dispositivos). O mais importante entre esses controladores são as IDE (Parallel ATA), SCSI e Serial ATA, para conexão com dispositivos de armazenamento, como discos rígidos. Outros controladores incluem USB, que é capaz de hospedar uma grande variedade de dispositivos (variando de webcams até termômetros, de teclados até sistemas de automação residencial) e IEEE 1394 (Firewire). Esses controladores muitas vezes permitem conectar vários dispositivos. O subsistema completo gerenciado por tal controlador é, por este motivo, normalmente conhecido como "barramento". Placas opcionais incluem placas gráficas (onde telas de monitores serão conectadas), placas de som, placas de rede, e assim por diante. Algumas placas principais são pré-fabricadas com esses recursos, e não precisam de placas opcionais.
B.3.2. O Inicializador: a BIOS ou UEFI
O hardware, por si só, é incapaz de realizar tarefas úteis sem um software que o gerencie. Controlar e interagir com o hardware é o objetivo do sistema operacional e dos aplicativos. Estes, por sua vez, requerem hardware funcional para executar.
This symbiosis between hardware and software does not happen on its own. When the computer is first powered up, some initial setup is required. This role is assumed by the BIOS or UEFI, a piece of software embedded into the main board that runs automatically upon power-up. Its primary task is searching for software it can hand over control to. Usually, as you may have learned in
Seção 9.1, “Inicialização do Sistema”, in the BIOS case, this involves looking for the first hard disk with a boot sector (also known as the
master boot record or
MBR), loading that boot sector, and running it. From then on, the BIOS is usually not involved (until the next boot). In the case of UEFI, the process involves scanning disks to find a dedicated EFI partition containing further EFI applications to execute.
O setor de inicialização (ou a partição EFI), por sua vez, contém outro pedaço de software, chamado bootloader, cujo propósito é encontrar e executar um sistema operacional. Uma vez que este bootloader não é incorporado na placa principal, mas carregado do disco, pode ser mais esperto do que a BIOS, o que explica por que o BIOS não carrega o sistema operacional por si só. Por exemplo, o carregador de inicialização (geralmente o GRUB em sistemas Linux) pode listar os sistemas operacionais disponíveis e pedir ao usuário para escolher um. Normalmente, fornece uma opção de tempo limite e escolha padrão. Às vezes, o usuário também pode optar por adicionar parâmetros para passar para o núcleo, e assim por diante. No final das contas, um núcleo é encontrado, carregado na memória e executado.
A BIOS/UEFI também é responsável por detectar e iniciar uma série de dispositivos. Obviamente, isto inclui os dispositivos IDE/SATA (normalmente disco(s) rígido(s) e unidades de CD/DVD-ROM), mas também dispositivos PCI. Os dispositivos detectados são frequentemente listado na tela durante o processo de inicialização. Se esta lista passa muito rápido, use a tecla Pause para congelá-la por tempo suficiente para ler. Dispositivos PCI instalados que não aparecem são um mau presságio. Na pior das hipóteses, o dispositivo está com defeito. Na melhor das hipóteses, é apenas incompatível com a versão atual da BIOS ou com a placa-mãe. As especificações PCI evoluem, e não há garantia de que as placas-mãe antigas entendam dispositivos PCI mais recentes.
Tanto a BIOS/UEFI como o bootloader apenas são executados por alguns segundos cada; agora estamos chegando ao primeiro software que é executado por um longo tempo, o núcleo do sistema operacional. Este núcleo assume o papel de um maestro de uma orquestra e assegura a coordenação entre o hardware e o software. Este papel envolve várias tarefas, incluindo: administrar o hardware, gerenciar processos, usuários e permissões, o sistema de arquivos, e assim por diante. O núcleo fornece uma base comum a todos os outros programas no sistema.
B.3.4. O Espaço de Usuário
Embora possamos agrupar tudo que acontece fora do núcleo como "espaço do usuário", ainda podemos separá-lo em camadas de software. No entanto, as suas interações estão cada vez mais complexas e as classificações podem não ser tão simples. Uma aplicação geralmente usa bibliotecas, que por sua vez envolvem o núcleo, mas as comunicações também podem envolver outros programas, ou até mesmo muitas bibliotecas que chamam umas às outras.