Baixe o app para aproveitar ainda mais
Prévia do material em texto
FUNDAMENTOS COMPUTACIONAIS Stéfani Valmini 2FUNDAMENTOS COMPUTACIONAIS UM POUCO DE HISTÓRIA 4 Evolução do Computador 5 Conceitos Básicos de Sistemas 11 Microprocessadores 20 CISC x RISC 23 SISTEMAS OPERACIONAIS 27 Estrutura de um Sistema Operacional 28 Tipos de Sistemas Operacionais 29 Sistemas Numéricos e Representação de Dados 31 Aritmética Não Decimal 36 Representação em Tamanho Fixo 38 Representação Números Negativos 38 LINGUAGENS E ORGANIZAÇÃO DA INFORMAÇÃO 42 Linguagens de Programação 43 Estrutura e Organização da Informação 47 Banco de Dados 50 PLANEJAMENTO ESTRATÉGICO DA TI 54 Engenharia de Software 55 Conectividade 62 Características dos sistemas abertos 63 Softwares Clientes 63 Softwares Servidores 64 Software de Redes 64 Arquitetura dos sistemas abertos 67 SUMÁRIO CENTRO UNIVERSITÁRIO UNIFTEC Rua Gustavo Ramos Sehbe n.º 107. Caxias do Sul/ RS REITOR Claudino José Meneguzzi Júnior PRÓ-REITORA ACADÊMICA Débora Frizzo PRÓ-REITOR ADMINISTRATIVO Altair Ruzzarin DIRETORA DE EDUCAÇÃO A DISTÂNCIA (NEAD) Lígia Futterleib Desenvolvido pelo Núcleo de Educação a Distância (NEAD) Designer Instrucional Sabrina Maciel Diagramação, Ilustração e Alteração de Imagem Igor Zattera, Sabrina Maciel Revisora Carmem Maura Vaccari 3FUNDAMENTOS COMPUTACIONAIS Introdução A nossa disciplina de Fundamentos Computacionais, como o nome mesmo diz, é uma base, um alicerce para todas as demais disciplinas. Nela estudaremos des- de os conceitos mais básicos de hardware, software até as linguagens de programação, assuntos que se referem a legislação, banco de dados entre outros. Nosso conteúdo está dividido em quatro grandes capítulos de estudo. O pri- meiro refere-se a “Introdução aos sistemas e elementos básicos”, o segundo a “Sistemas Numéricos e Representação de Dados”, o terceiro a área das “Linguagens de Progra- mação e Planejamento da TI”, e, por último a “Conectividade e Aspectos Legais”. Ao final desta disciplina vocês serão capazes de identificar as oportunidades de negócios por meio da utilização dos recursos computacionais básicos, propor melhorias no ambiente de uso de sistemas computacionais, além de identificar as di- ferentes aplicações do computador dentro da sociedade. 4FUNDAMENTOS COMPUTACIONAIS UM POUCO DE HISTÓRIA Conhecendo a evolução dos computadores O que você entende por computação? Como você clas- sificaria os elementos de software, hardware e peopleware? Já ouviu falar nestes termos? Mas não consegue explicar? Sabe qual a função dos sistemas operacionais? São muitas as per- guntas referentes a essa área. Portanto, essas, e tantas outras perguntas iremos responder e discutir neste primeiro capítulo. Como ponto de partida iremos voltar no tempo para conhecer e entender todas as evoluções que já ocorreram na computação. Serão apresentados os principais inventos que levaram ao surgimento dos computadores que conhecemos hoje. Em toda a história, o principal objetivo era a automação do cálculo. Como já se sabe um sistema computacional, que, em seu aspecto mais elementar, é apenas uma máquina que realiza operações lógicas e aritméticas. Também serão apresentados os principais componentes de software, hardware e peopleware que formam um sistema computacional. 5FUNDAMENTOS COMPUTACIONAIS Evolução do Computador De acordo com a história tradicional, a computação evoluiu muito e em um curto período de tempo. Será que, realmente, os fatos acon- teceram de tal forma? Pensando bem, a verdadeira história não aconteceu tão rápido assim. Foram necessárias inúmeras e gradu- ais invenções e evoluções para chegarmos até as atuais tecnologias. Pense um pouco em quais foram essas invenções para chegar a uma conclusão plausível. Para entender o nosso momento tecnológico atual, precisamos conhecer a história da computação e os fatos relevantes que contribuíram para que chegássemos até aqui. Em um passado muito distante, se contavam os objetos, os animais, etc., atra- vés de pedras ou de riscos que, conforme registros comprovam, eram feitos nas pare- des das cavernas. Vejamos que desde cedo a matemática já se fazia parte do processo, e o calcular sempre foi uma atividade presente na humanidade. Evolução do Computador Fo nt e: A ut or O homem sempre tentou desenvolver meios que facilitassem o processamento dos dados. A aritmética, assim como ler ou escrever, era uma habilidade que auxiliava o homem a interpretar o mundo (mundo com numeração binária fazendo referência a esta afirmação) 6FUNDAMENTOS COMPUTACIONAIS A ferramenta de calcular mais antiga, que se tem conhecimento é o Ábaco. Ele foi inventado pelos chineses por volta de 2000 a.C. e lá recebeu o nome de Suanpan, no Japão é conhecido como Soroban. 2000 a.C É inventado o ábaco pelos chineses. 1617 Jhon Napier inventou a tabela de logaritmos. 1621 William Oughtred inventou a régua de cálculo. 1642/1647 O matemático francês Blaise Pascal apresenta sua máquina de calcular mecânica. 7FUNDAMENTOS COMPUTACIONAIS 1801 Tear automatizado com o invento de Jacquard. 1820 Arithmometer a primeira máquina de calcular comercial. 1822 Calculadora analítica de Babbage. 1880 Primeira máquina de processamento de dados criada por Hollerith. 1924 Máquina de calcular produzida por Burroughs Company. 8FUNDAMENTOS COMPUTACIONAIS Em 1950 John Von Neuman, Ar- thur Burks e Herman Goldstine criam a lógica dos circuitos digitais, conceito de programação por números binários. Surge em 1951 o UNIVAC I, primeiro compu- tador comercial baseado nos conceitos de Neumann. John Von Neumann, matemático na- tural da Hungria, viveu a maior parte de sua vida nos Estados Unidos. Suas contribui- ções forma muito significativas e perduram até os dias atuais, sendo que a principal delas, a construção de um computador se- quencial binário de programa armazenado. Podemos dizer que ele propôs os elementos críticos de um sistema computacional, de- nominado de Modelo de Von Neumann. A arquitetura de computador proposta por esse modelo é composta basicamente por (TANENBAUM, 2007): a. uma memória física (para armaze- nar programas e dados – represen- tados por 0’s e 1’s); b. uma Unidade Aritmética e Lógica (ULA), cuja função é executar ope- rações indicadas pelas instruções de um programa. Seu trabalho é apoiado por diversos registradores (ex.: acumulador); c. uma Unidade de Controle (UC), cuja função é buscar um programa na memória, instrução por instru- ção, e executá-lo sobre os dados de entrada (que também se encontram na memória); d. equipamento de entrada e saída. A Figura abaixo apresenta os com- ponentes da arquitetura de Von Neumann descritos acima: Na década de 50, a IBM lança o IBM 701 e 650, tornando-se o maior sucesso de vendas da década. A partir de 1959 sur- gem os transístores, em seguida, os circui- tos integrados que popularizou o uso dos computadores. Na década de 70, a Intel lança mi- croprocessadores com arquitetura interna 1946 Nasce o ENIAC. Arquitetura de Von Neumann Fo nt e: A da pt ad a de T an en ba um (2 00 7) 9FUNDAMENTOS COMPUTACIONAIS e barramento de 4 bits, 8 bits e de 16 bits. Em 1982 surge o microprocessador 8083 com capacidade de endereçar a memória até 16 MB. Em 1985 a Intel lança seu proces- sador 80386, com arquitetura interna e barramento de dados de 32 bits, capaz de endereçar até 4GB de memória. Já, em 1989 Surge o processador i486, com arquitetura interna e barramento de dados de 32 bits e coprocessador integrado à CPU. Nos anos 1993 Intel lança primeiro processador da família Pentium, cuja ca- pacidade de processamento (MIPS) era 7 vezes maior que o i486, e, a capacidade de endereçamento de memória 16 vezes maior que o seu antecessor. A Intel lança a família de micro- processadores 80686, em 1997, a qual fica conhecida como Pentium II, cujo poder de processamento era de 300 MIPS. E, em 2000,é lançado o último processador desta família, conhecido como Pentium 4, com poder de processamento de 15000 MIPS. No ano seguinte, nasce o Itanium, processador da família 80786, com barra- mento de 64 bits e poder de processamento de 2.500 MIPS. E em 2007, a Intel lança a família de processadores 80968, em que o poder de processamento é de 125.000 MIPS. Evolução do Software Você sabe como surgiu o conceito de software? Porque o software e o hardware não existem sem um ao outro? Conhece a evolução dos software? O conceito de software surgiu em decorrência da necessidade de se programar o hardware, de colocar inteligência dentro das máquinas eletrônicas que estavam evo- luindo há décadas. Mas, o que nem todos sabem, é que as origens dos softwares sur- giram muito antes do conceito de compu- tador moderno. Vejamos na imagem a seguir, uma breve linha do tempo que descreve esta evolução do software. Surge o conceito de Álgebra Booleana.1847 O matemático John Von Neumann introduz o conceito de lógica binária. 1945 Primeira geração de linguagens de máquina.1945 Segunda geração de linguagens de máquina: Linguagem Assembler ou de Montagem. 1955 10FUNDAMENTOS COMPUTACIONAIS Surge o Fortran (FORmula TRANslation), 3º geração de linguagem de máquina. Usada no meio científico, especialmente nas Ciências da Computação e Análise Numérica. 1958 Surge a linguagem ALGOL.1960 Surge o BASIC, software de programação muito utilizado nos microcomputadores. 1963 Nasce a linguagem PASCAL.1968 Ken Thompson cria a linguagem B, usada para implementar o sistema UNIX. 1970 Dennis Ritchie cria a primeira versão da linguagem C. 1972 Surge o sistema operacional CP/M (Control Program for Microcomputers) da Digital Research. 1975 Início das linguagens de quarta geração 4GL.1975 Surge a linguagem SmallTalk no centro de pesquisas da Xerox. Primeira linguagem 100% orientada a objetos. 1975 Surge a linguagem Ada, jundão entre Fortran e Pascal. 1978 Surge o MS-DOS, sistema operacional para PC e compatíveis. 1980 Leslie Lamport cria a primeira linguagem para texto conhecida como Latex. 1980 Surge o MS Word, processador de textos da Microsoft. 1982 11FUNDAMENTOS COMPUTACIONAIS Surge o Windows, como Sistema Operacional.1985 Unix firma-se no mercado como sistema multiusuário. 1990 Linus Torvalds anunciou a primeira versão oficial do kernel Linux. 1991 Nos laboratórios da Sun Microsystems nasce a linguagem Java. A primeira linguagem orientada a objetos e com a proposta de ser totalmente portável. 1991 É lançada a linguagem Python por Guido Van Rossum, linguagem de alto nível. 1991 Windows 3.1 e 3.11 com características de integração em rede.1992 Windows NT surge e disputa mercado com sistemas da Novell. 1993 Surgem linguagens visuais como Visual Basic, Visual C++ e Delphi Fazer um smart art para ficar mais visual esta evolução. 1995 Conceitos Básicos de Sistemas A definição clássica para sistema é uma disposição de partes ou dos elemen- tos de um todo, coordenados entre si, e que funcionam como estrutura organizada realizando uma determinada tarefa. Todo o sistema necessita de uma entrada, uma área de processamento e gera uma saída. Sob o ponto de vista computacional todo o sistema possui entradas, processa- mento e saídas. Pode-se dividir um sistema computacional em três partes como descrito a seguir: hardware, software e peopleware. Hardware Hardware, todo dispositivo físico conectado a um sistema computacional é responsável por organizar e movimentar as informações para dentro do sistema, pro- cessá-las e por exteriorizar os resultados. As entradas e saídas em um sistema com- putacional são feitas através de hardwares específicos conhecidos como periféricos. Estes dispositivos podem ser divididos em: 12FUNDAMENTOS COMPUTACIONAIS • Periféricos de entrada: São res- ponsáveis por introduzir dados e/ ou comandos ao processador. Mou- ses, scanners, câmeras, teclados e telas touchscreen são exemplos de dispositivos de entrada. • Periféricos de saída: São os respon- sáveis por mostrar aos usuários os resultados do processamento rea- lizado pelo sistema. Exemplos: vídeos, placas de som, impressoras e monitor. • Periféricos de entrada e saída: São responsáveis por facilitar o trânsito de informações entre diferentes par- tes de um sistema. Placa de redes, memórias, discos-rígidos, drivers de CD’s e/ou DVD’s, pendrives, telas touchscreen e impressoras multifun- cionais são exemplos de dispositi- vos que possibilitam tanto a entrada quanto a saída de dados no sistema. Estes dispositivos podem ser dividi- dos em duas categorias, dependendo do modo como são armazenados ou trafegam os dados por ele. Dispositivos de bloco, são aqueles que armazenam as informações em blocos e sua principal característica é a persistência dos dados, ou seja, os dados continua- ram presentes mesmo que o sistema esteja desligado. Discos rígidos, Drivers de CD, flash-memories, são dispositivos de bloco. Dispositivos de caracteres são aque- les cujos dados que passam por eles não são persistentes e transmitem ou recebem os dados de forma serial. Por exemplo: por- tas seriais, placas de redes, placas de redes wireless. A Unidade Central de Processamen- to (UCP) é o principal hardware de um sistema computacional, o qual possui duas funções principais que são a de controlar os dispositivos de entrada e saídas, e o de processar as informações e mostrar os re- sultados de seu processamento. A UCP é o cérebro do sistema com- putacional e consegue processar as infor- mações em altíssima velocidade devido a somente operar sobre zeros e uns, ou seja, a UCP só é capaz de somar ou comparar estes 13FUNDAMENTOS COMPUTACIONAIS valores. Outros dispositivos são adiciona- dos a UCP para garantir a performance do sistema tal como é mostrado na figura. A ULA, Unidade Lógica Aritmética, integra a UCP e é responsável por todas as operações aritméticas e lógicas durante a execução do sistema. A ULA é uma calculadora que realiza operações de soma e operações lógicas como and, or, xor, etc... A ULA em conjunto com os registradores e acumuladores são os elementos responsáveis pelo processamento. A UC, Unidade de Controle, é a parte da UCP responsável por enviar os sinais necessários aos outros elementos, a fim de tornar possível o envio e recebimento dos dados entre eles. A UC ordena a execução do processamento e executa o microcódigo pertencente aquela família de processador. A execução de uma instrução consiste em buscá-la na memória principal, decodi- ficá-la, processá-la e colocar o resultado, novamente, na memória. Além disso, a UC controla as interrupções recebidas ou enviadas para os dispositivos de entrada e saída. A Memória é um dispositivo de alta velocidade, usada para armazenar dados que serão processados pela UCP. O controle da memória é feito pela UCP. A memória está dividida em duas partes, a memória principal e a memória auxiliar. A BIOS (Basic Input Output Sys- tem) é uma rotina de inicialização, arma- zenada em uma memória ROM, que per- mite ao computador carregar seu sistema operacional armazenado no HD para a memória. Outras tarefas necessárias na inicialização do computador, também, é realizada pela BIOS, como por exemplo, o teste de checagem de energia ou POST (Power On Self Test). Sem as memórias seria impossível uma UCP executar um programa. Um pro- grama deve estar na memória principal para ser executado, preferencialmente em memórias voláteis. O armazenamento do programa em memórias não voláteis ser- ve para garantir a persistência dos dados quando há desligamento do sistema. A seguir, uma breve descrição de cada tipo de memória que compõe um computador. Memória Principal: Nela existem dois tipos de memória principal. Uma delas volátil, conhecida como RAM (RandomAccess Memory) e outra não volátil, co- nhecida como ROM, que mantém os da- dos mesmo com o computador desligado. Esta última é usada para fins específicos do sistema. Memória Auxiliar: Também conhe- cida como memória secundária é composta pelos dispositivos de entrada e saída como o disco rígido. Existem diferentes tipos de memó- rias voláteis e não voláteis. UCP e seus periféricos Fonte: MONTEIRO (2001) 14FUNDAMENTOS COMPUTACIONAIS A Hierarquia das memórias, segundo Tanenbaum (2007): Á medida que descemos na hierar- quia, três parâmetros aumentam. Primeiro, o tempo de acesso fica maior. Os registra- dores da CPU podem ser acessados em um nanossegundo ou menos. Memórias cache demoram um pequeno múltiplo dos registra- dores da CPU. Acessos a memória principal normalmente levam 10 nanossegundos... Acessos a fitas ou discos podem ser medidos em segundos se a mídia tiver de ser buscada e inserido no drive. Nome Descrição Tipo RAM Random Acces Memory- Memória de Acesso Randômico Volátil DRAM Dynamic RAM - É a memória convencional Volátil SDRAM Syncrhunous Dynamic Random Access Memory Volátil SRAM Static RAM - Memória RAM usada para cache de alta velocidade Volátil ROM Read Only Memory - Memória apenas para leitura Não Volátil PROM Programmable Read Only Memory Não Volátil EPROM Erasable Programmable Read Only Memory Não Volátil EEPROM Electrically Erasable Programmable Read Only Memory Não Volátil UCP e seus periféricos Fonte: Tanem baum (2007) 15FUNDAMENTOS COMPUTACIONAIS Hierarquia das memórias 16FUNDAMENTOS COMPUTACIONAIS Software Software é todo e qualquer programa processado por um computador. Serve para resolver algum problema ou automa- tizar atividades repetitivas. Podemos citar como exemplo os sistemas integrados de gestão ou SIG’s, são exemplos de softwares desenvolvidos para automatizar atividades de uma empresa, softwares CAD’s (Com- puter-Aided Design - Desenho auxiliado por computador ) e CAM’s (Computer- -Aided Manufac- turing ), que automa- tizam tarefas mais específicas, sistemas operacionais, editores de texto, sistemas de gerenciamento de banco de dados ou SGBD’s, dentre outros. Os softwares em um computador estão dispostos em cama- das para agrupá-los por finalidades, como mostra na figura. Para cada tipo de software haverá um tipo de profissional associado a ele. Se o hardware, ou mais especifica- mente a UCP, é o cérebro de um sistema computacional, o software é a inteligência, a alma. O software é a representação da solução ou as regras para encontrar a so- Exemplo de como os softwares estão organizados em um computador 17FUNDAMENTOS COMPUTACIONAIS lução de determinados problemas. Sua implementação, em geral, segue regras claras e fazem uso de diferentes metodologias e ferramentas de programação, dependendo do problema abordado. Dados versus Informação Fonte: Autor Os softwares, em um sistema computacional, executam tarefas baseados nos dados de entrada do sistema. Estes dados são interpretados e resultam em alguma informação relevante ao usuário. Portanto, dado é um elemento na sua forma bruta, que se for analisado isoladamente, não fornece nenhuma compreensão sobre um fato. Por exemplo se olhar isoladamente o número 22, ele não nos fornece nenhuma compreensão, porém se este número estiver num contexto por exemplo de idades das pessoas, ou quantidades de algo, isso já será uma informação. Outro exemplo da diferença entre dado e informação pode ser dado através da experiência que a empresa Walmart realizou cruzando informações de vendas, de cervejas e de fraldas descartáveis. Toda a venda é registrada no sistema da empresa e, olhando isoladamente as vendas de cervejas e fraldas não é possível compreender alguma relação entre elas. Como uma estratégia de vendas, a empresa Walmart queria verificar a hipótese de que o perfil dos consumidores de cerveja e de fraldas descartáveis eram semelhantes. Usando técnicas de Data Mining, a empresa verificou esta hipótese através do cruzamento dos dados de vendas de cervejas e fraldas descartáveis, concluindo que estes consumidores eram homens casados, entre 25 e 30 anos, que compravam cer- vejas e fraldas às sextas-feiras, no caminho do trabalho para casa. Com base nesta informação, a Walmart decidiu organizar as gôndolas de fraldas próximas às de cer- veja, obtendo um aumento de vendas nas sextas-feiras de 30%. Portanto, em um banco de dados, como mostra a imagem, o que está armazenado nele são elementos brutos, sem nenhuma relação entre si. Ao agrupá-los de tal maneira que forneça algo relevante a quem os observa, isto torna-se uma INFORMAÇÃO. Tratamento dos dados Fonte: Autor 18FUNDAMENTOS COMPUTACIONAIS Processar dados é o principal objetivo de um sistema computacional. Existem dois tipos de processamento em um sistema de computador. Processamento em Lote: Também conhecido como Processamento Batch e é caracterizado pela execução de uma série de programas, um após o outro, sem a intervenção do usuário. Este tipo de pro- cessamento foi muito utilizado na década de 50, nos centros de processamento de dados. Hoje em dia ele não é mais utili- zado, mais por uma questões de ambientes de processamento, do que da sua aplicação em si. Processamento On-Line: É aquele caracterizado pela interação entre usuário e software durante a execução de suas tare- fas. Pode ser chamado de processamento em tempo-real, pois geralmente está orga- nizado de tal maneira a poder executar suas tarefas a uma velocidade igual ou superior à velocidade com que os eventos externos ocorrem. Um exemplo deste tipo de pro- cessamento pode ser visto nos softwares de gestão das empresas, onde o evento de venda ou a produção de um determinado produto, automaticamente atualiza o es- toque. Os ambientes de processamento evoluíram juntamente com a evolução do Hardware. O software responsável por fornecer o tipo de ambiente adequado ao processamento é o Sistema Operacional. A medida que os processadores foram au- mentando sua capacidade de processamen- to, novas necessidades de usuários foram surgindo e isto impulsionou os cientistas da computação a desenvolverem novos sistemas operacionais para atendar essas no- vas necessidades. Ao longo da história dos computadores quatro tipos de ambientes de processamento surgiram: Monotarefa, Multitarefa, Multiprogramação e Multi- processamento. No ambiente monotarefa, somen- te, uma tarefa por vez pode ser executa- da. Este ambiente é o que se aproxima do processamento Batch, pois ao executar um determinado programa, o usuário deveria aguardar seu término para poder executar outras tarefas. Um exemplo deste ambiente é o sistema operacional DOS. O ambiente multitarefa é caracteri- zado pela concorrência entre processos, ou seja, ele executa mais de uma tarefa desde que os programas sejam escritos para esta atividade. Por exemplo, poder enviar dois arquivos, simultaneamente, à impressora sem que haja impressão intercalada dos mesmos. No ambiente de multiprograma- ção, diferentes programas podem ter seu processamento realizado em um mesmo computador, compartilhando recursos do sistema. Desta forma, dois processos po- dem alocar um mesmo recurso, em que irão utilizar conforme uma determinada priorização e ordem. A diferente entre o ambiente anterior e o multiprogramação é apenas teórica. Neste tipo de ambiente surgiu o conceito de compartilhamento de tempo ou timesharing, onde o sistema operacional organiza a execução de cada processo, garantindo que cada processo use os recursos necessários, principalmente a UCP, em um determinado momento e com determinada duração. 19FUNDAMENTOS COMPUTACIONAIS O ambiente multiprocessador sig- nifica mais de uma UCP disponível para executar os programas. Neste ambiente, várias UCP’s executam as solicitações dos programas, porém não basta adicionar mais processadores para garantir um maiorpoder computacional. É necessário que os sof- twares estejam preparados para dividir suas tarefas entre os processadores disponíveis. Tanto os sistemas operacionais precisam estar preparados para dividir suas tarefas, quanto os softwares aplicativos, também, precisam ser capazes de perceber a existên- cia de mais de um processador. Essa ideia também é aplicada à processadores com mais de um núcleo. Peopleware A constante evolução do hardware e software ocasiona um grande desconforto aos usuários destes ambientes. Um sistema computacional não sobrevive e nem mesmo nasce sem a intervenção das pessoas, seja como usuários ou como desenvolvedores e, a estas pessoas, denominam-se de peopleware. 20FUNDAMENTOS COMPUTACIONAIS O ambiente peopleware é tão com- plexo quanto os softwares e hardwares exis- tentes atualmente. Esta complexidade deve- -se ao fato de estarem envolvidos conceitos que não são totalmente explícitos tais como: valores culturais e organizacionais, crenças, políticas, aspectos comportamentais e so- cioeconômicos, estruturas organizacionais, dentre outros. Para os profissionais que desenvol- vem ou mantém os sistemas computacio- nais é preciso conhecer os aspectos que estão indiretamente envolvidos na sua utilização, e estar atentos as habilidades e competências que devem ser desenvolvidas para se manterem sempre atualizados. Microprocessadores Os microprocessadores, como vimos anteriormente, são os principais componen- tes de um computador. São eles que con- trolam os dispositivos, ordenam a execução das instruções, isto é, os programas. Enfim, tudo o que acontece em um computador é feito pela CPU. A companhia Intel, em 1971, lan- çou o seu primeiro microprocessador, o 4004, cuja frequência de operação era de 0, 1 MHz, barramento de endereços de 4 bits, acomodava 2.300 transístores e era capaz de processar 0,06 MIPS. Uma dé- cada depois, em 1982, a Intel lançou seu processador 80286, com poder de processa- mento quinze vezes maior, barramento de endereços de 16 bits, capaz de processar 0,90 MIPS. É dada, então, a largada para a evolução dos microprocessadores, onde outras companhias, como a AMD e Cyrix, entram no mercado. Outras fabricantes de micropro- cessadores, destinados a aplicações mais especificas também evoluíram a partir do surgimento do CHIP, que segmentaram os microprocessadores em duas famílias distintas: os processadores CISC e RISC, cujas particularidades serão vistas ao longo deste capítulo. A Figura ilustra como está estrutura- da uma CPU e seu conjunto de instruções. Uma UCP, como visto anteriormen- te, deve executar duas tarefas: execução do programa e controle dos periféricos. Para cada uma destas tarefas existe um compo- nente responsável, interno à UCP. A seguir uma breve descrição de cada um destes elementos. A UCP roda em conjunto com a me- mória, desta forma é necessário transferir o conteúdo da memória para seus registra- UCP e seus componentes Fonte: M O N TEIRO (2001) 21FUNDAMENTOS COMPUTACIONAIS dores internos e o resultado da execução deve ser transferido de seus registradores para a memória. Um programa na memória do computador é uma combinação de instruções e dados, sendo assim o trabalho da UCP buscar a próxima instrução, decodificá-la, obter os dados (operandos), executar a instrução e colocar o resultado novamente na memória. Isto ocorre milhões de vezes por segundo após o ligamento da UCP. O fluxo, mostrado na figura exemplifica o ciclo da UCP após sua inicialização. Ciclo da UCP após ligada Fonte: M O N TEIRO (2001) De fato, a execução de um programa é feito pela ULA (Unidade Lógica e Arit- mética) de uma UCP, porém, para tornar isso possível é necessário ordenar a sequ- ência de eventos que buscam a instrução e operandos da memória principal e colocar nos registradores internos da UCP. Toda esta comunicação é feita por sinais elétricos enviados através do barramento de controle e controlado pela UC e, portanto, esta é a segunda função da Unidade de Controle. A figura mostra um diagrama de blocos da uma UCP e os principais elementos envolvidos no processamento dos progra- mas armazenados na memória principal. 22FUNDAMENTOS COMPUTACIONAIS Diagrama de blocos de uma UCP Fonte: M O N TEIRO (2001) A UC, para pegar a próxima instrução a ser executada, deve primeiramente enviar o endereço da memória onde está a próxima instrução, colocando-o no REM (Registrador de endereço de memória), em seguida, através do barramento de controle habilitar a leitura da MP (Memória Principal). Este passo faz com que o valor da ins- trução seja colocado no RI (Registrador de Instrução). Esta instrução é decodificada e as microinstruções são executadas pela UCP. O resultado então é colocado no RDM (Registrador de Dados da Memória). Todas essas são ordenadas pelo sinal do relógio. A principal função dos registradores é armazenar temporariamente os dados que serão ou foram processados pela UAL, ou seja, um dado para ser transferido da Memória Principal para a UAL deverá ser armazenado, primeiramente, em um re- gistrador. Também o resultado parcial de uma operação aritmética ou lógica deverá ser armazenado temporariamente em um registrador para que seja utilizado para a conclusão da instrução. Todas as CPUs possuem uma quan- tidade de registradores destinados a dife- rentes operações. Por exemplo, em um microprocessador 8086, de 8 bits da Intel, possui registradores acumuladores (AX), registradores base (BX), registradores de segmentos (para acesso a memória), regis- tradores de dados, dentre outros. A quanti- dade e finalidade de cada registrador pode ser encontrado no datasheet de cada pro- cessador, fornecido pelo fabricante. Relógio é o gerador de pulsos que sincroniza a execução e controle das instru- ções dentro de uma UCP. Isto quer dizer que a cada ciclo, um evento ocorre dentro da CPU. Inicialmente, os microprocessa- dores não executavam uma instrução a cada pulso de clock. Em 1992 a Intel lançou o 80846 DX2 que foi o primeiro processador de sua família a processar uma instrução por ciclo de relógio. Outras arquiteturas de processadores, com mais de um núcleo, permitem que mais de uma instrução seja 23FUNDAMENTOS COMPUTACIONAIS executada por ciclo de relógio. Os registradores de endereço ser- vem para armazenar dados provenientes ou a serem colocados no barramento de dados. Em geral, o RDM possui o mes- mo tamanho do barramento de dados. Da mesma forma, o REM é um registrador de endereços de memória e possui um tama- nho igual ao do barramento de endereços da memória. As interrupções foram uma forma que os engenheiros de microprocessado- res encontraram para lidar com eventos assíncronos, isto é, o uso dos dispositivos de entrada e saída não ocorrem de forma ordenada, ainda mais em sistemas inte- rativos, como os computadores atuais. As interrupções fazem parte do barramento de controle conectado à UC. A seguir a alguns exemplos de controle proveniente deste barramento. INT - Entrada que serve para que dispositivos externos possam interromper o microprocessador para executar uma ta- refa que não pode esperar o fim de um processamento. NMI - Sinal de interrupção especial para ser usado em emergências e deve ser executada imediatamente. INTA - Este sinal de saída do micro- processador serve para indicar ao dispositivo que recebeu sua interrupção (Interruption Acknowledge). Nos microprocessadores o método de processamento é chamado de pipeline, ou seja, a execução das instruções são fei- tas como em uma linha de montagem. A execução de uma instrução é dividida em estágios independentes, como por exemplo, a leitura, escrita, decodificação de instrução são etapas distintas e devem durar o mesmo tempo para serem concluídas. Portanto, ao iniciar a execução de um programa, cada etapa de execução, de um microprocessador, ocorre a cada pulso de clock, sendo execu- tadas uma de cada vez,conforme imagem abaixo. Execução das instruções em pipeline. Fonte: dosponível aqui CISC x RISC Pode-se classificar as microproces- sadores quanto ao tipo de instruções que eles possuem: CISC (Complex Instruction Set Computer) que possuem um conjunto complexo de instruções e o RISC (Reduced Instruction Set Computer) que possuem um conjunto reduzido de instruções. Nos primórdios dos microprocessa- dores, todos os processadores eram RISC, o que levava os programadores a serem obrigados a ter um conhecimento profun- https://sites.google.com/site/unipliarquitetdecomputadores/_/rsrc/1392757022813/aulas/aula-7---arquitetura-pipeline/arquiteturadecomputadores2.png 24FUNDAMENTOS COMPUTACIONAIS do sobre o processador, pois todos os pro- gramas eram elaborados em linguagem de máquina pura, ou assembler. Os projetistas de microprocessadores, para facilitar a vida dos programadores, resolveram embutir no próprio processador, programas para implementar algumas instruções mais complexas. Esta técnica é denominada de microprogramação. Através desta técnica, novas funções eram adicionadas diretamente no hardware e, a medida que novas necessidades sur- giam, novas instruções eram adicionadas, levando a uma sobrecarga do microproces- sador e tornando-os cada vez mais com- plexos, daí o termo CISC. A sobrecarga no processador torna- va-o mais lento, sendo necessário buscar meios para aumentar a velocidade através de melhorias no hardware. Estas melhorias logo chegariam ao limite, sendo necessá- rio aumentar o seu tamanho. No entanto, com base em pesquisas, descobriu-se que 85% dos programas utilizavam apenas três instruções, atribuições, comparações (if ’s e chamadas de procedimentos, o que torna- va desnecessário adicionar outras funções aos processadores que raramente iriam ser utilizadas. Além deste fato, dois outros fatores levaram a indústria de microprocessadores a voltarem à arquitetura RISC: o aumento significativo da velocidade das memórias e melhora das técnicas de compilação que geravam códigos, se não melhores, com a mesma eficiência dos microcódigos im- plementados no hardware. No entanto, ao se implementar funções complexas a nível de software, exige que o processador exe- cute mais funções na unidade de tempo, levando a dissipar mais energia. Outra desvantagem das máquinas RISC é que elas não são boas para lidar com cálculos que envolvem números em ponto flutuante. A tabela enumera as principais ca- racterísticas que diferem um processador CISC de um RISC. RISC CISC Instruções simples que levam um ciclo de clock Instruções complexas que levam múltiplos ciclos de clock Apenas instruções LOAD/STORE referenciam a memória. Todas as instruções podem referenciar a memória. Altamente pipeline Não possui pipeline ou é pouco usado Instruções executadas pelo hardware Instruções executadas pelo microcódigo Instruções com formato fixo Instruções de diferentes formatos Poucas instruções e modos Muitas instruções e modos A complexidade está no compilador A complexidade está no microcódigo Múltiplos conjuntos de registradores Conjunto único de registradores Principais diferenças entre microprocessadores RISC e CISC 25FUNDAMENTOS COMPUTACIONAIS A grande maioria dos microprocessa- dores do mercado usam as mesmas técnicas usadas desde o surgimento dos primeiros microprocessadores, assim podendo ganhar maior poder de processamento construindo UCP’s com várias UAL mais lentas, divi- dindo a execução das instruções entre elas. Uma das principais vantagens deste tipo de arquitetura é diminuir a dissipação de calor, uma vez que estas unidades operam em uma velocidade menor. As máquinas paralelas podem ser classificadas em três diferentes categorias, baseadas em como os dados e instruções trafegam dentro da UCP. SISD Single Instruction, Single Data Fo nt e: d os po ní ve l a qu i SIMD Single Instruction, Multiple Data Fo nt e: d os po ní ve l a qu i MIMD Multiple Instruction, Multiple Data Fo nt e: d os po ní ve l a qu i https://en.wikipedia.org/wiki/SISD https://en.wikipedia.org/wiki/SIMD https://commons.wikimedia.org/wiki/File:MIMD.svg QUESTÕES DO CAPÍTULO 1 1. Computadores podem funcionar sem BIOS e sem Memória Principal? Por quê? 2. Componentes do Processador: Registradores, ULA, UCP, etc. Especifique o funcionamento de cada um dos componentes do computador relacionando-os. 3. Pesquise quais os tipos de Microprocessador foram usados nos últimos anos nos videogames e computadores pessoais. CISC ou Risc. 4. Quem são as peopleware? Como podemos identificá-las? 5. Explique a arquitetura de Von Neumann. 27FUNDAMENTOS COMPUTACIONAIS SISTEMAS OPERACIONAIS Representação da Informação e gerenciamento O sistema operacional é uma camada de software que controla os recursos do sistema e estende as funcionalidades destes recursos para suportar diferentes tipos de programa de usuários, tais como compiladores, banco de dados, interfaces amigáveis, redes de comunicação, dentre outros aplicativos. Todo o sistema operacional é desenvolvido para um hardware específico, ou seja, um sistema operacional de um smartphone é diferente de um sistema operacional usado por um compu- tador pessoal. Todo e qualquer Sistema Operacional tem como função principal distanciar os programadores ou usuários dos detalhes de implementação dos dispositivos físicos conectados ao com- putador, inclusive do processador, ou seja, sempre que um usu- ário, ou melhor um programa de usuário, necessitar de alguma tarefa, quer do processador quer dos dispositivos de entrada e saída, esta solicitação deverá ser feita ao Sistema Operacional por meio de uma função denominada Chamada ao Sistema. Esta função dispara uma rotina que irá comunicar-se com o 28FUNDAMENTOS COMPUTACIONAIS dispositivo, executando uma série de outras tarefas de controle daquele dispositivo. Estrutura de um Sistema Operacional Um sistema operacional possui seis componentes básicos na sua estrutura, como mostra a figura. Cada um destes elementos possui uma tarefa importante para o funcionamen- to e performance do sistema operacional. Embora a complexidade destes elementos esteja relacionada com o tipo de processa- mento a que o sistema operacional foi de- senvolvido, todos os sistemas operacionais de uso geral terão estes elementos. Drivers de dispositivos são progra- mas específicos de controle dos dispositivos de entrada ou saída, como discos rígidos, vídeos, mouses, dentre outros. Estes pro- gramas são necessários para que o sistema operacional interaja com os dispositivos. No início dos sistemas computacionais ha- via poucas opções de hardware disponível e, portanto, os drivers faziam parte do có- digo do sistema operacional. Atualmente, com a grande quantidade de diferentes dispositivos que podem ser agregados aos computadores, estes drivers são feitos pelos próprios fabricantes. Ao se instalar um novo dispositivo, é necessário registrar (instalar) o driver no sistema operacional para que esse seja reconhecido pelo mesmo. O Gerenciador de Processos é res- ponsável pela implementação da multipro- gramação baseada no compartilhamen- to de tempo (time-sharing) nos sistemas operacionais modernos, permitindo que diferentes programas sejam executados em paralelo. A implantação do gerenciador de processos é feita através de heurísticas que garantem o direito de uso dos recursos, em um determinado momento, a cada um dos processos ativos. O Gerenciador de Memória é res- ponsável pela alocação e remoção dos pro- gramas que estão sendo executados pelo sistema operacional, sendo programas de usuários ou programas do próprio sistema operacional. Além disso, o gerenciador de memória controla o espaço de endere- çamento gerado pelo sistema operacional, que muitas vezes é superior ao espaço físico disponível no computador. Com a multiprogramação fez-se a necessidade de compartilharo uso, além do processador, dos dispositivos conecta- dos ao computador. O Gerenciador de Dispositivos garante o compartilhamento dos recursos entre os processos ativos em um computador. Este compartilhamento, apesar de proporcionar maior desempenho e interatividade ao sistema operacional, produz efeitos indesejáveis aos sistemas operacionais, sendo um deles chamado de deadlock que ocorre quando uma deter- minada sequência de alocação de recur- sos, pelos processos, leva ao travamento do computador. A solução para este tipo de problema, pode consumir muitos recursos financeiros e de processamento e, portan- Estrutura de um Sistema Operacional 29FUNDAMENTOS COMPUTACIONAIS to, os sistemas operacionais de uso geral, normalmente não a implementam. Através do Gerenciador de Arqui- vos de um sistema operacional que são gerenciados espaços alocados, criados e deletados arquivos executáveis, mapeados arquivos em disco e é feita a manipulação de arquivos e diretórios. O sistema arquivos de um sistema operacional é uma abstração para a armazenagem e recuperação dos dados gerados durante a execução de um computador. Estes dados podem ser gera- dos ou por programas de usuários ou pelo próprio sistema operacional. É através do Gerenciador de Arquivos de um sistema operacional que são gerenciados os espaços alocados, a criação e exclusão de arquivos executáveis, diretórios, mapeamento de arquivos, etc. Outra tarefa importante do gerencia- dor de arquivos é garantir a comunicação entre os processos ativos durante a execução de um computador. O Interpretador de comandos é uma interface simples e amigável que os sistemas operacionais disponibilizam aos usuários para que possam interagir. O in- terpretador de comandos é o prompt que aparece na inicialização do sistema ope- racional. Tipos de Sistemas Operacionais • SO para Computadores de Grande Porte São sistemas operacionais capazes de gerenciar grande número de entradas e saídas, milhares de discos rígidos e com milhares de terabytes de dados a serem manipulados, conhecidos também como mainframes. Estes computadores ainda existem em grandes corporações e são aqueles que, geralmente, ocupam espaços de salas inteiras. As aplicações destes ti- pos de computadores vão desde grandes servidores Web, comércio eletrônico em larga escala e transações eletrônicas entre grandes empresas (business-to-business). Este tipo de sistema operacional é feito para suportar e executar imensas quan- tidades de jobs simultaneamente e oferece três tipos de processamento: • Processamento em lote, como por exemplo, o relatório de vendas de cadeias de lojas; • Processamento de transações, que suportam uma grande quantidade de pequenas requisições, por exem- plo sistema de reserva de passagens aéreas; • Processamento por compartilha- mento de tempo, que permite que inúmeros usuários realizem seus jobs, simultaneamente no sistema, como consultas a banco de dados. Um exemplo deste tipo de sistema operacional é o OS/390 da IBM. • SO para Servidores São sistemas operacionais que rodam em máquinas de médio porte e até mes- mo em mainframes, cuja função é atender múltiplos usuários de uma vez, em rede, 30FUNDAMENTOS COMPUTACIONAIS permitindo assim o compartilhamento de recursos de hardware e software daquele sistema. São usados em servidores Web, sistemas gerenciadores de banco de dados, serviços de e-mail e compartilhamento de arquivos. Os sistemas típicos de uso nes- tas aplicações são Unix, Linux e Windows Server. • SO de Multiprocessadores Um modo comum de incrementar o poder computacional é conectar várias CPUs e dividir as tarefas entre elas. Po- dem-se dividir os sistemas multiprocessados em duas categorias, a primeira é aquela onde as várias CPUs estão conectadas sobre um mesmo barramento e, para estes casos, os sistemas operacionais devem apenas ser capazes de identificar a presença de mais de um processador e dividir as tarefas entre eles, compartilhando o restante dos recursos da máquina, como memória. Estes sistemas também podem ser sistemas operacionais de servidores ou de rede. A outra maneira é conectar diferen- tes máquinas a uma rede de comunicação e dividir as tarefas do sistema operacional entre elas. No entanto, este tipo de sistema operacional deve levar em consideração as diferentes máquinas conectadas à rede. Um exemplo de sistema operacional mul- tiprocessado entre diferentes máquinas é o Sistema Corba (Common Object Request Broker Architecture) de implementação de middlewares (programa de computador que faz a mediação entre software e demais aplicações). • SO de Computadores Pessoais São sistemas operacionais multi- programados que oferecem uma interface amigável aos usuários e permitem que pro- gramas aplicativos possam ser executados naquele ambiente. Podem estar instalados em uma rede de computadores, solicitando tarefas ou informações à servidores. A estes sistemas pode-se chamar de sistemas clien- tes, que são versões reduzidas dos sistemas operacionais de Servidores. Linux, Windows, Mac e OS são exem- plos de sistemas que operam em compu- tadores operacionais. • SO de Tempo Real São sistemas operacionais que pos- suem restrições de tempo para a execução de determinadas tarefas. Este tipo de sis- tema operacional é comum no controle de processos industriais onde há coleta de dados do processo, leitura de entradas e es- crita nas saídas, deve ocorrer em intervalos de tempo bastante rígidos. Estes sistemas são denominados sistemas operacionais de tempo real crítico, onde qualquer atraso no processamento de uma tarefa ocasiona uma falha no processo. Existem outros sistema de tempo real não crítico, onde um atraso ocasional de uma tarefa é permitido. Sistemas de áudio de multimídia, como o VxWorks e QNX são exemplos conhecidos desta categoria. • SO Embarcados São sistemas operacionais instalados em dispositivos que geralmente cabem no bolso do usuário e permitem rodar uma quantidade limitada de aplicações, como agendas de endereços, planilhas eletrônicas 31FUNDAMENTOS COMPUTACIONAIS dentre outras. Os computadores de bordo automotivo são exemplos de equipamen- tos que possuem um sistema operacional embarcado, porém não são os únicos, te- levisores, fornos microondas, geladeiras, telefones celulares, videogames enfim, todos os equipamentos microprocessados necessi- tam de uma espécie de sistema operacional para poderem rodar. • SO de Cartões Inteligentes Nasce uma nova categoria de siste- mas operacionais cujas restrições de con- sumo de energia e segurança são requisitos básicos. Os cartões de bancos são exemplos da utilização deste tipo de sistema operacio- nal que, muitas vezes, são orientados a Java, gravados em ROM e implementados com multitarefa e inclusão de novos aplets ao cartão. No entanto, estes tipos de recursos enfraquecem a segurança do sistema. Sistemas Numéricos e Representação de Dados Os algarismos, como conhecemos hoje, surgiram no final do Século VI, porém, durante este século não existia o zero nos algarismos conhecidos pelo Ocidente. O zero já era aplicado neste mesmo século pe- los Hindus. Foi apenas em 825 d.C. que um sábio de Bagdá, chamado al-Khowarizmi, trabalhando na tradução de todos os livros de matemática de seu reino, encontrou do- cumentos hindus que apresentavam o siste- ma numérico decimal. Al-Khowarizmi, maravilhado com a descoberta, escreveu um livro chamado Arte Hindu de Calcular, que popularizou mundialmente este sistema, conhecido como indo-arábicos. O termo algarismo foi utilizado em homenagem a este sábio. A base do sistema numérico indo- -arábico é 10, pois possui dez algarismos. Porém, outras bases surgiram em outras civilizações que ainda são usadas nos dias atuais. Exemplo disto é o sistema numérico inventado pelos babilônios, possuíam 60 algarismos e ainda hoje é utilizado para representar ângulos e tempo.Nos sistemas de computadores os sistemas numéricos mais utilizados são o de base 2, conheci- do como Binário, o de base 8, conhecido como octal e o de base 16, conhecido como hexadecimal. Todo o número escrito em um de- terminado sistema de numeração de base b pode ser escrito através do seguinte po- linômio: N = anbn + an-1 bn-1 + ... + a1 b1+ a0 b0 N = número a = algarismo b = base Para a < b, onde a 0 é o algarismo menos significativo (à direita), an é o al- garismo mais significativo do número (à esquerda) e b é a base do número. Esta fórmula serve para converter qualquer base, para a base decimal. Sistema Decimal Um sistema decimal usa dez algaris- mos (0 a 9). Neste sistema, cada elemento a esquerda de um algarismo possui uma ordem de grandeza 10 vezes maior que o da sua direita. Portanto, considerando o polinômio de um sistema de numeração, 32FUNDAMENTOS COMPUTACIONAIS podemos decompor o número decimal 1325 no seguinte polinômio: 1325 = 1 . 103 + 3 . 102 + 2 . 101 + 5 . 100 Exemplo: Tomando como referência a base 5: (4130)5 4*53 + 1*52 + 3*51 + 0*50 = 500 + 25 + 15 + 0 = (540)10 Onde: a3 = 4, a2 = 1, a1 = 3, a0 = 0 b = 5 Sistema Binário O sistema binário possui apenas dois algarismos, zero e um. Ele simplifica e agi- liza a maneira dos computadores realizarem operações. Outra vantagem deste sistema é usar menos espaço de memória para arma- zenar o dado, se comparado com o sistema decimal. Qualquer número, representado na base binária, deverá ser interpretado como o seguinte polinômio, para transformá-lo em decimal: N = bn2n + bn−1 2n−1 + ...+ b1 21 + b0 20 Exemplo: Nos computadores, o sistema binário, tem a função de realizar operações lógicas, cujo resultado é verdadeiro ou falso, e também para cálculos matemáticos simples e com- plexos. A representação de números inteiros, reais, complexos, etc. É feito através da com- binação e organização dos números binários. Na terminologia dos computadores, palavra é um grupo de algarismos binário (bits) que podem ocupar uma localização na memória, e, que podem ser processados de uma só vez, podendo ser um número binário que é para ser manuseado como um dado, ou, uma instrução que diz ao computador que operação deve ser execu- tada. Pode ser também um caractere ASCII representando uma letra do alfabeto, ou ainda, um endereço que diz ao processador onde se localiza um dado. Desta forma temos os seguintes con- juntos de representação de dados: • Bit (menor informação tratada pelo computador) • Nibble: 4 bits (16 variações); • Dígito: 6 bits (36 variações); • Byte: 8 bits (256 variações); • Meia palavra: 16 bits (65.536 variações); • Palav r a (word): 32 bits (4.294.967.296 variações); • Palavra dupla (dword): 64 bits (18.446.744.073.709.551.616 variações). • Palavra quádrupla: 128 bits 33FUNDAMENTOS COMPUTACIONAIS Unidades de Bytes e conversões Em sistemas computacionais o conjunto de bytes possuem denominações espe- cíficas conforme sua quantidade. Veja algumas delas na tabela abaixo: Unidades de Bytes Por exemplo: Temos 20MB e que- remos descobrir quantos bits contém nele basta fazer o seguinte cálculo: 1 MB = 1024 KB, logo, 20 MB * 1024 = 20480 KB. 1KB = 1024 Bytes, logo 20480 KB * 1024 = 20.971.520 Bytes. 1 Byte = 8 bits, logo 20.971.520 Bytes * 8 = 167.772.160 Bits Sistema Octal Um sistema Octal possui 8 algaris- mos, 0, 1, 2, 3, 5, 6, 7, é representado pelo seguinte polinômio: N= bn8n + bn−1 8n−1 + ... + b1 81 + b0 80 Exemplo: Fonte: dosponível aqui http://robsoniguaba.blogspot.com.br/2015/12/unidade-de-medida-de-computador.html 34FUNDAMENTOS COMPUTACIONAIS Sistema Hexadecimal Um sistema Hexadecimal possui 16 algarismos, 0, 1, 2, 3, 5, 6, 7, 8, 9, A, B, C, D, E, F, onde os algarismos alfabéticos equivalem ao A = 10, B = 11, C = 12, D = 13, E = 14 e F = 15. Um número em um sistema hexadecimal é representado pelo seguinte polinômio: N=bn16n+bn−116n−1+...+b1161+b0 160 Exemplo: O sistema numérico Hexadecimal é utilizado também nos sistemas computado- res, porém, apenas para visualizar de forma mais amigável. É bastante usado para a programação em linguagem assembly, pois cada dígito equivale a uma palavra, tor- nando o programa um pouco mais legível. Mudança da Base 10 para base Binária Para mudar um número decimal para base binária, basta dividir o número sucessivamente por 2 até encontrar um valor menor que 2. Resultado: 10010112 Quanto maior a base de um sistema de numeração, menor o número de algarismos necessários para representar um valor. 35FUNDAMENTOS COMPUTACIONAIS O resultado é obtido com os restos da divisão, e sempre da direita para a es- querda, como indicada a seta para a leitura do número. Mudança da Base 10 para a Base Octal A mudança da base decimal para a base octal é feita por meio de divisões su- cessivas até encontrar um valor menor que 8. De fato, esta regra serve também para transformar um número decimal para qualquer outra base. Por exemplo, para converter o número (75)10 basta dividir o número sucessivamente como mostra a imagem: Resultado: (113)8 O resultado é obtido com os restos da divisão, e sempre da direita para a esquerda, como indicada a seta de leitura do número. Mudança da Base 10 para a Base Hexadecimal Para mudar um número decimal para hexadecimal, basta dividi-lo sucessiva- mente por 16 até encontrar um valor me- nor que 16. Por exemplo, para converter o número 7510 para a base hexadecimal faça. Resultado: B416 O resultado é obtido com os restos da divisão, e sempre da direita para a esquerda, como indicada a seta de leitura do número. Nesse é importante lembrar que os números precisam ser convertidos para Hexadecimal, por exemplo o 11 que é representado pela letra B na base hexadecimal. Mudança entre bases de potência 2 A base binária é sempre intermediá- ria, portanto deve-se converter o número na base de origem para a base binária e desta para a base de destino, observando sempre a potência de 2 como agrupamento de bits, que devem ser agrupados sempre da direita para a esquerda. • Da base 2 para base 8 Como 8 = 23, emprega-se agrupa- mento de 3 em 3 bits: (111010111)2 = (?)8 111 010 111 7 2 7 (111010111)2 = (727)8 • Da base 2 para base 16 Como 16 = 24, emprega-se agrupa- mento de 4 em 4 bits: 36FUNDAMENTOS COMPUTACIONAIS (1011011011)2 = (?)16 0010 1101 1011 2 13 11 (1011011011)2 = (2DB)16 • Da base 8 para base 16 É necessário usar a base binária como intermediária. Como 8 = 23, cada dígito octal vira 3 bits para a obtenção do valor binário. Após, como 16 = 24, os agrupamen- tos de 4 bits são usados para o valor final. (2E7A)16 = (?)8 0010 1110 0111 1010 010 111 001 111 010 2 7 1 7 2 (2E7A)16 = (27172)8 Aritmética Não Decimal Adição Binária A soma binária é igual a soma de números decimais, porém deve-se levar em conta que só existem dois algarismos neste sistema. A seguir todas as possibilidades na soma binária. 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0, e vai 1 ou 102 1 + 1 + 1 = 1, com “vai um” ou 112 Exemplos: Subtração Binária Em binário, a subtração ocorre da mesma forma que na base decimal. Ocorre o “empréstimo” caso o resultado seja menor que 0. Quando o minuendo for menor que o subtraendo, deve ocorrer o empréstimo (borrow) no valor da base, no caso 2, do primeiro algarismo diferente de zero à es- querda. 37FUNDAMENTOS COMPUTACIONAIS Exemplos: Adição Octal Procede-se da mesma maneira que na base binária, respeitando o limite do algarismo, neste caso 7. Se a soma for maior que 7, este fica sendo 0 e adiciona-se 1 ao algarismo posterior. Subtração Octal Procede-se da mesma maneira que na base binária, observando a regra do em- préstimo da base, neste caso 8, do primeiro algarismo diferente de zero à esquerda. Adição Hexadecimal Procede-se da mesma maneira que na base binária, respeitando o limite do algarismo, neste caso F (15). Se a somafor maior que 15, este fica sendo 0 e adiciona-se 1 ao algarismo posterior. Subtração Hexadecimal Procede-se da mesma maneira que na base binária, observando a regra do em- préstimo da base, neste caso 16, do primeiro algarismo diferente de zero à esquerda. 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1, com “empréstimo” de 2 38FUNDAMENTOS COMPUTACIONAIS Representação em Tamanho Fixo Consiste na definição de um núme- ro fixo de bits a serem empregados para representar um número. É o que ocorre nos computadores digitais, dependendo da arquitetura do computador, tamanho do barramento e registradores. Exemplos: O número (4)10 representado em uma arquitetura binária de tamanho 6, é escrito da forma: 000100 Em arquitetura de tamanho 8: 00000100 O Overflow ocorre quando não é possível armazenar um determinado valor na quantidade de bits definida como tama- nho na arquitetura. Em geral, é resultado de operações matemáticas. Na prática pode corromper a memória por escrever em um endereço que deve fazer parte de outro dado. Exemplo, para representação em 4 bits. Representação Números Negativos Para representar números negativos, convencionou-se o emprego de um bit de sinal, o mais significativo (mais à esquerda): 0 = positivo 1= negativo Será visto duas formas de se repre- sentar um número, que permita a definição de números positivos e negativos: Sinal- -Magnitude e Complemento de 2. Sinal-Magnitude Uma representação de números bi- nários em sinal-magnitude divide a infor- mação em duas partes. 1 bit para o sinal (o mais significa- tivo) Demais bits para a magnitude (valor absoluto do número) Desta forma, o valor em binário uti- lizado para representar o número positivo ou negativo é o mesmo, variando apenas o bit de sinal. Fonte: dosponível aqui http://s3.amazonaws.com/magoo/ABAAAABbUAI-27.jpg 39FUNDAMENTOS COMPUTACIONAIS Se o tamanho determinado para a representação de um número for “n”, então será possível representar os valores de -(2n-1 - 1) até (2n-1 - 1) 2n-1 pois reserva-se um bit para o sinal. Subtrai-se 1 pois o primeiro valor a ser representado é o 0. Exemplo: Se “n” for 8, em um byte podemos representar os valores: -(27 - 1) até (27 - 1) -127 até 127 256 valores diferentes Neste caso serão duas representações para o zero. Um inconveniente da repre- sentação sinal-magnitude. Complemento de 2 Em matemática, complemento de um número é a quantidade que falta para completar um valor. Por exemplo, o com- plemento de um ângulo agudo é o número de graus necessários para chegar a 90. Em operações aritméticas, comple- mento à base de um número N é o valor necessário para se obter o valor máximo representável pela base, e se obtém da se- guinte forma: • Subtrai-se de cada algarismo o maior algarismo da base (complemento de base-1) • Soma-se 1 ao resultado (complemen- to de base). Representação em complemento de base de 297 999 -297 702 1 = 703 A soma de um número com o seu complemento sempre será o número de valores possíveis de serem escritos na re- presentação. Exemplo: 297 + 703 = 1000 No caso de números binários, para se chegar ao complemento de base, ou seja, complemento de 2, subtrai-se cada algaris- mo de 1 e depois soma-se um ao resultado. Ou para simplificar basta, inverter os bits do número e somar 1 ao resultado obtido. Exemplo: Representação em complemento de 2 de 10010: 1101 = 01110 A representação de números po- sitivos em complemento não é alterada, apenas emprega-se o bit do sinal (igual à representação Sinal-Magnitude). A representação de um número ne- gativo se obtém fazendo o complemento à base do número positivo. 40FUNDAMENTOS COMPUTACIONAIS Tipo de representação Representações para zero Custo Velocidade Sinal- Magnitude Duas Alto (componentes separados para soma e subtração) Baixa (algoritmo de verificação de sinais, soma e subtração) Complemento de 2 Uma Baixo (um componente único para soma) Alta (algoritmo simples e único para soma) Comparativo entre as duas representações Fonte: Autor QUESTÕES DO CAPÍTULO 2 1. Quantos bits existem em 64KB? 2. Quantas palavras existem em 1KB? 3. Quantos bits existem em 1Mb? 4. Quantos KB existem em 65536 bits? 5. Converta os valores abaixo para base decimal a. (1021)3 = b. (14501)7 = c. (387)9 = d. (624)8 = e. (1011101)2 = f. (1EB)16 = g. (23AF)16 = h. (74D32)16 = i. (2C3A)16 = j. (DBAC)16 = k. (AAA)16 = 42FUNDAMENTOS COMPUTACIONAIS LINGUAGENS E ORGANIZAÇÃO DA INFORMAÇÃO Você já ouviu falar de alguma linguagem de programação? Sabia que elas estão presentes em tudo que você faz no computador? As linguagens de programação são maneiras de traduzir uma solução ou regras para encontrar a solução de problemas que possam ser solucionados através de sistemas computacionais. Todo e qualquer programa, desde o sistema operacional até os aplicativos de usuários, são desenvolvidos em uma determinada linguagem. A escolha da linguagem determina o sucesso ou o fracasso na construção de um aplicativo. As linguagens de programação tem como função traduzir para uma linguagem próxima do ser humano e para uma lin- guagem que possa ser compreendida pelo processador, isto é, uma linguagem de programação traduz, a prioridade, um texto, representando um algoritmo para resolver um determinado 43FUNDAMENTOS COMPUTACIONAIS problema, em um conjunto de instruções de máquina de um processador. Linguagens de Programação Surgimentos das principais linguagens de programação 44FUNDAMENTOS COMPUTACIONAIS A figura mostra o surgimento de al- gumas das principais linguagens de progra- mação existentes no mercado. As linguagens vêm evoluindo ao longo dos anos com o objetivo de aproxi- mar a maneira de programar à linguagem humana, isto é, torná-las cada vez mais compreensíveis e menos complexas. Toda a linguagem irá converter um arquivo texto que contém expressões lógicas, aritméticas, palavras reservadas à linguagem, dentre outros objetos, em uma sequência de ins- truções de máquinas pertencentes a um determinado processador. Estas linguagens podem ser compiladas ou interpretadas, ou seja, podem gerar um arquivo que conterá todo o código executável de uma única vez ou podem traduzir à medida que o pro- grama é executado, respectivamente. Esta tarefa é feita pelos compiladores de uma determinada linguagem porém, as tarefas executadas por um compilador são basi- camente as mesmas, independentemente do tipo de linguagem. O fluxo mostra as etapas que os compiladores executam antes de gerarem o arquivo executável, um código entendível para o computador. Analisador Léxico tem como função identificar as unidades léxicas da linguagem, ou seja, dividir o que são palavras-reserva- das, variáveis, números, etc. Por exemplo, o analisador léxico identifica operandos como IF, THEN, MinhaVariável, dentre outros. Analisador Sintático, por sua vez verifica se a estrutura do programa foi feita segundo as regras gramaticais da linguagem. O analisador sintático verifica a sequência de um comando de repetição foi digitada corretamente como no exemplo WHILE MinhaVariável == 0 DO. Analisador Semântico verifica se as expressões do programa fazem sentido, como por exemplo verificar se os tipos de variáveis estão corretos com as atribuições. O Gerador de Código Intermediário gera uma representação intermediária entre a linguagem de alto nível e a linguagem de máquina do processador alvo a fim de faci- litar esta tradução. Esta não é obrigatória e alguns compiladores a usam e outros não. Otimizador de Código, algumas 45FUNDAMENTOS COMPUTACIONAIS linguagens avaliam as expressões a fim de simplificá-las e tornar o executável mais rápido. Um exemplo disto é verificar ex- pressões aritméticas que envolvem multi- plicação e divisão de números por múltiplos de dois e substituí-las por instruções de deslocamento evitando, assim, o uso do processador aritmético. É na etapado Gerador de Código Objeto que o programa é de fato traduzido para o código alvo, ou seja, traduzido para o conjunto de instruções de um determi- nado microprocessador. Após a geração do programa objeto é necessário montá-lo e ligá-lo a fim de gerar o arquivo executável. As linguagens podem ser divididas através de sua aproximação à linguagem humana: • Linguagens de Baixo Nível; • Linguagens não estruturadas; • Linguagens Procedurais; • Linguagens Funcionais; • Linguagens Orientadas a Objeto; • Linguagens Específicas; • Linguagens de Quarta Geração ou Visuais; Linguagens de Baixo Nível São linguagens cujas instruções estão mais próximas do código de máquina do que da linguagem humana. Pode-se di- zer que para cada processador existe uma linguagem correspondente, ou seja, uma linguagem que é determinada pelo set de instruções daquele microprocessador. Estas linguagens são conhecidas como Lingua- gem Assembly. Linguagens Não Estruturadas São linguagens que não possuem uma relação direta com as linguagens as- sembly, ou seja, o conjunto de instruções destas linguagens não são os mesmos do código de máquina. É possível então de- senvolver programas independentes do tipo de microprocessador que irão rodar, e é só na etapa de gerar o código que isto é deter- minado. A não estrutura destas linguagens dá-se pelo fato de não poder dividir de forma coerente as diferentes tarefas de um programa, isto é, os programas são feitos em um único arquivo. São exemplos as linguagens: Cobol, Basic. Linguagens Procedurais As linguagens procedurais são um subconjunto das linguagens estruturadas, cujos controles e organização são mais efi- cientes tornando-as mais claras sobre o ponto de vista sintático. As linguagens procedurais ordenam a construção dos pro- gramas através de uma estrutura de cha- madas de procedimentos. As mais comuns Exemplos de Linguagens 46FUNDAMENTOS COMPUTACIONAIS são C, Pascal, Fortran, dentre outras. Cada uma destas linguagens possui vantagens e desvantagens, porém são mais especialistas que outras em determinadas tarefas. Linguagens Funcionais As linguagens funcionais, ao con- trário das procedurais, não estão interes- sadas em executar comandos, mas sim em avaliar expressões que combinam valores básicos (verdadeiro ou falso). Algumas destas linguagens não possuem a solução do problema embutida no seu código, pos- suem às regras que permitem encontrar a solução de um determinado problema. Geralmente estas linguagens são utiliza- das em softwares especialistas como por exemplo, programas que jogam Xadrez, não precisam ter previstas todas as jogadas em seu código, basta ensinar os movimentos básicos de cada peça. São exemplos de linguagens funcio- nais a Prolog e Lisp. Linguagens Orientadas a Objeto O surgimento das linguagens Orien- tadas a Objeto está relacionada com as novas técnicas de Engenharia de Software que surgiram para orientar e organizar pro- cessos, minimizar o tempo de programação e promover a reusabilidade do código. Além disso, não havia na década de 90 uma lin- guagem de programação igual ao paradigma de banco de dados relacional. Uma das principais características deste paradigma é que todas as informações, dados e código, são encapsulados e trafegam junto com o fluxo do programa. Uma vez encapsulados em uma classe, esta define o comportamento de todas as instâncias daquele objeto. Outras características como hereditariedade são implementadas neste tipo de paradigma de programação. Smaltalk, C++ e Java são exemplos de linguagens orientadas a objeto. Exemplos de Linguagens Exemplos de Linguagens Exemplos de Linguagens 47FUNDAMENTOS COMPUTACIONAIS Linguagens Específicas São linguagens desenvolvidas para suprirem necessidades específicas como o tratamento de banco de dados, formatação de textos, simulação dentre outros. Por exemplo, a linguagem SQL (Structured Query Language) é uma lin- guagem para consulta a bando de dados baseada no modelo de banco de dados re- lacional. Esta linguagem está normatizada, e é incorporada pela maioria dos bancos de dados disponíveis no mercado. O estudo da linguagem SQL está relacionado com a aritmética e lógica relacional e possui relação direta para a sua conversão. Outro exemplo é o Matlab, que ini- cialmente foi criado para o ensino de teoria matricial, álgebra linear e análise numérica, nas Universidades de Standfor e Novo Mé- xico, na década de 70. Atualmente este pro- grama é fornecido pela Math Workx e está voltada a aplicações científicas e simulação de sistemas. Sua sintaxe é bastante fácil e possui uma grande variedade de bibliotecas para aplicações que vão desde a simulação de sistemas digitais, processamento de si- nais e sistemas complexos como dinâmica de fluidos computacional. Sua principal vantagem é fornecer os resultados rapida- mente ao usuário. Além dessas, temos a HTML, LA- TEX, Perl, entre outras. Linguagens de Quarta Geração ou Visuais As linguagens de quarta geração ou visuais surgiram em decorrência do surgi- mento de sistemas operacionais cujas in- terfaces são gráficas. O Windows foi um dos responsáveis pelo surgimento destas linguagens e na forma como são desenvol- vidos os programas. Os usuários, através das linguagens 4GL, podem criar seus próprios sistemas com um mínimo de erro e tempo de desenvolvimento. Linguagem Visual Basic, Simulink, Linguagem Delphi são exemplos de lin- guagens visuais. Estrutura e Organização da Informação A estrutura, de como os dados são armazenados, é uma das partes mais impor- tantes no projeto de um sistema computa- cional, seja para o controle de uma empresa, seja dentro de um dispositivo móvel. Esta importância dá-se pelo fato de que todos os procedimentos e funções a serem desen- volvidas dentro do sistema dependerão da definição destas estruturas. Além da escolha da linguagem de programação certa para resolver um deter- minado problema, é a escolha da estrutura de dados que garantirá uma melhor perfor- mance do software construído. Para o caso de sistemas de informação para empresas, em geral, a estrutura de dados de um pro- Exemplos de Linguagens 48FUNDAMENTOS COMPUTACIONAIS grama deverá modelar os dados que repre- sentam os processos reais daquela empresa. As linguagens de programação forne- cem ferramentas para fazer esta modelagem que vão desde tipos de dados elementares, como caracteres, inteiros, reais, etc., até mais complexos como arquivos que são estruturas que agrupam diferentes tipos de dados. A seguir serão apresentadas algumas formas de organizar os dados de um sistema. Campo O campo é a descrição de um atri- buto, de uma determinada entidade. Os campos podem ser formados por qualquer tipo de dado elementar e está ligado a uma determinada área de armazenamento pos- suindo um significado lógico para o sistema. Registro Registro consiste de um agrupa- mento de campos que representam uma ocorrência de uma determinada entidade. Em geral, cada registro é representado por um campo de valor único dentro de uma determinada coleção de entidades. Isto é, cada registro terá um identificador, conhe- cido como chave, que identificará uma e somente uma entidade. Os registros são comuns em arquivos de banco de dados. A tabela mostra alguns exemplos de coleção de registros e as chaves que re- presentam um elemento único dentro da coleção. Arquivos Os arquivos além de serem impor- tantes para a manutenção dos sistemas operacionais (modelagem de dispositivos, comunicação entre processos, etc.), pos- suem papel importante na abstração para armazenamento de dados nos sistemas computacionais. Um arquivo que contém dados armazenados de forma sequencial, isto é, um registro após o outro. Embora todos os arquivos conte- nham dados, a relevância desses é dada sempre a um nível superior, ou seja, a nível de usuário. Quando um conjunto de dados agrupados tem significado, isto torna-se informação.Portanto a diferença entre dados e informações é que estas permitem a tomada de decisão ou a execução de tarefas de acordo com os objetivos de cada sistema ou programa. Entidade Atributos Livro Título Categoria Autor Cliente Nome Sobrenome CPF Campo Registro Chave Registro de Carros Número do Chassi Registro de Clientes Número do CPF Registro de Notas Fiscais Número da Nota Fiscal Registro de Funcionários Número da Matrícula Registro 49FUNDAMENTOS COMPUTACIONAIS Métodos de Acesso aos Dados Método de acesso aos dados são os algoritmos de busca, inserção, atualização, dentre outros, utilizados pelo sistema de informação e a escolha de um tipo de algo- ritmo em detrimento de outro determinará o grau de dificuldade daquele sistema. • Acesso Serial Os arquivos de acesso serial são aqueles cujos dados são armazenados no arquivo na ordem em que foram criados e seus registros possuem tamanhos e se- quência de dados iguais. O acesso deste tipo de arquivo é feito através da procura sequencial do registro. A característica do acesso serial é que um registro só é alcançado após a finaliza- ção da leitura do anterior. Esta metodolo- gia gera tempos de acessos extremamente longos à medida que o arquivo cresce. A atualização do arquivo neste método impli- ca na criação de um arquivo auxiliar dentro do sistema, duplicando a área ocupada no disco. • Acesso Sequencial A principal característica do acesso sequencial é que os registros são armaze- nados por ordem de classificação de chave. Quando armazenados em ordem crescente de chaves, o acesso torna-se serial e facil- mente calculado, uma vez que o tamanho de cada registro é igual. Uma das maneiras de garantir que o arquivo com os dados seja mantido ordena- do é o uso de árvores binárias para manter os dados em memória antes de salvá-los em disco, garantindo, assim, que a ordenação não afete a performance do sistema. • Acesso Sequencial Indexado Este método consiste em manter um arquivo de índices que aponta para a posição do registro dentro do arquivo. O arquivo de índices é gerado durante a criação do arquivo ou na manutenção do mesmo. Além disso, este arquivo de índices Dados, Processamento e Informação Fonte:Tanembaum, 2007 Organização dos dados em acesso serial Fonte:Adaptado de Link. Organização dos dados, ordenados pela chave Fonte:Adaptado de Link. Organização dos dados, ordenados pela chave Fonte:Adaptado de Link. http://www.ufpa.br/sampaio/curso_de_estdados_2/organizacao_arquivos/organizacao_arquivos.htm http://www.ufpa.br/sampaio/curso_de_estdados_2/organizacao_arquivos/organizacao_arquivos.htm http://www.ufpa.br/sampaio/curso_de_estdados_2/organizacao_arquivos/organizacao_arquivos.htm 50FUNDAMENTOS COMPUTACIONAIS poderá ser mantido ordenado ou ainda usar uma estrutura em árvore binária quando carregado na memória. A busca neste tipo de método é muito rápida. • Acesso Direto O método de acesso direto é definido pela correspondência direta entre a chave do registro e o endereço físico do registro no dispositivo de armazenamento. Desta forma, ao tentar localizar um registro, o software estará acessando diretamente o endereço onde aquele registro foi gravado. Este método garante grande desempenho no acesso aos dados. Banco de Dados Uma maneira simples de definir um banco de dados é um conjunto de arqui- vos, contendo registros, organizados para garantir a melhor performance durante as consultas, inserções, atualizações e criação de dados. Ao contrário dos arquivos con- vencionais que possuem uma diversidade de dados que não possuem relação entre si, um banco de dados possui uma relação entre os dados que dão ao usuário infor- mações relevantes. Portanto um banco de dados possui dados elementares e também dados secundários, provenientes das rela- ções entre os dados. Estes dados podem ser classificados como: Dados principais; Dados de estrutura; Dados de índice; Dados de controle; e Dicionário de dados. Um Banco de Dados deve ser capaz de representar os dados do mundo real, isto é, o Banco de Dados deverá ser capaz de modelar os dados principais, relações e transações entre os mesmos. Um Banco de Dados possui diferentes níveis de infor- mações, relacionados a cada etapa de sua construção. A Figura mostra a relação entre as etapas de elaboração de um Banco de Dados e as informações associadas a cada uma delas. Um modelo de banco de dados dá-se através de duas fases e quatro etapas a fim de manter uma organização e relação en- tre o mundo real e os dados representados dentro do sistema. Organização dos dados através de índices Fonte:Adaptado de Link. Banco de Dados e os níveis de informação http://www.ufpa.br/sampaio/curso_de_estdados_2/organizacao_arquivos/organizacao_arquivos.htm 51FUNDAMENTOS COMPUTACIONAIS A primeira fase diz respeito à con- ceituação do modelo onde são levantadas e analisadas as informações do mundo real, suas relações e transações entre os proces- sos. A partir disto é formulado o modelo conceitual do banco de dados, isto é, são definidas as estruturas de informações e os métodos de manipulação. A segunda fase é quando o banco de dados é implementado, ou seja, são defini- dos o modelo lógico e físico dos dados, as rotinas de consulta, atualização, inserção, dentre outros do banco de dados. Modelo Relacional O modelo relacional de banco de dados é o mais utilizado atualmente e ofe- rece grandes vantagens sobre os demais modelos de banco de dados e a base de sua estrutura é a matemática relacional. Um banco de dados relacional possui algumas terminologias que devem ser conhecidas para entender o modelo. Terminologia Descrição Domínio É um grupo de valores legais que correspondem a uma sequência de registros válidos, encontrados em um determinado conjunto de atributos. Tupla É a linha de uma tabela a qual possui os valores de cada atributo. Atributo É uma coluna da tabela onde cada coluna corresponde a um atributo. Chave primária É um identificador único para a tabela ou para uma tupla. Este número não pode ser repetido dentro de cada tabela. Relações São as regras para a formação e escolhas de tuplas dentro das tabelas. As relações podem combinar mais de um atributo para realizar a pesquisa. As relações possuem as seguintes propriedades: • Inexistem tuplas em duplicata; • As tuplas não seguem ordem alguma; • Os atributos não seguem ordem alguma; • Todos os valores dos atributos são atômicos. Banco de Dados e os níveis de informação 52FUNDAMENTOS COMPUTACIONAIS Modelo Não Relacional Cada vez mais, precisamos lidar com enormes volumes de informações. Tem al- guma forma eficiente de banco para resolver este problema de maneira eficiente? O SQL é o termo usado para des- crever bancos de dados não relacionais de alto desempenho. Os bancos de dados não relacionais usam diversos modelos de dados, incluindo documentos, gráficos, chave-va- lor e colunares. Com este tipo de banco é possível ter um desempenho escalonável, alta disponibilidade, resiliência, além de ter fácil desenvolvimento. Todos os bancos não relacionais, têm em comum, as key-value stores, ou seja, salvam um conjunto de entradas formadas por uma chave associada a um valor. O va- lor pode ser de qualquer tipo, uma string, numérico ou binário que está sendo salvo sem normatização (schema-free). O CouchDB é um dos mais famo- sos no time dos key-value stores. Nele são usados documentos para definir uma es- trutura no banco, armazenando uma chave associada ao documento. Um documento é apresentado como JSON. Exemplo: { “Subject”: “Bancos não relacionais” “Author”: “Nico Stepat” “PostedDate”: “10/15/2009” “Tags”: [“database”, “nosql”, “rest”] } QUESTÕES DO CAPÍTULO 3 1. Pesquise as diferenças entre modelos de banco de dados relacional e não relacional e monte uma tabela comparativa entre os dois modelos. 2. Quais são as principais formas de acessar os dados no banco de dados. Explique
Compartilhar