Disciplina: Arquitetura de Computadores Profa. Carla Katarina de Monteiro Marques UERN Programa do curso Modelo de um Sistema de Computação: Conceitos Básicos de Arquitetura: Unidade de Controle e Unidade de Processamento, Organização de Memória, Memória Auxiliar, Entrada e Saída, Barramento Modo de Endereçamento, Tipo de Dados, Representação de Instruções, Conjunto de Instruções e Chamada de Subrotina, Tratamento de Interrupções, Exceções. Linguagem de máquina e linguagem assembly Execução de Programas; Arquiteturas RISC. Computação paralela. 2 Metodologia, Técnicas de Ensino Aulas expositivas. Atividades individuais e em grupo. 3 Avaliações 1ª, 2a e 3ª aval.: avaliação teórica 4 Bibliografia Tanenbaum, A., Organização Estruturada de Computadores, 4a Edição, 1999. Monteiro, Introdução à Organização de Computadores, 4a Edição, 1996. capítulos 1, 2 e 5. capítulos 1, 2, 5, 6, 7, 8 e 9. Stallings, W., Arquitetura e Organização de Computadores, 8a Edição, Prentice Hall, 2010. (Leitura complementar) Notas de Aula 5 Arquitetura de Computadores Estudo sobre como projetar as partes de um sistema de computador que são visíveis para os programadores. Atributos que têm impacto direto sobre a execução lógica de um programa. Arquitetura de Computadores Exemplos de atributos: Conjunto de instruções; Número de bits usados para representar os vários tipos de dados (caracteres 2B ou 4B); Mecanismos de E/S; Técnicas de endereçamento à memória. Organização de Computadores Refere-se às unidades operacionais e suas interconexões que implementam as especificações da sua arquitetura. Inclui detalhes de hardware transparentes ao programador. Deve ser projetada para implementar uma especificação particular de arquitetura Organização de Computadores Exemplos: Sinais de controle; Interfaces entre o computador e os periféricos; Tecnologia de memória utilizada. Organização e Arquitetura Exemplos Práticos: Projeto de arquitetura: Decisão de definir se um computador deve ou não ter uma instrução de multiplicação; Organização Decisão de definir se essa instrução será implementada por uma unidade especial de multiplicação ou por um mecanismo que utiliza repetidamente sua unidade de soma. Organização e Arquitetura Na prática, arquitetura e organização significam a mesma coisa. Projeto de computadores atuais Base no modelo de John Von Neumann; Formado pelos componentes: memória, CPU, E/S, barramentos; CPU dividida em ULA e unidade de controle. Projeto de computadores atuais John Von Neumann - Conceitos Básicos: Dados/Instruções são armazenados em uma única memória de leitura/escrita; Conteúdo da memória é endereçado pela posição; Execução de instruções de modo seqüencial (salvo exceções). Família de Computadores Todos os modelos possuem a mesma arquitetura, mas com diferença de organização; Assim, os modelos têm diferentes preços e características de desempenho distintos A arquitetura pode sobreviver por muito tempo, mas a organização muda ao longo dos anos! Família de Computadores Entretanto, a alteração da organização geralmente afeta a arquitetura. Mudanças na tecnologia influenciam a organização e a arquitetura! Computador Digital Máquina que pode resolver problemas executando uma série de instruções que lhe são fornecidas. Executa Programas – conjunto de instruções que descrevem a maneira de realizar determinada tarefa. Circuitos de um computador (Hardware) Reconhecem e executam um conjunto limitado e simples de instruções (linguagem de máquina- binária). Exemplo: soma, comparação, transferência de dados de uma parte da memória para outra parte. Instruções da linguagem de máquina (decidida pelos projetistas de computadores) devem: ser simples ser compatíveis com o uso da máquina ser compatíveis com o desempenho requerido ter custo e complexidade da eletrônica reduzidos (aplicação) A linguagem de máquina (binária-baixo nível) está muito distante de uma linguagem natural (humana-alto nível) Problema: Complexidade do que as pessoas precisam fazer versus simplicidade do conjunto de instruções do computador Exemplo: o usuário quer calcular a trajetória de um foguete até a lua. Como o usuário pode fazer isso em linguagem de máquina? Trabalho difícil e tedioso para os humanos Solução: Criar uma hierarquia de abstrações de níveis mais altos baseados nos níveis mais baixos. Criar uma organização estruturada de computadores para facilitar a comunicação homem-máquina Sistema hierárquico Constituído de um conjunto de subsistemas inter-relacionados, cada qual, possuindo também uma estrutura hierárquica, contendo, em seu nível mais baixo, subsistemas elementares. O comportamento de cada nível depende apenas de uma caracterização abstrata e simplificada do sistema de nível imediatamente inferior. Considerações do projetista Estrutura – modo como os componentes estão inter-relacionados. Função – a operação de cada componente individual como parte da estrutura. Computador – Estrutura interna Unidade Central de Processamento (CPU) Memória Principal Entrada/Saída Sistema de interconexão Computador - Funções básicas Processamento de dados Armazenamento de dados Transferência de dados Controle Como solucionar: As pessoas devem fazer X, mas os computadores só podem fazer Y Linguagens, Níveis e Máquinas Virtuais Supor a existência das linguagens: L1: linguagem natural, do usuário (alto nível e complexa) L0: linguagem da máquina (baixo nível e simples) Como compatibilizar L1 com L0? Existem 2 soluções (tradução e interpretação) usar um tradutor usar um interpretador Pode ser utilizada uma metodologia híbrida: tradutor + interpretador Tradutor: Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0 . Processador executa programa em L0. Todo programa em L0 é carregado em memória e é executado. Programa pode ser traduzido uma única vez e executado várias vezes. Alguns autores usam o termo tradução em sentido genérico, englobando os conceitos de compilação e interpretação. Aqui, ele está sendo empregado como sinônimo de compilação. Interpretador: Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0 . Processador executa uma instrução de L1 (transformada para L0) antes de executar próxima instrução. Cada instrução de L1, transformada para L0, é carregada na memória e executada. Não é criado um programa em L0. Programa deve ser novamente interpretado para ser executado. Outra solução: É possível não pensar em tradução ou interpretação, imaginando-se a existência de um computador hipotético, ou de uma máquina virtual M1, cuja linguagem de máquina seja L1 (e uma máquina real M0 com linguagem L0) Os programas poderiam ser escritos em L1, para a máquina M1 e: 1. 2. serem executados diretamente em M1 se esta máquina fosse de custo de construção baixo ou serem traduzidos ou interpretados para L0 e executados em M0. Outra solução: Na prática se implementa a solução 2. As pessoas escrevem programas para máquinas virtuais como se elas realmente existissem. Muitos níveis de máquinas virtuais podem ser implementados. Cada linguagem usa a sua linguagem antecessora como base, de modo que um computador que use essa técnica pode ser visto como um conjunto de camadas ou níveis. Máquina de vários níveis Máquinas Multiníveis Modernas Computador com 6 níveis Método por meio do qual cada nível que é suportado é indicado abaixo do nível (junto com o nome do programa que o suporta). Obs.: Existe um outro nível situado abaixo do Nível 0 – nível dos dispositivos. Nesse nível o projetista trabalha com os elementos básicos do projeto (transistores). Nível 0: Nível da Lógica Digital Nível mais baixo da estrutura. Objetos de interesse são conhecidos como portas lógicas. Cada porta lógica possui 1 ou mais entradas digitais (aceitam 0 ou 1) e calculam funções lógicas simples sobre essas entradas. Exemplos: AND, OR, XOR,... Portas lógicas são combinadas para formar memórias de um bit registradores o processador - principal dispositivo do computador. Nível 1: Nível da Microarquitetura Uma memória local (8 a 32 registradores) e a UAL (Unidade Aritmética Lógica) que realiza operações aritméticas muito simples. Registradores - conectados a UAL formando o caminho dos dados. Operações são controladas por um microprograma ou diretamente por hardware. Microprograma - interpretador para as instruções do Nível 2. Busca, decodifica e executa as instruções, uma a uma, usando o caminho de dados para a realização desta tarefa. Nível 2: Nível da Arquitetura do Conjunto de Instruções Nível ISA - Instruction Set Architecture. Definida pelo fabricante e dependente da arquitetura da máquina. Fabricantes disponibilizam “Manual de Referência da Linguagem de Máquina” ou “Princípios de operação do Computador Modelo XYZW” (ou algo similar). Manuais descrevem como as instruções são executadas interpretativamente pelo microprograma ou como são executadas diretamente pelo hardware. Essas informações são necessárias para os desenvolvedores de sistemas operacionais. Nível 3: Nível do Sistema Operacional Instruções da linguagem deste nível também podem conter instruções do nível ISA. Suporta uma organização diferente de memória. Suporta capacidade de rodar 2 ou mais programas simultaneamente. Suporta sistemas de comandos ou de janelas (windows). Programadores deste nível, e também dos níveis mais baixos, são conhecidos como programadores de sistema. Os programadores dos níveis mais altos que este são chamados programadores de aplicação. Nível 4: Nível da linguagem do montador ou de montagem (Assembly language) Linguagem de montagem: forma simbólica de representação das linguagens do nível mais baixo. Programas nessa linguagem são, inicialmente, traduzidos para as linguagens dos níveis 1, 2 e 3 e depois interpretados pela máquina virtual apropriada ou pela própria máquina real. Programa que realiza a tradução - montador. Nível 5: Nível das linguagens orientadas para solução dos problemas Conhecidas como linguagens de alto nível. Exemplos: Basic, C, Pascal, Java, LISP, .... Programas são geralmente traduzidos para os níveis 3 e 4 por compiladores. Alguns são interpretados: Exemplos: programas em Java, MatLab, ... Observações finais importantes: Computadores são projetados como uma série de níveis, cada um deles construído em cima de seus precursores. Cada nível representa uma abstração distinta, com diferentes objetos e operações. A abstração permite ignorar, "abstrair", temporariamente detalhes irrelevantes, de níveis mais baixos, reduzindo uma questão complexa a algo muito mais fácil de ser entendido. Observações finais importantes: Conjunto de tipos de dados, operações e características de cada um dos níveis - arquitetura do nível. Partes da arquitetura - as características que um programador do nível deve enxergar, por exemplo, a disponibilidade de memória. Evolução das máquinas de vários níveis Primeiros computadores – fronteira entre o hardware e o software era muito clara. – muito difícil separar o hardware do software. Atualmente Evolução das máquinas de vários níveis Hardware e software são equivalentes logicamente. Qualquer operação realizada por software pode ser realizada diretamente por hardware. Qualquer instrução executada por hardware pode ser simulada em software. “O hardware é simplesmente o software petrificado” Evolução das máquinas de vários níveis Fatores que influenciam na decisão de se colocar funções em hardware ou software: Custo Velocidade Confiabilidade Freqüência esperada de mudanças A decisão muda com a evolução da tecnologia e da própria utilização do computador. A invenção da Microprogramação Década de 40 - Primeiros computadores: 2 níveis - Nível ISA + Nível da Lógica Digital Década de 50 de construção de um computador de 3 níveis – simplificação de hardware Acoplar à máquina um interpretador (microprograma) para executar programas do nível ISA (por interpretação). Conseqüências: Idéia número de circuitos (hardware + simples) confiabilidade da máquina (circuitos à válvula) Década de 1960 - surgiram muitas máquinas com a filosofia de 3 níveis. Década de 1970 - uso do nível ISA interpretado por microprograma, ao invés de executado diretamente por circuitos eletrônicos, tornou-se uma prática comum. Invenção do Sistema Operacional Primórdios: Computadores eram operados e gerenciados pelo próprio programador . Computadores executavam apenas um programa por vez (disponível para um único usuário). Mecanismo de entrada de dados Exemplo de execução de um programa em FORTRAN 1. 2. 3. 4. 5. Colocar cartões do compilador FORTRAN na leitora + mandar executar (botão de início de operação da leitora); Colocar cartões do programa na leitora (1a vez) + executar; Colocar cartões do programa na leitora (2a vez) + executar (compilador de 2 passos); Se programa não tem erro, o compilador perfurava cartões com código de máquina. Senão, corrige programa e volta ao passo 1; Colocar programa em linguagem de máquina + cartões da biblioteca Fortran e executar; Programa é executado. Se há erro de lógica, corrige e volta ao passo 1. Invenção do Sistema Operacional Por volta de 1960, foi criado o Sistema Operacional (SO). Objetivo: facilitar a operação do computador. O Sistema operacional era mantido na memória do computador durante todo o tempo de utilização. Cartões de controle comandavam instruções do SO. Exemplo de um Job para o Sistema Operacional FMS (FORTRAN Monitor System) Cartões de controle: *JOB - identifica o usuário. Programa FORTRAN *FORTRAN - carrega compilador. *DATA - executa o programa com os dados que seguem. Programa é executado em sistema BATCH. Cartões de dados Invenção do Sistema Operacional Unidade de Fita Entrada Sistema da Fita de Fitas Saída de Fita Leitora de Impressora cartões 1401 7094 1401 Um sistema “batch” antigo. ( a ) Programadores levam cartões ao 1401. ( b ) 1401 lê batch de jobs em fita. ( c ) A operadora acopla fita de entrada no 7094. ( d) O 7094 faz o processamento. ( e ) A operadora acopla fita de saída no 1401. ( f ) O 1401 imprime a saída. Invenção do Sistema Operacional Evolução do SO - incorpora, além de algumas instruções do ISA, tratamento de Entrada/Saída. As instruções do SO eram conhecidas por macros do SO ou chamadas ao supervisor (atualmente: chamadas ao sistema). 1960 (MIT) - SO com compartilhamento de vários usuários (terminais ligados ao computador por linhas telefônicas) - Sistemas de Tempo Compartilhado. Migração de funcionalidades para o Microcódigo 1970 - explosão nos conjuntos de instruções das máquinas, expandindo-se o microprograma – Adicionar “hardware” (novas instruções de máquina) por meio de programação. Exemplos de novas funcionalidades, instruções para: multiplicação e divisão de inteiros aritmética em ponto flutuante chamada e retorno de procedimentos acelerar a execução de loops manipulação de strings (cadeias) de caracteres Migração de funcionalidades para o Microcódigo Facilidade da microprogramação incorporação de novas funcionalidades para: acelerar o processamento de programas envolvendo cálculo matricial (indexação e endereçamento indireto); permitir que os programas pudessem ser deslocados de posição de memória, após o início da execução (realocação); tratar interrupções que enviam um sinal para o processador logo que uma operação de E/S termine; suspender a execução de um programa e iniciar a execução de outro (troca de contexto entre processos). A eliminação da Microprogramação Décadas de 1960 a 1970 Microprogramas cresceram muito. Conseqüência: tornaram-se lentos. Retorna a idéia: instruções e funcionalidades executadas por hardware. Conclusões: Fronteira entre o hardware e o software pode ser arbitrária e está sempre mudando. O que hoje está implementado em software poderá em breve estar implementado em hardware, e viceversa - O software de hoje pode ser o hardware de amanhã e vice-versa. As fronteiras entre os demais níveis não estão bem definidas e podem também ser alteradas. Conclusões: Do ponto de vista do programador, não tem muita importância a maneira como uma instrução é realmente implementada. Programador de um nível, em geral, não deve se preocupar com implementações de níveis inferiores. Computador É uma máquina cuja função é resolver problemas através da execução de instruções fornecidas. É constituída basicamente por um conjunto de dispositivos eletrônicos e eletromecânicos que permitem transmitir, guardar e manipular informações. Computadores digitais x computadores analógicos Processamento de dados tradução do termo inglês Data Processing. Consiste em uma série de atividades ordenadamente realizadas, com o objetivo de produzir um arranjo determinado de informações a partir de outras obtidas inicialmente. Etapas básicas de um processamento de dados Dados Processamento Resultado: informação Dado x informação Dado:. Conjunto de fatos ou valores medidos (numéricos ou não) sem significado próprio. Consiste na etapa inicial do processamento. Tipos de dados: Numéricos: inteiro, real, etc. Alfanuméricos: nomes, endereços, etc. gráficos: mapas, desenhos, etc. sonoros: música, voz, etc. Dado x informação Informação: Representa o dado devidamente “tratado”. É a etapa final do processamento. A informação é o significado que se confere aos dados, que pode ser diferente conforme o contexto de aplicação dos mesmos. Exemplo: Dado Elefante Processamento Resultado: Processando o dado elefante É um mamífero, de grande porte, e que se alimenta de vegetais. Programa Formado por um conjunto de instruções, as quais executadas passo a passo realizam uma determinada ação. Exemplo: operação aritmética; transferência de dados; etc. Algoritmo “É uma descrição de um padrão de comportamento expresso em termos de um repertório bem definido e finito de ações ‘primitivas’, as quais damos por certo que podem ser executadas”. (Guimarães/Lages) O computador necessita de instruções precisas, completas e finitas sobre cada passo a executar. Exemplo: Fazer um algoritmo que calcule a área de uma circunferência: 1. Ler o valor numérico para o raio do circulo e armazenar na memória; 2. Calcular o valor da área utilizando da fórmula indicada e também armazená-lo na memória; 3. Imprimir e/ou mostrar no vídeo os valores dos raios e áreas correspondentes; 4. Parar. Linguagem de Máquina x Linguagem de alto nível Quando o pastor rechaça o lobo, o rebanho chama o pastor de libertador mas o lobo chama-o de tirano Da-da Linguagem de Máquina ou de baixo nível A linguagem de um computador é baseado em impulsos elétricos (0 = desligado, 1 = ligado); É uma linguagem de difícil manipulação e entendimento pelo ser humano. Linguagem de alto nível Foram desenvolvidas linguagens de programação próximas do estilo de linguagem humana (Pascal, Fortran, C); Estas linguagens apresentam uma sintaxe rígida sobre a qual são construídas as descrições de cada passo de um algoritmo. Linguagens de alto nível são transformadas em linguagem de computador (linguagem de baixo nível ou de máquina) por programas interpretadores ou tradutores. Exemplos de programas: Linguagem Delphi Procedure Tform1.TesteAsm; Var I, Total: integer; Begin Total :=0; For i :=0 to 5 do Total :Total + 10; end; Linguagem Assembly Push ebp Mov ebp, esp Add esp, -$0c Mov [ebp-$04],eax Xor eax, eax Mov [ebp-$0c], eax Add dword ptr [ebp-$0c], $0a Mov [ebp-$08], $00000001 Inc dword ptr [ebp-$08] Cmp dword ptr [ebp-$08], $06 Jnz Tform1.testAsm + $15 Mov esp, ebp Pop ebp ret Linguagem de Máquina 01010101 000101111101100 100000111100010011110100 100010010100010111111100 0011001111001101 100010010100010111111100 1100011101000101111100001000000 10000011010001011111010000001010 111111110100010111111000 10000011011111011111100000000110 0111010111110011 1000101111100101 01011101 11000011 Software x Hardware Hardware Conjunto formado pelos circuitos eletrônicos e partes eletromecânicas de um computador. Ainda não há uma tradução adequada para o termo hardware. Constitui a parte física, visível do computador. Os principais componentes de hardware de um sistema computacional podem ser agrupados nas seguintes categorias: Dispositivos de entrada; CPU e memória principal; Dispositivos de armazenamento ou memória auxiliar; Dispositivos de saída; CPU Cache MP E/S Memória Auxiliar Barramentos de dados, endereços e controle Processador Também conhecido como CPU (Central Processing Unit - Unidade Central de Processamento). Nos computadores pessoais o processador é um único chip, chamado microprocessador. O Processador é considerado o componente vital de um sistema computacional. Além de executar as ações finais (operações aritméticas com os dados) controla quando e o que deve ser realizado pelos demais componentes, emitindo os sinais de controle. Memória Tem como função armazenar dados e/ou informações que são (ou serão) manipuladas por esse sistema, para que possam ser prontamente recuperadas, quando necessário. É dividida em duas categorias: A memória principal, que está conectada diretamente ao processador. A memória secundária ou de massa, responsável pelo armazenamento de um grande volume de dados. Memória Principal Utilizada para guardar dados/informações que estão sendo utilizados pela CPU em alguma fase de processamento. Essas informações são representadas eletronicamente no chip da memória e, enquanto estão na nela, o computador pode acessá-los diretamente. Tipos: Memória RAM; Memória ROM; Memória CACHE. Memória RAM Significa Random Access Memory ou Memória de Acesso Aleatório. É a memória de trabalho da CPU. São fabricadas em forma de Circuitos Integrados. A informação armazenada nessa memória é apenas temporária memória volátil Quanto mais memória RAM o computador possuir, mais ele poderá fazer ou maior será a velocidade de processamento. Memória ROM Significa Read Only Memory ou memória somente de leitura. Nela estão contidos os códigos básicos de operação do equipamento, suas rotinas de inicialização e auto-teste Forma o sistema básico de entrada e saída (BIOS) da máquina. A informação armazenada nessa memória é permanente memória não volátil. Memória CACHE É uma memória de alta velocidade (comparável à da CPU) e de capacidade menor que a MP. Está localizada, logicamente, entre a CPU e a MP para armazenar dados e instruções que deverão ser imediatamente utilizados pela CPU. Tem por finalidade acelerar o processamento do sistema CPU/MP. Esta memória passou a existir a partir das placas 386 DX de 25MHz. Memória Secundária • Também conhecida como memória auxiliar ou memória de massa. • É um tipo de memória utilizada para um armazenamento mais permanente de toda a estrutura de dados e programas do usuário. • Possui uma capacidade maior que a da MP, com tempo de acesso mais elevado. • Ex.: disquetes, disco rígido, fitas magnéticas, CD-ROM, etc. Disco rígido (Hard Disk ou Winchester) • São discos magnéticos formados por várias chapas de alumínio que giram em altíssima velocidade. • Cada chapa de alumínio tem um cabeçote de leitura que faz a leitura e a gravação de dados. • Permite um acesso rápido e o armazenamento de uma grande quantidade de Informações. • É importante lembrar que estes discos podem ser danificados por excesso de trepidação no local de instalação. CD • Os discos ópticos utilizam a tecnologia do raio-laser. • Podem ser divididos em: • CD-ROM • ROM é a sigla de Read Only Memory - Memória apenas de leitura; • Não nos permite gravar nada em seu interior, apenas consultar seus dados. • CD-WORM • WORM é a sigla de Write Once Memory - Memória de apenas uma gravação - os CDs regraváveis. • Utilizam um drive de CD diferente do de CD-ROM. • CD-R/W • Utilizam um drive de CD diferente do de CD-ROM. • Os CDs possuem grande capacidade de armazenamento (acima de 650 MB) DVD • Inicialmente era chamado Digital Video Disk. • Atualmente, Digital Versatile Disk • Por ser mais compacto que os CD´s, pode alcançar a marca dos 4.7 GB de armazenamento. • Opera a velocidades mais elevadas que os CD´s (1,4 MB/s contra 150 KB/s, para a velocidade 1x). Dispositivos de Entrada/Saída Entrada/Saída (E/S) compreende todas as maneiras como o computador se comunica com os usuários e outras máquinas ou dispositivos. Sem E/S, o computador ficaria isolado do mundo. Ele não conseguiria receber instruções e, mesmo que tivesse instruções permanentemente inseridas em sua memória, não teria como comunicar os resultados de seu trabalho. • Exemplos de dispositivo de entrada: Teclado, mouse, leitores ópticos ou leitores a laser (leitores para códigos de barras), scanners, sensores, light pen, mesas digitalizadoras, câmaras CCD (charge coupled device), filmadoras, WEB câmaras e outros. •Exemplos de dispositivo de saída: Impressoras (matricial, laser, jato de tinta), Monitor (CGA, SVGA) • Portas Paralelas • É uma interface de comunicação entre o computador e um periférico. • Foi inicialmente concebido pela IBM para conectar impressoras. •onhecendo-se um pouco de eletrônica e dominando uma linguagem C de programação como: C/C++/C++ Builder, Pascal/Delphi ou mesmo o Visual Basic, é possível desenvolver um programa que controle um aparelho conectado à Porta paralela, ou um programa de transferência de arquivos entre dois computadores, utilizando um cabo paralelo como meio de transmissão. Barramento (Bus) É o caminho de comunicação entre a CPU e os demais componentes de um computador, ou sistema computacional. Todo computador tem três tipos de barramentos: O barramento de endereço; O barramento de dados; O barramento de controle. Outra Classificação: Barramento Local; Barramento do Sistema; Barramento de Expansão. Software É considerado a parte lógica de um sistema de computação; O hardware sozinho não funciona sem instruções (software) sobre o que e quando fazer. O software consiste em programas, de qualquer tipo e em qualquer linguagem, que são introduzidos na máquina para fazê-la trabalhar, passo a passo, e produzir algum resultado. • Divide-se em dois grupos básicos: • • Softwares aplicativos. Softwares básicos. • Software básico • É uma coleção de programas escritos para dar apoio a outros programas. • Características: • forte interação com o hardware do computador; • intenso uso por múltiplos usuários; • compartilhamento de recursos e sofisticada administração do processo; • estruturas de dados complexas; • múltiplas interfaces externas. • Exemplos: sistemas operacionais, compiladores. • Softwares Aplicativos: • São programas desenvolvidos pelo usuário ou por terceiros, que são dedicados a uma aplicação. • Algumas categorias: • Aplicações comerciais (editores de texto, planilhas eletrônicas, banco de dados, aplicações gráficas, etc); • Utilitários (ampliam os recursos de um sistema operacional, ex.: Norton Utilities) • Aplicações pessoais (destinados a simplificar as tarefas pessoais. Ex.: agendas pessoais, “internet”) • Aplicações de entretenimento A máquina de Von Neumann MEMÓRIA UNIDADE DE CONTROLE UNIDADE ARITMÉTICA E LÓGICA ACC ACC = Acumulador ENTRADA SAÍDA