organização de computadores - respostas da lista 3

Upload: patrick-lara

Post on 12-Mar-2016

9 views

Category:

Documents


1 download

DESCRIPTION

Organização de Computadores -Soluções da 3ª Lista de Exercícios

TRANSCRIPT

  • IME

    Organizao de Computadores

    3 Lista de Exerccios

    Respostas

    Patrick Baptista Amaral de Lara

    ([email protected])

    Seo de Engenharia de Computao

    INSTITUTO MILITAR DE ENGENHARIA

    PRAA GENERAL TIBRCIO 80 CEP 22290-270

    RIO DE JANEIRO BRASIL

  • 2

    1 Questo Com relao organizao da memria cache, quantos bits no total so necessaries para uma cache diretamente mapeada com 32Kbytes de dados e blocos de 8 palavras, considerando um endereo de 32 bits?

    Endereo da memria cache com 32 KBytes de dados (1K clulas de 32 Bytes cada); 1K clulas / endereos: 210 (10 bits para o campo ndice do endereo relativo); 32 Bytes: 25 (5 bits para o campo OFFSET do endereo relativo); Cada bloco possui 8 palavras e 32 Bytes: 32Bytes / 8 palavras (4 Bytes / palavra).

    bit validade TAG DADOS

    Endereo relativo: Endereo de 32 bits. Temos 10 bits para o ndice e 5 bits para o OFFSET, sobram 17 bits para etiqueta (TAG).

    TAG ndice OFFSET

    17 bits 10 bits 5 bits

    Ento o tamanho da memria cache total ser de: 1K blocos * (17 bits de TAG + (8 palavras x 4 Bytes x 8 bits de dados) + 1 bit validade). 1K blocos * (17 + 256 + 1) = 274 Kbits.

    Endereo 1 1bit 17bits 32 Bytes Endereo 2

    ..... Endereo K

  • 3

    2 Questo Uma falha de cache caracterizada por uma requisio de dados da cache que no pode ser atendidada porque os dados no esto presents na cache. Explique detalhadamente o controle do processador no tratamento de uma falha de cache.

    A falha de cache ocorre quando uma requisio de dados da memria cache no pode ser atendida porque os dados no esto presentes na memria cache. Se a cache reportar um acerto, o computador continua usando os dados como se nada tivesse ocorrido.

    Caso contrrio, o tratamento da falha de cache feito pela unidade de controle do processador, e com um controlador separado que inicia o acesso memria e preenche novamente a memria cache. criado ento um stall, semelhante aos de pipeline, no processador inteiro, basicamente congelando o contedo dos registradores temporrios e visveis ao programador, enquanto espera-se a memria.

    Se um acesso instruo resultar em uma falha, o contedo do registrador de instruo ser invlido e para colocar a instruo correta na memria cache necessrio instruir o nvel inferior na hierarquia de memria a realizar uma leitura. Como o contador do programa incrementado no primeiro ciclo de clock da execuo nos processadores multiciclo e em pipeline, o endereo da instruo que gera uma falha de memria cache igual ao valor do contador do programa menos 4. Assim, uma vez tendo o endereo, a memria principal instruda a fazer uma leitura. Espera-se a memria responder (o acesso dever levar vrios ciclos) e ento as words so escritas na memria cache.

    As etapas a serem realizadas em uma falha de memria cache de instrues so as seguintes: a) Enviar o valor do PC (programm counter) original (PC atual 4) para a memria principal

    (MP); b) Instruir a MP a realizar uma leitura e esperar que a memria complete seu acesso; c) Escrever na entrada da cache, colocando os dados da memria na parte dos dados da

    entrada, escrevendo os bits mais significativos do endereo (vindo da ULA) no campo TAG e ligando o bit de validade; e

    d) Reiniciar a execuo da instruo na primeira etapa, o que buscar novamente a instruo, desta vez encontrando-a na cache acerto.

    O controle da cache sobre um acesso de dados basicamente idntico: em uma falha, simplesmente suspende-se o processador at que a memria responda com os dados.

  • 4

    3 Questo Dado um projeto de sistemas operacionais generic, defina suscintamente a funcionalidade dos seguintes blocos abaixo.

    (a) Processador de Comandos um programa que transforma comandos do usurio em comandos a serem executados pelo computador. Um exemplo desse tipo de programa o Command.com, que acompanhava os antigos computadores equipados com MS-DOS.

    (b) Sistema de Arquivos o sistema que cuida do armazenamento dos arquivos em dscos rgidos e outros dispositivos.

    (c) IOCS o sistema de controle de entrada e sada (E/S ou em ingls I/O) trata do acesso e controle de perifricos de E/S.

    (d) Rotina de Tratamento de Interrupes. Existem dois tipos de interrupo: de hardware, que gerada por um evento fsico qualquer, como o acionamento de uma tecla, ou a abertura de uma porta, as interrupes de softwares. Em qualquer caso, a ocorrncia de uma interrupo faz com que o processador pare o que est fazendo e execute uma rotina previamente programada para cada tipo de interrupo. a rotina de tratamento de interrupes que identifica a interrupo ocorrida e trata o fluxo convenientemente.

    (e) Spooler um dispositivo de armazenamento temporrio, para onde os dados so enviados enquanto espram sua necessidade em algum perifrico. Um exemplo so os spoolers de impresso, para onde os dados a serem impresso so enviados rapidamente, enquanto a impressora, que um perifrico lento, imprime os mesmos.

    (f) Despachante o modulo que d controle da CPU ao processo selecionado pelo escalonador. Ele envolve a troca de context, troca de usurio, seleo da parte apropriada da memria do pragrama do usurio, etc.

    (g) Escalonador a parte do Sistema Operacional que determina quais so os processos que sero executados a cada instante.

  • 5

    4 Questo Explique sucintamente a converso dinmica de endereos em um sistema que gerencia sua memria por segmentao com paginao.

    Na segmentao com paginao temos que: a) cada programa segmentado, ou seja, dividido logicamente em parties ou segmentos:

    tabela de segmentos; b) cada segmento do programa ento paginado, ou seja, dividido em outros segmentos de

    tamanho fixo, chamados pginas, que ocupam espaos no contguos na Memria Principal: tabela de alocao de pginas; Sendo assim, cada programa possui 1 tabela de segmentos; cada segmento: 1 tabela de

    pginas; e cada programa: vrias tabelas de pginas. O endereo na segmentao com paginao dividido em trs partes: segmento (SEG),

    pgina (PAG) e deslocamento (OFFSET), e a converso dinmica de endereos envolve duas operaes de pesquisa em tabela, de acordo com o esquema abaixo, onde: a) A partir do campo SEG, localizar na tabela de segmentos em qual pgina aquele segmento foi

    alocado: indicao da tabela de pgina; b) na tabela de pgina indicada, localizar o campo PAG e seu respectivo ponto de carga

    (endereo absoluto): endereo absoluto do ponto de carga; c) A partir deste endereo absoluto do ponto de carga do programa, efetuar o deslocamento

    OFFSET, obtendo ento o valor absoluto da instruo desejada: endereo absoluto da instruo desejada.

    Figura 1: converso de endereos segmentao com paginao.

  • 6

    5 Questo Na arquitetura pipeline, qual a finalidade dos buffers entre os blocos de hardware dos diferentes subciclos do ciclo de instruo? Caso estes sejam retirados, em que isto afetaria a funcionalidade desta arquitetura?

    Os buffers servem para que os sinais de controle e dados referentes execuo de uma

    instruo sejam enviados para os estgios seguintes de sua execuo, de forma que estes no sejam afetados pelos sinais de controle das novas instrues que entram no pipeline. Eles so necessrios para a implementao de Forwarding e Stall e sem as suas existncias, o pipeline seria invivel, porque no teria seus distrbios tratados, e esse encargo teria que ser resolvido via software, alterando-se a sequncia de instrues e colocando-se nos em locais estratgicos.

    6 Questo O que memria virtual? Como pode a memria virtual melhorar o throughput?

    Memria virtual uma tcnica que usa a memria principal (MP) como uma memria

    cache para armazenamento secundrio, normalmente implementada com discos magnticos e visando, principalmente, permitir o compartilhamento seguro e eficiente da memria entre vrios programas. Throughput a quantidade de dados transferidos de um lugar a outro, ou a quantidade de dados processados em um determinado espao de tempo. Pode ser considerada como a taxa de transferncia efetiva de um sistema, ou seja, sua eficincia. Para entender melhor, considere um grupo de programas executados ao mesmo tempo em um computador. A memria total exigida por todos os programas pode ser muito maior do que a quantidade de memria disponvel no computador, mas apenas uma frao dessa memria est sendo usada ativamente em um dado momento. A memria principal precisa conter apenas as partes ativas dos muitos programas, exatamente como uma memria cache contm apenas a parte ativa de um programa. Portanto, o princpio da localidade possibilita a utilizao da memria virtual e das caches. A memria virtual nos permite compartilhar eficientemente o processador e a MP, permitindo que mais programas sejam executados ao mesmo tempo, aumentando a eficincia do sistema, ou o seu throughput. Para permitir que vrios programas compartilhem a mesma memria, se deve ter a capacidade de proteger os programas uns dos outros, garantindo que um programa s possa ler e escrever nas partes da memria principal atribudas a ele.

    Em resumo, a memria virtual uma memria auxiliar, que funciona como uma extenso da memria principal. Pode ficar armazenada em discos rgidos, em discos flash ou em outros dispositivos de velocidade menor, mas em geral com capacidade maior do que o tamanho da memria principal. Ela funciona como uma extenso da memria principal do computador, e como permite que mais programas sejam executados ao mesmo tempo, aumenta a eficincia do sistema (throughput).

  • 7

    7 Questo O que uma interrupo? Explique a relao entre interrupo e o despachante.

    Interrupo um evento de hardware, sendo por exemplo a mudana do estado de um sinal eltrico, ou um evento de software, como por exemplo a ocorrncia de uma exceo, que desvia o fluxo de execuo do processador para rotinas pr-determinadas. Pode ser usado, por exemplo, pelo despachante que, ao receber uma interrupo do relgio do computador, execute a troca de contexto. Lembrando que o despachante o mdulo que d o controle da CPU ao processo selecionado pelo escalonador. Ele envolve a troca de contexto, troca de usurio, seleo da parte apropriada da memria do programa do usurio, etc.

    8 Questo Geralmente, quanto maior a quantidade de programas na memria, maior ser a utilizao do processador. Explique por qu.

    O Sistema Operacional necessita de uma determinada quantidade de ciclos de processamento para realizar as tarefas necessrias ao escalonamento dos diversos programas em execuo. Somente um programa pode ocupar a CPU por vez. Todos os demais ficam em estados latentes, ou na fila de pronto, onde aguardam sua vez na execuo, ou na fila de espera, onde aguardam o trmino de alguma solicitao feita. Quando um programa tem seu tempo de execuo esgotado, mas ainda no atingiu o trmino de sua execuo, vai para o final da fila de pronto, enquanto outro programa ganha sua vez de execuo.

    Para no haver perda dos dados processados, o estado dos registradores guardado na memria, e resgatado imediatamente antes do retorno do programa execuo. A configurao dos registradores da CPU chamada contexto do programa. Com poucos programas concorrendo para a CPU, o somatrio do tempo gasto para gerenciar um ciclo completo de escalonamento pequeno, quando comparado com o tempo de execuo de cada programa. Esse tempo de utilizao de CPU, que aparentemente perdido pelo usurio, chamado de overhead.

    Quanto mais programas na memria, maior ser o overhead, ento mais tempo de CPU

    ser gasto em trocas de contexto e escalonamento dos programas. Ou seja, quanto mais programas em memria, maior ser a presena do escalonador na CPU, ocupando ciclos de processamento que poderiam ser gastos com as aplicaes do usurio.

  • 8

    9 Questo Explique a diferena entre um endereo absoluto e um endereo relativo. Por que ambos os tipos so necessrios?

    A memria um conjunto limitado de semicondutores. Cada clula de memria capaz de reter informaes, que precisam ser guardadas e recuperadas. Essa recuperao feita atravs do endereo da clula. O endereo absoluto de uma clula de memria o seu endereo real, o endereo fsico, do barramento, utilizado pelo hardware. Cada localizao de memria no computador tem um nico endereo absoluto, ento o endereo absoluto de uma clula de memria ser sempre o mesmo. Embora imprescindvel para o hardware, o endereo absoluto inconveniente para o software, principalmente pelos seguintes fatores: a) a referncia a endereos absolutos pode restringir um programa a um ponto de carga fixo, o

    que seria aceitvel em sistemas monousurios, mas em multiprogramao, a especificao de endereos absolutos pode obrigar o programa a esperar que uma determinada regio da memria se torne disponvel, o que pode nunca acontecer.

    b) outro problema o tamanho da instruo. Uma instruo normalmente consiste no cdigo de operao e dois operandos, podendo cada um deles ser um endereo na memria principal. Assim, uma instruo que cite duas localizaes da memria principal teria que conter dois operandos com, por exemplo, 32 bits cada, perfazendo uma instruo de pelo menos 64 bits. Com instrues to grandes, seria necessrio muita memria para executar uma simples funo, alm da transferncia de 64 bits (barramentos de 32 bits) requerer duas operaes de busca. Mltiplas operaes de busca tomam tempo, o que significa poucas instrues por segundo.

    Ento, o endereo relativo uma soluo muito utilizada, onde os programas so escritos como se comeassem no endereo 0 e todas as partes de um programa so endereadas relativamente ao seu ponto de entrada. Quando o programa carregado na memria, o endereo absoluto de seu ponto de entrada carregado em um registrador base. Quando o programa executado, e as instrues so localizadas, os endereos nos operandos so expressos em termos relativos. O endereo absoluto de qualquer localizao referenciada calculado pelo processador por meio da soma de seu deslocamento com o endereo baixo, como mostrado a seguir:

    Registrador-base Endereo Relativo

    BASE BASE OFFSET

    10000 B 100 Endereo absoluto

    O emprego do endereamento base + deslocamento apresenta vantagens, por exemplo: a) um programa pode ser relocado na memria a cada vez que carregado. Se o programa for

    carregado no endereo absoluto 10000, por exemplo, seu 100 byte estar no endereo absoluto 10100. Se em sua execuo seguinte for carregado na posio 20000, seu 100 byte estar no endereo absoluto 20100. Em qualquer caso, a referncia ao endereo base mais 100 resultar no 100 byte do programa.

    b) tamanho de instruo reduzido, por no utilizar o endereo absoluto do operando, reduzindo o tamanho necessrio ao campo operando da instruo.

    Como os softwares manipulam endereos relativos, o que permite que um programa seja armazenado em qualquer posio da memria, j que suas posies relativas sero mantidas em relao ao endereo base onde ele estiver carregado, e o hardware exige endereos absolutos (a instruo a ser executada tem os endereos de seus operandos convertidos), a existncia dos dois tipos de endereos importante para que vrios programas possam ser alocados na memria simultaneamente de forma mais otimizada. O endereo passa a ser feito por partes fixas, mais as partes relativas, referentes a distribuio de cada programa na memria.

    10000 + 100

  • 9

    10 Questo Por que os sistemas de gerenciamento de memria orientados para pginas so mais fceis de implementar do que os sistemas de gerenciamento de memria orientados para segmentos?

    Tanto a paginao quanto a segmentao so sistemas de gerenciamento da memria que dividem o programa em segmentos que so alocados posteriormente em parties no contguas da memria. A principal diferena entre paginao e segmentao relativa ao tamanho deste segmento.

    Na paginao, o segmento tem um tamanho fixo, que o tamanho da pgina, geralmente de tamanho bem pequeno (8K). A memria fsica (sistema) e a memria lgica (processo) so divididos em blocos de tamanho fixo e idnticos: blocos fsicos so chamados de frames e blocos lgicos so chamados de pginas.

    Na segmentao, o programa dividido logicamente, ou seja, a alocao de maneira no fixa, pois o tamanho depende da lgica do programa.

    A necessidade de diviso da memria em funo da lgica do programa traz uma complexidade extra para as implementaes orientadas segmentao. No possvel prever em quantos segmentos a memria ser dividida. Esta imprevisibilidade torna o algoritmo de controle excessivamente complexo.

    Na paginao, uma vez definido o tamanho da pgina, simples definir a quantidade de pginas existentes. Desta forma, em alguns casos, a segmentao, mesmo sendo mais eficiente, preterida, em funo da complexidade envolvida, no desenvolvimento do Sistema Operacional.

  • 10

    11 Questo Com relao ao Gerenciador de Memria e converso dinmica de endereos, explique sucintamente:

    (a) a diferena entre um endereo absoluto e um endereo relativo e por que ambos os tipos so necessrios

    Como j explicado na resposta da 9 questo, o endereo absoluto o endereo fsico de hardware. So os endereos utilizados pelo hardware para o acesso memria. O endereo relativo aquele que corresponde a um local na memria que deve ser traduzido para um endereo fsico quando o acesso feito. Esta traduo feita pois o endereo relativo composto por dois campos: BASE, indicando o endereo do registrador-base, que armazena o endereo absoluto referente ao ponto de carga do programa, e OFFSET, indicando o deslocamento da instruo referenciada, em relao ao ponto de carga. conveniente para o software. Ambos os tipos de endereo so necessrios pois a memria pode ser acessada pelo seu endereo absoluto (acesso ao nvel da mquina) e pelo seu endereo relativo (acesso ao nvel do programador), sendo este ltimo, um nome ao qual o computador faz corresponder um determinado endereo fsico. A Unidade Central sempre realiza a converso de endereos, pois o hardware trabalha com endereos absolutos.

    (b) a implementao da alocao dinmica de memria

    A alocao dinmica de memria consiste em disponibilizar a diviso dos blocos de memria de uma maneira dinmica da primeira vez que o acesso realizado. Sendo assim, em cada novo primeiro acesso, os blocos contidos podem assumir determinados valores no pr-alocados. Porm, aps este primeiro acesso ser realizado, os blocos permanecem com os tamanhos alocados dinamicamente at uma reinicializao dos acessos. Podemos definir que antes do primeiro acesso, o gerenciamento realizado dinmico, e aps isso, passa a ser um gerenciamento equivalente ao de Parties Variveis.

    (c) a implementao da segmentao e a sua converso de endereos

    A segmentao divide o espao de endereamento em segmentos, que podem ter tamanho arbitrrio. Cada segmento definido segundo a lgica e armazenados em espaos no-contguos da Memria Princial. Quando a segmentao usada com memria virtual, o tamanho do espao de endereamento de cada segmento pode ser muito grande, e portanto a memria fsica dedicada a cada segmento no reservada at ser necessria. Na converso de endereos da segmentao, o endereo relativo que deve ser convertido formado pelo campo de ndice da Tabela de segmentos e pelo campo OFFSET (deslocamento da instruo). A partir do ndice da tabela de segmentos, coletado o ponto de carga referente aquele ndice. Este ponto de carga somado ao campo OFFSET, resultando no endereo absoluto.

    (d) a implementao da paginao e a sua converso de endereos

    Na paginao o espao de endereamento particionado em blocos de tamanhos iguais (geralmente 8KB), chamados de pginas. A paginao faz com que a memria fsica demonstre ser maior do que realmente mapeando o espao de endereamento de memria fsica a um espao de endereamento de memria virtual, que normalmente armazenado em disco. Na Converso de endereos da paginao, o endereo relativo que deve ser convertido formado pelo campo de ndice da Tabela de pginas e pelo campo OFFSET (deslocamento da instruo). A partir do ndice da tabela de pginas, coletado o ponto de carga referente aquele ndice. Este ponto de carga somado ao campo OFFSET, resultando no endereo absoluto.

  • 11

    (e) a implementao da segmentao com paginao e a sua converso de endereos

    Na segmentao com paginao, cada segmento carregado em um conjunto de pginas (espao virtual segmentado, e espao fsico divido em pginas). Cada entrada na tabela de segmentos permite fazer acesso tabela de pginas para esse segmento. Para obter o endereo real, coletado no segmento referenciado na palavra, o endereo na tabela de pginas daquele segmento; o ponto de carga da pgina referenciada buscado na tabela de pginas do segmento; ento, para obter o endereo real, adicionado a este valor o deslocamento da instruo (OFFSET), juntamente com o ponto de carga da pgina.

    12 Questo Uma falha de cache caracterizada por uma requisio de dados da cache que no pode ser atendida porque os dados no esto presents na cache. Explique detalhadamente o controle do processador no tratamento de uma falha de cache.

    Questo j explicada na resposta da 2 Questo.

  • 12

    13 Questo Por que um compilador poderia realizar a seguinte otimizao?

    /* Antes */

    for (j=0; j