Ad2 2021 2

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 4

AD2 - Organização de Computadores 2021/2

1. (1,0 ponto) Representação de dados e segurança: a maneira como o computador


representa internamente os dados e os exibe para os usuários pode ter importantes
implicações de segurança. Para ilustrar tal fato, leia sobre o ataque de homografia
(https://en.wikipedia.org/wiki/IDN_homograph_attack) e explique como que um
atacante pode se aproveitar do fato de existirem múltiplas representações para um
certo texto, todas essas representações sendo muito parecidas ou idênticas do ponto
de vista de um usuário “a olho nu”, para fazer ataques usando ferramentas como o
ditto (https://github.com/evilsocket/ditto). Entre no site da ferramenta ditto, copie e cole
o link para http://cloudfare.com contido no site do ditto
(https://github.com/evilsocket/ditto) em uma nova aba do seu browser, e compare com
o que ocorre se você abrir uma nova aba do browser e escrever http://cloudfare.com
sem copiar e colar o texto de nenhuma fonte. O que está acontecendo? Como a
representação dos dados afeta a segurança?

2. (3,0 pontos) Representação de dados e bugs: Considere um computador, cuja


representação para ponto fixo e para ponto flutuante utilize 16 bits. Na representação
em ponto flutuante, as combinações possíveis de bits representam números
normalizados do tipo +/-(1,b-1b-2b-3b-4b-5b-6b7b8b-9b-10 × 2Expoente), onde o bit mais à
esquerda representa o sinal (0 para números positivos e 1 para números negativos),
os próximos 5 bits representam o expoente em complemento a 2 e os 10 bits seguintes
representam os bits b-1 a b-10, como mostrado na figura a seguir:

S Expoente representado em complemento a 2 b-1 b-2 b-3 b-4 b-5 b-6 b-7 b-8 b-9 b-10

a) (0,8) Considere o seguinte conjunto de bits representado em hexadecimal


DE91. Indique o valor deste número em decimal, considerando-se que o
conjunto representa:
(a.1) um inteiro sem sinal
(a.2) um inteiro em sinal magnitude
(a.3) um inteiro em complemento a 2
(a.4) um real em ponto flutuante conforme descrição do enunciado
Um programador escreve o seguinte programa em C numa máquina de 32 bits:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int i; unsigned int j;
i=0xFFFFFFFF; j=0xFFFFFFFF;
if (i < 0) printf("i < 0\n"); else printf("i > 0\n");
if (j < 0) printf("j < 0\n"); else printf("j > 0\n");
if (i==j)
printf("i e j sao iguais, i=%d, j=%u, e a soma i+j=%d\n",
i,j,i+j);
return 0;
}

b) (0,6 pontos) Qual a saída do programa acima? Você pode executar o programa
no Linux, por exemplo, fazendo
gcc teste.c -oteste
e em seguida ./teste

Explique detalhadamente cada uma das saídas do programa. É possível que i


e j sejam “diferentes e ao mesmo tempo iguais”?

c) (0,6 pontos) Tendo em vista o que ocorreu acima, conclui-se que C é uma
fortemente tipada ou fracamente tipada? Além disso, C é uma linguagem com
compilação estática ou interpretada dinamicamente? Coloque C no diagrama
abaixo, tentando justificar as vantagens e desvantagens de C com relação a
Java.

Fortemente tipadas

Interpretadas Compiladas

Fracamente tipadas
d) (1,0) Ao trocar a linha : i=0xFFFFFFFF; j=0xFFFFFFFF;
do programa acima por i=0xFFFFFFFFF; j=0xFFFFFFFFF;
obtém-se o programa P1 com o seguinte aviso (warning):

warning: implicit conversion from 'long' to 'int' changes


value from 68719476735 to -1 [-Wconstant-conversion]

Em seguida, trocando : i=0xFFFFFFFFF; j=0xFFFFFFFFF;


Por i=0xFFFFFFFFFF; j=0xFFFFFFFFFF;
obtém-se o programa P2 com o seguinte aviso (warning):

warning: implicit conversion from 'long' to 'int' changes


value from 1099511627775 to -1 [-Wconstant-conversion]

Explique o aviso acima. Em particular, por que surgiu o valor -1 no aviso? Ao


que correspondem os números 68719476735 e 1099511627775? A saída do
programa P1 é igual ou diferente da do programa P2? Justifique.

3. (1 ponto) Execução de instruções: (0,4 pontos) Crie um conjunto de instruções de


um operando definidas em Linguagem Assembly, utilizando endereçamento direto e
imediato, necessárias para a realização de operações aritméticas e elabore um
programa para o cálculo da equação abaixo.

X= A * ( (C – 1) + 1) + (A + 3) / 4

(0,2 pontos) Explique por que endereçamento de modo imediato é útil/necessário,


comparando-o com outros modos de endereçamento.

(0,2 pontos) Ao avaliar a expressão acima, seria possível criar e usar uma instrução
em assembly de left shift ou right shift (deslocamento para esquerda ou direita,
equivalente a << ou >> em C)? E como ela poderia ser útil na expressão? Ou
seja, qual a vantagem de se usar o shift, do ponto de vista de complexidade?

(0,2 pontos) Ao se ligar funções de otimização no compilador, será que o


compilador poderia ser capaz de simplificar a expressão acima, e poupar a
execução de alguns comandos em Assembly? Como?
4. (1,0) Do ponto de vista de uso de CPU, a varredura (polling) da E/S por programa
é menos eficiente do que a E/S por interrupção. Entretanto, há situações nas quais a
E/S por programa pode ser preferível em relação à E/S por interrupção. Cite uma
delas, mostrando o porquê de o uso da varredaura ser a melhor opção.

5. (1,0) Faça uma pesquisa para explicar o que são as GPUs (Graphics Processing
Units). Explique também, citando exemplos, como as GPUs podem ser utilizadas por
aplicações que não têm nenhum componente gráfico.

6. (2,0) A Apple usou, por vários anos, CPUs da Intel nos seus laptops Macbook.
Essas CPUs utilizam uma arquitetura da família x86 (ou x86-64). Recentemente, a
Apple começou a produzir o chip M1, que possui CPUs baseadas na arquitetura da
família ARM. Esse chip é utilizado em alguns produtos da Apple, como o Macbook.
Nesse contexto, realize uma pesquisa sobre o chip M1 para responder os seguintes
itens.
a) (0,25) A arquitetura da CPU dos chips M1 é CISC ou RISC?
b) (0,25) A arquitetura da CPU dos chips x86 (ou x86-64) da Intel é CISC
ou RISC?
c) (0,50) Explique como a arquitetura da CPU do chip M1 pode consumir
menos energia do que a arquitetura da CPU dos chips x86 (ou x86-64)
da Intel. Dica: Use a resposta dos itens a e b como base.
d) (0,50) Uma das características do chip M1 é utilizar o conceito de
sistema em um chip (SoC - system-on-chip). Explique o que é SoC,
evidenciando o porquê de esse conceito poder melhorar o
desempenho de um computador.
e) (0,50) Uma das características da CPU do M1 e de diversas outras
CPUs recentes é a utilização da técnica de execução fora de ordem
de instruções (OoOE - Out-of-Order Execution). Explique no que
consiste essa técnica, mencionando como ela pode tornar mais rápida
a execução de programas.

7. (0,5) Os novos computadores vêm adotando portas USB com conector do tipo C.
Nesse contexto, realize uma pesquisa para citar e explicar três vantagens do USB-C
em relação aos conectores USB tipo A ou B.

8. (0,5) Responda os seguintes itens considerando os tipos de comunicação paralela


e serial.
a) (0,25) Cite vantagens e desvantagens entre os dois tipos de
comunicação.
b) (0,25) Dentre esses dois tipos de comunicação, qual é a mais usada
atualmente nos computadores, na comunicação com dispositivos
periféricos? Cite dois exemplos.

Você também pode gostar