Aula 1 - Organização Básica de Computadores e Linux - IC

Propaganda
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
Download