DEV Community

Cover image for Dia 11 - [1.1 Introdução] - Organização e Projeto de Computadores: Interface Hardware/Software
Matheus Gomes
Matheus Gomes

Posted on

Dia 11 - [1.1 Introdução] - Organização e Projeto de Computadores: Interface Hardware/Software

Antes de engrenar de vez na criação do meu sistema operacional, resolvi dar dois passos atrás e consumir dois livros:

  • Organização e Projeto de Computadores: Interface Hardware/Software - John Hennessy
  • Sistemas Operacionais: Conceitos e Mecanismos - Prof. Carlos A. Maziero

Também está no meu radar: Arquitetura de Computadores - Uma Abordagem Quantitativa - John Hennessy
Mas esse deixarei para o futuro.

Começando:
Esse capítulo destina-se a enfatizar a era "pós-PC", onde os PMD's (dispositivo móvel pessoal) estão substituindo os computadores desktop convencionais. Um exemplo de PMD é um smartphone, ou computador tablet.
Também elaborou um pouco sobre SaaS (Software as a Service) e Computação em Nuvem e processadores embutidos.
Após discorrer sobre esses assuntos, é apresentado uma série de questões que o livro propõe que poderão ser respondidas ao terminar de lê-lo:

  • Como os programas escritos em uma linguagem de alto nível, como C ou Java, são traduzidos para a linguagem de máquina e como o hardware executa os programas resultantes?
  • O que é a interface entre o software e o hardware, e como o software instrui o hardware a realizar as funções necessárias?
  • O que determina o desempenho de um programa e como um programador pode melhorar o desempenho?
  • Que técnicas podem ser usadas pelos projetistas de hardware para melhorar o desempenho?
  • Que técnicas podem ser usadas pelos projetistas de hardware para aumentar a economia de energia?
  • Quais são os motivos e as consequências da mudança recente do processamento sequencial para o processamento paralelo?
  • Desde o primeiro computador comercial em 1951, que grandes ideias os arquitetos de computador tiveram para estabelecer a base da computação moderna?

Por fim, o capítulo termina com as seguintes perguntas ao leitor:

O número de processadores embutidos vendidos a cada ano supera, e muito, o número de processadores para PC e até mesmo pós-PC. Você pode confirmar ou negar isso com base em sua própria experiência?

Eu, confirmo com um grandíssimo sim, principalmente por causa dessa notícia. Os processadores embutidos em sua grande maioria são usados em dispositivos IoT. E pensando na grande expansão desse mercado, é fácil confirmar isso.

Como mencionado anteriormente, tanto o software quanto o hardware afetam o desempenho de um programa. Você pode pensar em exemplo nos quais cada um dos fatores a seguir é o responsável pelo gargalo no desempenho? O algoritmo escolhido, A linguagem de programação ou compilador, O sistema operacional, O processador, O sistema de E/S e os dispositivos.

Algoritmo - Um algoritmo mal otimizado pode apresentar ineficiências. Complexidade computacional alta, uso ineficiente de memória e overhead desnecessário devem ser evitados ao máximo.

Linguagem de programação ou compilador - Linguagens interpretadas (Python e Ruby) e com compilação JIT (Java e C#) adicionam uma camada extra de processamento durante a execução. E linguagens que fazem uso do garbage collector também tendem a ser mais lentas.

Sistema operacional - Tenho certeza que há mais fatores, mas os que eu experienciei foram: má compatibilidade de suporte ao hardware (ubuntu), sobrecarga de segurança (windows defender) e gerenciamento de energia (notebook fora da tomada entrou em modo de economia).

Processador - Clock (frequência do processador), incompatibilidade de arquitetura (ARM, x86, x64), superaquecimento, número de núcleos... (com certeza há mais fatores que desconheço)

Sistema de E/S e os dispositivos - No momento, só me vem a cabeça o uso de discos rígidos lentos (HDD) e saturação de I/O.

Top comments (0)