Organização Básica de Computadores MC102 Algoritmos e Programação de Computadores Instituto de Computação UNICAMP Março de 2017 (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 1 / 33 Agradecimentos Agradecimentos Esta apresentação foi feita pelos alunos Celso Santos e Fernando Pereira, com auxílio dos materiais preparados pelos professores Eduardo C. Xavier e Edson Borin, do Instituto de Computação da Unicamp Também foi utilizado parte do material preparado pela professora Deise Saccol para suas aulas de conceitos básicos de arquitetura de computadores da UFRGS (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 2 / 33 Conteúdo Conteúdo 1 Agradecimentos 2 Computadores e Programas Computadores Organização Hardware 3 Sistemas Operacionais Sistemas Operacionais Linux 4 Software Linguagens de programação Código binário Bits Histórico (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 3 / 33 Computadores e Programas Computadores Computadores Máquinas que manipulam informações (dados) Programa: Sequência de operações necessárias para executar uma determinada tarefa (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 4 / 33 Computadores e Programas Organização Organização básica de um computador Tarefas complexas são transformadas em conjuntos de operações simples. Há uma hierarquia de procedimentos, cada um realizando uma tarefa específica. (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 5 / 33 Computadores e Programas Hardware Hardware Dispositivos físicos que compõem o computador Processador Hard Disk (HD) Memória (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 6 / 33 Computadores e Programas Hardware Organização Funcional Sistema Central Processador (CPU) Clock Memória Interfaces Unidades de Entrada e Saída (I/O) (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 7 / 33 Computadores e Programas Hardware Organização Funcional (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 8 / 33 Computadores e Programas Hardware Sistema central detalhado Unidade Central de Processamento (UCP/CPU) Unidade de controle Controla o fluxo de informações entre todas as unidades do hardware Executa as instruções dadas em sequência Unidade Aritmética e Lógica (ALU) Realiza as operações aritméticas e lógicas necessárias para a execução das instruções Clock Os processadores trabalham regidos por um padrão de tempo, determinado pelo clock Pulso de período fixo que sincroniza as operações de hardware Determina a frequência da execução das operações (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 9 / 33 Computadores e Programas Hardware Sistema central detalhado Memória Armazena temporariamente dados e instruções utilizados pelo processador Organizada em porções de armazenamento, cada uma com um endereço RAM (Random Access Memory ) Memória volátil e temporária Utilizada para armazenar programas e dados do usuário Recebe resultados intermediários de processamento Informações podem ser lidas ou gravadas ROM (Read Only Memory) Memória permanente (gravada pelo fabricante) Utilizada para programas de iniciação e reconhecimento de hardware Apenas Leitura (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 10 / 33 Computadores e Programas Hardware Unidades de entrada e saída Dispositivos periféricos conectados ao computador, que estabelecem a comunicação com o mundo externo Possuem controladores que gerenciam a comunicação do dispositivo com a memória e o processador Imagem retirada de https://conceitos.com/dispositivos-de-entrada-e-saida/ (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 11 / 33 Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais O hardware executa as instruções de cada programa O acesso ao hardware é controlado por um programa especial conhecido como sistema operacional O sistema operacional é o responsável pelo controle do hardware e pela segurança dos dispositivos Exemplos: Windows, Linux, OSX, Solaris (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 12 / 33 Sistemas Operacionais Linux O que é o Linux? Sistema operacional de código aberto, escrito em C e gratuito Qualquer pessoa pode copiar e modificar o código para adaptá-lo às suas necessidades, gerando as várias distribuições disponíveis; entre elas: Ubuntu, Fedora, Debian, Mint, Arch, ... No mundo, o Linux está presente em: Quase a totalidade dos supercomputadores Mais de dois terços dos servidores Web Nos dispositivos Android O código fonte está disponível em https://github.com/torvalds/linux (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 13 / 33 Sistemas Operacionais Linux O que é o Linux? É o sistema operacional instalado na maioria dos computadores da Unicamp e será utilizado na disciplina de MC102 A distribuição disponível nos computadores das salas SI é o Fedora Observação: As máquinas das salas SI apagam todos os arquivos salvos após um logout. Lembre-se de sempre salvar os seus códigos em outro lugar (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 14 / 33 Sistemas Operacionais Linux Programas básicos gedit: editor de texto gcc: compilador C firefox: navegador web terminal: interface para execução de linhas de comando do sistema operacional (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 15 / 33 Sistemas Operacionais Linux Comandos básicos do terminal cd: Muda para um diretório (Change Directory). cd Documentos Muda para o diretório Documentos mkdir: Cria um novo diretório (MaKe DIRectory) mkdir lab00 Cria o diretório lab00 ls: Lista o conteúdo de um diretório (LiSt directory) ls Documentos Lista o conteúdo do diretório Documentos ls Lista o conteúdo do diretório atual (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 16 / 33 Sistemas Operacionais Linux Comandos básicos do terminal mv: Move arquivos para um diretório (MoVe) mv lab00.c mc102/ Move o arquivo lab00.c do diretório atual para o diretório mc102 diff: Compara dois arquivos (DIFFerence) diff texto1 texto2 Mostra, linha a linha, as diferenças entre os arquivos texto1 e texto2 (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 17 / 33 Sistemas Operacionais Linux Escrevendo e compilando um programa pelo terminal Abra um terminal: Aplicações → Acessórios → Terminal Applications → System Tools → Terminal Crie uma pasta para salvar seus programas Abra o gedit Copie o programa que será projetado no editor Salve o arquivo com extensão ".c"na pasta criada (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 18 / 33 Sistemas Operacionais Linux Escrevendo e compilando um programa pelo terminal No terminal, navegue até a pasta onde o programa foi armazenado cd nome-da-pasta Utilize a linha de comando abaixo para compilar o programa gcc lab00.c -pedantic -Wall -Werror -ansi -o lab00 O arquivo "lab00"gerado pela compilação acima é um executável que pode ser rodado pelo seguinte comando: ./lab00 (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 19 / 33 Software Linguagens de programação Linguagens de programação (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 20 / 33 Software Linguagens de programação Linguagens de programação Linguagem de alto nível (C/C++, ...) Laços, variáveis, objetos, ... Independente de máquina Linguagem de baixo nível Sequência de instruções, registradores, posições de memória, ... Dependente de máquina Código binário (0’s e 1’s) (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 21 / 33 Software Código binário Sistema Binário Sistema de numeração posicional de base 2 (dígitos 0 e 1, apenas) É o sistema de numeração utilizado pelos computadores n2 = 100 n10 = 100 n2 = 1 n10 = 1 n2 = 101001 n10 = 234 (101001)2 = (41)10 (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 22 / 33 Software Código binário Conversão: base 2 → base 10 Seja n um número de d dígitos, quando escrito na base 2 Considere uma sequência formada pelos dígitos de n, ordenados da direita para a esquerda Seja n[i] o dígito de n na posição i Assim, n escrito na base 10 é dado por: n10 = n[0] ∗ 20 + n[1] ∗ 21 + ... + n[d − 1] ∗ 2d−1 n10 = d−1 X n[i] ∗ 2i i=0 (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 23 / 33 Software Código binário Exemplo: base 2 → base 10 n2 = 10011 n[0] = 1, n[1] = 1, n[2] = 0, n[3] = 0, n[4] = 1, n10 = 1 · 20 + 1 · 21 + 0 · 22 + 0 · 23 + 1 · 24 = n10 = 1 + 2 + 0 + 0 + 16 = n10 = 19 (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 24 / 33 Software Código binário Conversão: base 10 → base 2 Método das divisões sucessivas: Seja n um número em base decimal Divida n por 2, e seja r o resto desta divisão Então, r será o dígito menos significativo de n na base 2 Seja q o quociente da divisão de n por 2 Divida, agora, q por 2, repetindo o processo até que o quociente seja 0 Os restos das divisões realizadas são os dígitos de n na base binária, sendo o último resto o dígito mais significativo (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 25 / 33 Software Código binário Exemplo: base 10 → base 2 n10 = 237 q q q q q q q q = = = = = = = = 237/2 = 118 → r = 1 118/2 = 59 → r = 0 59/2 = 29 → r = 1 29/2 = 14 → r = 1 14/2 = 7 → r = 0 7/2 = 3 → r = 1 3/2 = 1 → r = 1 1/2 = 0 → r = 1 Logo, n2 = 11101101 (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 26 / 33 Software Bits Sistema Binário Todo hardware opera com sinais digitais: ’sem energia’ e ’com energia’. Para representar esses sinais, utilizamos os valores 0 e 1 Estes sinais são chamados de bits Byte: Agrupamento de 8 bits 1024 bytes = 1MB, 1024 MB = 1 GB, ... Dentro do computador, letras e símbolos são representados por números Todo programa, instrução e dado de um computador é armazenado em bits (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 27 / 33 Software Bits Exemplo: arquivo de imagem Cada arquivo de imagem do computador possui header que identifica propriedades da imagem Cada campo possui uma função específica e tem uma quantidade de bytes pré-determinada (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 28 / 33 Software Bits Exemplo: programa em linguagem de máquina Um programa é um arquivo Cada programa é composto por milhares de instruções deste tipo 00100111101111011111111111100000 10101111101001000000000000100000 10101111101000000000000000011000 10001111101011100000000000011100 00000001110011100000000000011001 00101001000000010000000001100101 00000000000000000111100000010010 00010100001000001111111111110111 00111100000001000001000000000000 00001100000100000000000011101100 10001111101111110000000000010100 00000011111000000000000000001000 10101111101111110000000000010100 10101111101001010000000000100100 10101111101000000000000000011100 10001111101110000000000000011000 00100101110010000000000000000001 10101111101010000000000000011100 00000011000011111100100000100001 10101111101110010000000000011000 10001111101001010000000000011000 00100100100001000000010000110000 00100111101111010000000000100000 00000000000000000001000000100001 Este código calcula e imprime a soma dos quadrados dos inteiros de 0 a 100 (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 29 / 33 Software Histórico Primórdios da computação: Colossus Máquina inglesa criada para para resolver problemas de criptografia durante a guerra Programada com chaves ON/OFF (binário) (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 30 / 33 Software Histórico Melhoria: Linguagem Assembly Linguagem de baixo nível para representar as instruções em código binário Um programa chamado montador (assembler) faz a transformação para código binário LOOP: MOV A, 3 INC A JMP LOOP (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 31 / 33 Software Histórico Linguagens de alto nível e compiladores Mais distantes da máquina e mais próximas de linguagens naturais (inglês, português, etc.) Apesar de mais compreensiveis, elas não são ambíguas O compilador as transforma em código executável Exemplos de linguagens: C, C++, C# Java Python Pascal (IC - Instituto de Computação) MC102 - 1 semestre de 2017 Março de 2017 32 / 33 Software (IC - Instituto de Computação) Histórico MC102 - 1 semestre de 2017 Março de 2017 33 / 33