1 Universidade Tecnológica Federal do Paraná UTFPR Campus: Campo Mourão Professor: Rafael Henrique Dalegrave Zottesso E-mail: rafaelzottesso@utfpr.edu.br Material cedido por: Prof. Luiz Arthur Sumário: Conceitos sobre computação; Evolução dos computadores; Hardware; Software; Sistema Operacional;
2 Definições básicas: Computação - Pode ser definida como a busca pela solução de um problema, considerando as entradas e algoritmos para resolver o problema. Entrada Processamento Solução Ciência da Computação - É o estudo dos algoritmos e suas aplicações, bem como das estruturas matemáticas indispensáveis à formulação precisa dos conceitos fundamentais da teoria da computabilidade e da computação aplicada. Informática - O termo informática, vem de informação automática. É a ciência do tratamento da informação. Informática é mais abrangente que Ciência da Computação. Hoje aparecem profissionais da área de TI (Tecnologia da Informação) e TIC (Tecnologias da Informação e da Comunicação).
3 Programa - De acordo com o artigo 1 da Lei 9.609/98 (Lei de Software), Programa de Computador é a expressão de um conjunto organizado de instruções em linguagem natural ou codificada, contida em suporte físico de qualquer natureza, de emprego necessário em máquinas automáticas de tratamento da informação, dispositivos, instrumentos ou equipamentos periféricos, baseados em técnica digital ou análoga, para fazê-los funcionar de modo e para fins determinados. (Instituto Nacional da Propriedade Industrial, 2010). Algoritmo - Um algoritmo é uma sequência não ambígua de instruções que é executada até que determinada condição se verifique. Mais especificamente, em matemática, constitui o conjunto de processos (e símbolos que os representam) para efetuar um cálculo. Qual é a relação sociedade, informática, computação e programação? Tente responder isto!
4 Evolução dos Computadores: Inicialmente para se computar e para a evolução da computação havia duas possibilidades: analógica e digital. Máquinas analógicas: são baseadas em dispositivos físicos que medem quantidades contínuas. Este computadores baseavam-se em engrenagens, peças mecânicas e eletromecânicas, o que acarreta uma certa imprecisão nos cálculos. Ábaco Data: 500AC Calculadora Mecânica Blase Pascal ~1642 Máquina Analítica Charles Babage 1834 Projetado para ser programável.
5 Início da tenologia digital: Álgebra de Boole: Em 1854, George Boole publica trabalhos em que tenta descobrir leis algébricas para o pensamento. Seu trabalho será a base lógica dos cálculos nos futuros dos computadores ele inventa a Álgebra de Boole. Primeira geração válvulas (1945 1955) O estímulo para o computador eletrônico foi a Segunda Gerra Mundial. Um dos motivos foi tentar quebrar a criptografia das mensagens de guerra. Era necessário fazer cálculos mais rápidos para entender as mensagens a tempo de fazer alguma coisa. Em 1943 é construído um computador eletrônico chamado de ENIAC (Eletronic Numeral Integrator And Compute) que consistia de 18 mil válvulas e 1.500 relés, pesava 30 toneladas e consumia 140 quilowatts de energia.
6 IAS construído por John von Neumann, que observou que programar computadores com quantidades imensas de interruptores e cabos era uma tarefa lenta, tediosa, mecânica e isto podia/devia ser representada em forma digital na memória do computador, junto com os dados. Também foi que ao invés aritmética decimal usada no ENIAC, com cada dígito representado por 10 válvulas, podia ser substituída usando aritmética binária. O projeto conhecido como máquina de Von Neumann é ainda hoje a base para quase todos os computadores digitais. Memória Unidade Lógica e Aritmética Unidade de controle Entrada Acumulador Saída
7 Segunda geração transistores (1955-1965) O transistor foi inventado no Bell Labsem 1948 e revolucionou o computador, o primeiro a utilizar foi o TX-0 (Transistorized experimental Computer 0). Em 1961 apareceu o PDP-1, tinha 4.096 palavras de 18 bits e podia executar 200 mil instruções por segundo, custava 120 mil dólares e trouxe o conceito de minicomputador.
8 Terceira geração circuitos integrados (1965-1980) A invenção de circuito integrado de silício em 1958 permitiu que dezenas de transistores fossem colocados em um único chip, possibilitando computadores menores, mais rápidos e mais baratos. Um computador desta época é o System/360 da IBM que trás o conceito de família de computadores, que trazia também o conceito de multiprogramação.
9 Quarta geração integração em escala muito grande (1980-?) Na década de 1980, a VLSI (Very Large Scale Integration) possibilita colocar dezenas, milhares, milhões de transistores em um único chip. Isto reduziu tanto o preço de um computador que em 1980 um único indivíduo poderia ter o seu próprio computador. Computadores Pessoais (PC's) eram usados para processar textos, montar planilhas, jogos, etc. Surge o Intel 8080, o Apple II, MS-DOS, interfaces gráficas, Macintosh, Windows. Surge arquiteturas RISC. O futuro são os computadores embutidos. Intel 8080 MacBookAir Apple II
Histórico de alguns computadores: Ano Nome Comentário 1834 1936 1943 1944 1946 1949 1951 1952 1960 1961 1962 1963 1964 1964 1965 1970 1974 1974 1978 1981 1981 1983 1985 1985 1987 1990 1992 1993 Máquina analítica ZI COLOSSUS Marki ENIAC EDSAC Whirlwind IAS/VonNeumann PDP1/DEC 1401/IBM 7094/IBM B5000 360/IBM 6600 PDP-8 PDP-11 8080/Intel CRAY-1 VAX IBM PC Osborne Lisa/Apple 386/Intel MIPS SPARC/Sun RS6000/IBM Alpha/DEC Newton/Apple Primeira tentativa de construir um computador digital. Primeira máquina de calcular com relés. Primeiro computador eletrônico. Primeiro computador dos USA, de uso geral. A história moderna dos computadores inicia neste. Primeiro computador com programa armazenado. Primeiro computador de tempo real. A maioria das máquinas atuais usam esse projeto. Primeiro minicomputador (50 vendidos). Máquina para pequenos negócios (bem popular). Dominou a computação científica (1950). Linguagem de alto nível. Cria o conceito de família. Primeiro supercomputador. Minicomputador (50 mil vendidos). Dominou os minicomputadores (1970). Primeiro computador de uso geral (8bits). Primeiro computador vetorial. Primeiro supercomputador de 32 bits. Inicio dos computadores pessoais. Primeiro computador portátil. Primeiro computador com interface gráfica. Primeiro 32 bits da linha Pentium. Primeiro RISC. Primeira estação de trabalho RISC. Primeira superescalar. Computador pessoal de 64 bits. Primeiro palmtop. 10
Evolução Intel: 1989 486 Pipeline 1993 Pentiun Superescalar 1997 Pentium II 11
1999 Pentium III 2000 Pentium IV 12 2006 Core 2 Duo 2008 Core 2 Quad 2008 - i7
13 Qual é o impacto da evolução dos computadores em nossa sociedade? Pense sobre isto! Como os computadores afetaram as guerras? Como os computadores afetaram os governos? Como os computadores aferaram a industria? Como os computadores influenciaram as pequenas e médias empresas? Como os computadores afetam a vida das pessoas hoje? Onde estão os computadores hoje? Qual deve ser o futuro dos computadores?
14 Hardware: Um sistema computacional é um conjunto de circuitos eletrônicos interligados, formando por processadores, memórias, registradores, barramentos, monitores de vídeo, impressoras, mouse, discos magnéticos, além de outros dispositivos físicos (ou seja, hardware). Todos esses dispositivos manipulam dados na forma digital (0's e 1's), o que proporciona uma maneira confiável de representação e transmissão de dados. De uma forma bem rudimentar todos os componentes de um sistema computacional são agrupados em três subsistemas básicos, chamados unidades funcionais: Processador ou Unidade Central de Processamento (UCP ou CPU); Registradores, unidade de controle e unidade lógica aritmética; Memória (cache, principal, secundária); Dispositivos de entrada/saída; Barramento; Estes subsistemas estão presentes em qualquer tipo de computador digital, independente da arquitetura ou fabricante.
15 Software: Para que o hardware tenha utilidade prática, deve existir um conjunto de programas, utilizado como interface entre as necessidades do usuário e as capacidades do hardware. A utilização de software adequados às diversas tarefas e aplicações torna o trabalho dos usuários muito mais simples e eficiente. O software de computador pode ser dividido, a grosso modo, em duas espécies: programas de sistema, que gerenciam a operação do computador em si, e programas aplicativos, que executam o trabalho que os usuários realmente deseja. Sistema Operacional: Um SISTEMA OPERACIONAL, é um conjunto de rotinas executado pelo processador, de forma semelhante aos programas dos usuários. Sua principal função é controlar o funcionamento de um computador, gerenciando a utilização e o compartilhamento dos seus diversos recursos, como processadores, memórias e dispositivos de entrada e saída.
16 Sem o Sistema Operacional, um usuário para interagir com o computador deveria conhecer profundamente diversos detalhes sobre o hardware do equipamento, o que tornaria seu trabalho lento e com grandes possibilidades de erros. O Sistema Operacional desta forma tem por objetivo funcionar como uma interface entre o usuário e o computador, tornando sua utilização mais simples, rápida e segura.
17 Tipos de Sistemas Operacionais Os tipos de Sistemas Operacionais e a sua evolução estão relacionados diretamente com a evolução do hardware e das aplicações por ele suportadas. Os principais são: Sistema Sistema Sistema Sistema Monoprogramável/Monotarefa; Multiprogramáveis/Multitarefa; de tempo compartilhando; com Múltiplos Processadores; Há muitos anos tornou-se bastante evidente a necessidade de encontrar uma maneira de isolar os programadores da complexidade do hardware. A maneira com que isso se desenvolveu gradualmente foi colocar uma camada de software por cima do hardware básico para gerenciar todas as partes do sistema e oferecer ao usuário uma interface ou máquina virtual que é mais fácil de entender e de programar. Essa camada de software é o Sistema Operacional. Nos primeiros sistemas computacionais, o ato de programar era bastante complicado, já que o programador deveria possuir conhecimento da arquitetura da máquina e programar em painéis através de fios. Esses programas eram desenvolvidos em linguagem de máquina e carregados diretamente na memória principal para execução
18 Inicio das linguagens de programação: Com o surgimento das primeiras linguagens de montagem ou assembly e das linguagens de alto nível, o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware, como em qual região da memória o programa deveria ser carregado ou quais endereços de memória seriam reservados para as variáveis. A utilização dessas linguagens facilitou a construção de programas, a documentação e a manutenção. Tradutor: Apesar das inúmeras vantagens proporcionadas pelas linguagens de montagem e de alto nível, os programas escritos nessas linguagens não estão prontos para ser diretamente executados pelo processador (programa-fonte). Para isso, eles têm de passar por uma etapa de conversão, onde toda representação simbólica das instruções é traduzida para código de máquina. Esta conversão é realizada por um utilitário denominado tradutor. O módulo gerado pelo tradutor é denominado módulo-objeto, que apesar de estar em código de máquina, na maioria das vezes não pode ser ainda executado. Isso ocorre em função de um programa poder chamar sub-rotinas externas, e, neste caso, o tradutor não tem como associar o programa principal às sub-rotinas chamadas. Esta função é realizada por outro utilitário denominado linker.
19 Linker O linker, ou editor de ligação, é o utilitário responsável por gerar, a partir de um ou mais módulos-objetos, um único programa executável. Suas funções básicas são resolver todas as referências simbólicas existentes entre os módulos e reservar memória para a execução do programa. Para resolver todas as referências a símbolos, o linker também pode pesquisar em bibliotecas do sistema ou do próprio usuário. Bibliotecas são arquivos que contém diversos módulos-objetos e/ou definições de símbolos. Loader O loader, ou carregador, é o utilitário responsável por carregar na memória principal um programa para ser executado. O procedimento de carga varia com o código gerado pelo linker.
20 Compilador: O compilador é o utilitário responsável por gerar, a partir de um programa escrito em linguagem de alto nível, um programa em linguagem de máquina não executável. As linguagens de alto nível, como Pascal, FORTRAN e COBOL, não têm nenhuma relação direta com a máquina, ficando essa preocupação exclusivamente com o compilador. Os programadores de alto nível devem se preocupar apenas com o desenvolvimento de suas aplicações, não tendo que se envolver com detalhes sobre a arquitetura do processador. Assim, os programas-fontes pode ser portados entre computadores de diversos fabricantes, desde que existam padrões para a sintaxe da linguagem. Isso permite o desenvolvimento de aplicações independentes de equipamento. Um compilador é um utilitário que opera de modo integrado aos componentes do sistema de programação disponíveis, sob a supervisão do sistema operacional. Podemos visualizar, então, o compilador como uma interface entre o sistema operacional e o usuário, de maneira que é possível acessar diversos serviços do sistema.
21 Interpretador O interpretador é considerado um tradutor que não gera módulo-objeto. A partir de um programa-fonte escrito em linguagem de alto nível, o interpretador, durante a execução do programa, traduz cada instrução e a executa imediatamente. Algumas linguagens tipicamente interpretadas são o Basic e o Perl. A maior desvantagem na utilização de interpretadores é o tempo gasto na tradução das instruções de um programa toda vez que este for executado, já que não existe a geração de um código executável. A vantagem é permitir a implementação de tipos de dados dinâmicos, ou seja, que podem mudar de tipo durante a execução do programa, aumentando assim, sua flexibilidade. Tente responder: Quais são as vantagens e desvantagens da linguagem de alto nível? Quais são as compilador? semelhanças e diferenças entre interpretador e
22 Depurador O desenvolvimento de programas está sujeito a erros de lógica, independente de metodologias utilizadas pelo programador. A depuração é um dos estágios desse desenvolvimento e a utilização de ferramentas adequadas é essencial para acelerar o processo de correção dos programas. O depurador (debugger) é o utilitário que permite ao usuário acompanhar toda a execução de um programa a fim de detectar erros na sua lógica. O depurador oferece ao usuário recursos como: Acompanhar a execução de um programa instrução por instrução; Possibilitar a alteração e visualização do conteúdo de variáveis; Implementar pontos de paradas dentro do programa, de forma que, durante a execução, o programa pare nesses pontos; Especificar que, toda vez que o conteúdo de uma variável for modificado, o programa envie uma mensagem (watchpoint).
23 Interpretador de Comandos e Linguagem de Controle O interpretador de comandos, ou shell, permite que o usuário se comunique com o sistema operacional. Através de comandos simples, o usuário pode ter acesso a diversas funções e rotinas específicas do sistema. Quando digitados pelos usuários, os comandos são interpretados pelo shell, que, ao reconhecer a linha de comando, verifica sua sintaxe, envia mensagens de aviso ou erro e faz chamadas a rotinas do sistema. Desta forma, o usuário dispõe de uma interface direta com o sistema operacional para realizar tarefas como criar, ler ou eliminar arquivos, consultar diretórios ou verificar a data e hora armazenada no sistema. O conjunto de comandos disponíveis pelo interpretador é conhecido como linguagem de controle ou linguagem de comando. Algumas linguagens são poderosas a ponto de oferecer a possibilidade de criar programas com estruturas de decisão e iteração. Esses programas nada mais são do que uma sequência de comandos armazenados em um arquivo texto, denominados arquivos de comandos ou shell scripts, que podem ser executados sempre que necessário. Em geral, o interpretador de comandos não faz parte do sistema operacional. Isto possibilita uma maior flexibilidade na criação de diferentes linguagens de controle para um mesmo sistema operacional.
24 Referência: TANENBAUM, Andrew S. Organização Estruturada de Computadores. 5ed. Editora Prentice-Hall. 2006. GONÇALVES, Rogério A.. UTFPR. 2010. MACHADO, Francis B. Arquitetura de Sistemas Operacionais. 4 ed. Editora LTC. 2007. Instituto Nacional da Propriedade Industrial. O que é programa de Computador. Disponível em: http://www.inpi.gov.br/menu-esquerdo/programa/pasta_oque Acessado em: agosto de 2010.
Fim! 25