Qualquer informação que possa ser armazenada eletronicamente; Conteúdo de um programa que ao ser executado produz uma função planejada;

Documentos relacionados
ARQUITETURA DE COMPUTADORES

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Introdução à Arquitetura de Computadores

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

ULA Sinais de Controle enviados pela UC

1. CAPÍTULO COMPUTADORES

Figura 1 - O computador

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Sistemas Operacionais

3. Arquitetura Básica do Computador

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

BARRAMENTO DO SISTEMA

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Estrutura de um Computador. Linguagem de Programação Rone Ilídio UFSJ - CAP

Componentes do Computador e. aula 3. Profa. Débora Matos

3. O NIVEL DA LINGUAGEM DE MONTAGEM

1.1. Organização de um Sistema Computacional

Edeyson Andrade Gomes

Dispositivos de Entrada e Saída

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Sistema de Computação

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

PROVA DE NOÇÕES DE MICROINFORMÁTICA

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

INFORMÁTICA BÁSICA. Prof. Rafael Zimmermann

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Informática, Internet e Multimídia

Introdução à Lógica de Programação

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Power Point. Autor: Paula Pedone

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Introdução à Programação de Computadores

Programação de Computadores

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Informática. Prof. Macêdo Firmino. Macêdo Firmino (IFRN) Informática Setembro de / 25

CorelDRAW UM PROGRAMA DE DESIGN

Máquinas Multiníveis

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF

LÓGICA DE PROGRAMAÇÃO

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico

Estrutura de um Computador

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

Disciplina: Introdução à Informática Profª Érica Barcelos

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Sistemas Operacionais IV

Iniciação à Informática

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Algoritmos. Cláudio Barbosa

SIMULADO Windows 7 Parte V

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Microsoft Word INTRODUÇÃO

INTRODUÇÃO AO WINDOWS

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

Mozart de Melo Alves Júnior

[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]

Persistência e Banco de Dados em Jogos Digitais

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

Organização e Arquitetura de Computadores I. de Computadores

Como funciona? SUMÁRIO

Everson Scherrer Borges João Paulo de Brito Gonçalves

Sistemas Operacionais

Manual do Visualizador NF e KEY BEST

Microprocessadores. Prof. Leonardo Barreto Campos 1

O modelo do computador

O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada.

Prof. Dr. Charlie Antoni Miquelin BÁSICO DE COMPUTAÇÃO EM TC

Dicas para usar melhor o Word 2007

Engenharia de Software III

3 Processamento de Dados e Sistemas de Informações Contábil-Financeiros, 12

Curso Técnico em Redes

Tecnologia da Informação. Prof Odilon Zappe Jr

Componentes de um computador típico

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Manual de Conversão para PDF Envio de Arquivos ao Diário Oficial

Programação de Computadores III

Organização de Computadores

Informática Básica. Microsoft Word XP, 2003 e 2007

Introdução aos Computadores

APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Organização Básica do Computador

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Introdução a Informática. Prof.: Roberto Franciscatto

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Lição 1 Introdução à programação de computadores

Arquitetura de Rede de Computadores

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

Transcrição:

CAPÍTULO 5 : SOFTWARES Conceitos Básicos O Software é o elemento em um computador que permite o uso de seus recursos físicos (hardware), de forma a cumprir uma determinada tarefa. A seguir são apresentadas algumas definições básicas sobre software e programação, e sobre a estrutura hierárquica do software em um computador. Definição de Software Embora a maioria das pessoas veja o software como o conteúdo de uma mídia (disco, disquete, fita), normalmente contendo a versão executável de um programa, o conceito de software engloba outros elementos listados a seguir. Qualquer informação que possa ser armazenada eletronicamente; Conteúdo de um programa que ao ser executado produz uma função planejada; Estruturas de dados que permitam que os programas manipulem adequadamente a informação; Documentos que descrevam a operação e o uso de programas; Figura 1: elementos constituintes do software. 98

Características do Software O software, ao contrário do hardware não é um produto manufaturado em série, sendo obtido como resultado de um processo abstrato de criação, exibindo as seguintes características: É um elemento lógico, sendo desenvolvido ou projetado, e não manufaturado. É maleável, permitindo mudanças durante seu ciclo de vida. A maioria do software ainda é feita sob medida ao invés de ser criada a partir de módulos préexistentes. Figura 2: Ciclos de busca e execução de uma instrução. Programas & Instruções A faceta mais conhecida do software são os programas. Um programa é uma lista ordenada de instruções que causa um comportamento pré-determinado no computador ao ser executada. Uma instrução é composta de uma operação elementar que possa ser executada pelo processador, e dos dados associados a esta operação. Exemplo: Significado: ADD AX,BX AX = AX + BX, sendo AX e BX registradores da CPU. O procedimento adotado pelo processador na execução de uma instrução é similar para todos os computadores e pode ser sumariado na lista aseguir, ilustrada pela figura 2: 99

Ao ser ligado o computador, sua CPU automaticamente lê a uma posição de memória ROM onde está o primeiro byte da primeira instrução. Este primeiro byte, pelo seu código binário, dirá à CPU se a instrução é de um, dois, três ou quatro bytes. Se for uma instrução de um byte, depois de buscado este byte na memória, a CPU irá executá-lo Se for uma instrução de mais de um byte, a CPU vai buscar todos os outros antes de executá-la. Embora possam ser escritos usando-se as instruções, os programas são criados, na maioria das vezes, usando-se comandos pré-definidos de mais alto nível de abstração (mais complexos que as instruções), que posteriormente são convertidos em instruções. Um conjunto fechado e completo de comandos é chamado de linguagem de programação. Tabela 1: Sumário das classes de linguagens de programação Geração Tipo da Linguagem 1ª Linguagem de Máquina 2ª Linguagem de Montagem 3ª Linguagem de Alto Nível 4ª Linguagem de Muito Alto Nível Características A programação era feita diretamente com as instruções (e dados) escritos em binário, na forma como seriam executados pelo processador (programa-executável). A programação é feita usando-se representações simbólicas (nomes) para dados e instruções, que facilitem seu uso e entendimento pelo programador, criando-se um arquivo chamado de "programafonte". Posteriormente o programa-fonte deve ser convertido na forma executável (linguagem de máquina). Linguagens orientadas por procedimentos, com comandos que enfatizam o algorítmo matemático que corresponde a solução de um dado problema, sendo independentes das instruções de qualquer processador em particular. Como no caso anterior, criaa-se um programa-fonte que deve posteriormente ser convertido em instruções em linguagem de máquina de um processador específico, para possibilitar sua execução. Linguagens orientadas para a solução de problemas, classificadas em vários tipos como: linguagens de consulta, geradores de aplicação, linguagens descritivas e, planilhas eletrônicas, processadores de texto, gerenciadores de banco de dados, etc Os programas executáveis podem ser de dois tipos segundo a forma como usam a memória do computador: Programas Residentes Ocupam um lugar "permanente" na memória principal do computador. Por esta razão, eles podem ser executados a qualquer momento, uma vez instalados, sem a necessidade de se carregar na memória primeiro. 100

Programas Transientes Programas transientes são aqueles que são alocados na memória principal quando são executados. A cada chamada de um determinado programa executável, o mesmo é carregado totalmente na memória principal do computador, sendo descartado em seguida, liberando espaço da memória para outros programas. Os exemplos a seguir mostram o efeito da inclusão de um programa residente na memória de um computador: Posição N Área Livre Rotinas para comando dos periféricos de E/S (B.I.O.S.) Posição 0 Sistema Operacional Figura 3 : Exemplo de alocação de programas na memória. Após a 1ª execução de um programa residente este fica instalado na memória e temos: Posição N Área Livre Programa Residente Rotinas para comando dos periféricos de E/S (B.I.O.S.) Posição 0 Sistema Operacional Figura 4: Exemplo de alocação de memória com programa residente. O software pode ser classificado hierarquicamente, em software básico (também chamado software de sistema) e software aplicativo, como ilustrado na figura 5. Por software aplicativo designam-se os programas orientados ao usuário final tais como: processadores de texto, bancos de dados, planilhas, etc. Para ser criado e executar um programa aplicativo requer outros programas que fazem sua conexão com o hardware do computador, classificados coletivamente como software básico. Os sistemas operacionais são exemplos de software básico. Ambas as classes são descritas a seguir. 101

Figura 5: Hierarquia de hardware e software em um computador. Software de Básico Correspondem aos programas que geram programas executáveis, ou que se comunicam diretamente com o hardware, executando funções de controle deste, permitindo seu uso pelos programas aplicativos. Os tipos básicos são: Sistema Operacional Programa essencial a qualquer computador, executando funções básicas como: leitura do teclado, escrita no vídeo, acesso ao disco, etc. Em muitos computadores os sistemas operacionais permitem que múltiplos usuários e/ou múltiplas aplicações estejam em execução ao mesmo tempo (via multiprogramação ou multiprocessamento). De acordo com suas características um sistema operacional pode ser: Multi-Usuário: permite que dois ou mais usuários executem programas ao mesmo tempo. Multi-Processado: controla a execução de programas por mais de uma CPU. Multi-Tarefa: Admite que mais de um programa execute simultaneamente. Multi-Fluxo: Permite que diferentes partes de um mesmo programa executem simultaneamente. Reativo: responde a eventos externos em tempo real. Figura 6: Ações de um sistema operacional 102

Um usuário interage como o sistema operacional através de comandos como "COPY" ou "DIR", no caso do sistema DOS, ou através do disparo de ícones via mouse no caso de sistemas dotados de interfaces gráficas. Utilitários Programas que executam tarefas envolvendo a gerência dos recursos em um computador, sendo normalmente parte ou atuando conjugados ao sistema operacional. Exemplos de utilitários são os programas de controle do acesso ao disco, vídeo, etc Tradutores A CPU dos computadores atuais só entende e tem capacidade de executar instruções em uma linguagem de nível muito baixo - Linguagem de Máquina ou Linguagem "da" Máquina, uma vez que é diferente para cada CPU. Por outro lado, os usuários utilizam para se comunicar uma linguagem com um nível muitíssimo elevado - Linguagem Natural (português, inglês, etc). Figura 7: Hierarquia das linguagens em um computador. Como a distância entre estas duas linguagens é muito grande, foram criadas várias linguagens intermediárias (ainda distantes da Linguagem Natural) com capacidade de traduzir um conjunto de instruções de nível superior ao nível da máquina. Pode-se então identificar vários níveis de tradutores, também chamados linguagens. Todos os computadores, desde os pequenos micros até os supercomputadores, executam programas através de instruções em Linguagem de Máquina (LM). Estas instruções são comandos 103

que realizam operações extremamente simples, como "pegue um byte da memória e coloque-o num registrador" (registrador é um local da CPU para armazenar temporariamente os dados). Esses comandos são chamados conjunto ou set de instruções - instruction set - do processador e está permanentemente gravado no processador desde a sua fabricação. Cada instrução corresponde a uma ação que o processador tomará. Um programa de computador consiste de um arranjo dessas ações elementares com um dado objetivo. Cada arranjo corresponderá a uma ação global diferente. Assim, conforme for o objetivo de um programa, ele terá seu arranjo de instruções de máquina para fazer aquilo e somente aquilo. Cada instrução de LM possui uma representação binária e é através desta representação que o processador entende o que deve ser feito. As instruções do programa são armazenadas na memória do computador em grupos de bits. Por exemplo: 10111001 00011101 10111010. Para que os programadores não necessitassem lembrar cada uma das seqüências possíveis (e os significados em termos do que cada uma executa), criou-se um sistema de codificação para representar as instruções em LM. Este conjunto de códigos é chamada Linguagem Montadora ("Assembly Language"). Um comando para adicionar um número que está na posição X da memória a um registrador R1 se parece com ADD R1,X. Os programas que convertem (traduzem) esta notação no código equivalente em LM são chamados montadores ou mais comumente Assemblers. Linguagens Assembly são chamadas de "baixo nível" porque estão muito próximas da Linguagem de Máquina; cada comando em Linguagem Montadora é traduzido diretamente para o comando em LM correspondente. Cada família de computadores, cada tipo de CPU, tem uma LM diferente. Mesmo com a notação em Linguagem Montadora é difícil dizer o que o programa vai fazer, quando se lê. Seres humanos não pensam na forma de símbolos abreviados. Por que, então, não se comunicar com o computador numa Linguagem Natural? Este é um objetivo um tanto complexo, de que trata a Inteligência Artificial. Existe, entretanto um meio termo entre a Linguagem Montadora e a corrente - são as chamadas linguagens de alto nível. Atualmente existem centenas de linguagens, nos mais diversos níveis, desenvolvidas para as mais variadas aplicações. Linguagens como FORTRAN, Pascal, COBOL e BASIC são de alto nível. Elas não são exatamente linguagens correntes, mas utilizam uma simbologia menos hermética que a LM, que tenta se aproximar das linguagens naturais e nos transmitem informações que dificilmente veríamos numa programa em Linguagem Montadora. Um exemplo de programa em linguagem Pascal, é mostrado a seguir. Neste programa, é pedido ao usuário que digite um número entre 1 e 10, o qual será comparado com o número armazenado internamente pelo programa (o número 2), desconhecido do usuário. Caso haja coincidência entre os números, o programa escreve na tela a mensagem: "Você acertou. Parabéns" e em caso contrário a mensagem envia é: "Lamento. Você errou" 104

program ACERTE_NUMERO (input, output); var number, guess : integer; begin number := 2; writeln(' Escolha um numero entre 1 e 10 '); readln( guess ); if number = guess then writeln('voce acertou. Parabens!') else writeln('lamento. Voce errou.') end. Este mesmo programa escrito na linguagem montadora dos microprocessadores 80x86 da Intel para execução em DOS, assumiria uma forma bem menos inteligível, como no exemplo a seguir: ORG 100 JMP inic msg1 DB ' Escolha um numero entre 1 e 10',13,10,'$' msg2 DB ' Voce acertou. Parabens ',13,10,'$' msg3 DB ' Lamento. Voce errou ',13,10,'$' inic: MOV AH,9 LEA DX,msg1 INT 21H MOV AH,1 INT 21H LEA DX,msg2 CMP AL,2 JZ ok LEA DX,msg3 ok: MOV AH,9 INT 21H MOV AH,4CH INT 21H END Os programas anteriores são chamados de programas-fonte por estarem escritos na linguagem simbólica e precisarem ser traduzidos para a linguagem de máquina, que o computador entende, antes de serem executados. O programa ou código objeto é o resultado da tradução, quando se usa um compilador. Antes de executar as instruções do fonte, o compilador traduz todas as instruções e gera um novo programa em LM para então executá-lo. O processo de tradução pode ser realizado por dois tipos de tradutores: os compiladores e os interpretadores. Ambos têm a mesma função, mas diferem quanto ao modo de realizarem a tradução. Figura 8: Intepretação 105

Interpretada ----> opera só com programa FONTE Tradução ---> Compilada ----> a partir do FONTE gera OBJETO Interpretadores Os interpretadores são programas que lêem instruções escritas com caracteres ASCII (American Standard Code for Information Interchange) e imediatamente executam o que a instrução manda. Se for dada a instrução PRINT X, o interpretador vai procurar o valor da variável X para imprimí-lo imediatamente. Assim o interpretador passa a maior parte do tempo lendo e traduzindo textos, e se o programa executa uma mesma instrução mais de uma vez, o interpretador traduz a instrução cada vez que a encontra. As vantagens do interpretador estão relacionadas com a facilidade no desenvolvimento dos programas, mas precisam ser traduzidos toda vez que forem executados, uma vez que os interpretadores executam direto do fonte. Biblioteca de Rotinas em Linguagem de Máquina Para LIGAÇÃO ( Link-Editor ) Figura 9: Compilação de vários programas-fonte que são ligados para criar um único programa executável. 106

Compiladores Os compiladores traduzem todas as instruções diretamente para a Linguagem de Máquina, a partir do texto em ASCII do programa. Um programa compilado é executado muito mais rapidamente que o mesmo programa interpretado, seja ele pseudocompilado ou não, pois as instruções já estão todas em Linguagem de Máquina. Dependendo da linguagem de alto nível utilizada, a compilação se dará em etapas. Por exemplo, se o programa utiliza determinadas funções matemáticas, que são subrotinas pertencentes à biblioteca da Linguagem, há a necessidade de se juntar essas funções previamente compiladas, ao programa também compilado. Isto se faz através da Ligação ou "link", como visto na figura 10. Desta forma é gerado o programa em Linguagem de Máquina pronto para ser executado Os compiladores permitem, após a tradução, armazenar o objeto que é, via de regra, muito mais rápido que o fonte, pois já está traduzido e de forma melhor. A grande desvantagem do objeto é de não ser possível modificá-lo. Para tal é necessário retomar o fonte, fazer as alterações e recompilá-lo. Sumário As características principais da interpretação e da compilação são: Interpretação: acarreta mais tempo de execução pois interpreta cada comando ao executá-lo, mas evita ter que, a cada alteração do fonte, traduzir tudo de novo. Ideal para a fase de desenvolvimento do programa. Compilação: Lê, analisa e traduz todo o programa fonte, criando o programa objeto, que corresponde às instruções em linguagem de máquina necessárias para atingir o objetivo do programa. É mais rápido na execução que o modo interpretado. Ideal, portanto, para quando o programa estiver na sua forma definitiva. Como um mesmo programa pode ser executado em tantas máquinas diferentes? Precisamos entender alguns conceitos para conseguirmos responder a essa pergunta. O primeiro passo é esclarecer como uma tarefa qualquer que queiramos automatizar - por exemplo, colocar um conjunto de nomes em ordem alfabética - é convertida para uma "linguagem" que um microcomputador é capaz de "compreender". Curiosamente, a primeira providência é análoga àquela que tomamos no nosso dia-a-dia quando confiamos uma tarefa a uma pessoa que não é capaz de executá-la sem orientação: fornecemos orientação (escrita ou verbal) por meio de um "roteiro" que, seguido corretamente, resultará na execução da tarefa proposta. Com os computadores, no lugar de um "roteiro" em linguagem cotidiana, utilizamos instruções, escritas numa linguagem de programação. Feito o programa, o desenvolvedor não precisa se preocupar com o tipo de computador em que ele será rodado, já que softwares disponíveis comercialmente - os tradutores - se encarregam de "adaptar" o código original (o programa-fonte) às características do computador. 107

Basicamente, os programas tradutores conhecidos como compiladores ou interpretadores - executam duas operações. Uma é muito semelhante à análise sintática que aprendemos nas aulas de português no primeiro grau: os "vocábulos" que compõem cada linha do programa (por exemplo: IF FOR, END, o número 3, o sinal +) são lidos e a função de cada um deles é identificada, como fazíamos na análise sintática, distinguindo sujeito, verbo, adjetivo etc. A outra operação consiste em converter o resultado final da leitura e análise do programa-fonte numa seqüência de bits (zeros e uns) - algo que a máquina consegue entender. Os programas tradutores são específicos para uma determinada linguagem e também para uma determinada "família" de computadores. No caso de microcomputadores, as famílias são definidas pelos microprocessadores utilizados. Assim, os membros da família do PC utilizam microprocessadores Intel de diversas gerações - desde o 8088 que equipou o IBM PC original até o Pentium III -, ao passo que a família do Macintosh utiliza microprocessadores Motorola. Cada microprocessador possui um conjunto de instruções básicas armazenadas como seqüências de bits, de forma permanente, numa ROM (memória somente de leitura) localizada dentro do próprio microprocessador. Quando qualquer uma dessas instruções é acionada, produz sinais elétricos específicos que comandam componentes internos ou externos ao microprocessador. Em última análise, a execução de um programa envolve o acionamento de milhões dessas instruções básicas. Com a crescente sofisticação na utilização de microcomputadores, o número delas vem aumentando continuamente, como mostra a tabela abaixo. Para assegurar compatibilidade entre as diversas gerações de microprocessadores, cada novo conjunto de instruções inclui todas as constantes no conjunto anterior. Microprocessador Instruções Básicas 8088 115 286 142 386 200 486 206 Pentium 216 Pentium II 273 A tecnologia MMX (Multi Media extension) consiste de 57 novas instruções acrescidas ao conjunto padrão do Pentium. Posteriormente, o Pentium II também incorporou de forma definitiva este novo set de instruções multi-mídia. Elas foram idealizadas a partir de análises detalhadas de um grande número de aplicações na área de multimídia e comunicações. Os estudos revelaram certas características comuns: a manipulação de dados de pequena "largura" (tipicamente 8 bits para imagens e 16 bits para sons), a ocorrência de seqüências curtas de operações repetidas muitas vezes (loops), a presença freqüente de multiplicações e acumulação de dados, a conveniência do processamento paralelo (muitos dados ao mesmo tempo) e a necessidade de executar algoritmos pesados do ponto de vista computacional. 108

Para agilizar tais operações, as novas instruções são capazes de lidar com dados agrupados em "pacotes" de 64 bits. Para ilustrar o impacto dessas novas instruções, considere a manipulação de dados grátìcos, como os pixels, de que é composta a imagern na tela do monitor. Em geral, cada pixel é representado por 8 bits (um byte). Como as instruções MMX são capazes de lidar com "pacotes" de 8 bytes, os bits correspondentes a 8 pixels podem ser armazenados simultaneamente e, portanto, rnanipulados em paralelo, também simultaneamente, por uma única instrução MMX. Um outro exemplo é urna instrução chamada PMADDWD (Packed Multiply-ADD WorD), que multiplica e acumula sirnultaneamente oito blocos de 16 bits. Essa técnica é conhecida como SIMD (Single Instruction, Multiple Data - ou seja, Instrução Única, Dados Múltiplos) e é a grande responsável pelo aumento de desempenho nos aplicativos para os quais a tecnologia MMX foi desenvolvida. Atualmente todos os os desenvolvedores de software multi-mídia e softwares de comunicação usam as instruções MMX nos seus aplicativos. Todos os grandes fabricantes de microprocessadores ( AMD, Cyrix, Intel) incorporaram tais instruções nos seus chips. Software Aplicativo São programas que atendem ao usuário final, como processadores de texto, planilhas, sistemas de gerência de bases de dados, programas gráficos, etc, necessitando do sistema operacional (software básico) para sua execução. Além destes exemplos, temos os sistemas desenvolvidos para atender as necessidades empresariais em geral. Estes sistemas podem ser pacotes configuráveis para instalação em diversas empresas ou podem ser customizados, ou seja, desenvolvidos especificamente para atender uma determinada empresa. A seguir são descritas as principais classes de aplicativos. Bases de Dados Uma base de dados é uma coleção de informação organizada de forma que possa ser manuseada de forma seletiva, por um programa de computador.. As bases são organizadas tradicionalmente em campos, registros e arquivos, sendo: Campo (field): unidade básica de informação, como por exemplo o nome de um aluno na lista de chamada de uma disciplina. Registro (record): conjunto de campos relacionados entre si segundo uma regra específica, como por exemplo o nome e número de matrícula de um aluno na lista de chamada, os dados de um funcionário (nome, matrícula, CPF, endereço, salário). Arquivo: conjunto de "records" relacionados entre si, como por exemplo a lista de chamada de uma disciplina, o cadastro de funcionários da empresa, etc. Um arquivo pode ser do tipo programa, contendo comandos para execução ou comandos em linguagem de programação, de forma que cada linha de comando fica armazenada num registro. As bases de dados podem ser organizadas também na forma de hipertextos, onde itens de informação podem ser figuras, texto, vídeos, etc, os quais podem ser associados livremente com quaisquer outros itens. 109

Programas usados para manipular uma base de dados, permitindo operações de consulta, inserção, supressão, e organização dos itens. Base de Dados é um conjunto de arquivos organizados de acordo com uma lógica que permita o acesso por intermédio de um gerenciador específico. Ex.: Base de Dados de Clientes, de Vendas, Acadêmico, Contábil, etc. Banco de Dados é o gerenciador citado na definição anterior. Ex.: Oracle, Sybase, SQL- Server, DB-2 IBM, etc. Processadores de Texto Programas que permitem criar, visualizar, imprimir e modificar documentos. As funções básicas de edição de documento, listadas na Tabela 2, caracterizam os programas classificados como "Editores de Texto". Tabela 2: Funções básicas de um Editor de Texto. Função Inserção de texto Supressão de texto Recorte & Colagem Cópia Dimensionamento de Página Busca & Substituição Ajuste de linha Impressão Descrição Função primária de edição. Permite inserir texto em qualquer posição do documento. Apagamento de caracteres, palavras, linhas, parágrafos, ou mesmo do documento inteiro. Remoção de uma porção de texto para inserção (opcional) em outro ponto do documento. Duplicação de uma porção de texto. Ajuste do tamanho da página e das margens laterais, superior e inferior. Pesquisa no texto por um conjunto de caracteres, com sua eventual substituição por outro conjunto especificado. Movimento automático para a próxima linha quando a linha atual for completamente preenchida. Impressão do documento. Os programas que permitem a criação de documentos em formato profissional, chamados "processadores de texto" possuem, além das características de edição, aquelas listadas na Tabela 3. Ressalta-se que várias destas características são também típicas dos programas para editoração eletrônica de documentos, descritos adiante, os quais muitas vezes são usados para processamento de texto. 110

Tabela 3: Funções Típicas de um Processador de Texto. Função Gerência de Arquivos Configuração de Fontes Notas & Referências Cruzadas Gráficos Cabeçalhos & Rodapés Leiaute Macros Composição Verificação Ortográfica Indexação Dicionário de Sinônimos Múltiplas Janelas WYSIWYG Descrição Capacidade de criação, busca, modificação, e acesso para escrita e leitura de arquivos em disco. Especificação do tipo, dimensão, estilo dos caracteres usados no documento. Criação e numeração automática de notas de rodapé e de referências cruzadas. Inserção no documento de ilustrações ou gráficos criados por outras aplicações. Alguns processadores têm capacidade (limitada) para geração de figuras e diagramas. Criação de cabeçalhos e rodapés para as páginas do documento, mantendo controle de atributos como número da página, seções presentes em cada página, etc. Ajuste de diferentes margens em um mesmo documento, paragrafação, formatação de títulos, etc. A maioria dos processadores permite a livre configuração do leiaute do documento, mas possui padrões pré-definidos para uso imediato. Capacidade de atribuir um nome ou uma tecla a um conjunto de comandos, de modo que estes possam ser executados sempre que o referido nome ou tecla for acionado. Capacidade de incluir texto de um arquivo automaticamente em outros arquivos. Função útil para gerar cartas-padrão para múltiplos destinatários. Correção da ortografia das palavras do texto, baseando-se em dicionário próprio do processador e em palavras definidas pelo usuário. Geração de sumários, índices, e índices remissivos. Listas de sinônimos Capacidade de edição simultânea de vários documentos, um em cada janela. Sigla inglesa para indicar capacidade de edição de documentos com visualização simultânea do formato final de impressão. 111

Geradores de Planilhas Planilhas são arquivos tabulares de dados onde cada valor está associado a outros valores segundo regras definidas pelo usuário, dentre um conjunto de opções possíveis, de forma que a alteração de um dado valor causa a mudança de seus associados. Cada local de entrada de dados da tabela é chamado de célula e a relação entre células é chamada de fórmula. Figura 10: diagrama de barras criado por um gerador de planilhas. Programas geradores de planilhas permitem a criação e manipulação de planilhas assim como sua representação em formatos de saída gráficos como diagramas de barras, linhas, diagramas tridimensionais, etc., como exemplificado na Figura 10. Uma capacidade presente em vários geradores é a possibilidade de definir como planilhas, as células de outra planilha.. Programas Gráficos Esta categoria engloba os aplicativos que permitem a visualização e manipulação de figuras, como sua função principal, dentre os quais destacam-se os listados na Tabela 4. 112

Tabela 4: Tipos de Aplicações Gráficas Tipo de Programa Desenho & Pintura Ilustração Apresentação Animação CAD Editoração Eletrônica Aplicação São os programas gráficos mais simples. Possuem a capacidade para desenho de figuras bi-dimensionais e a criação, edição e visualização de arquivos armazenados no formato de mapas de bits. São versões mais avançadas dos programas de desenho, capazes de criar desenhos com curvas salvando e manipulando arquivos em formatos vetoriais. Permitem a criação de slides contendo texto, gráficos, diagramas, etc, importados de outras aplicações. Programas capazes de encadear e exibir uma seqüência de imagens, como quadros de um filme. Programas para projeto mecânico, eletroeletrônico, e de arquitetura, possuindo capacidades de escalonamento e rotação de objetos. Programas com capacidade de processamento de texto, e recursos avançados para leiaute de página, notadamente na disposição de figuras, permitindo a criação de panfletos, calendários, livros, etc. Os arquivos com figuras e imagens criados e manipulados pelos programas gráficos adotam em geral dois tipos de padrão: Mapa de Bits São os formatos onde a figura é representada como uma matriz bi-dimensional de pontos, onde cada ponto, representado por um ou mais bits, está associado a um pixel da tela ou a um conjunto de pontos em uma impressora, por exemplo. Os formatos mais comuns estão listados na Tabela 5. Tabela 5: formatos mais usados para arquivos em mapa de bits. Formato BMP GIF TIFF JPG Características Padrão de mapa de bits do Windows Padrão de mapa de bits criado pela Compuserve. Permite a criação de imagens com fundo transparente para a WEB. Permite a alteração da resolução, tamanho e número de cores usadas na imagem. Formato definido por um consórcio de empresa, permitindo a compressão da imagem, havendo entretanto perda de resolução ou no número de cores usadas. 113

Gráficos Vetoriais Formatos onde fórmulas geométricas são usadas para representar as partes de uma imagem. Têm diversas vantagens sobre os formatos de mapa de bits, como a facilidade para reescalonar um objeto, adaptando-o ao meio de visualização usado (monitor, impressora, etc). Os principais formatos vetoriais são descritos na Tabela 6. Tabela 6: : formatos mais usados para arquivos gráficos vetoriais. Formato CGM DXF EPS HPGL WMF Descrição Formato desenvolvido por um consórcio de empresas. Formato criado pela AutoDesk, hoje um padrão para arquivos de CAD formato para representação de imagens no para impressoras post-script. Um dos primeiros formatos para gráficos vetorizados, é ainda muito usado por aplicações de CAD. Padrão para troca de arquivos de imagens vetoriais no ambiente windows. Pode conter também imagens em mapas de bits. 114

A CPU e a execução dos softwares Arquitetura básica de uma CPU baseada na máquina de von Neumann A CPU (Central Processing Unit - Unidade Central de Processamento) é formada por componentes que manipulam valores binários e desempenham todas as operações previstas. Também chamados de registradores ou registros que são portanto, locais ou posições de memória privilegiados, pois estão no mesmo circuito integrado da CPU. Uma arquitetura simples contém os seguintes componentes ou registradores: Contador de Programa (Program Counter - PC) Memória Principal Acumulador (AC) ou diversos registradores de dados A, B, etc. Unidade Aritmética e Lógica (Arithmetic and Logic Unit - ALU) Registradores de Índices X, Y Registradores de Estado ou Status Flags - F Decodificador de Instrução Circuitos acionadores da execução da instrução decodificada Pilha (Stack) Contador de Programa (PC) - É o registrador que contém o valor binário do endereço numérico ou posição da instrução de máquina que está sendo executada. Após a execução da instrução o PC muda automaticamente de valor e indica o endereço da próxima instrução a ser executada. Acumulador (AC) - É um registrador especial da CPU. Serve para armazenar o dado que foi trazido da memória principal para receber o tratamento previsto pela instrução: deslocamento (shift) ou rotação (rotate) de bits para a direita ou esquerda; operações aritméticas e lógicas: contém um dos operandos e armazena o resultado da operação. escrita ou leitura: guarda um valor que foi lido ou será escrito; Unidade Aritmética e Lógica (ALU) - É o componente que executa, em conjunto com o AC ou outros registradores, as operações aritméticas (adição e subtração binária) e operações lógicas (verificação de sinais e composição de bits através de operações AND, OR, NOT, etc.). Registradores de Dados (A, B, etc.) - São registradores menos utilizados que o AC e servem, em geral, para efetuar operações que auxiliam a manipulação de dados pelo AC. Por exemplo, esses registradores podem guardar temporariamente os dados do acumulador ou memória, ou podem ser incrementados ou decrementados, servindo como contador, etc. Não são, em geral, utilizados para operações aritméticas ou lógicas, deslocamentos, etc. Normalmente, o registrador A é o acumulador (AC). 115

Registradores de Índices X, Y - São registradores que contêm uma das partes (denominada índice) que entram na formação (indexação) do endereço final ou efetivo da memória a ser usado como operando de uma instrução. Decodificador - É um circuito que recebe os bits do código de operação da instrução de máquina, identifica o tipo de operação a ser executada e comando a execução dessa instrução. Pilha ( Stack ) - É formada por porção da memória principal, e cujo tamanho varia de acordo com a utilização. Seu endereço está acessível através do registrador chamado Ponteiro da Pilha (Stack Pointer - SP). Pode ser usada como registrador, para guardar dado, ou, mais comumente, guardar endereço de retorno de subrotina ou salvar conteúdo de registradores numa mudança de contexto, etc. Ponteiro da Pilha (SP) - É um registrador da CPU que guarda o endereço ou posição corrente disponível na pilha definida na memória. Pode ser decrementado ou incrementado através de instruções apropriadas. Carga do Programa para execução O programa precisa ser carregado da memória secundária para a memória RAM para ser executado. Essa carga (LOAD) significa copiar o programa inteiro, instrução por instrução numa determinada área contínua da memória RAM disponível. Entretanto, nem sempre é possível carregar todo o programa, seja porque o programa é maior que a RAM disponível, seja porque o programa foi projetado para ser carregado em partes. Neste último caso, o programa é chamado de OVERLAY. Quando o programa não cabe na RAM, o Sistema Operacional tem que ser capaz de segmentar o programa e fazer um esquema de paginação na memória RAM, para executá-lo por partes, cuidando automaticamente da carga de segmentos necessários. Programas Overlay Quando o espaço de memória não é suficiente para carregar um programa inteiro, carrega-se a unidade principal em uma parte de memória disponível. Na parte restante da memória disponível, se carrega a parte do programa que é necessária no momento da execução, ficando as demais em memória de massa (geralmente disco). Se uma parte armazenada em disco é requisitada, ela "troca" de lugar com a que está na memória, indo a da memória, supostamente já executada, para o disco, e a do disco, necessária para o prosseguimento do programa, para a memória principal para ser executada. 116