Sistemas Operacionais: Conceitos de Hardware e Software
Machado e Maia (2014) estruturaram seu livro com uma ordem de conteúdo que permitisse aos leitores uma compreensão básica dos principais elementos que compõem um sistema computacional. É por isso que no Capítulo 2, intitulado “Conceitos de Hardware e Software”, eles se dedicam a fornecer uma visão abrangente dos componentes básicos de um sistema computacional, essenciais para estudantes e profissionais de informática.
O que é o hardware e quais os seus principais componentes?
Um sistema computacional é basicamente um conjunto de circuitos eletrônicos que manipulam dados de forma digital. De forma simples, pode-se dizer que o hardware de computador é todo componente que possui existência física no mundo, ou seja, que possa ser manuseado pelo usuário. Por exemplo, é possível carregar um monitor, pegar na mão uma memória, um processador e um SSD, limpar um gabinete dentre outras diversas ações manuais.
Conforme Machado e Maia (2014), estes componentes podem ser agrupados em três subsistemas funcionais básicos: o processador (UCP), a memória principal e os dispositivos de entrada/saída (E/S).
O Processador (UCP)
A Unidade Central de Processamento (UCP) é responsável por gerenciar todo o sistema computacional, controlando e executando instruções armazenadas na memória principal através de operações básicas como somar, subtrair, comparar e movimentar dados. De maneira simplória, consideraremos que o processador é composto pela Unidade de Controle (UC), que gerencia as atividades dos componentes, a Unidade Lógica e Aritmética (ULA), que realiza operações lógicas e aritméticas, e os Registradores, que armazenam informações de controle e dados. Contudo, cabe destacar que os complexos e poderosos processadores atuais possuem vários outros componentes para além daqueles e que também estão embutidos nos circuitos integrados. São exemplos as memórias cache, as unidades de processamento neural, entre outros.
Tipos de Memória e sua hierarquia
O capítulo 2 detalha os diferentes tipos de memória, destacando suas utilidades e características. A Memória Principal, popularmente chamada de memória RAM, é o local onde instruções e dados são armazenados. Ela é organizada em células, sendo o byte – conjunto de 8 bits – o tamanho de célula mais comum. O acesso é feito por meio de um endereço único, gerenciado por registradores como o Memory Address Register (MAR) e o Memory Buffer Register (MBR).
Como a comunicação entre processador e memória principal é um problema computacional considerável devido a discrepância das velocidades de funcionamento de ambos, a Memória Cache foi introduzida nos computadores para minimizar essa diferença de velocidade. A cache é uma memória volátil de alta velocidade, mas pequena capacidade (alguns kilobytes – KB – ou megabytes – MB). Processadores modernos utilizam arquiteturas de cache com múltiplos níveis (L1, L2, L3) para otimizar o desempenho, sendo L1 o nível mais rápido.
O último nível de memória contempla todos os meios de armazenamento permanente (não volátil) de programas e dados. Esse conjunto de dispositivos são chamados de Memória Secundária, sendo exemplos os discos rígidos, os pendrives, os CDs/DVDS/Blu-Rays etc. Embora o acesso seja lento (milissegundos) comparado à memória principal (nanossegundos), eles possuem baixo custo de fabricação e grande capacidade de armazenamento.
A Figura 1 apresenta o funcionamento da hierarquia entre os tipos de memórias disponíveis em sistemas digitais. Repare que as memórias no topo da pirâmide (registradores) são as de acesso mais rápido pelo processador, porem possuem menos capacidade de armazenamento de dados (poucos bytes). À medida que desce-se a pirâmide, as memórias passam a ter mais capacidade de armazenamento, porém o acesso dos dados pelo processador fica mais lento. Mais explicações sobre este assunto pode ser obtido no Blog Formação Dev (clique aqui).

Fonte: Retirado de Garcez (2023).
Dispositivos de Entrada e Saída (E/S)
Os dispositivos de entrada e saída são componentes importantes dentro de um sistema computacional, pois são eles os responsáveis pela comunicação entre o usuário e o computador.
Os dispositivos de entrada permitem que dados e comandos sejam enviados ao computador para processamento. Exemplos comuns destes dispositivos são o teclado, usado para digitar textos e comandos, e o mouse, que controla o cursor na tela. Há também dispositivos mais modernos, como microfones, que capturam áudio, e câmeras, que captam imagens e vídeos.
Por outro lado, os dispositivos de saída têm a função de exibir ou transmitir ao usuário as informações processadas pelo computador. Os exemplos mais comuns são o monitor, que exibe imagens e textos; a impressora, que gera cópias físicas de documentos digitais; e as caixas de som ou fones de ouvido, que reproduzem sons e músicas.
Cabe destacar que alguns dispositivos, como as telas sensíveis ao toque podem funcionar como entrada e saída ao mesmo tempo, permitindo tanto o envio quanto a recepção de informações. Esses dispositivos são essenciais para tornar a interação com o computador eficiente e acessível.
E o que é o software?
Para que o hardware descrito anteriormente tenha utilidade prática, é necessário um conjunto de programas (software) que sirva como interface entre o usuário e as capacidades do hardware. Logo, o software (ou programa) é uma ideia (ou abstração) que foi materializada em alguma mídia digital para executar alguma tarefa. Ela não possui forma física e não pode ser manuseada, pois ela existe apenas no “mundo das ideias”.
Segundo Machado e Maia (2014), existem três tipos gerais de softwares:
- Sistemas operacionais: são os programas responsáveis pelo gerenciamento dos demais programas e dos componentes de hardware (exemplos: Windows, Linux, MacOS);
- Utilitários: são softwares complementares ao sistema operacional que servem para realizar tarefas específicas que apoiem o funcionamento do sistema operacional (exemplos: compiladores, interpretadores, drivers etc.);
- Aplicativos: são os softwares desenvolvidos pelos usuários para fins gerais (exemplos: navegadores, editores de vídeo etc.).
No Capítulo 2, Machado e Maia (2014) destacam que alguns softwares utilitários que são cruciais no ciclo de desenvolvimento e execução de programas aplicativos. Eles não serão detalhados neste artigo, mas, caso seja do interesse de alguém, são eles:
- Tradutor: Converte o programa-fonte (escrito em linguagem de alto nível ou montagem) em código de máquina (módulo-objeto), pois o código simbólico não é executável diretamente pelo processador. Inclui o Montador (para linguagem de montagem) e o Compilador (para linguagens de alto nível, permitindo portabilidade).
- Interpretador: Atua como um tradutor que não gera módulo-objeto. Traduz e executa cada instrução imediatamente durante o processamento. Apesar de ser mais lento que o compilador, oferece flexibilidade ao suportar tipos de dados dinâmicos.
- Linker (Editor de Ligação): Gera um único programa executável a partir de um ou mais módulos-objeto. Ele é responsável por resolver referências simbólicas externas (como chamadas a sub-rotinas em bibliotecas) e pela relocação (definição da região de memória para carga).
- Loader (Carregador): Utilitário responsável por carregar o programa executável na memória principal para ser, de fato, processado. Sua classificação (absoluto ou relocável) depende do tipo de código gerado pelo linker.
- Depurador (Debugger): Uma ferramenta essencial para auxiliar na depuração e localização de erros. Suas funcionalidades incluem acompanhar a execução passo a passo, alterar e visualizar o conteúdo de variáveis, e implementar pontos de parada (breakpoint e watchpoint).
Considerações finais
O conhecimento detalhado desses componentes de hardware e software é importante para uma compreensão sólida sobre como o sistema operacional gerencia e otimiza esses recursos em um ambiente multiprogramável.
Aproveito para deixar o vídeo da aula que gravei explicando os conteúdos do capítulo 2 do livro de Machado e Maia (final da página). Ressalto que nem a leitura deste artigo ou a visualização do vídeo substituem a experiência de ler a referência original. Portanto, fica o meu convite para lerem o capítulo posteriormente.
Obrigado pela leitura e bons estudos.
Referências
MACHADO, Francis Berenger; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 5ª ed. Rio de Janeiro: LTC, 2014.
GARCEZ, Letícia. O que é hierarquia de memória. Blog Formação DEV, 28 ago. 2023. Disponível em: https://blog.formacao.dev/o-que-e-hierarquia-de-memoria/. Acesso em: 01 out. 2025.


