Prévia do material em texto
SÍLVIO PETROLI NETO AMBIENTES COMPUTACIONAIS 2023 AMBIENTES COMPUTACIONAIS Silvio Petroli Neto PRESIDENTE Frei Thiago Alexandre Hayakawa, OFM DIRETOR GERAL Jorge Apóstolos Siarcos REITOR Frei Gilberto Gonçalves Garcia, OFM VICE-REITOR Frei Thiago Alexandre Hayakawa, OFM PRÓ-REITOR DE ADMINISTRAÇÃO E PLANEJAMENTO Adriel de Moura Cabral PRÓ-REITOR DE ENSINO, PESQUISA E EXTENSÃO Dilnei Giseli Lorenzi COORDENADOR DO NÚCLEO DE EDUCAÇÃO A DISTÂNCIA - NEAD Franklin Portela Correia CENTRO DE INOVAÇÃO E SOLUÇÕES EDUCACIONAIS - CISE Franklin Portela Correia CURADORIA TÉCNICA Fábio Andrijauskas DESIGNER INSTRUCIONAL Luiza Cunha Canto Correia de Morais REVISÃO ORTOGRÁFICA Luiza Cunha Canto Correia de Morais PROJETO GRÁFICO Centro de Inovação e Soluções Educacionais - CISE CAPA Centro de Inovação e Soluções Educacionais - CISE DIAGRAMADORES Andréa Ercília Calegari © 2023 Universidade São Francisco Avenida São Francisco de Assis, 218 CEP 12916-900 – Bragança Paulista/SP CASA NOSSA SENHORA DA PAZ – AÇÃO SOCIAL FRANCISCANA, PROVÍNCIA FRANCISCANA DA IMACULADA CONCEIÇÃO DO BRASIL – ORDEM DOS FRADES MENORES O AUTOR SILVIO PETROLI NETO Possui graduação em Engenharia de Computação pela Universidade São Francisco - Itatiba (2000) e pós-graduação em Docência Universitária pela FAE. Atua como profes- sor conteudista para disciplinas on-line. Atualmente, coordena o Centro de Inovação e Aprendizagem Digital e o Núcleo de Ensino a Distância da Faculdade Max Planck, onde também é professor e tutor. É professor titular da Universidade São Francisco - Itatiba, professor e tutor da Faculdade Max Planck. Tem experiência na área de Ciência da Computação, com ênfase em Linguagens de Programação, atuando principalmente nos seguintes temas: Ambientes Virtuais de Aprendizagem, Inteligência Artificial e Otimiza- ção de Tempo e Processamento. [Disponível no livro completo] SUMÁRIO 6 1 Conhecendo o hardware UNIDADE 1 CONHECENDO O HARDWARE INTRODUÇÃO Esse componente curricular trabalha os conceitos fundamentais da concepção e gerenciamento de máquinas computacionais. Com isso, serão apresentados ao longo das unidades os conceitos de arquiteturas e organização de computadores para o entendimento dos conceitos de portas lógicas, unidade central de processamento, memórias, barramentos e dispositivos de entrada e saída, bem como o conhecimento do funcionamento de software de sistema na gestão de processos (sincronização e comunicação), no gerenciamento e escalonamento de CPU e no gerenciamento de memória. A partir daí, será estudada a utilização de ambientes integrados de desenvolvimento, fazendo a ligação entre software e hardware em projetos utilizando conceitos básicos de eletrônica. ` Conhecer aspectos da organização e arquitetura de computadores com foco no seu funcionamento básico; ` Entender o funcionamento de dispositivos lógicos, memórias semicondutoras, microcontroladores, linguagens de baixo nível; ` Utilizar ambientes de desenvolvimento integrado, sistemas operacionais, elementos básicos de eletrônica e elétrica; ` Compreender as ligações entre hardware e software para a resolução de problemas; ` Compreender o funcionamento dos Sistemas Operacionais na gestão do hardware de um computador. Com efeito, tem-se o objetivo de desenvolver as seguintes competências gerais: Para atingir tais objetivos, essa unidade trabalha os conceitos básicos do funcionamento de um computador, estudando a forma como os computadores são organizados e estruturados e os princípios que embasam o estudo de sua arquitetura. Para isso, serão apresentados os conceitos fundamentais de eletrônica e a construção de circuitos lógicos. Assim, será possível o desenvolvimento das seguintes habilidades: 7 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Desenvolvendo tais habilidades, a unidade corrobora para o desenvolvimento de parte das competências apresentadas e contribui para a compreensão da máquina computacional, objeto de estudo e ferramenta básica para o desenvolvimento de sistemas. Os capítulos a seguir apresentam o funcionamento básico dos computadores, exemplificando como se dá o funcionamento de uma máquina digital e a partir de quais bases numéricas ela surge. Além disso, é apresentada a arquitetura de Von Neumann, criada na década de quarenta e que, até hoje, serve de base para arquiteturas mais modernas. Em seguida, serão apresentados elementos de eletrônica básica como o funcionamento das portas lógicas, a representação de funções utilizando álgebra booleana e como nascem, a partir daí, os circuitos lógicos básicos, que são a base do funcionamento dos computadores atuais. 1. FUNCIONAMENTO BÁSICO DOS COMPUTADORES A definição de máquina elétrica é simples de ser explicada e, atualmente, está relacionada ao cotidiano de todos. É comum conviver todos os dias com máquinas elétricas e, portanto, a definição de que uma máquina elétrica é aquela que executa tarefas a partir da utilização de energia elétrica não se faz necessária. Entretanto, a definição do que é analógico e digital dentro das possibilidades de máquinas elétricas é um pouco mais complexa de se entender, mas sua compreensão é importante no entendimento da forma como um computador trabalha e essa compreensão ajudará na programação desses computadores. O que se pretende, ao se construir uma máquina digital capaz de executar cálculos aritméticos e lógicos é, sobretudo, trabalhar a maneira como as informações serão processadas por essas máquinas e, a partir desse processamento, executar as tarefas que se desejam. Porém, antes dessas informações poderem ser processadas, é necessário que sejam representadas de alguma forma dentro dos computadores. É aí que surgem os termos analógico e digital. Esses termos referem-se à maneira como representamos dados e informações utilizando os recursos das máquinas elétricas. A energia elétrica trafega nessas máquinas através de ondas que são utilizadas na representação de informações. A partir daqui, pode-se compreender que é a forma como essas ondas são convertidas em dados que definem se a máquina elétrica será analógica ou digital. Toda onda elétrica será definida a partir de alguns parâmetros, como mostrado na Figura 1. 01. Compreender os principais componentes de um computador e sua função; 02. Entender o funcionamento das funções lógicas; 03. Relacionar funções lógicas com sua porta correspondente; 04. Utilizar portas lógicas no desenvolvimento de circuitos lógicos básicos. 8 1 Conhecendo o hardware Figura 01. Onda elétrica Amplitude (A) Período (T) Fonte: elaborada pelo autor. A Amplitude (A) da onda é dada pela tensão elétrica com que o computador opera, ou seja, a onda produzida por uma máquina trabalhando com uma tensão de 12V (doze volts) tem uma amplitude duas vezes maior que a amplitude da onda produzida por uma máquina que trabalhe com uma tensão de 6V (seis volts). Variando-se a tensão elétrica, é possível modular as ondas por amplitude. Já o Período marca o tempo decorrido em exatamente um ciclo da onda. No caso da Figura 1, pode-se notar que o período está indicando o tempo passado do momento em que a onda estava em seu ponto mais baixo até o próximo momento em que ela volta a estar nesse mesmo ponto. Uma vez que a onda é cíclica, existirão, ao longo do tempo, muitos períodos. Quanto menor for esse período, maior é a frequência (F) da onda e, portanto, mais ciclos ocorrerão em um determinado tempo. Se pensarmos em um tempo de 1s (um segundo), por exemplo, então, a quantidade de ciclos que ocorrerão nesse tempo é o que chamamos de frequência e essa frequência é medida em Hz (hertz). Variando-se o número de ciclos produzidos por segundo, é possível modular as ondas por frequência. (HETEM JUNIOR; HETEM, 2016, p. 3). De posse dessas informações, é possível determinar que existirão, em cada computador, ao menos duas ondas elétricas, uma para marcar tempo e outra para representaras informações e a forma com que essas informações serão obtidas vai determinar se a máquina trabalha de forma digital ou analógica. A Figura 2 mostra quatro informações representadas de maneira analógica. Nota-se que existe uma onda de marcação de tempo, chamada “clock”. Essa onda é a responsável por determinar em que períodos (t1 a t4) serão colhidas as informações da onda w2. Além disso, cada uma das quatro informações é representada ao se modular a onda w2 em Amplitude ou Frequência. 9 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Figura 02. Representação de informação na forma analógica Onda para marcar tempo (Clock) Onda que representa uma informação em cada tempo (w2) t1 t2 t3 t4 Fonte: elaborada pelo autor. Como existem infinitas formas de combinações de amplitudes e frequências, existem infinitos símbolos possíveis de serem formados, ou seja, da mesma forma que o símbolo formado pela onda w2 no tempo t1 é diferente dos símbolos formados pela mesma onda nos tempos t2, t3 e t4, pode-se representar infinitos símbolos diferentes utilizando essa técnica e, cada um desses símbolos, pode representar um número, uma letra, uma parte de uma imagem ou quaisquer outras grandezas que se deseje representar. No entanto, no modelo digital, não existem essas modulações por amplitude ou frequência. Assim, a frequência e amplitude são fixas e cada ciclo da onda w2, além de ter um período já pré-definido, deve ter amplitude zero ou então a amplitude máxima. 10 1 Conhecendo o hardware Figura 03. Representação de informação na forma digital Onda para marcar tempo (Clock) Onda que representa uma informação em cada tempo (w2) t1 t2 t3 t4 0 0 1 10 1 0 1 Fonte: elaborada pelo autor. Percebe-se, na Figura 3, que os símbolos formados pela onda w2 nos tempos t1 a t4 possuem frequência fixa e a amplitude varia sempre da tensão zero para a tensão máxima, existindo apenas dois níveis possíveis de amplitude. O fato de existirem apenas dois níveis de amplitude é o que dá nome ao sistema digital. A cada um desse níveis, dá-se o nome de bit e as informações em máquinas digitais passam a ser representadas, portanto, por um conjunto de bits (níveis) que podem, como já visto, terem o valor zero ou o valor 1. (DELGADO; RIBEIRO, 2017, p. 7) No caso apresentado da Figura 3, cada símbolo é representado por dois bits, existindo os símbolos 00, 01, 10 e 11, respectivamente. Em caso da necessidade de números maiores de símbolos, isso é obtido ao aumentar a frequência com que a máquina digital representa a onda w2. A relação do número de bits com a quantidade de símbolos possíveis é a seguinte: Equação 01. Quantidade de bits para representação de símbolos 2NumBitsNumSimbolo = 11 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Portanto, quanto maior o número de bits, maior será a capacidade desse computador de representar símbolos diferentes. Os bits são, dessa forma, os elementos básicos de representação de informações em uma máquina digital e é a partir deles que todas as informações são geradas, armazenadas e processadas. Uma vez entendido o que é um bit e como um conjunto de bits pode representar uma informação, é possível estudar a base numérica binária e sua derivação nas bases numéricas octal e hexadecimal. Essas bases serão importantes na compreensão de das informações representadas de forma digital, por exemplo. 1.1 BASES NUMÉRICAS Para entender bases numéricas e o funcionamento delas é preciso, primeiro, entender como se dá o processo de contar, desde a maneira mais simples de fazê-lo, estudando suas limitações e restrições, até o modelo atual, com sua complexidade e possibilidades. A maneira mais fácil de calcular é usando um símbolo qualquer para representar uma única quantidade. Como exemplo, utilizaremos o “|”. Assumiremos que esse símbolo representa a quantidade 1. Assim, para contarmos quantidades maiores, vamos agrupar esse símbolo em porções, mais ou menos como ilustrado na Tabela 1: Tabela 01. Representação básica de quantidade SÍMBOLO QUANTIDADE I 1 II 2 III 3 IIII 4 IIIII 5 Fonte: elaborada pelo autor. É possível perceber que o sistema acima apresenta limitações, a mais importante delas é o volume de símbolos para representar uma quantidade pequena. Imagine, por exemplo, o uso dessa representação para uma quantidade de 100 ou 1000 elementos? Seria inviável desenhar 100, 1000, 10000 símbolos para representar tais quantias. Para resolver esse problema, o próximo modelo pressupunha o agrupamento de quantias em símbolos distintos. É o caso do sistema de numeração utilizado pelos romanos, por exemplo. Nela, existem símbolos diferentes para representação de certas quantias: I = 1; V = 5; X = 10; L = 50 e assim sucessivamente. Além disso, existiam regras, como é o caso da posição relativa do símbolo em relação ao seu vizinho, o que possibilitava a representação de outros valores: VI = 6; IV = 4; XL = 40; LX = 60. Sem dúvida, é uma evolução, se compararmos ao primeiro tipo de representação vista aqui. Porém, ainda existem limitações, sendo as mais importantes a falta da representação nula (não existe o símbolo para a representação do zero) e a dificuldade e complexidade para realizar operações, sobretudo multiplicações e divisões utilizando tal representação (WEBER, 2012, p. 237). 12 1 Conhecendo o hardware Posteriormente a isso, os árabes iniciaram a utilização de um sistema originário da Índia, que possuía 10 (dez) símbolos (chamados de algarismos), com valores (magnitude dos símbolos) variando de 0 a 9. A esse sistema foi dado o nome de sistema arábico. Segundo Weber, o sistema arábico possuía algumas características importantes. A saber: 01. Existe um símbolo para o valor nulo; 02. Cada algarismo utilizado é uma unidade maior que seu predecessor; 03. A notação é posicional, ou seja, a magnitude do número depende da posição em que cada símbolo está posicionado, sendo que cada posição possui um peso. Com base nessa informação, é possível determinar, portanto, o peso que cada posição terá e o cálculo da magnitude do número pode ser obtida a partir da expressão: Equação 02. Cálculo de magnitude ( ) 1 0 . n i i i magnitude x B − = =∑ Analisando a expressão, é possível perceber que, com a utilização do sistema de numeração arábico, a representação de magnitudes diferentes fica fácil, desde que se conheça: o valor de cada algarismo em sua posição i , representado por ix e o peso desse algarismo na posição i , representado por iB . A magnitude do número representado é o somatório de n algarismos (o a n-1) multiplicados pelo peso que recebe de acordo com a posição que ocupa, sendo que B representa a base de representação do número, ou seja, a quantidade de símbolos diferentes utilizados nessa representação. Se B for 10, o número estará representado na base decimal e devem existir 10 símbolos (0 a 9). Expandindo o somatório, temos: Equação 03. Cálculo de magnitude expandida 1 2 2 1 2 2 1 0 . . . .n n n nmagnitude x B x B x B x B x− − − −= + +…+ + + 13 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Com essa informação, é possível representar valores em diversas bases, utilizando o mesmo sistema de representação, alterando apenas o número de símbolos e, por consequência, a base. Uma vez representado, é possível conhecer a magnitude do número utilizando-se a A essa altura, deve ser claro que o que pretendemos é unir a informação inicial (representação binária) com a informação que temos agora, com a representação da magnitude. Para fazer isso, é preciso saber que no sistema de numeração binária, a base é 2 (dois), uma vez que tenho apenas dois símbolos (0 e 1) que, segundo já visto, representa a amplitude da onda eletromagnética que representa a informação. Representando-se valores no sistema de numeração binária e utilizando-se a equação para cálculo da magnitude, obtém-se os valoresda Tabela 2: Tabela 02. Representação binária NÚMERO BINÁRIO MAGNITUDE 0 0 1 1 10 2 11 3 100 4 101 5 Fonte: elaborada pelo autor. As magnitudes apresentadas na Tabela 2 foram obtidas substituindo-se os valores de cada algarismo do número binário na expressão expandida (Equação 3) e considerando a base 2: 2 1 05 1.2 0.2 1.2= + + 2 1 04 1.2 0.2 0.2= + + 1 03 1.2 1.2= + 1 02 1.2 0.2= + 01 1.2= 00 0.2= 14 1 Conhecendo o hardware É possível perceber que a representação do número binário, bem como o cálculo de sua magnitude, acontece exatamente da mesma forma que a representação de números decimais, sendo as únicas diferenças o número de dígitos possíveis (2 no caso do binário e 10 no caso do decimal) e o valor da base (também 2 no caso do binário e 10 no caso do decimal). O sistema binário é fundamental para a eletrônica e, consequentemente, para a computação. Segundo Paixão (2014, p. 18): Esse sistema numérico é muito importante, porque é utilizado para expres- sar todas as operações realizadas em um sistema digital; A arquitetura de um computador está fundamentada em um sistema digital complexo, uma vez que é composta por processador(es), memórias de semicondutores, circuitos de entrada e saída (popularmente conhecidos como circuitos I/O – in-out)), entro outros, que processam sinais puramente digitais. A partir do entendimento do sistema de numeração binária, é possível pensar em sistemas de bases distintas, como sistemas numéricos de base três, quatro, oito, dezesseis, enfim, qualquer base é possível, desde que se tenha o conjunto de símbolos e seus valores e o valor da base. Na computação, toda informação será representada utilizando a base binária, devido à relação dela com o sistema digital (o zero representando a amplitude baixa da onda e o um representando a amplitude alta). Porém, a representação de informações utilizando binário é incômoda para o ser humano, devido à quantidade de dígitos necessária para representar valores altos. Utilizando-se, por exemplo, a Equação 1, é possível verificar que para representar uma magnitude 1024 é preciso utilizar 10 bits. Esse número de dígitos já é grande, imagine agora a representação de números na ordem de 1 bilhão, enquanto em decimal, essa representação utiliza 9 dígitos, em binário ela necessita de 30 dígitos. Assim, representações em outras bases, mas que guardem uma relação direta com o binário são bem-vindas. A mais conhecida é a representação hexadecimal. Na representação hexadecimal, como o próprio nome já diz, existem 16 símbolos (0 a 15) e a base é 16. A Tabela 3 traz a magnitude dos números representados nessa base. Verifique que, por falta de algarismos arábicos suficientes, os valores 10 a 15 são representados por letras do nosso alfabeto. A partir do número 15, a mesma Equação 3 é utilizada para representação de magnitudes maiores, como por exemplo: 0 1 2 161 .16 1.16 .16A B B A= + + E, substituindo-se as letras pelas suas magnitudes conhecidas, temos: 0 1 2 161 11.16 1.16 10.16 2587A B = + + = 15 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Tabela 03. Representação hexadecimal NÚMERO HEXADECIMAL MAGNITUDE 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 .7 8 8 9 9 A 10 B 11 C 12 D 13 E 14 F 15 Fonte: elaborada pelo autor. O que faz da base hexadecimal especialmente importante para a computação é a sua facilidade de conversão com o binário. Então, toda vez que se deseja representar um valor em binário, é possível representá-lo utilizando a representação hexadecimal, fazendo a conversão. Como exemplo, suponha o mesmo valor decimal já utilizado (2587). Sabemos que sua representação em hexadecimal é A1B. A partir do seu valor em hexadecimal é fácil saber qual o valor binário, para isso, basta pegar cada dígito do valor hexadecimal e representá-lo em binário utilizando-se sempre 4 bits. Assim: 11 1011B = = 1 1 0001= = 10 1010A = = O número binário resultante da conversão é 101000011011 (basta juntar os valores obtidos pela conversão de cada dígito hexadecimal em binário). 16 1 Conhecendo o hardware A conversão de qualquer número binário em hexadecimal também é facilitada. Da mesma forma, suponha o número binário 0100111010011110100. Para convertê-lo em binário, separaremos os dígitos em grupos de 4 dígitos, da direita para esquerda. Assim: 010 0111 0100 1111 0100 e o primeiro grupo, fica com a quantidade restante. Agora, basta representar cada grupo em hexadecimal: 0100 4= 1111 F= 0100 4= 0111 7= 010 2= Assim, o valor 0100111010011110100 em binário é o valor 274F4 em hexadecimal e essa facilidade de conversão de uma base para outra e a possibilidade de utilização de número menor de dígitos faz com que a representação hexadecimal seja muito utilizada na representação de grandezas computacionais. Agora que se sabe que a forma de representação de um sistema digital é o binário e que se conhece as bases numéricas binária e hexadecimal, é possível entender como representar os diferentes tipos de informação (texto, números etc.) utilizando-se a base binária, que é a forma como os sistemas digitais e, consequentemente o computador, trabalham. 1.2 REPRESENTANDO INFORMAÇÃO NO MODELO DIGITAL Todo sistema digital representa informações em dois níveis, ou seja, utiliza a representação binária para isso. Porém, existem vários tipos de informação, como números inteiros, números decimais, letras etc. Já vimos como representar um número inteiro utilizando a base binária, mas e quanto aos caracteres (letras, símbolos, espaço etc.)? Nesse caso, a representação continua sendo binária. Lembrem-se de que a única maneira de representação que o computador possui é utilizando os pulsos elétricos e, no caso dos computadores digitais, esses pulsos são representados através de dois níveis apenas, que representaremos como 0 e 1. Então, o que se faz, é utilizar uma tabela de conversão. Suponha que toda vez que se representa uma informação no computador seja necessário informar também que tipo de informação é aquela (um número inteiro, uma letra, uma imagem). Se isso for feito, é possível verificar o tipo e, a partir dele, definir: 17 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Existem várias tabelas para representação de mapas de caracteres e cada uma delas com maior ou menor quantidade de símbolos, mas isso não importa nesse momento. O que importa é saber que nesses casos sempre existirá uma tabela com a relação binário/caractere. A tabela que deu origem a esse sistema foi a tabela ASCII (American Standard for Code Information Interchange - Padrão Americano para Intercâmbio de Informações Codificadas). Nela, cada caractere é representado por um código binário de 8 bits. Ou seja, nela existem 256 símbolos diferentes. Tabela 04. Trecho da tabela ASCII – código hexadecimal ` Se é um número inteiro, então basta calcular sua magnitude, como já demostrado; ` Se for um caractere (letra, símbolo ou um número no formato texto), procura-se em uma tabela, a relação do código binário armazenado com o símbolo que ele representa e exi- be-se o símbolo correto. CÓDIGO CARACTERE 30 0 31 1 32 2 33 3 34 4 35 5 36 6 37 7 38 8 CÓDIGO CARACTERE 39 9 3A @ 3B : 3C ; 3D < 3E = 3F > 40 ? 41 A Fonte: Delgado (2017, p. 421). Na Tabela 4, é possível verificar um trecho da tabela ASCII, cujo código binário de cada caractere está representado em hexadecimal. Pode-se observar que para cada número binário existe um caractere correspondente. Assim, o computador é capaz de ler o código binário e saber qual caractere esse código está representando. Até esse momento, sabemos que o computador representa informação de forma digital, utilizando base binária. Dessa forma, números inteiros são armazenados em forma de números binários, cuja magnitude é calculada a partir de uma equação (Equação 3). Sabemos, também, que além da informação armazenada em binário, o computador tem também a informaçãode que tipo de dado está armazenado e, se o dado for um caractere, o computador é capaz de verificar, em uma tabela, qual caractere aquele valor em binário representa. Porém, ainda falta saber como o computador é capaz de armazenar números não inteiros ou valores muito grandes, que vão além da capacidade 18 1 Conhecendo o hardware (número de bits da arquitetura) daquele computador. Para armazenamento de números reais, o computador é capaz de representar valores com o que chamamos de ponto flutuante. A representação em ponto flutuante é, basicamente, a versão binária da notação científica (WEBER, 2012). Então, cada número em ponto flutuante armazena 2(dois), a mantissa (m) e o expoente (e) e a magnitude do número é obtida por: Equação 04. Magnitude em ponto flutuante . emagnitude m B= Perceba que a base é sempre 2, por se tratar de um sistema binário, e que m e e são dois números inteiros. Assim, com o armazenamento de dois números inteiros é possível armazenar valores reais, além de extrapolar a capacidade de armazenamento do computador. Vamos a alguns exemplos: Tabela 05. Exemplos de números em ponto flutuante MAGNITUDE m e CÁLCULO 0,625 5 -3 3.2-3 2.147.483.648 2 30 2.230 2,73.10-12 3 -40 3.2-40 Fonte: elaborada pelo autor. Na Tabela 5, é possível ver que, com a utilização de ponto flutuante, apesar de se representar, em binário, apenas dois números inteiros relativamente pequenos (m e e), a magnitude resultante possibilita valores reais, como mostra o valor da primeira linha da tabela ou valores muito grandes ou muito pequenos, como pode ser observado nas linhas dois e três da mesma tabela. Nesse caso, o que se perde é que toda vez que o computador for ler um valor nessa notação, ele precisará realizar o cálculo para saber a magnitude do número, já que os valores armazenados são parâmetros da Equação 4. Com isso, falta sabermos apenas como o computador armazena valores negativos, e é bem simples. Para isso, ele verifica o primeiro dígito do número (é preciso saber quantos bits o número tem). Chamamos esse primeiro dígito de bit mais significativo. Quando o dígito mais significativo for 0, então o número é positivo e sua magnitude é obtida diretamente, através da utilização da Equação 3, como já visto anteriormente. Porém, se o dígito mais significativo for 1, então o valor é negativo e sua magnitude é calculada invertendo-se bit a bit o valor de cada bit (se 0 inverte para 1 e se 1 inverte para 0), calculando-se a magnitude desse novo valor (obtido a partir da inversão) e somando-se 1 ao resultado. Vejamos alguns exemplos: 19 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Tabela 06. Exemplos magnitude números negativos (4 bits) NÚMERO SINAL INVERSÃO MAGNITUDE 1010 - 0101 -6 0111 + 7 1111 - 0000 -1 1001 - 0110 -7 Fonte: elaborada pelo autor. Na Tabela 6 é possível verificar que, se considerarmos valores de 4 bits, o valor representado na primeira linha da tabela (1010) inicia com 1 e, portanto, é negativo (sinal -). Para calcular sua magnitude é necessário inverter o valor bit a bit, bits que são 0 viram 1 e bits que são 1 viram 0, obtendo-se 0101 (cuja magnitude é 5, utilizando-se a Equação 3). Pega-se esse valor 5 e soma-se 1, obtendo-se magnitude 6. Como sabemos que esse valor é negativo, então a magnitude final é -6. O mesmo ocorre com os valores negativos (linhas 3, 4 e 5 da tabela) e não com a linha 2 (0111), que é um número positivo (inicia com 0) e cuja magnitude é obtida aplicando-se a Equação 3 diretamente ao número, sem necessidade de inversão. 1.3 COMPONENTES DE UM COMPUTADOR E O MODELO DE VON NEUMANN A grande maioria dos computadores atuais seguem uma arquitetura definida por John Von Neumann em 1945 (DELGADO, 2017, p. 128). Segundo essa arquitetura, que recebe o nome de Arquitetura de Von Neumann, uma máquina de calcular precisa ter, minimamente, componentes de processamento (responsáveis pela execução das instruções), componentes de memória (responsáveis pelo armazenamento de informações) e componentes de entrada e saída (responsáveis por realizar a interface com o usuário). Uma arquitetura desse tipo pode é ilustrada na Figura 4. O computador, portanto, recebe os dados através de seus dispositivos de entrada, processa esses dados utilizando seu processador com o auxílio de unidades de memória, armazena temporariamente resultados e emite os resultados através de seus dispositivos de saída. Figura 04. Arquitetura de Von Neumann PROCESSADOR DISPOSITIVOS DE ENTRADA E SAÍDAMEMÓRIA Fonte: elaborada pelo autor. 20 1 Conhecendo o hardware O processador é a parte do computador que tem a função de executar os algoritmos computacionais (programas). São responsáveis por: ` Ler e escrever dados na memória; ` Interpretar e executar as instruções (comandos); ` Informar aos demais componentes do computador quais ações devem ser feitas a cada momento; É o componente mais importante da máquina, responsável por realizar o controle e comandar a leitura e a escrita em discos e memória, executar os programas e receber dados dos dispositivos de entrada, e transmitir dados para dispositivos de saída. O microprocessador executa diversas operações matemáticas como: adição, subtração, multiplicação, divisão e operações lógicas como: OR, AND, NOT e realiza comparações entre dois números para saber qual é o maior, menor ou se são iguais. Além disso, é o responsável pela execução de decisões em função de comparação. O processador tem a capacidade de realizar operações com caracteres, como procurar uma palavra em um texto, trocar todas as ocorrências de um caractere por outro, além de outras operações comuns em processamento de texto. Já as memórias são dispositivos para o armazenamento de dados, sendo a parte do computador na qual os programas e dados são armazenados e estando divididas em memória interna ou principal e memória externa. Os programas e dados a serem executados pelo computador residem na memória principal e os arquivos residem na memória externa. A memória principal é formada de unidades menores denominadas palavras, cada uma das palavras tem um endereço correspondente, o que permite que possa ser acessada de forma única. Cada palavra pode armazenar um conjunto específico de informação que tem, obrigatoriamente, o mesmo número de bits da palavra. A memória externa é constituída de dispositivos capazes de armazenar os programas, mesmo que o computador não esteja ligado e seu custo é bem menor se comparado com o custo da memória principal, sendo sua capacidade de armazenamento bem superior ao da memória principal. Como exemplo de memórias externas, pode-se citar: os discos rígidos (HD), as fitas magnéticas etc. Já os dispositivos de entrada e saída são todos os dispositivos que fazem a interface com o usuário e, consequentemente, com o mundo exterior. Os dispositivos de entrada são os responsáveis por enviar dados para que possam ser processados para o computador. Já os dispositivos de saída são responsáveis por enviar os resultados do processamento para o usuário. Pode-se citar como dispositivos mais comuns: teclado, mouse, scanner, monitor e impressora. 21 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Tanto o processador, quanto memória e dispositivos de entrada e saída formam o chamado hardware (parte física de um computador). Porém, o usuário não comanda diretamente o hardware, e sim os programas. Os programas contêm as instruções que são executadas pelo hardware e são chamados de softwares. A composição do hardware passa pela concepção através do uso de conceitos de eletrônica. Todo hardware, desde o processador até os dispositivos de entrada e saída, é construído através de portas lógicas, que são organizadas em circuitos lógicos capazes de realizar funções especificas. 2. BASES DA ELETRÔNICA E PORTAS LÓGICAS Os computadores são equipamentos eletrônicos digitais e, como tais, são construídos apartir de circuitos digitais básicos, conhecidos como circuitos lógicos. Esse material não se destina ao estudo de eletrônica, portanto, os conceitos vistos aqui possuem abstrações e simplificações que facilitam o entendimento da eletrônica. O objetivo é conhecer a forma como os computadores são concebidos para melhor trabalhar com eles. A base da eletrônica digital são as chamadas portas lógicas. Resumindo, uma porta lógica é um circuito semicondutor capaz de, dependendo do valor que receber de entrada, produzir uma saída compatível com a operação lógica que se pretende realizar. Então, as portas lógicas são componentes eletrônicos básicos capazes de realizar operações lógicas elementares e cada porta lógica, com o intuito de representação gráfica de circuito, possui um símbolo, de acordo com o padrão 91-1984 da ANSI/IEEE (Instituto de engenharia elétrica e eletrônica) (FLOYD, 2011, p. 145). Como componentes digitais, as portas lógicas operam com valores binários. Assim, a função lógica que representam são funções tais que, recebendo um ou mais bits de entrada, produzem um bit de saída. Quando um determinado parâmetro (ou variável da função lógica) representa valores dicotômicos, chamamos essa variável de booleana, em homenagem ao matemático George Boole, que desenvolveu uma álgebra específica para variáveis que só podem assumir dois valores excludentes entre si e que se tornou a base da computação moderna. Vamos verificar quais são as principais funções lógicas e suas portas correspondentes: Função e porta lógica E ou AND A função E ou AND executa a multiplicação de duas ou mais variáveis booleanas. Sua representação algébrica é .S A B= , onde se lê que S = A e B. Tal função retorna um valor 1 (ou verdadeiro) sempre que o valor das duas variáveis de entrada forem também 1 (CAPUANO, 2014, p. 118). A Tabela 7 representa todas as combinações possíveis para essa função e a Figura 5 apresenta a representação gráfica da porta lógica E. 22 1 Conhecendo o hardware Função e porta lógica OU ou OR A função OU ou OR executa a soma de duas ou mais variáveis booleanas. Sua representação algébrica é S A B= + , onde se lê que S = A ou B. Tal função retorna um valor 0 (ou falso) sempre que o valor das duas variáveis de entrada forem também 0 (CAPUANO, 2014, p. 119). A Tabela 8 representa todas as combinações possíveis para essa função e a Figura 6 apresenta a representação gráfica da porta lógica OU. Tabela 07. Função E Tabela 08. Função OU Fonte: elaborada pelo autor. Fonte: elaborada pelo autor. Fonte: elaborada pelo autor. Fonte: elaborada pelo autor. Figura 05. Porta Lógica E Figura 06. Porta Lógica OU A B A e B 0 0 0 0 1 0 1 0 0 1 1 1 A B A e B 0 0 0 0 1 1 1 0 1 1 1 1 Função e porta lógica NÃO ou NOT A função NÃO ou NOT executa a inversão ou complemento de uma variável booleana. Sua representação algébrica é S A= , onde se lê que S = não A. Tal função retorna um valor 0 (ou falso) sempre que o valor da variável de entrada for 1 e retorna 1 (ou verdadeiro) sempre que o valor da variável de entrada for 0 (CAPUANO, 2014). A Tabela 9 representa todas as combinações possíveis para essa função e a Figura 7 apresenta a representação gráfica da porta lógica NÃO. 23 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Função e porta lógica OU EXCLUSIVO ou XOR A função OU EXCLUSIVO ou XOR é representada algebricamente por S A B= ⊕ , em que se lê que S = A ou exclusivo B. Tal função retorna um valor 0 (ou falso) sempre que os valores das duas variáveis de entrada forem iguais e retorna 1 (ou verdadeiro) sempre que as entradas forem diferentes (FLOYD, 2011, p. 221). A Tabela 8 representa todas as combinações possíveis para essa função e a Figura 6 apresenta a representação gráfica da porta lógica OU. Tabela 09. Função NÃO Fonte: elaborada pelo autor. Fonte: elaborada pelo autor. Figura 07. Porta Lógica NÃO A não A 0 1 1 0 Tabela 10. Função OU EXCLUSIVO Fonte: elaborada pelo autor. Fonte: elaborada pelo autor. Figura 08. Porta Lógica OU EXCLUSIVO A B A ou exclusivo B 0 0 0 0 1 1 1 0 1 1 1 0 As portas lógicas são os elementos básicos para a elaboração de circuitos lógicos que podem ser construídos para execução de determinada tarefa. 2.1 CIRCUITOS LÓGICOS Os circuitos lógicos são combinações de portas lógicas de forma a que o resultado obtido com essa combinação resolva problemas de lógica digital que, por sua vez, é uma área da eletrônica digital (CAPUANO, 2014, p. 119). Existem, basicamente, duas maneiras de se desenvolver um circuito lógico: a primeira é, a partir de um problema real, esboçar a função lógica (conjunto de operações lógicas) que solucionem o problema e, a partir da função, desenvolver o circuito; a segunda é, a partir de um problema real, arranjar de forma adequada o conjunto de portas lógicas a fim de que o resultado do circuito resolva o problema e, a partir do circuito, obter a função lógica. 24 1 Conhecendo o hardware Pode-se desenvolver circuitos lógicos, por exemplo, para controlar um semáforo, para controlar o acesso a um determinado local, para ligar ou desligar determinado equipamentos ou para efetuar um cálculo. Portanto, cada um dos cálculos cujos computadores são capazes de realizar (soma, subtrações, multiplicações e cálculos mais avançados) são realizados a partir de circuitos lógicos construídos para esse fim. Figura 09. Exemplo de circuito lógico simples Fonte: https://upload.wikimedia.org/wikipedia/commons/3/32/Circuito_l%C3%B3gico_n%C3%A3o-simplificado.png. Acesso em: 9 fev. 2022. A Figura 9 mostra um exemplo de circuito lógico construído com portas lógicas. É possível observar que no circuito apresentado existem 3 variáveis de entrada (A, B e C) e que, a partir do circuito, uma variável X é apresentada como saída. É importante salientar que todas as variáveis envolvidas no circuito são booleanas, ou seja, podem assumir valores 0(falso) ou 1(verdadeiro). O circuito habilita ou não a saída X, ou seja, apresenta o valor 1 (ligado) na saída X, dependendo dos valores que recebe em cada uma das variáveis de entrada e quem define o valor de saída é a expressão resultante do circuito lógico apresentado. 2.2 EXPRESSÕES BOOLEANAS E OBTENÇÃO DE CIRCUITOS Para exemplificar como um circuito é obtido, desenvolveremos um circuito lógico para a realização da soma de dois bits. É um processo bem simples, envolvendo apenas dois bits, mas que dá um exemplo bem real de como um circuito lógico pode ser obtido a partir de um problema real, seja ele aritmético, como é o caso, ou mesmo de outra natureza. A primeira coisa a se fazer é obter a expressão lógica do problema. Para isso, é preciso entender o problema e representá-lo na forma digital. Vamos pensar como funciona a soma de dois bits e, para isso, é preciso analisar todas as possibilidades de solução a partir de todas as possibilidades de entrada. Se queremos fazer a soma de dois bits, teremos as seguintes possibilidades: 01. 0 + 0 = 0 (somar dois números zeros, obtendo o resultado 0); 02. 0 + 1= 1 (somar o número zero com o número 1, obtendo o resultado 1); 03. 1 + 0 = 1 (somar o número 1 com o número 0, obtendo o resultado 1); 04. 1 + 1 = 10 (somar o número 1 com outro número 1. Nesse caso o resultado será 2, que representado em binário será o 10). A B BC A + BC x + A B (A + BC) C 25 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais Colocando-se todas as possibilidades em uma tabela, teremos: Tabela 11. Tabela verdade Somador Binário N1 N2 R1 R2 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Fonte: elaborada pelo autor. A Tabela 11 representa todas as possibilidades de entrada (todos os valores possíveis de N1 e N2) e todas as possibilidades de saída (R1 e R2). A saída foi dividida em dois valores independentes porque um dos resultados da soma, no caso 1+1 resultou na saída 10. Como cada saída só pode assumir um único valor, então teremos que considerarque a saída tem dois bits, um que será apresentado em R1 e outro que será apresentado em R2. Perceba que isso não muda o resultado, já que teremos: 01. 0 + 0 = 00 02. 0 + 1 = 01 03. 1 + 0 = 01 04. 1 + 1 = 10 Chamaremos a Tabela 11 de tabela verdade, que é a tabela que apresenta todas as possibilidades de ocorrência de cada variável de entrada e, para cada uma das ocorrências, qual deve ser o valor da saída, ou das saídas, já que nesse caso teremos duas saídas. Agora, a partir da tabela verdade, é preciso isolar todos os casos em que o resultado for 1. Faremos isso para R1 e para R2 de forma separada. Assim: Tabela 12. Ocorrência de 1 em R1 N1 N2 R1 R2 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Fonte: elaborada pelo autor. 26 1 Conhecendo o hardware Analisando a Tabela 12 é possível observar que, o único caso em que R1 é igual a 1 é quando N1 e N2 também são 1. Nesse caso, teremos apenas uma parcela na expressão de R1, que pode ser definida como: 1 1. 2R N N= Observando-se a expressão de R1, verifica-se que a operação que está sendo executada é uma operação lógica E. Portanto, o circuito que representa a saída R1 é como mostrado na Figura 10. Figura 10. Circuito lógico R1 N1 N2 R1 Fonte: elaborada pelo autor. Analisando a Tabela 13 é possível observar que existem duas possibilidades para que a saída R2 seja 1. Portanto, a expressão terá duas parcelas. Na primeira parcela, o valor de N1 é 0 e, portanto, deverá entrar invertido na expressão (usar a função lógica NÂO) e o valor N2 é 1 e será inserido na expressão sem a necessidade da inversão. Já na parcela 2, acontece o contrário, é o N2 que é 0 e necessita ser invertido e N1 é 1. Portanto, a expressão lógica que representa a saída R2 é: 2 1. 2 1. 2R N N N N= + Perceba que cada uma das parcelas é ligada à expressão pelo operador OU. Tabela 13. Ocorrência de 1 em R2 N1 N2 R1 R2 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Fonte: elaborada pelo autor. 27 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais O circuito que representa a expressão obtida para R2 é apresentado na Figura 11, onde é possível observar que existe uma inversão da variável N1 e uma operação E do resultado dessa inversão com N2; uma inversão da variável N2 e uma operação lógica E do resultado dessa inversão com N1 e a operação lógica OU das saídas dessas duas operações lógicas E. Isso é exatamente a mesma operação representada na expressão obtida. Figura 11. Circuito lógico R2 N1 N2 R2 Fonte: elaborada pelo autor. A partir dos circuitos das duas saídas é possível obter um circuito único, juntando os dois circuitos em um só. Figura 12. Circuito Somador Binário N1 N2 R1 R2 Fonte: elaborada pelo autor. 28 1 Conhecendo o hardware A Figura 12 representa o circuito resultante do processo de desenvolvimento de um somador binário. O processo para elaboração de qualquer circuito lógico, abstraindo-se possíveis simplificações e melhorias, pode ser descrito como: 01. Escreve-se a tabela verdade que represente todas as possibilidades de saída, dadas todas as possibilidades das entradas do problema real; 02. Isola-se as linhas nas quais a saída for 1 e verifica-se o valor de cada uma das entradas. 03. Faz-se uma operação lógica E entre as entradas, considerando invertidas as entradas que apresentem valor lógico 0 na tabela verdade. 04. Faz-se uma operação lógica OU entre cada uma das operações lógicas E obtidas 05. Obtém-se o circuito resultante a partir da expressão obtida no item 2. 06. Repete-se o processo para cada uma das saídas 07. Une-se os circuitos obtidos em um só, que representa a solução do problema. CONCLUSÃO Essa unidade mostrou como é construído, de forma bem básica, o hardware de um computador, evidenciando, desde os conceitos matemáticos iniciais e de definição de máquinas digitais, até a utilização desses conceitos na concepção de circuitos lógicos básicos. O computador é uma máquina formada pela conjunção desses circuitos lógicos, um para cada operação que o computador necessite realizar e a esse conjunto de circuitos damos o nome de hardware. Quanto mais o profissional de TI conseguir se apossar desses conhecimentos, melhor ele entenderá os softwares que fazem a gestão desse hardware e melhor conseguirá desenvolver sistemas que façam uso dele de maneira eficiente. 29 1 U ni ve rs id ad e S ão F ra nc is co Ambientes computacionais REFERÊNCIAS BIBLIOGRÁFICAS CAPUANO, F. G. Sistemas digitais circuitos combinacionais e sequenciais. São Paulo: Saraiva Educação SA, 2014. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536520322/. Acesso em: 26 jan. 2022. FLOYD, T. Sistemas Digitais. Porto Alegre: Grupo A, 2011. Disponível em: https://integrada.minhabiblioteca. com.br/#/books/9788577801077/. Acesso em: 26 jan. 2022. BREITHAUPT, J. Física. 4. ed. Rio de Janeiro: Grupo GEN, 2018. Disponível em: https://integrada.minhabi- blioteca.com.br/#/books/9788521635109/. Acesso em: 26 jan. 2022. DELGADO, J.; RIBEIRO, C. Arquitetura de Computadores. 5. ed. Rio de Janeiro: Grupo GEN, 2017. Dispo- nível em: https://integrada.minhabiblioteca.com.br/#/books/9788521633921/. Acesso em: 26 jan. 2022. HETEM JUNIOR, A.; HETEM, C. G. Fundamentos de Matemática - Física para Licenciatura - Ondulatória. São Paulo: Grupo GEN, 2016. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788521631262/. Acesso em: 26 jan. 2022. PAIXÃO, Renato. R. Arquitetura de Computadores - PCs. São Paulo: Editora Saraiva, 2014. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536518848/. Acesso em: 26 jan. 2022. WEBER, Raul. F. Fundamentos de Arquitetura de Computadores - V8 - UFRGS. Porto Alegre: Grupo A, 2012. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788540701434/. Acesso em: 26 jan. 2022. Conhecendo o hardware 1. Funcionamento básico dos computadores 2. Bases da eletrônica e portas lógicas Processos Computacionais 1. Sistemas Operacionais 2. Processos 3. Sincronização e comunicação entre processos 4. Escalonamento da Unidade Central de Processamento Memórias e dispositivos de Entrada e Saída 1. Memórias e seu gerenciamento 2. Memória virtual 3. Dispositivos de entrada e saída e seu gerenciamento Desenvolvimento de sistemas embarcados 1. Registradores e Linguagem de baixo nível 2. Funcionamento básico de eletrônica 3. Microcontroladores e sistemas embarcados 4. Desenvolvimento em Arduino