Software Professora Milene Selbach Silveira Prof. Celso Maciel da Costa Faculdade de Informática - PUCRS ESQUEMA DE UM SISTEMA DE COMPUTADOR Unidades de Entrada - Teclado - Scanner - Caneta Ótica - Leitora de barra - Tela Sensível - Mouse -Modem -Etc. Unidade Central (U.C.P.) Unid. de Controle Unid. Lógica e Aritmética Unidades de Saída - Monitor - Impressora - Plotter -Modem -Etc. Memória Movimento dos dados e informações Conceitos Básicos • UCP – é composta de circuitos eletrônicos – coordena e controla todas as operações do sistema – é formada por processador e memória • processador: – unidade de controle (UC) – unidade lógica-aritmética (ULA) • memória – unidade de armazenamento de instruções e dados UCP unidade de controle Unidade aritmética e lógica Memória 0 1 2 3 4 5 ... N Registradores especiais Representação esquemática da UCP Conceitos Básicos • Unidade de controle – controla todas as operações do computador – é formada por: • • • • • registrador de controle registrador de instrução decodificador relógio sequenciador Conceitos Básicos • Registrador de controle (contador de programa - PC) – contém o endereço de memória da próxima instrução a executar • Registrador de instrução (RI) – contém a instrução que está sendo executada a cada momento – cada instrução contém: • código da operação • operandos ou endereços de memória dos mesmos Conceitos Básicos • Decodificador – extrai e analisa o código de operação da instrução que está em execução (que está no RI) – emite os sinais necessários para a sua execução • Relógio – proporciona uma sucessão de impulsos elétricos a intervalos constantes que sinalizam os instantes de inicio de execução dos passos que constituem cada instrução Conceitos Básicos • Sequenciador – gera ordens sincronizadas pelos impulsos do relógio que fazem com que a instrução carregada no RI seja executada passo a passo Conceitos Básicos • Unidade logica e aritmética – realiza operações elementares de tipo aritmético e de tipo lógico (comparações) • é formada por: – Banco de Registradores: armazenam dados antes de cada operação, dados intermediários e servem para operações internas do processador – Circuitos operadores: circuitos eletrônicos que realizam operações aritméticas e lógicas – Registrador de resultados: armazena os resultados produzidos pelos circuitos operadores – Registrador de estado: contém informações sobre a realização da operação anterior Conceitos Básicos • Memória Principal – ë a parte da UCP que armazena instruções e dados necessários para que um programa seja executado – é constituida por células ou posições de memória numeradas de forma consecutiva – é volátil – permite acesso direto Conceitos Básicos • Memória Principal (cont.) – palavra de memória: conjunto de células de memória que podem ser lidas ou escritas de uma só vez – em geral é endereçada por byte – possui dois registradores para as operações de leitura e gravação: Registrador de endereço de memória e Registrador intermediário (buffer) Conceitos Básicos • Memória Principal (cont.) – Registrador de endereço de mémória • contém o endereço de memória onde se encontra ou onde vai ser gravada a informação (instrução ou dado) – Registrador Intermediário (buffer) • leitura: recebe a informação da memória • escrita: contém a informação a ser gravada – Seletor: seleciona a célula de memória cujo endereço se encontra no registrador de endereços para a transferência (leitura/escrita) Registrador de endereço de memória Seletor Registrador intermediário (buffer) Memória principal 1 2 3 ... ... 32 33 ... N Visão esquemática da memória principal de um computador O que é o software? O software corresponde à parte lógica do sistema de computação. Editores de texto, linguagens de programação, aplicações de uso específico, como folhas de pagamento e controles de estoque, todos estes são software. E muitos mais... O software pode ser classificado em: * Software Básico * Software Aplicativo Software Básico São os programas que definem o padrão do equipamento sendo necessários para o funcionamento do computador. Tipos de software básico: * Sistema Operacional * Ambiente Operacional * Linguagens de Programação * Tradutores * Utilitários Software Básico: sistema operacional (1/3) É um sistema que controla e coordena todas as operações básicas do sistema de computação: E/S, alocação de memória, gerencia de dados (copiar, apagar, mover, renomear, etc.). Existem diferentes sistemas operacionais. Os mais conhecidos são o MS-DOS (para PC compatíveis), MUMPS, System 7, Unix, Linux, etc. Software Básico: sistema operacional (2/3) Os sistemas operacionais são compostos por duas (2) partes no que diz respeito a localização física na memória do computador. Uma parte está gravada em chip de memória ROM onde estão as rotinas mais fundamentais como acionar e ler a unidade de disco, colocar mensagens no monitor, verificar se o teclado está funcionando, etc. sendo que a quantidade de rotinas gravadas na memória ROM depende de cada fabricante. A outra parte do sistema operacional será carregada na memória RAM do sistema normalmente em duas (2) etapas: * a primeira é totalmente transferida para a RAM quando o sistema é ligado * a segunda é carregada na memória à medida que é solicitada Software Básico: sistema operacional (3/3) Os sistemas operacionais são, às vezes, chamados de firmware, por serem programas que podem ser fornecidos pelo fabricante do equipamento. No caso de PC´s, podem vir gravados na memória ROM ou na EEPROM. O padrão é virem em disquetes ou já gravados no disco rígido. Os programas que compõem o sistema operacional são, na maioria dos casos, escritos em uma linguagem de programação de baixo nível. Os sistemas operacionais podem ser classificados de acordo com suas características de funcionamento em: * * * * monousuário multiusuário monotarefa multitarefa Sistemas Operacionais • Sistemas monoprogramados – somente um usuário de cada vez pode utilizar o sistema SO Programa do usuário Sistemas Operacionais • Sistemas Multiprogramados – permitem a execução de vários programas simultaneamente SO P1 P2 -Pn Software Básico: ambiente operacional Os ambientes operacionais adicionam recursos ao sistema operacional para permitir uma interface gráfica com o usuário. Podemos dizer que ele é um sistema operacional com recursos gráficos. E o exemplo mais comum no nosso dia a dia é o Windows. Software Básico: linguagens de programação (1/4) É um conjunto de símbolos (vocabulário) e regras (gramática) que especificam como transmitir informações entre usuários e computador. As linguagens de programação estão divididas em: * linguagem de máquina * linguagem de baixo nível * linguagem de alto nível Software Básico: linguagens de programação (2/4) Linguagem de máquina: é baseada em código binário (0s e 1s) e é utilizada diretamente pelo computador. Linguagem de máquina Significado 0010 0001 1110 carrega no registrador 1 o conteúdo da posição de memória 14 0010 0010 1111 carrega no registrador 2 o conteúdo da posição de memória 15 0001 0001 0010 soma o conteúdo do registrador 1 com o conteúdo do registrador 2 e coloca no registrador 1 0011 0001 1111 armazena o conteúdo do registrador 1 na posição de memória 15 Software Básico: linguagens de programação (3/4) Linguagem de baixo nível: é uma simplificação da linguagem de máquina. Faz uso de códigos mnemônicos para expressar as instruções. Exemplo: Assembly. Linguagem de máquina Linguagem de baixo nível 0010 0001 1110 LOAD R1, val1 0010 0010 1111 LOAD R2, val2 0001 0001 0010 ADD R1, R2 0011 0001 1111 STORE R1, val2 Software Básico: linguagens de programação (4/4) Linguagem de alto nível: utiliza combinação de um conjunto de símbolos de acordo com certas regras de sintaxe para expressar uma seqüência de operações de máquina. É uma linguagem que não exige conhecimento do código de máquina. Linguagem de máquina Linguagem de baixo nível 0010 0001 1110 LOAD R1, val1 0010 0010 1111 LOAD R2, val2 0001 0001 0010 ADD R1, R2 0011 0001 1111 STORE R1, val2 Linguagem de alto nível val2 = val1 + val2 Software Básico: tradutores (1/2) Os tradutores que lêem uma linguagem de programação e a transformam para linguagem de máquina (a única coisa que o computador entende). Existem 3 tipos de tradutores: * Montador: lê uma linguagem de baixo nível e transforma para linguagem de máquina. * Interpretador: lê uma linguagem de alto nível e transforma para linguagem de máquina. * Compilador: lê uma linguagem de alto nível e transforma para linguagem de máquina. Mas qual a diferença entre interpretador e compilador? Software Básico: tradutores (2/2) Mas qual a diferença entre interpretador e compilador? Compilador Interpretador Lê e analisa todo o programa fonte (escrito em linguagem de alto nível) e traduz para linguagem de máquina. Interpreta cada comando e executa. Faz linha a linha. Não traduz todo o programa para depois executar. Cria um programa objeto que corresponde às instruções em linguagem de máquina. Não gera programa objeto. Executa-se direto o programa objeto. Executa-se o programa fonte e sempre é necessário interpretar antes. Traduz tudo de uma vez. Se encontrar erro, é preciso voltar ao programa fonte, corrigir, recompilar e executar novamente o programa objeto. Se encontrar erro avisa na hora. Então, se edita o programa fonte, corrige-se o erro e interpreta-se novamente. Produção de um programa • Elaboração de um Algoritmo • Programação do algoritmo em uma linguagem -> Programa Fonte Compilação do programa Fonte Programa objeto • Execução do programa Produção de um programa Programa Fonte Compilação Programa Objeto Produção de um programa (Linguagem C) main () { int a, b , c ; c = 9; b = 15 ; a=b+c; printf (“Valor da soma de a e b : %d\n”, a ) ; } Produção de um programa (Basic) PRINT (“digite um numero”) INPUT a, PRINT (“digite outro numero diferente do anterior”) INPUT b IF a > b THEN PRINT (“o primeiro numero e o maior”) ELSE PRINT (“o segundo numero e o maior”) ENDIF Produção de um programa (Basic) i=0 WHILE i < 10 PRINT (“digite um numero”) INPUT a, PRINT (“digite outro numero diferente do anterior”) INPUT b IF a > b THEN PRINT (“o primeiro numero e o maior”) ELSE PRINT (“o segundo numero e o maior”) ENDIF i=i+1 WEND Software Básico: utilitários São programas que ampliam os recursos do sistema facilitando o uso e auxiliando a manutenção de programas. Administram o ambiente oferecendo ferramentas ao usuário para organizar os discos, verificar memória, corrigir falhar, etc. Por exemplo: * Save Smart: grava automaticamente a tela de trabalho do usuário quando a máquina é desligada e quando ela é ligada, retorna ao mesmo ponto onde estava. * Programas de backup * Compactadores de disco: Zip, Arj, etc. * Desfragmentadores: regravam de forma mais eficiente os arquivos que foram fragmentados pelo sistema operacional. Ou seja, faz com que um arquivo que foi armazenado em "pedaços" seja armazenado de forma contígua. * Antivírus: detectam a presença de algum vírus e tentam eliminá-lo. Software Aplicativo São os programas voltados para a solução de problemas do usuário. Podem ser de: Tipos de software aplicativo: * Uso geral: são programas que podem ser utilizados em vários tipos de aplicações. Por exemplo: editores de texto, gráficos, planilhas, gerenciadores de banco de dados, etc. * Uso específico: se destinam exclusivamente a um único tipo de aplicação. Por exemplo: folha de pagamento, crediário, imposto de renda, cadastro, contas a pagar e receber, etc. Bibliografia consultada Meirelles, Fernando de Souza. Informática: novas aplicações com microcomputadores. 2a edição atualizada e aplicada. São Paulo: Makron books, 1994.