Sistemas Operacionais para concursos Questões comentadas Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Prefácio Tal como nas arquiteturas de hardware, os Sistemas Operacionais (SO) também passam por um processo evolutivo, classicado em gerações. O surgimento dos SOs data da segunda geração de computadores, na década de 50. Hoje, um sistema operacional implementa políticas e estruturas de software de modo a possibilitar o uso eciente e controlado dos diversos componentes de hardware do computador (unidade central de processamento, memória, dispositivos de entrada e saída). Além disso, o S.O. oferece uma interface mais amigável aos usuários em relação às operações associadas a cada componente da máquina. O tema Sistemas Operacionais, devido à sua relevância, tende a ser cobrado pela maioria dos concursos da área de Tecnologia de Informação, que buscam averiguar se o conhecimento do candidato evolui ao mesmo passo da área. Este volume tem por objetivo fornecer ao candidato uma visão dos principais mecanismos envolvidos na concepção de um sistema operacional moderno. Para tanto, o Grupo Handbook de TI selecionou uma série de questões comentadas em detalhes para você. Bons estudos, Grupo Handbook de TI Página 1 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Direitos Autorais Este material é registrado no Escritório de Direitos Autorais (EDA) da Fundação Biblioteca Nacional. Todos os direitos autorais referentes a esta obra são reservados exclusivamente aos seus autores. Os autores deste material não proíbem seu compartilhamento entre amigos e colegas próximos de estudo. Contudo, a reprodução, parcial ou integral, e a disseminação deste material de forma indiscriminada através de qualquer meio, inclusive na Internet, extrapolam os limites da colaboração. Essa prática desincentiva o lançamento de novos produtos e enfraquece a comunidade concurseira Handbook de TI. A série Handbook de Questões de TI Comentadas para Concursos Além do Gabarito produção independente e contamos com você para mantê-la sempre viva. Grupo Handbook de TI Página 2 de 55 www.handbookdeti.com.br é uma Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Canais de Comunicação O Grupo Handbook de TI disponibiliza diversos canais de comunicação para os concurseiros de TI. Loja Handbook de TI Acesse a nossa loja virtual em http://www.handbookdeti.com.br Serviço de Atendimento Comunique-se diretamente conosco através do e-mail [email protected] Twitter do Handbook de TI Acompanhe de perto promoções e lançamentos de produtos pelo nosso Twitter com/handbookdeti Página 3 de 55 www.handbookdeti.com.br http://twitter. Handbook de Questões de TI Comentadas para Concursos 1. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Gerenciamento de Processador, Escalo- namento de Processos, Banca: FCC Instituição: TCE/CE Cargo: Analista de Controle Externo - Auditoria de Tecnologia da Informação Ano: 2008 Questão: 71 Criado para sistemas de tempo compartilhado e semelhante ao escalonamento FCFS, porém com preempção para alternar entre processos. Trata-se do algoritmo de escalonamento (a). Multilevel Queue. (b). em tempo real. (c). por prioridade. (d). Multilevel Feedback-Queue. (e). Round-Robin. Solução: Para implementar o compartilhamento da CPU entre diversos processos, um sistema operacional deve possuir um critério para determinar, entre os diversos processos no estado pronto, qual o próximo processo a executar. Esse procedimento de seleção chama-se escalonamento, e é realizado por um componente do sistema operacional chamado escalonador. Os principais objetivos do escalonamento de processos são: • maximizar a utilização do processador; • maximizar o número de processos completados por unidade de tempo; • garantir que todos o processos recebam o processador; • minimizar o tempo de resposta para o usuário. Os algorítimos de escalonamento pode ser subdivididos em duas classes: • Não Preemptivo: processo que está executando não pode ser interrompido. Pre- sente nos primeiros sistemas multiprogramáveis, onde predominava o processamento em batch. As políticas que implementam escalonamento não-preemptivo não são aplicáveis à sistemas de tempo compartilhado, pois em processos interativos é necessário um tempo de resposta ao usuário razoável; • Preemptivo: o processador pode ser retirado do processo que está executando. Per- mite atenção imediata aos processos mais prioritários, melhores tempos de resposta, compartilhamento uniforme do processador. Alguns exemplos de algorítimos de escalonamento não preemptivos são: • FIFO (First In First Out): Também conhecido como FCFS (First Come First Served). O primeiro processo que chegar é o primeiro a ser selecionado para execução. Esse algorítimo é implementado de forma simples utilizando uma única la; • SJF (Shortest Job First): O processo escolhido para execução é sempre o que tem menor tempo de processador. Esse algorítimo minimiza o tempo médio de espera de um conjunto de processos. A implementação do SJF depende da determinação antecipada do tempo de processador que cada um dos processos da la exigirá. Essa uma tarefa difícil, e na prática o tempo é estimado de forma aproximada com base em informações Página 4 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos históricas do processo. Volume questões de TI Além disso, o SJF pode causar o problema da postergação indenida para grandes processos, que não conseguiram tomar posse do processador caso sempre existam processos menores. Com relação aos algorítimos de escalonamento preemptivos, oa mais famosos são: • Round Robin: Essa é a resposta da questão. Nesse algorítimo, cada processo executa durante uma fatia de tempo (time-slice). Se a fatia de tempo for excedida, o processo que estava executando é movido para o nal da la de prontos (preempção) e a posse do processador é dada para o próximo processo da la. Esse algorítimo é bastante adequado para sistemas de tempo compartilhado, favorecendo os processos pequenos, que terminam primeiro, sem penalizar os grandes. Um aspecto crucial na implementação do round robin é a denição do time-slice. Se este for muito pequeno, haverá um overhead em virtude da grande quantidade de trocas de contexto. Se for muito grande, o tempo de resposta dos processos no nal da la de prontos aumentará. • Por Prioridades: Nesse algorítimo, a cada processo é atribuída uma prioridade. O processo com maior prioridade na la de prontos receberá o processador. As prioridades podem ser atribuídas de forma estática (quando o processo tem uma prioridade xa durante seu tempo de vida), ou dinâmica (quando a prioridade muda ao longo do tempo de vida do processo). A atribuição dinâmica pode ser utilizada para resolver o problema da postergação indenida, que pode com processos de baixa prioridade. O aumento dinâmico da prioridade dos processos é conhecido como • Múltiplas Filas: aging. Nesse algorítimo, prioridades são atribuídas à classes de processos de acordo com o tipo de processamento. Os processos das classes de maior prioridade recebem o processador primeiro, enquanto os processos das classes de menor prioridade só receberão o processador se as las de prontos das outras classes (de maior prioridade) estiverem vazias. Cada classe possui sua própria la de prontos, gerenciada pelo seu próprio algorítimo de escalonamento (FIFO, SJF, Prioridades, Round Robin etc). Uma variante do algoritmo de Múltiplas Filas é o algorítimo de Múltiplas Filas com Realimentação, em que os processos podem mudar de classe (e consequentemente de la), ao longo de seu ciclo de vida. Página 5 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 2. Volume questões de TI Assuntos relacionados: Arquitetura de Computadores, Thread, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 22 Alguns sistemas operacionais permitem que seus processos criem múltiplos threads de execução. Em operação normal, o que é previsto que os threads de um mesmo processo do sistema operacional compartilhem? (a). Arquivos abertos (b). Registradores (c). Pilha (stack) (d). Variáveis locais de cada thread (e). Contador de instrução (program counter) Solução: Uma thread é comumente denida como um uxo único de controle sequencial dentro de um programa. O uso de threads visa reduzir o custo do gerenciamento de processos, que consiste principalmente em: • criação do processo; • trocas de contextos entre processos; • overhead associado a esquemas de proteção de memória; • comunicação entre processos. Podemos dizer que as threads pertencentes ao mesmo processo utilizam os recursos alocados no sistema operacional para esse processo, como: • o espaço de endereçamento na memória; • os arquivo abertos (handles); • os objetos de sincronização. O compartilhamento desses recursos permite que os uxos de execução (threads) se comuniquem ecientemente. Então, a letra (a) é a opção correta. Entretanto, threads dentro de um processo (e também entre processos) são escalonadas e executadas independentemente. No momento de sua execução, cada thread recebe alguns recursos próprios, como: • os registradores; • a pilha de execução, que lhe dará poder para chamar métodos, passar parâmetros e alocar variáveis locais; • o contador de instrução (program counter), que é essencial para que o uxo de execução prossiga. É importante perceber que para que o acesso a esses recursos exclusivos ocorra, é necessário o chaveamento de contexto entre as threads, ou seja, o estado dos elementos próprios citados deverá ser armazenado e restaurado a cada troca de thread no uso do processador. Página 6 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Dado o exposto, as alternativas (b), (c), (d) e (e) podem ser eliminadas, pois citam recursos que não são compartilhados entre threads. A Figura 1 exemplica o compartilhamento das threads dentro de um processo. Figura 1: exemplicação de um processo com uma única thread e com múltiplas threads. Concluindo, as principais vantagens do uso de threads são: • permite a exploração do paralelismo real oferecido por máquinas multiprocessadas; • possibilita o aumento do número de atividades executadas por unidade de tempo (throughput); • permite sobrepor operações de cálculo com operações de I/O e, com isso, reduzir o tempo de resposta; • o tempo de criação e destruição de threads é inferior ao tempo de criação e destruição de processos, respectivamente; • o chaveamento de contexto entre threads é mais rápido que o tempo de chaveamento entre processos; • como threads compartilham o descritor do processo, elas dividem o mesmo espaço de endereçamento, o que permite a comunicação por memória compartilhada sem interação com o núcleo (kernel) do sistema operacional. Página 7 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 3. Volume questões de TI Assuntos relacionados: Programação Multithreading, Thread, Banca: ESAF Instituição: Superintendência de Seguros Privados (SUSEP) Cargo: Analista Técnico da SUSEP - Tecnologia da Informação Ano: 2010 Questão: 25 Em relação à programação multithreading, é correto armar que (a). multithreads podem ser oferecidos em modo usuário e modo organização. (b). um thread é a sub-rotina de um programa que não pode ser executado de forma assíncrona. (c). threads podem ser oferecidos em modo segmentado, modo estrutura, modo kernel e modo híbrido. (d). no ambiente multithread cada programa pode responder a várias processos concorrentes, em um único processador. (e). no ambiente multithread, cada processo pode responder a várias solicitações concorrentes, caso haja mais de um processador. Solução: Um processo tradicional rodando em um sistema operacional possui apenas uma linha de execução. Um processo possui sua própria área de memória. O conceito de multithread separa um processo em várias linhas de execução (Threads), cada uma rodando independentemente. Caso haja mais de um processador, um processo pode ter mais de uma thread executando simultaneamente na máquina. A Thread compartilha o mesmo espaço de memória do processo de qual ela faz parte. No entanto, há itens que são intrínsecos das threads (apesar de poderem ser acessadas por outras threads do processo): pilha, registradores, estado e program counter (apontador da instrução atual). As propriedades do processo são: variáveis globais, arquivos abertos, espaço de endereço, processos lhos, alarmes pendentes, sinais e tratadores de sinais, informação de conta (dono do processo, grupo, etc.). As threads podem ser implementadas de três formas diferentes: Modo usuário, modo kernel e modo híbrido. O modo usuário pode ser implantado em um SO que não suporta threads, assim a implementação é um conjunto de procedimentos de gerência de threads e uma tabela para gerenciar as propriedades das mesmas. A principal vantagem é a velocidade de criação, destruição e alternação entre linhas de execução. No entanto, sua principal desvantagem é que chamadas de sistema bloqueantes, bloqueiam todo o processo e consequentemente todas as threads dele. No modo kernel, o Kernel possui uma tabela que gerência as threads de todos os processos e a criação e destruição dessas são feitas através de chamadas de sistemas o que causa perda de desempenho. Em compensação, chamadas de sistemas bloqueantes podem ser utilizadas e há apenas o escalonamento de outra thread. O modo híbrido busca atingir a velocidade do modo usuário com as vantagens do modo Página 8 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI kernel. Uma das abordagens utilizadas para isso é o escalonador de ativações. Nessa técnica, o kernel aloca processadores virtuais para cada processo e esses possuem um escalonador em modo usuário que alocam threads a processadores. Em caso de ter mais de um processador, um processador virtual pode ser um processador real. Quando o kernel detecta que uma thread será bloqueada, ele notica o processo através de um upcall, que é a ativação do escalonador a partir de um ponto inicial conhecido. O sistema é parecido com a utilização de sinais. Sendo assim, como resolução da questão anterior, temos: a) ERRADO: como citado anteriormente Mutithreads pode ser oferecida em modo usuário, kernel e híbrido; b) ERRADO: uma thread é uma linha de execução de um processo. Ela normalmente tem como ponto inicial uma sub-rotina. Um processo poder ou não poder ser executado assincronamente não possui relação com a criação de uma thread; c) ERRADO: as threads são oferecidas nos três modos citados anteriormente; d) ERRADO: em um ambiente multithread um processo pode possuir várias linhas de execução simultâneas (threads) executando concorrentemente em um processador; e) CORRETO: um exemplo desse fato pode ser um servidor web multithread, onde há um receptor de requisições e a cada requisição, ele cria uma thread para atendê-la. Se houver mais de um processador poderá haver mais de uma solicitação sendo atendida ao mesmo tempo por processadores diferentes. Página 9 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 4. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Bootstrap, Banca: FCC Instituição: MPU Cargo: Analista de Desenvolvimento de Sistemas Ano: 2007 Questão: 34 NÃO é um componente dos sistemas operacionais: (a). bootstrap. (b). scheduler. (c). kernel. (d). shell. (e). GUI. Solução: Como se trata de uma questão muito direta e que cobra o entendimento de termos utilizados em computação, vamos analisar alternativa por alternativa. (A) O termo bootstrap bootstrap load. Já o termo boot, bootstrap. O termo bootstrap começou é uma redução do termo usado hoje em dia, é uma redução do termo mais a ser utilizado na década de 1950. O processador central de um computador usualmente só é capaz de executar códigos que estejam na memória ROM ou na memória RAM. Nos sistemas modernos, tanto o sistema operacional quanto os programas de aplicação são armazenados em dispositivos de armazenagem de dados não voláteis como discos rígidos, DVDs e ash drives. Quando o computador é iniciado, ele não possui o sistema operacional na memória ROM ou RAM. Para que o sistema operacional possa ser usado, um pequeno programa armazenado na memória ROM deve ser executado com o intuito de colocar os principais códigos do sistema operacional na memória RAM para que eles possam ser executados. Esse programa armazenado na ROM bootstrap loader. Frequentemente, os boot loaders funcionam em várias etapas. Logo, é comum que o bootstrap de primeiro estágio carregue um boot loader de segundo estágio na memória RAM e o execute. Esse boot loader terá a função de carregar é comumente chamado de o sistema operacional propriamente dito. Como explicado, o bootstrap é responsável por colocar a partes mais importantes do sis- tema operacional na memória RAM para que elas possam ser executadas e, portanto, o bootstrap não faz parte do sistema operacional. A alternativa a ser marcada é a letra A. (B) Em um sistema de multiprogramação, temos frequentemente a situação onde vários processos estão prontos para serem executados. Quando mais de um processo está pronto, o sistema operacional deve decidir qual processo deve ser executado primeiro. A parte do sistema operacional que toma esta decisão é chamada de escalonador (scheduler ). O algoritmo que é usado, neste caso, é chamado de algoritmo de escalonamento. (C) A responsabilidade do kernel em um sistema operacional consiste em abstrair a in- terface do hardware, permitindo que processos utilizem estes recursos concorrentemente, de forma segura e padronizada. O kernel fornece sistema de arquivos, escalonamento de CPU, gerência de memória e outras funções do sistema operacional através de chamadas de sistema. Página 10 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos (D) O shell Volume questões de TI de comando é um software independente que oferece comunicação direta entre o usuário e o sistema operacional. A interface de usuário não gráca do shell de comando é o ambiente propício para a execução de aplicativos e utilitários baseados em caracteres. O shell de comando executa programas e exibe os dados de saída em uma tela usando ca- racteres individuais. o shell nada mais é que o interpretador de comandos que transmite kernel o que é para ser realizado. Os nomes de shell mais conhecido no Windows são command.com e o cmd.exe, já no Linux existem o Bourne shell (sh), o Korn Shell (ksh), C Shell (csh) e o Bash. ao o o (E) GUI, a sigla de Graphical User Interface, é uma interface Homem-computador (isto é, uma maneira para que os seres humanos possam interagir com computadores) que usa janelas, ícones e menus e que pode ser manipulada por um mouse e, às vezes, de forma restrita, também pelo teclado. GUIs diferenciam-se de forma acentuada das interfaces por linha de comando (CLI - Command Line Interface em Inglês), pois estas utilizam texto apenas e são acessadas exclusivamente pelo teclado. Página 11 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 5. Volume questões de TI Assuntos relacionados: Sistemas de Arquivos, Fragmentação de Dados, Banca: CESGRANRIO Instituição: BNDES Cargo: Analista de Suporte Ano: 2008 Questão: 62 Sobre a fragmentação de dados em um disco rígido, tem-se que (a). é desejável porque aumenta o desempenho de leitura dos arquivos, embora o diminua nos acessos de gravação. (b). não há relação com a quantidade de movimentações dos cabeçotes de leitura e gravação no acesso de um arquivo. (c). o nível de fragmentação dos sistemas de arquivos EXT3 e NTFS é zero, ou seja, não existem arquivos fragmentados. (d). discos menos fragmentados têm vida útil mais reduzida em comparação com discos mais fragmentados. (e). comparando discos utilizados com o mesmo padrão de interleaving sobre os setores, o impacto negativo da fragmentação é atenuado pelo disco de maior densidade de dados e maior velocidade de rotação. Solução: Diz-se que um arquivo está fragmentado quando o espaço por ele alocado no disco rígido não é contíguo. Ou seja, os dados que compõem o arquivo não estão unidos, mas sim espalhados pelo disco. Isso signica dizer que para acessar um arquivo fragmentado é necessário um maior deslocamento do cabeçote de leitura do disco rígido. Por consequência, a fragmentação causa queda de desempenho do sistema, tanto para operações de leitura quanto para escrita. Lembrando que o tempo de acesso a um determinado dado em disco é dado pela fórmula: Tacesso = Tseek + Tlatencia + Ttransf erencia Em discos com alto nível de fragmentação, o tempo de seek, que é o tempo necessário para deslocar o cabeçote de leitura até o cilindro correto, tende a ser mais alto, já que os diversos setores do disco que compõem o arquivo estão espalhados. Na prática, a fragmentação ocorre quando nenhum dos espaços contíguos disponíveis no disco é suciente para comportar um arquivo, e isso não depende do sistema de arquivos, seja ele FAT, NTFS, EXT3 etc. É claro que alguns sistemas de arquivos são mais ecientes na prevenção de altos índices de fragmentação. Notoriamente, os sistemas de arquivos do Linux, por meio de técnicas heurísticas de alocação de espaço, apresentam índices de fragmentação quase nulos. Porém, ela ainda se manifesta quando o disco está com alta utilização e existam arquivos grandes no sistema. O padrão de interleaving, do qual fala a alternativa E, está relacionado com a organização dos setores no disco. Discos com mesmo fator de interleaving e mesma velocidade de rotação, podem ser ditos equiparáveis em tempo médio de seek. A alternativa E é a correta, pois quanto maior a velocidade de rotação, menor será o tempo de seek e, por consequência, menor o tempo de acesso. Página 12 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 6. Volume questões de TI Assuntos relacionados: Redes de Computadores, Network File System (NFS), Banca: Cesgranrio Instituição: IBGE Cargo: Analista de Sistemas - Suporte Ano: 2010 Questão: 32 Quando o Linux é iniciado, qual arquivo de conguração é utilizado pelo sistema operacional para vericar quais os compartilhamentos NFS que devem ser montados? (a). etc/exports (b). etc/nfs.conf (c). etc/fstab (d). nfs/conf (e). nfs/exports Solução: NFS (Network File System) é um sistema distribuído de arquivos, desenvolvido inicialmente pela Sun Microsystems. O seu principal propósito é prover compartilhamento de arquivos e diretórios entre computadores interconectados em rede, formando assim uma espécie de diretório virtual. Esse sistema utiliza um protocolo que também se chama NFS. O protocolo NFS é especicado nas seguintes RFCs: RFC 1094, RFC 1813 e RFC 3530 (que tornou a RFC 3010 obsoleta). O livro de Andrew S. Tanenbaum, intitulado Sistemas Operacionais Modernos, traz uma ótima explicação sobre NFS. Nessa explicação, podemos entender que a ideia básica do NFS é permitir que um conjunto qualquer de clientes e servidores compartilhem um sistema de arquivos comum. Em muitos casos, todos os clientes e servidores estão na mesma LAN, mas essa não é uma condição obrigatória. É importante notar que um servidor NFS também pode se comportar como cliente, e vice-versa. Veja na Figura 2, um cenário hipotético de utilização de NFS. Figura 2: exemplo de sistemas de arquivos montados remotamente via NFS. Página 13 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Cada servidor NFS exporta um ou mais de seus diretórios locais para serem acessados pelos clientes remotos. seus subdiretórios. Quando um diretório é exportado, o mesmo acontece com todos os A lista de diretórios que um servidor exporta é mantida, na maioria dos sistemas, no arquivo /etc/exports. Dessa forma, os diretórios podem ser exportados automaticamente sempre que o servidor for reiniciado. Cada cliente NFS monta um ou mais diretórios remotos, que cam fazendo parte de sua hierarquia de diretórios. É importante notar que os usuários de um sistema cliente NFS nem percebem que um determinado diretório é remoto. Para eles, tudo acontece de forma transparente e a utilização de diretórios remotos e locais não se altera. Analogamente ao /etc/exports do lado servidor, no lado cliente temos o /etc/fstab. O arquivo fstab (le systems table) permite que partições (ou diretórios exportados) sejam montadas com facilidade na inicialização do sistema, sem que o usuário tenha que fazer as montagens manualmente todas vezes que o sistema for inicializado. Cabe ressaltar que o fstab também pode ser utilizado em outros momentos sem ser o de inicialização do sistema. Para isso, pode-se utilizar o comando mount com parâmetros especícos. Dependendo dos parâmetros utilizados, o mount lê as congurações do arquivo /etc/fstab e realiza (ou atualiza) montagens de partições e de diretórios remotos. Em cada linha do arquivo fstab é especicado o seguinte: o dispositivo ou o diretório que será montado; o diretório local onde será feita a montagem; o tipo de sistema de arquivo que será utilizado; e outros parâmetros de montagem. Veja um exemplo abaixo: # device name LABEL=/ /dev/hda6 none none none mount point / swap /dev/pts /proc /dev/shm fs-type ext3 swap devpts proc tmpfs # Montagem NFS pingu:/store /store nfs options dump-freq pass-num defaults 1 1 defaults 0 0 gid=5,mode=620 0 0 defaults 0 0 defaults 0 0 rw 0 0 # Mídias Removíveis /dev/cdrom /mount/cdrom /dev/fd0 /mount/floppy udf,iso9660 noauto,owner,kudzu,ro auto noauto,owner,kudzu 0 0 0 0 # NTFS Windows XP partição /dev/hda1 /mnt/WinXP ntfs ro,defaults 0 0 umask=000 0 0 # Partição (pasta) Windows and Linux /dev/hda7 /mnt/shared vfat Com o que já foi exposto, não é difícil perceber que a resposta correta para esta questão é a letra c. Já vimos também o real propósito do arquivo /etc/exports. Agora vamos abordar os outros arquivos mencionados nas alternativas. Em alguns sistema baseados em UNIX há o arquivo /etc/nfs.conf. utilizado para especicar o que deve ser montado. Contudo, ele não é Ele contém congurações de como o servidor e/ou o cliente NFS deve funcionar. Página 14 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Já as opções /nfs/conf e /nfs/exports nem mesmo fazem sentido. Isso porque, por padrão, nenhum sistema operacional conhecido tem um diretório de nome nfs em sua raiz. Página 15 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 7. Volume questões de TI Assuntos relacionados: Redes de Computadores, Network File System (NFS), Banca: Cesgranrio Instituição: Petrobras Cargo: Analista de Sistemas - Infraestrutura Ano: 2008 Questão: 30 O NFS é um protocolo que fornece aos usuários acesso transparente aos arquivos compartilhados em uma rede utilizando o protocolo TCP/IP. Para que o NFS funcione, alguns serviços devem estar em execução no servidor NFS. Dos serviços abaixo, qual é fornecido pelo daemon mountd? (a). Atender as requisições dos clientes NFS. (b). Executar as solicitações repassadas pelo nfsd. (c). Fornecer números de porta nas quais os clientes podem se vincular. (d). Monitorar o status dos servidores e clientes para recuperá-los de bloqueios NFS. (e). Gerenciar os sistemas bloqueados para evitar modicações de dados por vários clientes ao mesmo tempo. Solução: O NFS - Network File System é um protocolo de rede que permite que árvores de diretórios e arquivos sejam compartilhados através de uma rede. Através do NFS é possível mon- tar diretórios compartilhados remoto como se fossem dispositivos locais. É um protocolo originalmente desenvolvido pela Sun Microsystens, mas atualmente está disponível em praticamente todos os sistemas UNIX. O NFS precisa estar habilitado no kernel, seja nativo ou carregado como módulo, tanto no servidor quanto no cliente. O NFS é mantido por diversos no sistema. Os daemons daemons que são processos que são executados em de servidor NFS, chamados de servidor e aceitam chamadas RPC dos clientes. O daemon daemons background nfsd, são executados no nfsd nada mais é que um processo receptor de subrotinas do kernel que executam operações de sistemas de arquivos. Ele existe como um processo separado para prover um escalonamento tratado pelo kernel, permitindo que um servidor aceite mais requisições NFS enquanto outros daemons nfsd estão aguar- dando que uma operação no disco seja completada. O servidor NFS também executa o daemon mountd que executa as solicitações que o nfsd lhe passa, além disso, verica as permissões de acesso do cliente e retorna um ponteiro para um sistema de arquivos. Uma vez montando um diretório, ele permanece ligado ao sistema umount ou até que o sistema local buers é manipulado pelo comando biod, daemon biod está normalmente em execução de arquivos local até que seja desmontado com o comando seja reinicializado. No cliente, o uso da cache e de o daemon de E/S de bloco. No cliente NFS, o para melhorar a desempenho do NFS, apesar de não ser imprescindível. O daemon portmap faz o mapeamento dos números de programa RPC para os números daemon portmap não estiver sendo executado corretamente, o NFS também não funcionará. O daemon lock é o que manipula as requisições locks de arquivos. É executado nos clientes e nos servidores. Clientes requisitam le lock e os servidores fornecem. O daemon statd é exigido pelo lockd para fornecer os serviços de monitoração. Permite que os locks sejam liberados após uma eventual queda da rede. de porta TCP/IP apropriados. Se o Página 16 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI daemon statd. Os daemons NFS clients são: biod, statd e lockd e os daemons server são biod, statd, lockd, nfsd e o mountd (os daemons server às vezes executam como daemons clients utilizando os daemons biod, statd e lockd ). Clientes e servidores rodam Como foi apresentado acima, o daemon mountd realiza os pedidos que o nfsd passa a ele, ou seja, trata as requisições repassadas pelo nfsd. Portanto, alternativa Página 17 de 55 www.handbookdeti.com.br B está correta. Handbook de Questões de TI Comentadas para Concursos 8. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Arquitetura de Computadores, Banca: Cesgranrio Instituição: BR Distribuidora Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questão: 29 Como é chamado o setor 0 (zero) de um disco, o primeiro a ser lido e executado pela BIOS? (a). FAT (b). MBR (c). I-node (d). GRUB (e). Superbloco Solução: Vamos analisar alternativa por alternativa com o intuito de apresentar a teoria relacionada com cada uma. FAT é um sistema de arquivos e é a sigla para File Allocation Table (ou tabela de alo- cação de arquivos). O primeiro FAT surgiu em 1977, para funcionar com a primeira versão do DOS. Trata-se de um sistema que funciona através de uma espécie de tabela que contém indicações para onde estão as informações de cada arquivo. Quando um arquivo é salvo num disquete por exemplo, o FAT divide a área do disco em pequenos blocos. Assim, um arquivo pode (e ocupa) vários blocos, mas eles não precisam estar numa sequência. Os blocos de determinados arquivos podem estar em várias posições diferentes. Daí a necessidade de uma tabela para indicar cada bloco. Com o surgimento de dispositivos de armazenamento com mais capacidade e mais sosticados, o sistema FAT foi ganhando alterações (identicadas pelos nomes FAT12 e FAT16). Isso foi necessário porque o FAT era limitado a determinada capacidade de armazenamento. Por exemplo, ele só operava com tamanho máximo de 2 GB. Assim, num disco de 5 GB, seria necessário dividi-lo em 3 partições. Fora o fato de que o FAT apresentava problemas com informações acima de 512 MB. Diante de tantos problemas, em 1996, a Microsoft lançou um novo FAT: o FAT32, que é compatível com os Windows 9x/Me/2000 e XP (apesar destes dois últimos terem um sistema de arquivos mais avançado, o NTFS). MBR é abreviação de Master Boot Record, também conhecido como setor 0. O MBR armazena tanto o gerenciador de boot quanto a tabela de particionamento do disco rígido. Dos seus 512 bytes, 446 bytes são reservados para o setor de boot, enquanto os outros 66 bytes guardam a tabela de partição. Esta tabela contém informações sobre o tipo, endereço de início e nal de cada partição. O BIOS (Basic Input/Output System) é muito limitado no sentido de ser inicializar o sistema operacional, embora seja capaz de contar a memória e reconhecer os periféricos instalados (via plug-and-play), o BIOS não tem o discernimento de como prosseguir para carregar o sistema. O setor de boot funciona como um ponto de partida, assim que o POST (Power On Self Test ) é concluído, o BIOS lê o setor de boot e segue as instruções que estiverem gravadas nele, que iniciarão o carregamento do sistema operacional. Como já dissemos, no disco rígido, o setor de boot faz parte do MBR, que é o primeiro setor a ser lido pela BIOS. Página 18 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos A alternativa correta da questão é a letra O I-node Volume questões de TI B. é uma estrutura de dados constituinte de um sistema de arquivos que segue a semântica Unix. O I-node armazena informações sobre um arquivo, tais como o dono, permissões e sua localização. Cada diretório e arquivo é identicado com um número I-node. O I-node é exclusivo somente para o dispositivo (partição) dentro do qual ele está contido. Portanto, para identicar unicamente um arquivo, o núcleo do sistema operacional deve ter o número de dispositivo e o I-node do arquivo. Um arquivo possui um único I-node, não importa por quantos nomes este arquivo é identicado no sistema. Logo, é o conjunto de inodes que indica o número de arquivos/diretórios que o sistema possui. O GRUB foi desenvolvido a partir de um pacote chamado GRand Unied Bootloader, de onde deriva o acrônimo GRUB. O GRUB é um multi-carregador de sistema operacional (multi boot boot-loader ) e é adotado por diversos sistemas Linux. É utilizado, normalmente, quando se deseja que um computador tenha dual booting, ou seja, que o usuário possa esco- lher ao iniciar a máquina, um sistema operacional dentre dois ou mais sistemas instalados. O MBR contém o primeiro estágio do GRUB. Dado o pequeno tamanho deste estágio, ele apenas carrega o próximo estágio do GRUB, que pode residir em qualquer locação do disco. O superbloco é o contêiner para os metadados de alto nível referentes a um sistema de arquivos. É uma estrutura que existe no disco rígido (na verdade, em vários lugares no disco, para ns de redundância) e também na memória. Fornece a base para o gerenciamento do sistema de arquivos em disco à medida que dene os parâmetros de gerenciamento do sistema de arquivos (por exemplo, número total de blocos, blocos livres e nó de índice raiz). No disco, o superbloco apresenta informações sobre o kernel na estrutura do sistema de arquivos no disco. Na memória, o superbloco apresenta as informações necessárias e o estado para gerenciar o sistema de arquivos ativo (montado). Por exemplo, como o Linux dá suporte a vários sistemas de arquivos concorrentes montados simultaneamente, cada estrutura de superbloco é mantida em uma lista e são gerenciadas através de um conjunto de interfaces padrão, também conhecido como virtual le system switch (VFS). Página 19 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 9. Volume questões de TI Assuntos relacionados: RAID, Banca: CESGRANRIO Instituição: BNDES Cargo: Analista de Suporte Ano: 2008 Questão: 38 Oito discos rígidos, cada um com 1 TB de capacidade, formam um arranjo do tipo RAID 5. A esse respeito, considere as armativas a seguir. I - Caso dois discos falhem simultaneamente, o desempenho de leitura, em média, será 25% menor, mas não haverá perda de dados. II - Nesse arranjo, 1 TB é utilizado para dados de redundância e, portanto, o espaço em disco útil é de 7 TB. III - O disco destinado à paridade efetua muitas operações de escrita e, por isso, é recomendável que possua, pelo menos, 1 GB de cache de escrita. Está(ão) correta(s) somente a(s) alternativa(s) (a). I (b). II (c). III (d). I e II (e). I e III Solução: Em um arranjo em RAID 5, as informações de paridade são distribuídas ao longo de todos os discos do conjunto ao invés de serem armazenas em um único disco dedicado como ocorre no RAID 4. Entretanto, as informações de cada disco são únicas, ou seja, os valores de paridade armazenados em um disco são calculados em função dos outros discos. Então, não será possível recuperar o dado caso mais de um disco falhe. Logo, a alternativa I está incorreta. É necessário lembrar que a única diferença de um arranjo em RAID 6 em relação ao RAID 5 é que o primeiro possui o dobro de bits de paridade, tornando possível a recuperação quando até dois discos falharem. A alternativa II está correta, uma vez que o espaço reservado para as informações de paridade é equivalente a um disco do conjunto (1 TB), embora seja distribuído, tornando o espaço em disco útil equivalente a 7 TB (8 TB - 1 TB). Como explicado anteriormente, as informações de paridade são distribuídas e, portanto, não existe disco dedicado para armazenar essas informações. Esse fato torna a alternativa III incorreta. Logo, somente a alternativa II está correta, tornando B a resposta a ser marcada. Página 20 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 10. Volume questões de TI Assuntos relacionados: Alta Disponibilidade, Soluções de Armazenamento, RAID, Banca: Cesgranrio Instituição: BNDES Cargo: Analista de Sistemas - Suporte Ano: 2008 Questão: 43 Em relação a um arranjo de sete discos em RAID nível 2, pode-se armar que (a). somente um dos discos é dedicado à paridade. (b). em caso de falha em um disco, haverá perda de dados. (c). não exige muito processamento do controlador de disco. (d). utiliza tiras de tamanho xo (e). é utilizado código de n Hamming setores em cada. para redundância de informação. Solução: RAID (Redundant Array of Inexpensive/Independent Disks ) é uma classe de dispositivo de E/S cuja ideia fundamental é o uso de um conjunto de discos congurados de tal forma a comportarem-se como um único disco de grande capacidade de armazenamento e de alto desempenho de escrita/leitura, além de conabilidade de armazenamento e robustez a falhas. O RAID nível 2 trabalha por palavra (diferentemente dos RAIDs de nível 0 e 1 que trabalham com tiras de dados), dividindo seus bits pelos discos existentes e intercalando-os com bits de paridade. Uma palavra de 4 bits, por exemplo, poderia ser dividida em 4 discos, acrescentando-se mais 3 discos para paridade (em código Hamming ), o que resultaria em uma palavra de 7 bits, com os bits 1, 2 e 4 destinados ao controle de paridade, proporcionando redundância da informação para prevenção de possíveis falhas. Para seu efetivo funcionamento, deve haver sincronismo entre a posição do braço e a posição rotacional dos sete discos. codicada por Hamming, Desta forma, possibilita-se a escrita de uma palavra de 7 bits um bit em cada disco. Com esse esquema, a falha de um disco não causa qualquer problema, pois sua perda equivale a perder um bit por palavra, o que é facilmente gerenciado pelo código de Hamming. Em contrapartida, exige-se muito do controlador de discos (controlador de RAID), já que ele deve efetuar uma soma de vericação de Hamming a cada tempo de bit. (A) ERRADA Face ao exposto, observa-se que a alternativa (A) está incorreta, pois a paridade é dividida por mais de um disco, à medida que o tamanho da palavra cresce. Os RAIDs de nível 3 e 4 organizam-se de forma a concentrar os bits de paridade em um único disco. O RAID de nível 4 possui um disco dedicado apenas à paridade. (B) ERRADA A alternativa (B) também está incorreta, pois a falha de um disco não ocasiona perda de dados devido à utilização do código de Hamming. O RAID nível 0 não possui quaisquer redundância ou controle de erro, ocasionando perda de dados no caso de falha em um disco Página 21 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI (alguns estudiosos nem consideram esse esquema um RAID verdadeiro). (C) ERRADA Conforme explanado, uma das desvantagens do RAID nível 2 é a grande exigência de processamento por parte do controlador de discos devido à constante vericação dos dados codicados por Hamming. Desta forma, a alternativa (C) está incorreta ao comentar sobre o processamento do controlador de disco. (D) ERRADA Como o RAID de nível 2 trabalha com palavras em vez de tiras de dados, a alternativa (D) está incorreta. Além dos RAIDs nível 0 e 1, os RAIDs nível 4 e 5 também utilizam tiras de dados para organização da informação armazenada. (E) CORRETA A alternativa (E) está correta ao armar que o RAID nível 2 utiliza o código Hamming para proporcionar redundância de dados. Página 22 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 11. Volume questões de TI Assuntos relacionados: Sistemas de Arquivos, RAID, Banco de Dados, Banca: Cesgranrio Instituição: BNDES Cargo: Analista de Sistemas - Suporte Ano: 2008 Questão: 70 Sobre a utilização de RAID 5 em bancos de dados, marque a armativa correta. (a). Em bancos de dados OLTP com alta taxa de escritas, é o armazenamento que oferece melhor desempenho. (b). Possui desempenho de escrita superior ao RAID 0+1 (combinação dos dois níveis), mas inferior ao RAID 0 puro. (c). Como os dados de redundância (paridade) estão em um único disco, não é recomendável para aplicações de missão crítica. (d). Quando o espaço em disco é um recurso escasso, e o banco de dados é somente de consultas (query database ), o uso de RAID 5 é admissível. (e). Oferece o melhor desempenho para bancos de dados standby. Solução: O esquema RAID (Redundant Array of Independent Disks - Conjunto Redundante de Discos Independente) é um meio de se criar um subsistema de armazenamento composto por vários discos individuais, com a nalidade de ganhar segurança (redundância em caso de falha em um dos discos) e desempenho (pedidos de I/O podem ser tratados em paralelo, desde que os dados residam em discos separados). O esquema RAID puro consiste em vários níveis (abordaremos alguns aqui), não havendo qualquer relação hierárquica entre eles, mas cada um deles designa arquiteturas distintas que compartilham 3 características: • o conjunto dos discos físicos em RAID é visto pelo sistema operacional como sendo um único disco lógico; • os dados são distribuídos pelos discos físicos de um array; • redundância de capacidade é usada para armazenar informação de paridade, que garante a recuperação dos dados no caso de uma falha num disco. Abordaremos, agora, cada nível RAID (exceto o RAID 6 e o RAID 1 + 0). RAID 0 Este nível RAID refere-se a um array de discos onde os dados estão divididos em segmentos, mas não existe nenhuma redundância para tolerância a falhas. Sempre que a performance e a capacidade forem a preocupação principal e o baixo custo for mais importante que a conabilidade adicional, esta é uma opção a considerar. A Figura 3 exemplica o tipo de estrutura existente num sistema deste tipo. Os dados são divididos em segmentos consecutivos (stripes ) que são escritos paralelamente em cada um dos discos de um array. Alguns pontos em relação ao desempenho deste tipo de esquema são descritos abaixo: Página 23 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos • Volume questões de TI em um ambiente com uso intensivo de I/O ou em um ambiente de banco de dados onde múltiplas requisições concorrentes são feitas para pequenos registros de dados (banco de dados OLPT, por exemplo), um segmento de tamanho grande é preferencial, pois se o tamanho de segmento para um disco é grande o suciente para conter um registro inteiro, os discos do arranjo podem responder de forma independente para as requisições simultâneas de dados; • em um ambiente onde grandes registros de dados são armazenados, segmentos de pequeno tamanho são mais apropriados, pois se um determinado registro de dados estende-se através de vários discos do arranjo, o conteúdo do registro pode ser lido em paralelo, aumentando o desempenho total do sistema. Figura 3: RAID 0. Arranjos RAID-0 oferecem performance de escrita superior se comparados a outros níveis de RAID por não apresentarem sobrecarga associada com cálculos de paridade ou com técnicas de recuperação de dados (eliminamos, assim, a alternativa A). Esta incapacidade de reconstruir dados perdidos indica que esse tipo de arranjo deve ser restrito ao armazenamento de dados não críticos e combinado com ecientes programas de backup. RAID 1 Também conhecido como Mirroring ou Espelhamento, o RAID 1 funciona adicionando HDs paralelos aos HDs principais existentes no computador. Assim, se, por exemplo, um computador possui 2 discos, pode-se aplicar mais um HD para cada um, totalizando 4. Os discos que foram adicionados trabalham como uma cópia do primeiro. principal recebe dados, o disco adicionado também os recebe. Assim, se o disco Daí o nome de espelha- mento, pois um HD passa a ser uma cópia praticamente idêntica do outro. Dessa forma, se um dos HDs apresentar falha, o outro imediatamente pode assumir a operação e continuar a disponibilizar as informações. A consequência neste caso, é que a gravação de dados é mais lenta, pois é realizada duas vezes. No entanto, a leitura dessas informações é mais rápida, pois pode-se acessar duas fontes. Alguns pontos em relação ao desempenho deste tipo de esquema são descritos abaixo: • um pedido de leitura pode ser satisfeito por qualquer um dos dois discos que contenha os dados em questão, podendo ser escolhido o que implicar um tempo menor de procura Página 24 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI e latência de rotação (por esta razão, é muito comum o uso do RAID 1 em servidores de arquivos); • um pedido de escrita requer uma atualização em ambos os discos, mas isto pode ser feito em paralelo. Deste modo, a performance de escrita é ditada pela mais lenta das duas faixas físicas (por esta razão, sempre que uma fração substancial dos pedidos for escrita, pode não haver superioridade de desempenho relativamente a RAID 0); • a recuperação de uma falha é simples. Quando ocorre uma falha num dos discos, é sempre possível acessar os dados utilizando o outro disco. RAID 2 O nível RAID 2, agora obsoleto, propõe um controle de erro por código digos ECC - Hamming (có- Error Correction Code ), o qual já está integrado diretamente nos controladores de discos atuais. Esta tecnologia consiste em armazenar os dados seguindo o mesmo princípio do RAID 0, mas escrevendo numa unidade distinta os bits de controle ECC (geralmente 3 discos ECC são utilizados para 4 discos de dados). RAID 3 O RAID 3 requer apenas um disco redundante, qualquer que seja o tamanho do array de discos. Em vez de um código corretor de erros, como o existente em RAID 2, um simples bit de paridade é calculado para o conjunto de bits na mesma posição em todos os discos e armazenado no disco redundante referido. Através da vericação da informação de paridade, é possível assegurar a integridade dos dados, em casos de recuperação. Em RAID 3, qualquer pedido I/O implicará a transferência paralela de dados de todos os discos, contanto que todos os eixos das unidades de disco estejam sincronizados. Este aumento de desempenho é mais visível em grandes transferências. Por outro lado, apenas um pedido de I/O pode ser executado de cada vez, portanto não constituirá a melhor opção para um ambiente de transações. RAID 4 Este tipo de RAID, basicamente, divide os dados entre os discos, sendo que um é exclusivo para paridade. O RAID 4 é indicado para o armazenamento de arquivos grandes, onde é necessário assegurar a integridade das informações. Isso porque, neste nível, cada operação de gravação requer um novo cálculo de paridade, dando maior conabilidade ao armazenamento (apesar de isso tornar as gravações de dados mais lentas). Ao contrário do sistema de RAID 3 que armazena a paridade bit-a-bit, em RAID 4 a paridade é armazenada sob a forma de blocos e associada a um conjunto de blocos de dados, isto é, a paridade é simplesmente um somatório de informações; observando quais bits se alteram quando gravamos as novas informações, só precisamos mudar os bits correspondentes no disco de paridade. Dessa forma, temos de ler os dados antigos do disco que está sendo gravado, comparar os dados antigos com os novos para vericar quais bits mudaram, ler a paridade antiga, modicar os bits correspondentes, depois gravar os novos dados e a nova paridade. Desse modo, uma pequena gravação envolve quatro acessos a dois discos, em vez do acesso a todos os discos (uma desvantagem do sistema é que o disco de paridade deve ser Página 25 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI atualizado em cada gravação, tornando-se, assim, o gargalo de gravações). Os sistemas RAID de nível 4, assim como os níveis 5 e 6, faz uso de uma técnica de acesso independente. Neste tipo de acesso, cada disco opera independentemente sendo assim possível satisfazer pedidos I/O em paralelo. RAID 5 Este é muito semelhante ao RAID 4, exceto o fato de que a paridade não ca destinada a um único disco, mas a todo array de discos (eliminamos, aqui, a alternativa C). Isso faz com que a gravação de dados seja mais rápida, pois não é necessário acessar um mesmo disco de paridade em cada gravação, o que gerava um gargalo quando da ocorrência de escritas concorrentes. Ainda assim, o RAID 5 continuará a sofre por causa do processamento adicional causado pela leitura, re-cálculo e atualização da informação sobre paridade. Por isso, ele é mais indicado para ser utilizado em banco de dados cujas ações são limitadas a consultas (operações de leitura). Isto reforça a indicação da alternativa D como correta. Note que, ao invés de espelhar HDs inteiros para a tarefa, como em RAID 1, os dados de paridade são espalhados entre os discos, o que representa uma melhor utilização do espaço disponível. O espaço necessário para armazenar a informação de paridade é equivalente a 1/(Número de discos). Por exemplo, para uma matriz com 10 discos, 10% da usa capacidade será utilizada para armazenar informação de paridade. Concluímos, aqui, que a alternativa D está correta. Além disso, lembre-se que um banco de dados standby nada mais é que uma réplica de outro banco de dados, criado a partir de um backup. Portanto, não há necessidade alguma em se adotar RAID 5 numa cópia de um banco de dados, sendo mais adequado adotar RAID 0. Logo, eliminamos a alternativa E. RAID 0+1 O RAID 0 + 1 é uma combinação dos níveis 0 (Striping ) e 1 (Mirroring ), onde os dados são divididos entre os discos para melhorar o rendimento, mas também utilizam outros discos para duplicar as informações. Assim, é possível utilizar o bom rendimento do nível 0 com a redundância do nível 1. Assim como o RAID 0, o RAID 0+1 não realiza cálculo de bit de paridade, o que torna o tempo de escrita menor que o do RAID 5. Assim, eliminamos a alternativa B. Página 26 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 12. Volume questões de TI Assuntos relacionados: Microsoft Windows 2000, RAID, Banca: ESAF Instituição: Receita Federal (RF) Cargo: Técnico da Receita Federal - Tecnologia da Informação Ano: 2006 Questão: 8 No Sistema Operacional Windows 2000 é possível a instalação de um sistema de discos tolerante a falhas. Nesse caso, um sistema RAID 5 é caracterizado (a). pelo espelhamento de discos, onde o sistema se encarregará de gravar, para os dois discos, a mesma informação. (b). pela duplicação de disco. É um sistema tolerante a falhas, semelhante ao espelhamento, só que os dois discos devem estar conectados a controladoras diferentes, aumentando, assim, o desempenho do sistema quanto à leitura e gravação das informações. (c). pelo ganho real no espaço de armazenamento, que se torna (N + 1) vezes o tamanho do primeiro volume, onde N é a quantidade de discos utilizados no sistema de faixa de disco. (d). por uma faixa de discos com paridade que permite que vários discos, no mínimo 3, sejam acoplados como uma única unidade lógica de disco para obter a tolerância a falhas. (e). por uma faixa de discos sem paridade que permite que vários pares de discos, no mínimo 4, sejam acoplados como uma única unidade lógica espelhados dois a dois. Solução: Redundant Array of Inexpensive Disks (mais tarde trocado para Independent) ou RAID é a tecnologia que provê aumento na capacidade de armazenamento, aumento desempenho no acesso aos dados e segurança através de redundância combinando vários discos de baixo custo em uma unidade lógica onde os dispositivos são independentes. Há vários esquemas em que podem ser organizados os discos que são normalmente referidos como níveis. Originalmente foram concebidos os níveis padrões, conhecidos como RAID0 a RAID5 mas posteriormente várias variações foram criadas. Sendo assim, como resolução desta questão, temos: a) ERRADO: o modelo em que há espelhamentos dos discos e os dados são salvos em dois discos é o RAID 1. É utilizado quando o desempenho de leitura (pode-se ler paralelamente) ou conabilidade (se um disco falhar, haverá a cópia funcionando) são mais importantes do que espaço; b) ERRADO: espelhamento não caracteriza o RAID 5 e sim o RAID 1 ou RAID10. E não há a necessidade de ser em controladoras separadas; c) ERRADO: o ganho de armazenamento é caracterizado por Tmin*(N-1), onde Tmin é o tamanho do menor disco; d) CORRETO: RAID 5 utiliza strips, faixas de k setores, que são escritas nos discos de forma round robin (de forma circular, escreve-se em um disco, na próxima vai para o outro e quando chegar no último volta ao primeiro). São calculados strips de paridade que também são distribuídos pelos discos. Esse tipo de RAID, funciona melhor com requisições de tamanho grande. Quanto maior melhor, pois pode-se tirar Página 27 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI proveito do paralelismo dos discos. Ele é normalmente implementado pela controladora mas pode ser implementado em nível de sistema operacional. 2000 pelo Windows Dynamic Disks. No caso do Windows A Figura 4 ilustra os strips dos dados sendo salvos distribuidamente e para cada conjunto desses um de paridade também é salvo, alternadamente entre os discos; e) ERRADO: o modelo sem paridade que vários pares de discos sejam acoplados como uma única unidade de disco espelhada dois a dois é o RAID10 (ou RAID 1 + 0). Figura 4: ilustração de RAID 5. Página 28 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 13. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Operações de Entrada e Saída, DMA, Banca: Cesgranrio Instituição: BR Distribuidora Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questão: 30 Que tecnologia tem por objetivo liberar a CPU em operações de entrada/saída? (a). Acesso direto à memória (DMA) (b). Cache (c). Paginação (d). Pipeline (e). Spool Solução: Antes desta tecnologia, a transferência de dados, além de envolver o processador, envolvia dois movimentos: um da interface (controlador) para o processador, e outro do processador para a memória. A técnica que libera o CPU de operações de entrada e saída, ou seja, permite que os dados sejam transferidos diretamente do controlador para a memória é chamada de Direct Memory Acces (DMA Acesso Direto à Memória). Logo, a alternativa correta é a letra A. A técnica de DMA baseia-se na utilização de um hardware especial, chamado de controlador de DMA, para transferir os dados entre um dispositivo de entrada/saída e memória. O controlador de DMA é conectado sicamente ao barramento de dados e de endereços para acessar diretamente a memória. Para que ocorra uma transferência de dados, o processador precisa inicializar o controlador de DMA fornecendo informações como quantidade de dados a transferir, origem e destino dos dados e qual sentido de transferência, memória para dispositivo ou vice-versa. Após essa inicialização, o controlador realiza a transferência e libera o processador para executar outras tarefas. Após nalizar a transferência, o controlador de DMA avisa o processador por meio de uma interrupção. É importante observar que existe uma disputa pelo barramento de dados e endereço pelo controlador de DMA e o processador. Essa disputa é coordenada pelo arbitramento do barramento. Cache é uma memória rápida que contém dados e/ou instruções recentemente referenciadas pelo processador. A técnica de paginação permite que um programa ocupe áreas não contíguas na memória. A técnica de Pipeline trabalha as diversas etapas do ciclo de instrução (busca, indireto, execução e interrupção) de forma paralela, e não serial, aumentando o desempenho da CPU. E Spool é um recurso compartilhado no disco para aceitar operações de saída para melhorar o desempenho de impressão. Página 29 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 14. Volume questões de TI Assuntos relacionados: Máquina Virtual, Banca: CESGRANRIO Instituição: BNDES Cargo: Analista de Suporte Ano: 2008 Questão: 57 No âmbito de monitores de máquinas virtuais, que propriedade garante que um software em execução em uma máquina virtual não acesse, nem modique, outro software em execução em outra máquina virtual? (a). Recompilação dinâmica (b). Paravirtualização de código (c). Virtualização de CPU (d). Interposição (e). Isolamento Solução: Em computação, virtualização é um termo amplo que se refere à abstração dos recursos computacionais. Ainda dentro de uma visão conceitual, virtualizar é colocar uma camada de abstração entre o recurso e o usuário do recurso, desacoplando os limites da natureza física e os recursos dos usuários, permitindo o compartilhamento simultâneo. No âmbito de virtualização de computadores, virtualizar signica permitir que vários sistemas operacionais sejam executados simultaneamente sobre um único computador físico. Cada sistema operacional é executado em uma máquina virtual própria. O monitor de máquinas virtuais é o responsável por arbitrar o acesso aos recursos (disco, processador, memória etc) da máquina hospedeira, de modo que esses possam ser compartilhados pelos sistemas clientes de forma eciente e segura. Nesse contexto, segurança signica garantir a correta execução das aplicações que estão rodando nas diversas máquinas virtuais. Para isso, é necessário que os monitores implementem mecanismos de controle para a utilização simultânea dos recursos físicos pelas diversas máquinas virtuais, como a proteção dos espaços de endereçamento, da alocação de espaço em disco, e do processamento das aplicações. A implementação desses mecanismos de controle é o que confere às máquinas virtuais a propriedade de isolamento. Isolar signica tornar os funcionamentos das diversas máquinas virtuais independentes entre si, apesar do fato delas compartilharem os recursos físicos. Página 30 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 15. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Virtualização, Máquina Virtual, Coman- dos UNIX, Java, Máquina Virtual Java (JVM), Banca: Cesgranrio Instituição: BNDES Cargo: Analista de Sistemas - Suporte Ano: 2008 Questão: 37 Suponha duas máquinas M1 e M2 com os seguintes serviços: M1 - Servidor de correio Postx em Linux, arquitetura x86. M2 - Servidor WEB IIS em Windows 2003, arquitetura x86. Uma terceira máquina M3 (x86) com Windows 2000 será criada para execução dos serviços das máquinas M1 e M2, tornando esses dois últimos servidores máquinas virtuais. Que software pode ser utilizado para isso? (a). JIT-Server (b). V-IDS (c). Wine (d). chroot (e). VMWare Solução: Antes de analisarmos cada alternativa, faremos uma breve introdução sobre o conceito de Virtualização e Máquina Virtual. A Virtualização faz com que os recursos computacionais possam ser divididos e compartilhados por vários ambientes simultaneamente, permitindo, por exemplo, a execução de múltiplos sistemas operacionais em um único hardware físico. O que temos, basicamente, é um software que parece e funciona como um hardware que realmente não existe (Máquina Virtual). A Máquina virtual é um ambiente isolado que compartilha os recursos de um hardware real através de um monitor de máquinas virtuais (VMM demos ver o VMM, também conhecido com hypervisor, Virtual Machine Monitor ). Po- como um sistema operacional para sistemas operacionais, capaz de criar uma ou mais máquinas virtuais sobre uma única máquina real. Este Monitor pode ser implementado de duas formas diferentes (Vide Figuras 5 e 6). Neste ponto, você pode estar se perguntando por que utilizar máquinas virtuais? Abaixo, apresentamos algumas vantagens: • sistemas operacionais e aplicações não dependem do hardware físico; • facilidade na manutenção de hardwares; • menos problemas com atualizações de hardware; • novas opções de recuperação de desastres; • hardware virtual padronizado; Página 31 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI • extremamente fácil de criar uma imagem da máquina virtual; • o sistema operacional e suas aplicações são congurados uma única vez; • possibilidade de fazer o backup da máquina virtual inteira copiando apenas alguns arquivos; • muitas VMs podem executar em um mesmo servidor físico; • maior e melhor utilização de recursos, reduzindo o tempo em que o processador ca ocioso; • as máquinas virtuais não são afetadas por outras máquinas virtuais. Existem, contudo, algumas desvantagens: • menor performance em relação ao uso de um servidor sem virtualização; • limitações do hardware virtual em relação ao físico. Figura 5: o monitor é implementado entre o hardware e os sistemas convidados (textitguest system). Figura 6: o monitor é implementado como um processo de um sistema operacional real subjacente, denominado sistema antrião (textithost system). Agora, partiremos para a análise de cada alternativa. (A) ERRADA Página 32 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI A compilação textitJust-In-Time (JIT) é uma técnica amplamente utilizada no aperfeiçoamento do desempenho da Máquina Virtual Java (JVM, do inglês textitJava Virtual Machine), convertendo, em tempo de execução, instruções de um formato para outro, por exemplo, de textitbytecode para código de máquina. Esta técnica é normalmente utilizada para incrementar o desempenho de programas executados - na verdade, interpretados - em máquinas virtuais. Em sistemas computacionais baseados em máquinas virtuais, como Java, o processo de compilação traduz o código fonte para uma representação intermediária conhecida pelo termo textitbytecode. Esta representação intermediária não está associada a nenhum código de máquina especíco e pode ser transportada para várias arquiteturas de computador distintas. Em cada arquitetura especíca, essa representação intermediária é interpretada - ou executada em uma máquina virtual. Nos ambientes que oferecem o recurso de JIT, a máquina virtual responsável pela execução dos textitbytecodes resultantes da compilação do programa fonte realiza a tradução desse textitbytecode para código de máquina nativo enquanto o executa. No caso mais comum, cada trecho de código é traduzido no instante em que está para ser executado pela primeira vez, daí derivando o nometextitjust-in-time. Neste escopo, o JIT-Server é adotado para otimizar chamadas constantes a classes/métodos de Java, estando mais preparado para sessões que duram dias/semanas/meses. Apesar da sobrecarga da expressão Máquina Virtual, lembre-se que JVM não virtualiza um sistema real (virtualiza apenas uma aplicação), portanto, a alternativa está errada. (B) ERRADA Comando ou software inexistente. Alternativa, obviamente, errada. (C) ERRADA Wine (textitWINE Is Not an Emulator - Wine Não é um Emulador) é uma ferramenta para sistemas UNIX que permite a execução de algum software especicamente concebido para o Microsoft Windows. Trata-se de uma implementação livre das bibliotecas do Windows no Linux, não sendo, portanto um emulador, pois ele não faz nenhuma emulação para executar softwares para Windows. O Wine funciona como uma camada que expõe uma API compatível com a do Windows; ao serem executadas as diferentes funções, o Wine irá traduzi-las para rotinas em UNIX cujo resultado seja idêntico. O WINE atua então apenas como um tradutor ou um interpretador de linha de comando, muito parecido com um shell. Se o Wine fosse de fato um emulador e uma máquina virtual perfeita, a princípio, todos os programas do Windows deveriam rodar no Linux sem problemas, o que, de fato, não ocorre. Logo, alternativa errada. (D) ERRADA O comando chroot do sistema operacional Unix permite que super-usuários transformem o diretório raiz no diretório especicado como parâmetro: Página 33 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI # chroot <diretório> A partir da execução do comando acima, a pasta especicada em <diretório> passa a ser vista pelo sistema como se fosse o diretório raiz, fazendo com que todos os comandos sejam executados dentro da mesma. Alternativa, obviamente, errada. (E) CORRETA VMware é um software de virtualização que permite a instalação e utilização de um sistema operacional dentro de outro, dando suporte real a softwares de outros sistemas operacionais. Usando software de virtualização como o VMware é possível executar um ou mais sistemas operacionais simultaneamente num ambiente isolado, criando máquinas completas (virtuais) que rodam dentro de uma mesma máquina real. Do ponto de vista do usuário e do software não se nota diferença entre a máquina real e a virtual. Saiba que o VMware não se trata de um emulador, pois ou o processador (com tecnologia AMD-V ou Intel VT-x) executa diretamente o código da máquina virtual ou o código é convertido de forma que o processador não precise trocar o contexto para o modo real. Dentre as utilidades do Vmware, podemos citar: • testar uma aplicação em várias plataformas; • dar suporte a diversas aplicações e sistemas operacionais; • migrar e consolidar servidores antigos, concentrando-os em uma máquina só; • testar sistemas operacionais novos; • manter a compatibilidade de hardware; • criar redundância contra falhas e segurança adicional contra intrusão. Concluímos, assim, que esta alternativa está correta. Página 34 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 16. Volume questões de TI Assuntos relacionados: Arquitetura de Computadores, Virtualização, Banca: Cesgranrio Instituição: IBGE Cargo: Analista de Sistemas - Suporte Ano: 2010 Questão: 48 Durante uma reunião da equipe de TI de uma empresa, para discutir a estratégia de virtualização dos seus servidores, um analista fez as seguintes considerações sobre os inconvenientes relacionados à virtualização: I a virtualização não pode ser utilizada quando as aplicações que rodarão em um ambiente virtualizado precisarem acessar dispositivos conectados à porta paralela ou à USB, pois os softwares de virtualização ignoram a existência desses dispositivos; II existe um grande consumo de memória RAM dos servidores, dado que cada máquina virtual vai ocupar uma área separada da mesma; III o gerenciamento ca descentralizado, e o suporte e a manutenção cam mais complexos, em comparação a um ambiente que não utiliza virtualização, mas sim, máquinas físicas para suprir as necessidades. Qual(is) dos inconveniente(s) apontado(s) pelo analista está(ão) correto(s)? (a). I, apenas. (b). II, apenas. (c). III, apenas. (d). I e II, apenas. (e). I, II e III. Solução: Em uma denição simplicada, a virtualização é um processo que, através do compartilhamento de hardware, permite a execução de inúmeros sistemas operacionais em um único equipamento. Cada máquina virtual criada neste processo é um ambiente operacional completo, seguro e totalmente isolado como se fosse um computador independente. Com a virtualização, um único servidor pode armazenar diversos sistemas operacionais em uso. Isto permite que um data center opere com muito mais agilidade e com um custo mais baixo. Dentre os benefícios da virtualização, podemos citar: • segurança: usando máquinas virtuais, pode ser denido qual é o melhor ambiente para executar cada serviço, com diferentes requerimentos de segurança, ferramentas diferentes e o sistema operacional mais adequado para cada serviço. Além disso, cada máquina virtual é isolada das demais. Usando uma máquina virtual para cada serviço, a vulnerabilidade de um serviço não prejudica os demais; • conança e disponibilidade: a falha de um software não prejudica os demais serviços; • custo: a redução de custos é possível de ser alcançada com a consolidação de pequenos servidores em outros mais poderosos; • adaptação às diferentes cargas de trabalho: variações na carga de trabalho podem ser tratadas facilmente. Ferramentas autônomas podem realocar recursos de uma máquina virtual para a outra; Página 35 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos • Volume questões de TI balanceamento de carga: toda a máquina virtual está encapsulada no monitor de máquina virtual. Sendo assim, é fácil trocar a máquina virtual de plataforma, a m de aumentar o seu desempenho; • suporte a aplicações legadas: q uando uma empresa decide migrar para um novo Sistema Operacional, é possível manter o sistema operacional antigo sendo executado em uma máquina virtual, o que reduz os custos com a migração. Vale ainda lembrar que a virtualização pode ser útil para aplicações que são executadas em hardware legado, que está sujeito a falhas e tem altos custos de manutenção. Com a virtualização desse hardware, é possível executar essas aplicações em hardwares mais novos, com custo de manutenção mais baixo e maior conabilidade. Os ambientes virtuais necessitam ser instanciados, monitorados, congurados e salvos. Existem produtos que fornecem essas soluções, mas esse é o campo no qual estão os maiores investimentos na área de virtualização, justamente por se tratar de um dos maiores contratempos na implementação da virtualização. Vale lembrar que o VMWare é a plataforma mais exível e fácil de usar, mas ainda apresenta falhas que comprometem a segurança, assim como as demais plataformas. Entretanto, os benefícios com a centralização da administração são inegáveis, uma vez que uma padronização entre os servidores é mais fácil de ser conseguida com as ferramentas atuais, então a armativa III é falsa. É verdade o fato de que cada máquina virtual vai ocupar áreas exclusivas de memória RAM nos servidores físicos. Isso torna a armativa II verdadeira, mas devemos lembrar que, muitas vezes, a memória principal dos servidores físicos é subutilizada e o uso da virtualização pode ser vantajoso nesses casos. Em relação ao hardware dos servidores, incluindo, o processador, em média, os servidores utilizam somente de 5% a 10% da sua capacidade, segundo estimativa da empresa de software para virtualização VMware. Devemos nos atentar às limitações de hardware da virtualização, pois o processamento, a capacidade de armazenamento da memória virtual e o espaço em disco da máquina são compartilhados pelos ambientes virtuais, e sendo assim, o hardware pode se tornar o gargalo da virtualização. As máquinas virtuais não podem ser criadas livremente sem uma análise dos recursos consumidos pela mesma. Hoje em dia, os principais softwares que gerenciam a virtualização dão um bom suporte ao acesso do hardware do computador hospedeiro como o uso de DVD, USB, monitor e outras diversas formas de interface. A armativa I é, claramente, incorreta. Como somente a armativa II está correta, a alternativa a ser marcada é a letra (B). Página 36 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 17. Volume questões de TI Assuntos relacionados: LPAR, Virtualização, Máquina Virtual, Banca: Cesgranrio Instituição: IBGE Cargo: Analista de Sistemas - Suporte Ano: 2010 Questão: 58 Em uma arquitetura Mainframe, uma LPAR é um(a) (a). banco de modems projetado para utilizar linhas de alta velocidade. (b). conjunto de discos rígidos organizados segundo uma estrutura de RAID 1. (c). subconjunto dos recursos de hardware de um computador virtualizado como um computador separado. (d). estratégia de gerenciamento de memória utilizada para otimizar o processo de busca de informação. (e). placa de rede utilizada para conectar um Mainframe a um switch de rede. Solução: Na área de TI, virtualizar é o ato de criar máquinas virtuais, máquinas que não existem sicamente, por exemplo: se uma máquina puder virtualizar 3 servidores, com isto o administrador usa um único meio físico para 3 máquinas com funções diferentes, que podem ser acessadas separadamente através da Internet. Uma denição mais acadêmica sobre virtualização pode ser a técnica que combina ou divide recursos computacionais para prover um ou mais ambientes operacionais de execução, sendo chamado de máquinas virtuais. A virtualização surgiu em 1960 com os mainframes (computadores de grande porte). Naquela época era muito caro adquirir e manter um mainframe, e devido ao elevado preço, estes equipamentos só eram acessíveis a universidades e órgãos públicos. Com isso havia a necessidade de compartilhar o mesmo meio físico para realizar operações e executar aplicativos de diferentes nalidades. Este conceito é, também, conhecido como Logical Partitioning (Particionamento Lógico). LPAR é uma abordagem de arquitetura do sistema que promete revolucionar as infraestruturas corporativas de TI e ter um grande impacto nas operações de negócios e nas decisões de compra de equipamento. Originalmente desenvolvida para computadores de mainframe, LPAR permite a divisão de um único servidor em vários servidores ou partições virtuais totalmente independentes. Uma LPAR refere-se à divisão dos processadores, da memória e do armazenamento de um computador em vários conjuntos de recursos, para que cada conjunto seja operado de maneira independente com sua própria instância de sistema operacional e seus aplicativos físicos ou virtuais. O particionamento lógico é tipicamente usado para permitir o uso de diferentes sistemas operacionais e aplicativos em um único dispositivo. As partições podem ou não ser conguradas para se comunicarem entre si ou dividirem alguns recursos do servidor, como interfaces de rede. Cada partição é independente das operações que ocorrem em outras partições, pode executar sua própria versão do sistema operacional e ter recursos de processador, memória e E/S dedicados à sua utilização exclusiva. Página 37 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Concluindo, LPAR é a divisão dos processadores, da memória e do armazenamento de um computador em vários conjuntos de recursos, ou seja, subconjunto dos recursos de hardware de um computador virtualizado como um computador separado. Portanto, a alternativa está correta. Página 38 de 55 www.handbookdeti.com.br C Handbook de Questões de TI Comentadas para Concursos 18. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Gerenciamento de Memória, Alocação de Memória, Banca: Cesgranrio Instituição: BNDES Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questão: 51 Um sistema operacional que usa segmentação de memória tem a seguinte conguração: segmento 1 : 100 KB segmento 2 : 50 KB segmento 3 : 200 KB segmento 4 : 50 KB A memória é preenchida com segmentos de diversos tamanhos, colocados na ordem abaixo. 20 KB, 50 KB, 10 KB, 50 KB, 20 KB, 20 KB, 40 KB Qual o espaço livre de cada segmento, respectivamente, para as estratégias abaixo? best-t rst-t III: worst-t I: II: (a). I: 1=30 KB, 2=0 KB, 3=160 KB, 4=0 KB II: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB III: 1=60 KB, 2=50 KB, 3=30 KB, 4=50 KB (b). I: 1=0 KB, 2=0 KB, 3=160 KB, 4=30 KB II: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB III: 1=60 KB, 2=50 KB, 3=30 KB, 4=50 KB (c). I: 1=30 KB, 2=0 KB, 3=160 KB, 4=0 KB II: 1=60 KB, 2=50 KB, 3=30 KB, 4=50 KB III: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB (d). I: 1=0 KB, 2=0 KB, 3=160 KB, 4=30 KB II: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB III: 1=20 KB, 2=0 KB, 3=120 KB, 4=50 KB (e). I: 1=20 KB, 2=0 KB, 3=120 KB, 4=50 KB II: 1=60 KB, 2=50 KB, 3=30 KB, 4=50 KB III: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB Solução: A alocação de memória para processo (ou um segmento) está relacionada à Gerência de Memória do Sistema Operacional. Os algoritmos em questão estão relacionados à alocação de memória por partições variáveis, ou seja, o tamanho das partições é ajustado dinamicamente de acordo com a necessidade exata de memória do processo. O sistema operacional mantém uma lista de segmentos livres. Quando um processo é criado, essa lista é percorrida e um segmento de tamanho igual ou maior que a necessidade do processo é selecionado. Entretanto, o que segmento escolhido tiver a mais que o necessário Página 39 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI será transformado em um novo segmento livre. Dessa forma, o processo recebe o tamanho exato de memória que necessita. First-t, Best-t, que Existem quatros formas básicas de percorrer a lista de segmentos livres. São eles: que utiliza o primeiro segmento livre que encontrar com tamanho suciente; Worst-t, que utiliza o segmento que resulta na maior sobra; e Circular-t, que semelhante ao First-t, mas inicia a procura no segmento utiliza o segmento que resultar em menor sobra; seguinte à última sobra. O enunciado especica inicialmente 4 segmentos livres: 100 KB, 50 KB, 200 KB e 50 KB, e os novos segmentos a serem alocados na seguinte ordem são: 20 KB, 50 KB, 10 KB, 50 KB, 20 KB, 20 KB e 40 KB. Best-t, temos que para o segmento de 20KB, o segmento que produz menor sobra (30 KB) é o segmento 2. O segmento seguinte, 50 KB, é alocado no segmento 4, sobrando 0 KB. O segmento de 10 KB é alocado no segmento 2, pois produz menor sobra Utilizando o algoritmo (20 KB) entre os quatros segmentos. E assim por diante com os segmentos de 50 KB, 20 segmento 1 sobra 30 segmento 2 sobra 0 KB, no segmento 3 sobra 160 KB e no segmento 4 sobra 0 KB. KB, 20 KB e 40 KB. Então, ao nal da alocação dos segmentos, no KB, no A Tabela 1 mostra para cada alocação a sobra em cada um dos quatros segmentos. Segmentos Segmento 1 Segmento 2 Segmento 3 Segmento 4 100 KB 50 KB 200 KB 50 KB 20 KB 100 KB 30 KB 200 KB 50 KB 50 KB 100 KB 30 KB 200 KB 0 KB 10 KB 100 KB 20 KB 200 KB 0 KB 50 KB 50 KB 20 KB 200 KB 0 KB 20 KB 50 KB 0 KB 200 KB 0 KB 20 KB 30 KB 0 KB 200 KB 0 KB 40 KB 30 KB 0 KB 160 KB 0 KB Sobra 30 KB 0 KB 160 KB 0 KB Tabela 1: alocação dos segmentos utilizando a estratégia Best-t. First-t, temos que para o segmento de 20 KB, o primeiro segmento que comporta os 20 Kb é o segmento 1, gerando uma sobra de 80 KB. O segmento de 50 KB, novamente, é alocado no segmento 1, pois é o primeiro segmento que comporta os 50 KB, gerando uma sobra de 30 KB. O segmento de 10 KB, também, é alocado no segmento 1, gerando uma sobra de 20 KB, enquanto que os segmentos de 2 a 4 continuam com o tamanho inicial. O outro segmento de 50 KB não é mais alocado no segmento 1, mas no segmento 2, gerando uma sobra de 0 KB. E assim por diante com os segmentos de 20 KB, 20 KB e 40 KB. Então, ao nal da alocação dos segmentos, no segmento 1 sobra 0 KB, no segmento 2 sobra 0 KB, no segmento 3 sobra 140 KB e no segmento 4 sobra 50 KB. A Utilizando o algoritmo Tabela 2 mostra para cada alocação a sobra em cada um dos quatros segmentos. Worst-t, temos que para o segmento de 20KB, o segmento que produz a maior sobra é o segmento 3, gerando uma sobra de 180 KB. O segmento de 50 KB, novamente, é alocado no segmento 3, pois este produz a maior sobra, gerando uma sobra de 130 KB. O segmento de 10 KB, também, é alocado no segmento 3, gerando uma Utilizando o algoritmo Página 40 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Segmentos Volume questões de TI Segmento 1 Segmento 2 Segmento 3 Segmento 4 100 KB 50 KB 200 KB 50 KB 20 KB 80 KB 50 KB 200 KB 50 KB 50 KB 30 KB 50 KB 200 KB 50 KB 10 KB 20 KB 50 KB 200 KB 50 KB 50 KB 20 KB 0 KB 200 KB 50 KB 20 KB 0 KB 0 KB 200 KB 50 KB 20 KB 0 KB 0 KB 180 KB 50 KB 40 KB 0 KB 0 KB 140 KB 50 KB Sobra 0 KB 0 KB 140 KB 50 KB Tabela 2: alocação dos segmentos utilizando a estratégia First-t. sobra de 120 KB, enquanto que os segmentos de 1, 2 e 4 continuam com o tamanho inicial. E assim por diante com os segmentos de 50 KB, 20 KB, 20 KB e 40 KB. Então, ao nal segmento 1 sobra 60 KB, no segmento 2 sobra 50 KB, no no segmento 4 sobra 50 KB. A Tabela 3 mostra para cada da alocação dos segmentos, no segmento 3 sobra 30 KB e alocação a sobra em cada um dos quatros segmentos. Segmentos Segmento 1 Segmento 2 Segmento 3 Segmento 4 100 KB 50 KB 200 KB 50 KB 20 KB 100 KB 50 KB 180 KB 50 KB 50 KB 100 KB 50 KB 130 KB 50 KB 10 KB 100 KB 50 KB 120 KB 50 KB 50 KB 100 KB 50 KB 70 KB 50 KB 20 KB 80 KB 50 KB 70 KB 50 KB 20 KB 60 KB 50 KB 70 KB 50 KB 40 KB 60 KB 50 KB 30 KB 50 KB Sobra 60 KB 50 KB 30 KB 50 KB Tabela 3: alocação dos segmentos utilizando a estratégia Worst-t. Percebe-se nos exemplos de alocação de memória anterior, alguns segmentos de tamanho pequeno surgem quando um processo é alocado. Não é interessante para o Sistema Operacional manter segmentos de poucos bytes. Para evitar o aparecimento de segmentos pequenos, foi criada uma técnica chamada Parágrafo, que consiste em determinar a menor unidade de alocação de memória. De acordo com o discutido anteriormente, temos os seguintes valores de espaço livre para os seguimentos de 1 a 4 de acordo com a técnica utilizada: Página 41 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Segmentos Segmento 1 Segmento 2 Segmento 3 Segmento 4 Best-t First-t Worst-t 30 KB 0 KB 60 KB 0 KB 0 KB 50 KB 160 KB 140 KB 30 KB 0 KB 50 KB 50 KB Tabela 4: sumário das sobras dos segmentos de 1 a 4 para cada estratégia. Então, a alternativa correta é a letra (A). Página 42 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 19. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Gerenciamento de Memória, Alocação de Memória, Banca: Cesgranrio Instituição: BR Distribuidora Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questão: 28 Um sistema encontra-se com a seguinte lista de segmentos de memória disponíveis, em sequência: 13KB, 21KB, 9KB, 17KB, 40KB. Neste instante, recebe pedido de alocação de memória para quatro novos processos, nesta ordem: 15KB, 24KB, 20KB, 11KB. Considere os algoritmos a seguir, para alocação de memória. I - First t II - Best t III - Worst t Qual(is) o(s) algoritmo(s) que consegue(m) alocar memória para todos os quatro novos processos? (a). I, apenas. (b). II, apenas. (c). I e II, apenas. (d). II e III, apenas. (e). I, II e III. Solução: Umas das funções fundamentais dos sistemas operacionais é a de realizar a gerencia da memória principal do computador, permitindo que os diversos processos executem de forma eciente e protegida. Nos primeiros sistemas operacionais, a memória era dividida em partições de tamanho xo, porém esta técnica acarretava em dois problemas: Fragmentação interna e Fragmentação externa. A fragmentação interna ocorre quando um programa aloca uma partição de memória que excede a quantidade necessária. O espaço excedente naquela partição é desperdiçado. Já a fragmentação externa ocorre quando, apesar da quantidade total de memória ser suciente, não existe uma partição contígua capaz de atender as necessidades de um programa. Para solucionar o problema da fragmentação interna, foi criado o mecanismo de particionamento dinâmico, no qual um programa aloca somente a quantidade exata de memória. No entanto, esse método aumentava a fragmentação externa uma vez que permitia o aparecimento de lacunas pequenas demais para serem utilizadas por algum programa. Para aprimorar ainda mais o gerenciamento de memória, surgiram inúmera técnicas de preenchimento de lacunas, incluindo as apresentadas no enunciado da questão: rst t, best t e worst t. A descrição das técnicas, bem como o resultado da aplicação delas no cenário apresentado no enunciado são mostrada a seguir. Na política de alocação First Fit, os processos são alocados no primeira lacuna que possua tamanho suciente. Já na Best Fit, os processos são alocados nas lacunas cujo tamanho Página 43 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI seja mais próximo do tamanho necessário ao processo. Por m, na Worst Fit, os processos são alocados nas maiores lacunas disponíveis. O resultado da aplicação dessas três políticas no cenário apresentado no enunciado é mostrado na Figura 7. Na Figura, as células em amarelo representam o espaço na lacuna após a alocação de memória para o processo. Figura 7: políticas de alocação de memória. Portanto, percebe-se que somente com as políticas Best Fit e Worst Fit seria capaz alocar memória suciente para todos os quatro processos. Como mostrado na gura, a política First Fit falhou ao ter que alocar memória para o processo de tamanho 20K, pois após as duas primeiras alocações, não havia mais nenhum espaço contíguo maior ou igual a 20K. Portanto, a resposta da questão é a alternativa D. Finalizando a questão, vale à pena ressaltar o seguinte. Todas as técnicas apresentadas levam em consideração o fato de que os programas devem ocupar áreas contíguas de memória. Os sistema operacionais modernos supriram esta necessidade através da técnica de Paginação. Página 44 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 20. Volume questões de TI Assuntos relacionados: Servidor de Aplicações, Java, J2EE, Máquina Virtual Java (JVM), Heap, Banca: Cesgranrio Instituição: BNDES Cargo: Analista de Sistemas - Suporte Ano: 2008 Questão: 31 Um servidor Linux, que roda, exclusivamente, um servidor de aplicação Java EE, possui 2 GB de memória RAM e 1 CPU. A única aplicação em execução atinge, em momentos de pico, 50 usuários simultâneos. Para que essa aplicação tenha um desempenho adequado, o tamanho máximo da Heap da JVM pode ser congurado para (a). 100 threads. (b). 32 MB. (c). 60 threads. (d). 2 GB. (e). 512 MB. Solução: O Java EE (Enterprise Edition) é uma plataforma de desenvolvimento de sistemas em Java. A plataforma inicialmente era conhecida por Java 2 Platform Enterprise Edition (J2EE), até ter seu nome trocado para Java EE, o que ocorreu na versão 5. A plataforma JEE oferece uma série de componentes e funcionalidades que permitem a implementação de software Java distribuído. Uma descrição sucinta da destinação e das características gerais da plataforma JEE pode ser encontrada na Wikipedia: A Plataforma Java (Enterprise Edition) difere-se da Plataforma Java Standard Edition (Java SE) pela adição de bibliotecas que fornecem funcionalidade para implementar software Java distribuído, tolerante a falhas e multi-camada, baseada amplamente em componentes modulares executando em um servidor de aplicações. Ela é voltada para aplicações multicamadas, baseadas em componentes que são executados em um servidor de aplicações... Ela contém bibliotecas desenvolvidas para o acesso a base de dados, RPC, CORBA, etc. Devido a essas características a plataforma é utilizada principalmente para o desenvolvimento de aplicações corporativas. Os servidores de aplicação mencionados na descrição acima, em linhas gerais, são softwares que provêem um ambiente onde as aplicações podem executar. Uma aplicação Java usualmente é dividida em 2 partes: uma parte que executa no cli- ente e uma outra parte que executa no servidor. O servidor em si é dividido em diferentes containers que oferecem diferentes serviços às aplicações. oferecidos pelos containers Entre os serviços mais comuns estão a execução da lógica de negócio, serviços de mensagens, serviços de gerenciamento de conexões a bancos de dados, serviços de segurança etc. Entendido o conceito de servidores de aplicação, agora vamos falar um pouco sobre JVM (Java Virtual Machines). Página 45 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Quando um código Java é compilado, ele dá origem a um programa codicado nos chamados bytecodes. Os bytecodes são uma espécie de código intermediário, que só pode ser executado por uma JVM. Uma JVM, por sua vez, é um programa que converte os bytecodes em código executável de máquina, que pode então ser executado pela máquina física. Em última instância, são os conceitos de bytecodes que garantem a portabilidade dos códigos Java. Independente do sistema operacional ou plataforma física onde tenha sido desenvolvido o programa Java, os bytecodes sempre serão os mesmos. Com isso, para executar o programa Java em outro sistema, basta que se tenha uma JVM especíca, capaz de converter os bytecodes para o código de máquina apropriado. Agora, vamos ao que realmente interessa para alcançarmos a resposta da questão. A heap da JVM é uma área de memória onde todos os objetos das aplicações que estão sendo executadas pela JVM residem. Além dos objetos criados nas aplicações, a heap ainda possui uma área de memória reservada para outras funções da JVM. Portanto, para que as aplicações executem com desempenho adequado, é necessário congurar bem o tamanho da heap. As alternativas A e C estão erradas, simplesmente, porque o tamanho da heap não é denido em termos do número de threads, mas sim em termos de quantidade de memória. Já a alterativa D está errada pois não faz sentido alocar toda a memória do sistema (no caso, 2GB) exclusivamente para a JVM. O sistema operacional sequer irá permitir a realização desta operação, visto que boa parte da memória já estará sendo utilizada pelo próprio sistema operacional. Com isto, nos restam as alternativas B (32 MB) e D (512 MB). O enunciado da questão diz que o servidor possui 1 CPU, e que, em momentos de pico, a aplicação em execução atinge 50 usuários simultâneos. O fato de o servidor possuir apenas 1 CPU implica dizer que, em momentos de alta utilização da aplicação, haverá muitas trocas de contexto, ou seja, muitas alternâncias entre os processos em execução. Em princípio, a alteração da quantidade de memória não irá afetar a quantidade de trocas de contexto, porém irá permitir que as múltiplas threads (que serão criadas para atender uma grande quantidade usuários simultâneos) estejam sempre na memória principal, o que pode conferir maior desempenho à aplicação. Como o enunciado não presta informações sobre o consumo de memória das threads individuais que são geradas para atender cada um dos usuários simultâneos, e levando ainda em consideração que o tamanho default da heap (ou seja, um tamanho que atende os requisitos de desempenho de uma aplicação média) da JVM varia entre 16MB a 64MB, podemos armar que, para maximizar o desempenho da aplicação, o ideal seria congurar o tamanho máximo da heap para 512MB. Portanto, a resposta da questão é a alternativa E. Página 46 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 21. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Gerenciamento de Memória, Swapping, Fragmentação Interna de Memória, Fragmentação Externa de Memória, Segmentação de Memória, Device Driver, Banca: Cespe Instituição: ANAC Cargo: Analista Administrativo - Tecnologia da Informação Ano: 2009 Questão: 53, 54 e 56 A crescente evolução da computação tem sido impulsionada pelo melhoramento do hardware e pelo surgimento dos sistemas operacionais. No que concerne a sistema operacional, julgue os itens de 51 a 60. 53 Uma das responsabilidades dos sistemas operacionais é gerenciar a memória. Para que essa gerência possa garantir eciência na execução dos processos, os sistemas operacionais tentam maximizar o número de processos residentes na memória principal. Para isso, foi introduzido, nos sistemas operacionais, o conceito de swapping, que consiste em dividir o programa em módulos de tamanhos diferentes, a m de carregar o módulo que tiver o tamanho da área livre na memória principal. 54 A diferença entre fragmentação interna e externa é que a primeira ocorre na memória principal, e a segunda, no disco. 56 Entre as camadas do gerenciamento de entrada e saída de um sistema operacional, há uma camada chamada de device drivers. Os device drivers são denidos como programas que objetivam padronizar a comunicação entre o susbsistema de E/S e o kernel do sistema operacional. Solução: 53 ERRADO A técnica de swapping foi introduzida para contornar situações de insuciência de memória principal. Essa técnica é aplicada à gerência de memória para programas que esperam por memória livre para serem executados. A vezes, não há memória principal suciente para armazenar todos os processos atualmente ativos, então, os processo em excesso são mantidos no disco e trazidos de lá para execução dinamicamente. Uma solução para essa situação é o mecanismo chamado swapping. O swapping consiste em trazer cada processo inteiro, executá-lo temporariamente e, então devolvê-lo ao disco. Esta técnica pode ser desenvolvida utilizando dois modos de divisão da memória principal, as partições xas e as partições variáveis, a principal diferença entre elas é o número de posições e o tamanho das partições que variam dinamicamente na partição variável, enquanto os processos entram e saem, ao passo que as partições xas não existe variação do tamanho. As partições variáveis tem a exibilidade de não se prender a um número xo de partições que podem ser muito grandes ou muito pequenas otimizando a utilização da memória, mas também complica a tarefa de alocar e desalocar a memória, assim como a monitoração da memória utilizada. A gerência de memória reserva uma área de disco para o seu uso. Em determinadas situações, um processo é completamente copiado da memória principal para o disco. Sua execução é suspensa, e é dito que este processo sofreu um swap-out, e outro processo ocupará esta área na memória principal. Mais tarde, ele sofrerá um swap-in, ou seja, será copiado Página 47 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI novamente para a memória principal e sua execução será retornada, caso exista espaço disponível na memória. O resultado desse revezamento no disco faz com que o sistema operacional consiga executar mais processo do que caberia em um único instante na memória principal. 54 ERRADO A segmentação é uma técnica de gerência de memória onde o espaço de endereçamento virtual é dividido em blocos de tamanhos diferentes chamados segmentos. Esta técnica não apresenta fragmentação interna, visto que a quantidade exata de memória necessária é alocada para cada segmento. Entretanto, como áreas contíguas de diferentes tamanhos devem ser alocadas, existe a ocorrência de fragmentação externa. Nesse caso, o processo pode simplesmente ter de esperar até que mais memória (ou pelo menos um bloco de memória maior) se torne disponível, ou a compactação pode ser usada para criar um bloco de memória livre maior. De forma resumida a fragmentação externa ocorre quando o tamanho do programa a ser carregado na memória RAM é menor que o espaço total contíguo de memória disponível. Tanto nos sistemas de alocação absoluta quando nos de realocação, os programas, normalmente, não preenchem totalmente as partições onde são carregados na memória RAM. Esse tipo de problema, decorrente da alocação xa das partições, é conhecido como fragmentação interna. A fragmentação interna ocorre quando um programa, carregado na memória RAM, é alocado em uma partição de memória maior que a necessária, resultando no desperdício de espaço naquela partição. 56 ERRADO Um device driver é um programa de computador permitindo um nível superior de programa de computador que interagi com um dispositivo de hardware. Os drivers de dispositivos (driver dispositivo) internamente são personalizados para cada dispositivo. As unidades de I/O consistem tipicamente de componentes mecânicos e eletrônicos. O componente eletrônico é chamado de controlador do dispositivo (device controller ou adapter). O componente mecânico é o dispositivo propriamente dito. O objetivo geral do gerenciamento de E/S é organizar parte do kernel em uma série de camadas de software, com as mais baixas escondendo peculiaridades do hardware e as mais altas mostrando-se simples para o usuário. A Figura 8 ilustra como as partes do kernel relacionadas a I/O são estruturadas em camadas de software. O objetivo da camada de device drivers é ocultar do subsistema de I/O do kernel as diferenças entre as controladoras de dispositivo, do mesmo modo que as chamadas ao sistema de I/O encapsulam o comportamento de dispositivos em poucas classes genéricas que ocultam das aplicações as diferenças de hardware. Como pode ser observado na Figura 8, o device drivers não é uma camada intermediária ao kernel e o subsistema do kernel, e sim uma camada para abstrair a complexidade das controlados de dispositivos do subsistema de I/O do kernel. Página 48 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Figura 8: representação do kernel em camadas e o seu relacionamento com o hardware. Página 49 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 22. Volume questões de TI Assuntos relacionados: ASCII, Barramento de Comunicação, Dynamic Link Libraries (DLL), Porta de Comunicação, Banca: ESAF Instituição: Receita Federal (RF) Cargo: Técnico da Receita Federal - Tecnologia da Informação Ano: 2006 Questão: 4 Analise as seguintes armações relacionadas a Fundamentos da Computação: I. O ASCII é um sistema de codicação de caracteres de byte simples usado para dados com base em texto. Esse sistema de codicação usa combinações numéricas designadas de 7 ou 8 bits para permitir que até 128 ou 256 caracteres sejam representados. O ASCII padrão usa 7 bits para representar todas as letras maiúsculas ou minúsculas, os números 0 a 9, caracteres de pontuação e de controle especial usados no inglês americano. A maior parte dos sistemas com base em Intel possibilita o uso de ASCII estendido (ou alto). O ASCII estendido permite que o oitavo bit de cada caractere seja usado para identicar outros 128 caracteres de símbolos especiais, letras de línguas estrangeiras e símbolos grácos. II. Barramentos são as linhas de comunicação usadas para transferência de dados entre os componentes do sistema do computador. Essencialmente, os barramentos permitem que diferentes partes do sistema compartilhem dados. Por exemplo, um barramento conecta o controlador da unidade de disco, a memória e as portas de entrada/saída ao microprocessador. III. Uma DLL é um recurso do sistema operacional que permite que rotinas executáveis (geralmente servindo uma função especíca ou conjunto de funções) sejam armazenadas separadamente como arquivos com extensões .dll. Todas estas rotinas são carregadas pelo Sistema Operacional no momento de sua inicialização, estando sempre disponíveis em memória RAM para qualquer programa que delas necessitar. IV. Uma porta de comunicação ou de conexão é uma forma de transferir e compartilhar informações entre aplicativos, como um processador de textos e uma planilha eletrônica, usando os recursos copiar/colar. Indique a opção que contenha todas as armações verdadeiras. (a). II e III (b). I e II (c). III e IV (d). I e III (e). II e IV Solução: ASCII O mapeamento de caracteres para números inteiros é denominado código de caracteres. Para que os computadores possam se comunicar a contento, é necessário que utilizem o mesmo código de caracteres. Um dos padrões utilizados ainda hoje é o ASCII (American Standard Code for Information Interchabe), o código padrão americano para troca de informações. Como o nome sugere, ele é bastante adequado à língua inglesa, porém não o é Página 50 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI para outros tantos idiomas (como o português, que necessita de símbolos designados para representar ç e á, por exemplo). No ASCII, cada caractere tem 7 bits, possibilitando um total de 128 caracteres distintos. Diversos desses caracteres são destinados à comunicação entre máquinas. Outros, designam caracteres de impressão. Todos os caracteres minúsculos e maiúsculos do idioma americano são cobertos, além dos algarismos de 0 a 9 e outros caracteres que auxiliam a produção textual, como espaço e exclamação. Numa tentativa de possibilitar o uso de caracteres pertencentes a outros idiomas, foi denido o ASCII Estendido, um código de 8 bits (1 byte) capaz de representar 256 caracteres. Assim, passou a ser possível representar, dentre outros, os caracteres acentuados. Obviamente, o ASCII Estendido é compatível com o ASCII original. Contudo, este incremento no código não consegue atender a demanda dos diversos idiomas existentes, sendo satisfatório praticamente apenas para idiomas cujo alfabeto seja de origem latina e/ou grega. A solução proposta, e gradualmente em implantação, é o sistema de codicação Unicode, que utiliza 16 bits para realizar a tarefa de representar caracteres dos mais variados alfabetos (árabe, cirílico, hebreu, latino, grego, etc). O item I apresenta informações corretas sobre o ASCII (Estendido). Barramentos Os componentes básicos de um computador são a CPU (processador), a memória principal (RAM) e os dispositivos de entrada/saída (E/S), como disco, impressora e teclado. Os controladores de tais componentes são interligados por barramentos de comunicação, que nada mais são do que os paralelos na placa-mãe que transmitem endereços, dados e sinais de controle. Existem diversos tipos de barramentos para atender às mais variadas necessidades. Al- guns exemplos são os barramentos AGP, PCI e PCI Express. Além dos barramentos ditos externos, deve-se ter em conta que há barramentos internos à CPU, proporcionando a comunicação entre seus diversos componentes. O item II está correto ao apresentar as informações sobre barramentos de computador. DLL Nas diversas versões do sistema operacional Windows, as aplicações que efetuam chamadas às rotinas do sistema utilizam a Win32 Application Program Interface, ou simplesmente API do Windows. Esse conjunto de bibliotecas é implementado por meio de DLLs (Dynamic Link Libraries), que nada mais são do que procedimentos que são ligados a aplicações em tempo de execução. A grande vantagem no uso de DLLs é evitar que cada aplicação implemente (e carregue para a memória principal) seus próprios procedimentos relacionados às chamadas ao sistema operacional. Desta forma, uma única cópia fornecida pelo sistema está disponível simultaneamente para todos os programas que dela precisarem. Diferentemente do que arma o item III, as DLLs não são carregadas todas em memória no Página 51 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI momento de inicialização do sistema operacional. À medida que as aplicações necessitam de utilizar funcionalidades oferecidas por determinada DLL, seu respectivo trecho de código é carregado para a memória principal. Porta de Comunicação Portas de comunicação são interfaces físicas disponibilizadas na parte externa dos gabinetes de computadores, cujo objetivo é permitir a conexão, ao sistema, de periféricos diversos, como modens, impressoras, teclados e monitores. Podem ser do tipo hot swap (ou hot swapping), isto é, podem permitir a conexão e desconexão de periféricos sem necessidade de desligamento do sistema. Alguns exemplos desta classe são as portas USB, Firewire e as interfaces SCSI. Já as famosas portas serial e paralela não possuem tal característica, geralmente necessitando do reboot (reinicialização) do sistema para propiciarem a correta identicação dos periféricos conectados. Observa-se com facilidade que o item IV apresenta um conceito equivocado e totalmente diverso da teoria exposta, estando incorreto, portanto. Desta forma, a letra b) é a resposta para a questão. Página 52 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos 23. Volume questões de TI Assuntos relacionados: Sistemas Operacionais, Gerenciamento de Memória, Fragmenta- ção Externa de Memória, Fragmentação Interna de Memória, Banca: ESAF Instituição: Superintendência de Seguros Privados (SUSEP) Cargo: Analista Técnico da SUSEP - Tecnologia da Informação Ano: 2010 Questão: 15 Na alocação particionada dinâmica de memória (a). ocorre fragmentação externa. (b). ocorre fragmentação interna. (c). não ocorre fragmentação externa. (d). não ocorre nenhuma fragmentação. (e). utilizam-se partições de tamanho xo. Solução: Apesar do barateamento da tecnologia de produção de memórias RAM e na consequente facilidade de acesso a tais componentes, a eciência no gerenciamento de memória continua sendo um requisito essencial aos Sistemas Operacionais (SOs), pois a demanda pelo recurso de armazenamento por parte dos programas em execução acompanha de perto o aumento da oferta de espaço. Os processos (denominação dos programas, sob óptica do Sistema Operacional) precisam estar na memória principal (memória RAM) para serem executados pelo(s) processador(es). Em uma máquina equipada com apenas uma unidade de processamento, somente um processo pode ser efetivamente executado a cada ciclo. Um esquema básico de gerência de memória, chamado Alocação Contígua Simples, consiste na divisão da memória principal em duas partes: uma para o Sistema Operacional, outra para programas de usuários. Um controle de acesso à memória deve ser implementado para evitar que os programas de usuários invadam o espaço de memória do SO. A Alocação Contígua Simples limita o tamanho do programa do usuário à quantidade de memória instalada na máquina (excetuando-se o espaço ocupado pelo SO), além de sub-utilizar tal recurso, já que ao carregar pequenos programas o espaço remanescente torna-se momentaneamente inacessível. O uso do processador também não é otimizado, pois em chamadas de E/S (Entrada/Saída), por exemplo, outros processos continuam esperando a conclusão do programa atualmente em execução para serem carregados em memória. Esse é o caso de sistemas monoprogramados, como o DOS. Uma tentativa de amenizar o problema da quantidade de memória disponível inferior ao tamanho do programa a ser executado é um mecanismo chamado sobreposição (overlay), que opera vericando se o programa possui seções que não necessitem permanecer na memória durante toda a execução. A ideia é carregar apenas as seções necessárias a cada instante de execução, sobrepondo as seções não mais necessárias. O efeito colateral dessa manobra é a lentidão que a sobreposição de seções ocasiona à execução do programa como um todo. Além disso, esse mecanismo exige, no momento da programação, a denição das seções de sobreposição por meio de diretivas especícas da linguagem de programação utilizada. Página 53 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Volume questões de TI Para suportar simultaneamente vários processos na memória, o SO precisa ser dotado de multiprogramação (capacidade de execução simultânea de vários processos). Evidente- mente, um SO multiprogramado precisa de um esquema de gerenciamento de memória mais elaborado do que a Alocação Contígua Simples. Uma solução possível é a Alocação Contígua Particionada Estática (ou Alocação Particionada Estática). Nesse esquema, a memória principal deve ser subdividida em partições de tamanhos xos. Os tamanhos das partições, estabelecidos no momento da inicialização do sistema, podem diferenciar-se entre si. Desta forma, antes de ser carregado, um processo tem seu tamanho avaliado pelo SO para ser alocado na menor partição disponível que o comporte. Algumas partições podem eventualmente car vazias, caso os processos em espera para serem executados não caibam nos espaços disponíveis. Outro problema enfrentado pela Alocação Particionada Estática é a fragmentação interna de partição. Genericamente, a fragmentação ocorre quando partes da memória, alocadas e não utilizadas por um processo, cam impedidas de serem utilizadas por outros processos. A fragmentação interna ocorre quando um processo é carregado em uma partição de tamanho superior ao necessário para sua execução. O espaço não utilizado pelo processo permanece reservado até o nal da execução. Para reduzir o excesso de fragmentação interna, a Alocação Contígua Particionada Dinâmica (ou Alocação Particionada Dinâmica) elimina o conceito de partição xa e passa a alocar o espaço de memória exatamente necessário para a execução do processo. Apesar de resolver o problema de fragmentação interna (pois não há partição), a Alocação Particionada Dinâmica precisa enfrentar o problema da fragmentação externa. À medida que os vários processos são alocados e desalocados da memória principal, espaços de memória remanescentes entre os vários processos podem ser tão pequenos a ponto de não comportarem qualquer processo que encontre-se em espera, gerando a fragmentação externa da memória. Tal problema pode ser solucionado com a implementação da compactação, processo que consiste na realocação dinâmica de memória para os processos em execução. Enquanto os processos são alocados e desalocados, o SO verica a existência de espaços de memória vazios e passa a realocar devidamente alguns desses processos para outros endereços de memória. A opção a) está correta ao armar que na Alocação Particionada Dinâmica ocorre fragmentação externa de memória e, consequentemente, as opções c) e d) estão incorretas ao armar o contrário. Tanto a opção b) quanto a opção e) estão incorretas, pois referem-se a situações exclusivamente relativas à Alocação Particionada Estática. Página 54 de 55 www.handbookdeti.com.br Handbook de Questões de TI Comentadas para Concursos Questão 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Página 55 de 55 Volume questões de TI Resposta E A E A E C B D B E D D A E E B C A D E 53 ERRADO 54 ERRADO 56 ERRADO B A Handbook de TI Além do Gabarito Índice Remissivo Thread, 6, 8 Virtualização, 31, 35, 37 Alocação de Memória, 39, 43 Alta Disponibilidade, 21 Arquitetura de Computadores, 6, 18, 35 ASCII, 50 Banco de Dados, 23 Barramento de Comunicação, 50 Bootstrap, 10 Comandos UNIX, 31 Device Driver, 47 DMA, 29 Dynamic Link Libraries (DLL), 50 Escalonamento de Processos, 4 Fragmentação de Dados, 12 Fragmentação Externa de Memória, 47, 53 Fragmentação Interna de Memória, 47, 53 Gerenciamento de Memória, 39, 43, 47, 53 Gerenciamento de Processador, 4 Heap, 45 J2EE, 45 Java, 31, 45 LPAR, 37 Máquina Virtual, 30, 31, 37 Máquina Virtual Java (JVM), 31, 45 Microsoft Windows 2000, 27 Network File System (NFS), 13, 16 Operações de Entrada e Saída, 29 Porta de Comunicação, 50 Programação Multithreading, 8 RAID, 20, 21, 23, 27 Redes de Computadores, 13, 16 Segmentação de Memória, 47 Servidor de Aplicações, 45 Sistemas de Arquivos, 12, 23 Sistemas Operacionais, 4, 10, 18, 29, 31, 39, 43, 47, 53 Soluções de Armazenamento, 21 Swapping, 47 56