1.2 – Componentes de um Computador
A abordagem clássica em arquitetura de computadores é apresentar a
máquina com cinco componentes básicos. Isto remonta o modelo de
computação preconizado por Von Neumman e usado até hoje. Neste modelo
há um repositório para dados e programas que é a memória. Uma via de
dados (datapath) por onde os dados da memória são trazidos para o
processador, processados e devolvidos à memória. Uma unidade de controle,
que gerencia a via de dados baseada no código (programa) que o usuário
também depositou na memória. Finalmente um sistema de entrada e saída
(E/S ou I/O, Input/Output), por onde o computador se comunica com o
mundo externo. Costumamos chamar a unidade de controle junto com a via de
dados de CPU (Central Processing Unit ou UCP, Unidade de Processamento
Central) ou processador. A Figura 1.4 mostra um diagrama dos componentes
básicos de um computador e suas inter-relações.
A memória é um grande supermercado. Nele temos muitas prateleiras.
As prateleiras do supermercado são numeradas para que os ingredientes
possam ser facilmente encontrados. Existem setores específicos para cada
ingrediente no supermercado. O chefe de cozinha adquire no supermercado
um livro de receitas e nele estão mostrados os ingredientes e modo de fazer. A
receita é análoga ao programa (software). Nela está mostrado o modo de
preparar e os ingredientes. O chefe, então, instrui seus comandados a
comprarem no supermercado os ingredientes e depois lhes informa como
misturar. Depois de preparado, o bolo vai para a despensa (prateleiras). O
chefe então manda entregar ao supermercado, onde os bolos serão vendidos.
1.3 – A visão do software
Ao longo deste livro uma seção especial sempre se faz presente: a visão
do software. Estamos descrevendo hardware, mas com enfoque em software,
por isto, mesmo que o assunto seja muito voltado ao engenheiro de
computação e afins, sempre devemos apontar como o software, mais
precisamente o programador, enxerga a máquina e/ou quais softwares podem
ser utilizados para extrair o máximo da organização de um computador.
Dentro deste espírito, vamos definir o termo Arquitetura de
Computadores, como a visão que um programador de baixo nível tem sobre a
máquina para qual ele está codificando. Este programador enxerga então
uma abstração da máquina chamada Arquitetura do Conjunto de
Instruções, ISA (Instruction Set Architecture). Ela define como é possível
fazer a nossa máquina funcionar.
O Conjunto de Instruções de uma máquina é simplesmente o conjunto
de palavras que compõem o idioma inteligível ao processador e outras partes
da organização do computador. Algumas destas instruções podem afetar a
bom funcionamento da máquina, o que, no passado, levou até à perdas de
partes do hardware. Para evitar tal situação, algumas das instruções foram
selecionadas, na maioria das arquiteturas, para compor um conjunto de
instruções privilegiadas. Este conjunto é rigorosamente controlado pelo
Sistema Operacional, ou seja, um software que deseja fazer uso de tais
instruções precisa de permissão especial. Quem constrói um Sistema
Operacional precisa, por sua vez, prover os serviços necessários à proteção
da máquina e dos processos que nela são executados. Um software que roda
sobre o sistema operacional é dito software do usuário.
Vamos de forma introdutória mostrar as atribuições básicas do
Sistema Operacional. Depois seguiremos com a apresentação de outros
softwares básicos.
1.3.1 – O Sistema Operacional
O Sistema Operacional é o software básico de maior importância
dentro do sistema computacional. Ele controla as funções básicas do
computador, incluindo o gerenciamento de memória e o I/O. O Sistema
Operacional é um software baseado em eventos, isto é, ele realiza tarefas em
respostas à comandos, à chamadas de programas de usuários, de dispositivos
de Entrada e Saída etc.
Os sistemas operacionais modernos têm aparência parecida, mas suas
funcionalidades podem diferir muito. Uma possível abordagem é a
minimalista, onde apenas as funcionalidades mais básicas estão presentes no
SO. Outra abordagem é a completa, onde toda e qualquer funcionalidade
deve estar presente. Alguns têm uma interface com usuário bastante
amigável, mas falham em desempenho ou confiabilidade. Outros são bastante
confiáveis, mas não têm uma boa interface. Em suma, nenhum sistema
operacional é completo e melhor que os outros em todos os aspectos.
1.2 – Componentes de um Computador
A abordagem clássica em arquitetura de computadores é apresentar a
máquina com cinco componentes básicos. Isto remonta o modelo de
computação preconizado por Von Neumman e usado até hoje. Neste modelo
há um repositório para dados e programas que é a memória. Uma via de
dados (datapath) por onde os dados da memória são trazidos para o
processador, processados e devolvidos à memória. Uma unidade de controle,
que gerencia a via de dados baseada no código (programa) que o usuário
também depositou na memória. Finalmente um sistema de entrada e saída
(E/S ou I/O, Input/Output), por onde o computador se comunica com o
mundo externo. Costumamos chamar a unidade de controle junto com a via de
dados de CPU (Central Processing Unit ou UCP, Unidade de Processamento
Central) ou processador. A Figura 1.4 mostra um diagrama dos componentes
básicos de um computador e suas inter-relações.
A memória é um grande supermercado. Nele temos muitas prateleiras.
As prateleiras do supermercado são numeradas para que os ingredientes
possam ser facilmente encontrados. Existem setores específicos para cada
ingrediente no supermercado. O chefe de cozinha adquire no supermercado
um livro de receitas e nele estão mostrados os ingredientes e modo de fazer. A
receita é análoga ao programa (software). Nela está mostrado o modo de
preparar e os ingredientes. O chefe, então, instrui seus comandados a
comprarem no supermercado os ingredientes e depois lhes informa como
misturar. Depois de preparado, o bolo vai para a despensa (prateleiras). O
chefe então manda entregar ao supermercado, onde os bolos serão vendidos.
1.3 – A visão do software
Ao longo deste livro uma seção especial sempre se faz presente: a visão
do software. Estamos descrevendo hardware, mas com enfoque em software,
por isto, mesmo que o assunto seja muito voltado ao engenheiro de
computação e afins, sempre devemos apontar como o software, mais
precisamente o programador, enxerga a máquina e/ou quais softwares podem
ser utilizados para extrair o máximo da organização de um computador.
Dentro deste espírito, vamos definir o termo Arquitetura de
Computadores, como a visão que um programador de baixo nível tem sobre a
máquina para qual ele está codificando. Este programador enxerga então
uma abstração da máquina chamada Arquitetura do Conjunto de
Instruções, ISA (Instruction Set Architecture). Ela define como é possível
fazer a nossa máquina funcionar.
O Conjunto de Instruções de uma máquina é simplesmente o conjunto
de palavras que compõem o idioma inteligível ao processador e outras partes
da organização do computador. Algumas destas instruções podem afetar a
bom funcionamento da máquina, o que, no passado, levou até à perdas de
partes do hardware. Para evitar tal situação, algumas das instruções foram
selecionadas, na maioria das arquiteturas, para compor um conjunto de
instruções privilegiadas. Este conjunto é rigorosamente controlado pelo
Sistema Operacional, ou seja, um software que deseja fazer uso de tais
instruções precisa de permissão especial. Quem constrói um Sistema
Operacional precisa, por sua vez, prover os serviços necessários à proteção
da máquina e dos processos que nela são executados. Um software que roda
sobre o sistema operacional é dito software do usuário.
Vamos de forma introdutória mostrar as atribuições básicas do
Sistema Operacional. Depois seguiremos com a apresentação de outros
softwares básicos.
1.3.1 – O Sistema Operacional
O Sistema Operacional é o software básico de maior importância
dentro do sistema computacional. Ele controla as funções básicas do
computador, incluindo o gerenciamento de memória e o I/O. O Sistema
Operacional é um software baseado em eventos, isto é, ele realiza tarefas em
respostas à comandos, à chamadas de programas de usuários, de dispositivos
de Entrada e Saída etc.
Os sistemas operacionais modernos têm aparência parecida, mas suas
funcionalidades podem diferir muito. Uma possível abordagem é a
minimalista, onde apenas as funcionalidades mais básicas estão presentes no
SO. Outra abordagem é a completa, onde toda e qualquer funcionalidade
deve estar presente. Alguns têm uma interface com usuário bastante
amigável, mas falham em desempenho ou confiabilidade. Outros são bastante
confiáveis, mas não têm uma boa interface. Em suma, nenhum sistema
operacional é completo e melhor que os outros em todos os aspectos.