Escolar Documentos
Profissional Documentos
Cultura Documentos
Arquitectura de Computadores
(Duração 45+45 minutos)
Nome: Número:
1. (5)
Classifique cada uma das alíneas seguintes como Verdadeira ou Falsa.
1.2.
a) F O processador Intel 386DX possui uma unidade processamento SIMD (Single Instruction Multiple Data)
integrada.
b) V O processador Intel Pentium 4 utiliza 2 níveis de cache integrados.
h) V Um TLB pode utilizar políticas de substituição do tipo LRU (Least Recently Used).
1.3.
a) F Uma cache vítima utiliza-se para acelerar o processo de segmentação
b) V É possível utilizar políticas de leitura do tipo Read-Through com uma cache completamente associativa.
c) V Uma cache pode utilizar blocos de dados mais largos do que o barramento de dados externo.
d) V É possível utilizar políticas de escrita do tipo Write-Back com uma cache de mapeamento direto.
g) V Uma cache externa pode ser gerida por políticas de substituição do tipo LRU (Least Recently Used)
h) V Um sistema de ficheiros do tipo UnionFS pode juntar, no mesmo directório, conteúdos voláteis e
conteúdos armazenados num CD.
1.5.
a) V Um kernel Linux pode ser compilado numa máquina com uma arquitectura distinta da máquina a que se
destina.
b) V Um kernel Linux pode incluir módulos desenvolvidos por entidades distintas.
f) F Num sistema Linux, todos os módulos de kernel têm associados os números Major e Minor.
g) V Um ficheiro de dispositivos pode implementar uma comunicação bidireccional entre uma aplicação e o
kernel.
h) V O comando insmod é utilizado para carregar módulos de sistema operativo.
2. (2)
“Em alguns processadores, utilizam-se como apontadores para a memória, registos internos mais estreitos do
que o barramento externo de endereços.”
Comente esta afirmação, referindo exemplos de processadores que conhece.
Justifique esta opção técnica e as consequências respectivas.
A afirmação é verdadeira. Um exemplo é o Intel 8086 que usa registos de 16 bits e tem barramento externo de
endereços de 20 bits.
Com esta solução, só é possível aceder a um conjunto limitado de segmentos de cada vez. Para aceder a outras posições
é necessário alterar a segmentação.
Usa-se para permitir alargar a capacidade de endereçamento de memória sem alargar a arquitectura interna.
3. (1)
Compare as tecnologias MMX e SSE2 (SIMD Streaming Extensions 2) em termos de desempenho espectável no
tratamento de cadeias de dados do tipo inteiro de 16 bits.
Com MMX é possível tratar 4 dados do tipo inteiro de 16 bits empacotados nos registos MM (de 64 bits) com única
instrução.
Com SSE2 é possível tratar 8 dados do tipo inteiro de 16 bits empacotados nos registos XMM (de 128 bits) com única
instrução.
Logo, é expectável que o desempenho com SSE2 seja o dobro do obtido com MMX.
4. (2)
Um determinado fabricante pretende adicionar à sua linha de processadores uma memória cache associativa por
conjuntos com 4 vias, que permita o armazenamento de 4096 blocos de 512 bits de dados.
Sabendo que os processadores em causa possuem barramentos de endereços de 24 bits, barramento de dados de 32
bits e que utilizam endereçamento ao Byte, indique qual deverá ser, para esta cache:
a) O número de comparadores.
NComp = NVias = K = 4
Parte B - 45 minutos
5.
O dispositivo de armazenamento de um sistema dedicado encontra-se ligado a uma estação de trabalho GNU/Linux,
tendo ficado associado ao ficheiro de dispositivo /dev/sdb. O sistema dedicado é baseado numa distribuição GNU/Linux,
com executáveis baseados na biblioteca GNU Libc.
a) Analise o output do comando apresentado abaixo.
$ cat /proc/partitions | grep sd
8 0 31457280 sda
8 1 512000 sda1
8 2 24576000 sda2
8 16 1000000 sdb
8 17 200000 sdb1
8 18 500000 sdb2
i) (0.5) Pretende-se criar uma nova partição no dispositivo associado a /dev/sdb. Indique o tamanho máximo para essa
partição, assumindo que não se pretende alterar as partições existentes.
ii) (0.5) Apresente o(s) comando(s) necessário(s) para criar um sistema de ficheiros do tipo ext2 na partição criada na
alínea anterior.
iii) (1.0) Apresente os comandos necessários para copiar o conteúdo da pasta ./build (incluindo eventuais diretórios)
para a partição preparada nas alíneas anteriores.
mkdir part
cp -a ./build/* part/
umount part
b) No diretório atual encontram-se os seguintes ficheiros, correspondentes a uma aplicação dedicada: makefile, myapp,
libutils.a, libutils.so, myapp.h, myapp.o, utils.c, myapp_devices.c e myapp_main.c. Analise o output dos seguintes
comandos:
[user@localhost]$ file myapp
setuid ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared
libs), stripped
[user@localhost]$ readelf -d myapp | grep NEEDED
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [libutils.so]
i) (1.0) Pretende-se instalar esta aplicação no sistema de ficheiros principal do sistema dedicado. Indique que ficheiros
teria que copiar para o sistema alvo, indicando o diretório mais indicado para cada um deles.
6.
Considere um processador da família x86 a funcionar em modo real em que o estado de alguns dos registos é o
apresentado na tabela seguinte:
ax bx cx dx si di Listagem 1 Listagem 2
0x215 0x300 0x600 0x4A0 0x5C0 0x7C0 mov [0xFF], ax entry start
bp sp cs ds ss es mov si, #0xFF start:
mov bx, [si] run_system
0x10C 0x40A 0x100 0x800 0x4400 0x5000 mov bp, cx
mov ax, [bp] evento1:
mov [bx], cx iret
var1: db 100
a) i) (1,5) Determine os endereços físicos das posições de memória lidas ou escritas pela sequência de instruções da
Listagem 1.
ii) (0,5) Indique o valor contido no registo bx após a execução da sequência de instruções da Listagem 1.
BX = AX’ = 0x215
b) (0,5) Altere o código da rotina evento1, na Listagem 2, de modo a que o valor da variável var1 seja carregado para o
registo ax. Assuma que o programa é carregado no endereço 0x7100. Os registos podem ter qualquer valor no
arranque da rotina e deverão manter os mesmos valores após a execução da mesma.
entry start
start:
run_system
evento1:
push ds
mov ax, 0x710
mov ds, ax
mov al, [var1]
mov ah, 0x0
pop ds
iret
var1: db 100
7.
Pretende-se implementar, na forma de um módulo de Linux, um controlador orientado ao carácter para o dispositivo
XYZCrypt, com o nome de dispositivo mod2, major number 1100 e minor number 0.
a) (1) Implemente uma função que faça o registo do dispositivo aquando do carregamento do módulo, incluindo o
registo da função mod_read, definida abaixo, como função de tratamento de leituras do dispositivo.
static ssize_t mod_read(struct file *f, char *buf, size_t len, loff_t *off) {
int bytes_read = 0;
while ( len && *msgp ) {
put_user( *(msgp++), buf++);
len--;
bytes_read++;
}
return bytes_read;
}
int init_module(void) {
return register_chrdev(1100, "mod2", &fops);
}
b) (3.0) O ficheiro ../build/initrd.img é o initrd de um sistema GNU/Linux. Pretende-se enviar a string “HELLO” para o
dispositivo o XYZCrypt durante a execução do script linuxrc desse initrd. Apresente a sequência de comandos
necessária para alterar esse initrd, assim como eventuais edições do respetivo script linuxrc, de modo a implementar
essa operação.
mkdir initrd
vi initrd/linuxrc
( acrescentar : )
insmod /modules/XYZCrypt.ko
mkdir initrd/modules
cp XYZCrypt.ko initrd/modules/
umount initrd