Buscar

TRABALHO MAURO

Prévia do material em texto

Programação Concorrente – Lista de exercício
(ENADE) A seção crítica corresponde à região no qual ocorre a sincronização de processos em um sistema computacional.
Nessa seção, naquele instante, só poderá ser ocupada por uma thread, pois objetivo e disciplinar o uso de métodos específicos a partir de várias requisições. Cada processo deve solicitar autorização para entrar em sua seção crítica, solicitação essa implementada pela seção de entrada.
Em relação à seção crítica é válido afirmar:
Uma solução para o problema da seção crítica deve satisfazer três requisitos: Exclusão mútua; progresso; espera limitada.
Cada processo dispõe de várias seções críticas constituído de um segmento de código
Uma seção crítica está vinculada a vários processos.
Considerando o contexto apresentado, assinale a alternativa correta.
A alternativa II está correta e a alternativa I está incorreta.
A alternativa I e II estão corretas.
A alternativa I e III estão corretas.
A alternativa II e III não estão corretas.
A alternativa II está correta e a alternativa III está incorreta.
A virtualização permite que um único computador hospede múltiplas máquinas virtuais, cada uma com seu próprio sistema operacional. Essa técnica tem ganhado importância nos dias atuais e vem sendo utilizada para resolver diversos tipos de problemas.
Considerando os diversos aspectos a serem considerados na utilização da virtualização, avalie as afirmações abaixo.
Um sistema operacional sendo executado em uma máquina virtual utiliza um subconjunto da memória disponível na máquina real.
Uma das aplicações da virtualização é a disponibilização de múltiplos sistemas operacionais para teste de software.
A virtualização só pode ser utilizada em sistemas operacionais Linux.
Um sistema operacional executado em uma máquina virtual apresenta um desempenho superior ao que alcançaria quando executado diretamente na mesma máquina real.
É correto apenas o que se afirma em A I.
B III.
C I e II. D II e IV. E III e IV.
Apesar de todo o desenvolvimento, a construção de computadores e processadores continua, basicamente, seguindo a arquitetura clássica de von Neumann. As exceções a essa regra encontram-se em computadores de propósitos específicos e nos desenvolvidos em centros de pesquisa. Assinale a opção em que estão corretamente apresentadas características da operação básica de um processador clássico.
Instruções e dados estão em uma memória física única; um programa é constituído de uma sequência de instruções de máquina; uma instrução é lida da memória de acordo com a ordem dessa sequência e, quando é executada, passa- se, então, para a próxima instrução na sequência.
Instruções e dados estão em memórias físicas distintas; um programa é constituído de um conjunto de instruções de máquina; uma instrução é lida da memória quando o seu operando-destino necessita ser recalculado; essa instrução é executada e o resultado é escrito no operando de destino, passando-se, então, para o próximo operando a ser recalculado.
Instruções e dados estão em uma memória física única; um programa é constituído de um conjunto de instruções de máquina; uma instrução é lida da memória quando todos os seus operandos-fonte estiverem prontos e disponíveis; essa instrução é executada e o resultado é escrito no operando de destino, passando-se, então, para a instrução seguinte que tiver todos seus operandos disponíveis.
Instruções e dados estão em memórias físicas distintas; um programa é constituído de um conjunto de instruções de máquina; uma instrução é lida da memória quando todos os seus operandos-fonte estiverem prontos e disponíveis; essa instrução é executada e o resultado é escrito no operando de destino, passando-se, então, para a instrução seguinte que estiver com todos os seus operandos disponíveis.
Instruções e dados estão em memórias físicas distintas; um programa é constituído de uma sequência de instruções de máquina; uma instrução é lida da memória de acordo com a ordem dessa sequência e, quando é executada, passa- se, então, para a próxima instrução na sequência.
As memórias cache são usadas para diminuir o tempo de acesso à memória principal, mantendo cópias de seus dados. Uma função de mapeamento é usada para determinar em que parte da memória cache um dado da memória principal será mapeado. Em certos casos, é necessário usar um algoritmo de substituição para determinar qual parte da cache será substituída.
Suponha uma arquitetura hipotética com as seguintes características:
A memória principal possui 4 Gbytes, em que cada byte é diretamente endereçável com um endereço 32 bits.
A memória cache possui 512 Kbytes, organizados em 128 K linhas de 4 bytes.
Os dados são transferidos entre as duas memórias em blocos de 4 bytes. Considerando os mapeamentos direto, totalmente associativo e associativo por conjuntos (em 4 vias), redija um texto que contemple as organizações dessas memórias, demonstrando como são calculados os endereços das palavras, linhas (blocos), rótulos (tags) e conjunto na memória cache em cada um dos três casos. Cite as vantagens e desvantagens de cada função de mapeamento, bem como a necessidade de algoritmos de substituição em cada uma delas.
Com relação ao gerenciamento de memória com paginação em sistemas operacionais, assinale a opção correta.
A As páginas utilizadas por um processo, sejam de código ou de dados, devem ser obrigatoriamente armazenadas na partição de swap do disco, quando o processo não estiver sendo executado.
B Todas as páginas de um processo em execução devem ser mantidas na memória física enquanto o processo não tiver terminado.
C Um processo somente pode ser iniciado se o sistema operacional conseguir alocar um bloco contíguo de páginas do tamanho da memória necessária para execução do processo.
D O espaço de endereçamento virtual disponível para os processos pode ser maior
que a memória física disponível.
E Um processo somente pode ser iniciado se o sistema operacional conseguir alocar todas as páginas de código desse processo.
Para explicar deadlock, Dijkstra contou a estória do jantar dos filósofos em que numa mesa redonda, com 5 pratos e 5 talheres, 5 filósofos se sentaram a fim de comer e pensar. Os filósofos compartilhavam de talheres comuns, pois, após pensarem, cada um em seu tempo, pegava o talher disponível a direita, para depois pegar o da esquerda e assim comer. Só depois de comer, o filósofo disponibilizaria o talher para outro filósofo. Sendo assim, havia hora ou outra um filósofo precisaria esperar o talher ser disponibilizado para comer. O problema de deadlock surgia quando todos os filósofos pegavam um talher da direita, não tendo assim talher a esquerda disponível o que fazia todos esperar eternamente um talher ser disponibilizado, já que eles precisavam de dois talheres para comer e só disponibilizaria o seu talher após comer.
Para este problema, veja três prováveis soluções abaixo:
- Permitir que apenas quatro filósofos sentem a mesa simultaneamente
- Permitir que um filósofo pegue um garfo apenas se o outro estiver disponível
- Permitir que um filósofo ímpar pegue primeiro o seu garfo da esquerda e depois o da direita, enquanto um filósofo par pegue o garfo da direita e, em seguida, o da esquerda
Assinale a alternativa correta.
Somente a solução I funciona.
Somente as soluções I e III funcionam.
A solução III não funciona.
Todas as soluções funcionam.
O problema do jantar dos filósofos não tem solução.
Como a memória principal de um computador é organizada?
O computador possui dispositivos que permitem armazenar dados, instruções e resultados. A esses dispositivos dá-se o nome de memórias. Comunicam diretamente com o processador e armazenam temporariamente (RAM e Cache) ou permanentemente (ROM) pequenas quantidades de informação. Devido ao seu cariz fundamental, este tipo de memória foi designado MEMÓRIA PRINCIPAL, CENTRAL ou PRIMÁRIA.
A memória principal é contituída por três tipos de memórias distintos
MemoriaRAM, Memória ROM, Memória Cache.
Como	a	técnica	de	pipelinig	melhora	o	desempenho	dos	sistemas computacionais?
	Pipeline é uma técnica de hardware que permite que a CPU realize a busca de uma ou 	mais instruções além da próxima a ser executada. Estas instruções são colocadas em uma 	fila de memória dentro do processador (CPU) onde aguardam o momento de serem 	executadas: assim que uma instrução termina o primeiro estágio e parte para o segundo, 	a próxima instrução já ocupa o primeiro estágio.
Como funcionam os sistemas de tempo compartilhado? Quais as vantagens em utilizá-los?
Os sistemas de tempo compartilhado (time‐sharing) dividem o poder computacional do computador entre os usuários ao mesmo tempo, utilizando‐se de terminais de vídeos e possuem arquitetura complexa.  Possuem a vantagem de não precisar adquirir diversas máquinas reais, já que se pode utilizar terminais para acessos desses usuários.
Como	o	Sistema	Operacional	impede	que	um	processo	monopolize	o processador?
Colocando processos em estados de bloqueios.
Determinando limite de processos abertos.
Com o clock do computador que determina quantidade de pulsos para cada processo.
Com relógio de interrupção que gera interrupção após um quantum de tempo específico.
Organizando a ordem dos processos no status pronto, por prioridade.
Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções?
Não funcionaria. Pois sem um intermediário entre os usuários e os componentes de hardware, não haveria como utilizar os recursos disponíveis para aplicações, que por sinal não existiria sem o sistema operacional. Sistema Operacional possibilita o uso eficiente e controlado dos recursos de hardware e implementam políticas e estruturas de software de modo a assegurar um melhor desempenho do sistema de computação
Defina o conceito de uma máquina de camadas.
O computador contem varios níveis ou camadas, possuindo tantos níveis para poder adequar o usuário às suas diversas aplicações. Caso algum usuario estiver trabalhando em um desses niveissempre e bom que ele conheça o funcionamento das demais para que a interação entre usuário ecomputador apresenta-se mais simples, confiável e eficiente
Descreva o ciclo de leitura e gravação da memória principal.
No ciclo de leitura, a CPU armazena no MAR, o endereço da célula a ser lida e geraum sinal de controle para a memória principal, indicando que uma operação de leituradeve ser realizada. O conteúdo da célula, identificada pelo endereço contido no MAR,é transferido para o MBR. No ciclo de gravação, a CPU armazena no MAR, oendereço da célula que será gravada e armazena no MBR, a informação que deveráser gravada. A CPU gera um sinal de controle para a memória principal, indicando queuma operação de gravação deve ser realizada e a informação contida no MBR étransferida para a célula de memória endereçada pelo MAR.
Desde que o computador foi criado, sempre se soube da necessidade de dispor de algo para que ele produzisse resultados de interesse. O algo a mais necessário consiste em uma coleção de códigos de máquina contendo instruções inteligíveis ao computador para que este efetuasse os procedimentos codificados.
Os códigos de máquina são escritos para os humanos em uma linguagem que se intitula sistema hexadecimal composto por 10 algarismos arábicos além de 6 letras de A a F. Tal representação se refere ao byte, um conjunto de 8 bits separados em 2 grupos de 4 que são representados por dois caracteres hexadecimais.
Complementando o texto acima, poderíamos dizer que este algo a mais, conforme descrito, se intitula Sistema Operacional e a respeito deste, podemos afirmar que:
o Sistema Operacional faz parte do chamado hardware e fica gravado na memória ROM
o Sistema Operacional nada mais é do que um programa compilado que foi codificado por alguém
o Sistema Operacional tem como objetivo único gerenciar os periféricos do computador
o Sistema Operacional auxilia o Usuário no acesso aos periféricos, não atendendo a nenhuma solicitação do Usuário, pois isto é da responsabilidade do Usuário
o sistema Operacional não é um software, mas sim um programa
Em multiprogramação com partições fixas, e correto dizer:
a maneira mais comum de realizar a multiprogramação consiste em dividir a memória em N partições (provavelmente de tamanhos diferentes)
a maneira mais comum de realizar a multiprogramação consiste em não dividir a memória em N partições
a multiprogramação não precisa de compartilhamento de memória
a maneira menos comum de realizar a multiprogramação consiste em dividir a memória em X partições
não é comum compartilhar memória em multiprogramação
Em programação concorrente, processo é algo em execução, algo que está em andamento. Vários processos podem utilizar um mesmo programa ao mesmo tempo como, por exemplo, várias instâncias do Word abertas editando textos diferentes. Todos os processos utilizam cópias diferentes do programa e são criados
e destruídos, constituindo ciclos. Ao destruir os processos, a área de memória ocupada fica bloqueada até que um novo processo seja iniciado. A maioria dos processos é pertinente ao usuário e são conhecidos como processos daemon.
Para evitar conflitos de impressões, é utilizada uma técnica denominada de spooling. Os arquivos a serem impressos ficam em uma fila de modo ordenado.
Um processo que utiliza muito o processo é denominado de cpu-process. Identicamente, se usa muito a entrada/saída é cpu-io-bound.
Acerca dos três parágrafos acima pode-se afirmar que:
O primeiro parágrafo contém 3 erros.
O primeiro parágrafo tem apenas um erro.
O terceiro parágrafo está correto.
O terceiro parágrafo está correto.
O primeiro parágrafo está errado, mas o terceiro está correto.
Em uma aplicação concorrente que controla saldo bancário em contas- correntes, dois processos compartilham uma região de memória onde estão armazenados os saldos dos clientes A e B. Os processos executam concorrentemente os seguintes passos:
	Processo 1 (Cliente A)
/* saque em A */
1a. x := saldo_do_cliente_A; 1b. x := x - 200;
1c. saldo_do_cliente_A := x;
/* depósito em B */
1d. x := saldo_do_cliente_B; 1e. x := x + 100;
1f. saldo_do_cliente_B := x;
	Processo 2 (Cliente B)
/* saque em A */
2a. y := saldo_do_cliente_A; 2b. y := y - 100;
2c. saldo_do_cliente_A := y;
/* depósito em B */
2d. y := saldo_do_cliente_B; 2e. y := y + 200;
2f. saldo_do_cliente_B := y;
Supondo que os valores dos saldos de A e B sejam, respectivamente, 500 e 900, antes de os processos executarem, pede-se:
(PLT) Quais os valores corretos esperados para os saldos dos clientes A e B após o término da execução dos processos? E quais os valores finais dos saldos dos clientes se a sequência temporal de execução das operações for: 1a, 2a, 1b, 2b, 1c, 2c, 1d, 2d, 1e, 2e, 1f, 2f?
(PLT) Utilizando semáforo, proponha uma solução (faça um algoritmo com pseudocódigo) que garanta a integridade dos saldos e permita o maior compartilhamento possível dos recursos entre os processos, não esquecendo a especificação da inicialização dos semáforos.
Explique com suas palavras como o Sistema Operacional gerencia os processos para que estes trabalhem de forma concorrente em relação ao acesso ao processador, ocupação na memória principal e prioridade de execução.
“Multiprogramação” consiste em se manter mais de um programa em execução simultaneamente. Indique duas inovações de hardware (de gerações anteriores) que possibilitaram o surgimento da Multiprogramação.
Sinalização de Eventos e Fitas Magnéticas
Interrupções e Discos Magnéticos
Leitores de Cartões e Fitas Magnéticas
Dispositivos de E/S e Memorias mais rápidas
Discos magnéticos e Impressoras a laser.
(ENADE) O ambiente necessário a execução de um processo é formado pelos contextos de hardware e de software. O contexto de software especifica características do processo que influem na execução do mesmo, tais como: o número máximo de arquivosabertos, o tamanho do buffer para operações de E/S, etc. O contexto de hardware é fundamental para que os processos possam se reservar no controle (utilização) da UCP, podendo ser interrompidos pelo SO e, posteriormente, reinicializados do ponto onde haviam parado sem qualquer solução de continuidade, isto é, como se nada tivesse ocorrido.
Sobre o contexto de hardware, como é chamada a operação que possibilita o revezamento na utilização da UCP e consiste basicamente em salvar o conteúdo dos registradores e carregá-los com os valores referentes ao processo que esteja ganhando o controle da UCP?
Process Control Block
Troca de contexto
Estado de processo
Sistema preemptivo
Evento voluntário
O problema do buffer limitado de tamanho N é um problema clássico de sincronização de processos: um grupo de processos utiliza um buffer de tamanho N para armazenar temporariamente itens produzidos; processos produtores produzem os itens, um a um, e os armazenam no buffer;
processos consumidores retiram os itens do buffer, um a um, para processamento. O problema do buffer limitado de tamanho N pode ser resolvido com a utilização de semáforos, que são mecanismos de software para controle de concorrência entre processos. Duas operações são definidas para um semáforo s: wait(s) e signal(s).
Considere o problema do buffer limitado de tamanho N cujos pseudocódigos dos processos produtor e consumidor estão mostrados na tabela abaixo. Pode-se resolver esse problema com a utilização dos semáforos mutex, cheio e vazio, inicializados, respectivamente, com 1, 0 e N.
processo produtor
produz item comando_a comando_b
coloca no buffer comando_c comando_d
E
processo consumidor
comando_e comando_f
retira do buffer
comando_g comando_h
consome o item
A partir dessas informações, para que o problema do buffer limitado de tamanho N cujos pseudocódigos foram apresentados possa ser resolvido a partir do uso dos semáforos mutex, cheio e vazio, é necessário que comando_a, comando_b, comando_c, comando_d, comando_e, comando_f, comando_g e comando_h correspondam, respectivamente, às operações
wait(vazio),	wait(mutex),	signal(mutex),	signal(cheio),	wait(cheio),	wait(mutex), signal(mutex) e signal(vazio).
wait(cheio),	wait(mutex),	signal(mutex),	signal(vazio),	wait(vazio),	signal(mutex), signal(mutex) e wait(cheio).
wait(mutex),	wait(vazio),	signal(cheio),	signal(mutex),	wait(mutex),	wait(vazio), signal(cheio) e signal(mutex).
wait(mutex),	wait(vazio),	signal(cheio),	signal(mutex),	wait(mutex),	wait(cheio), signal(vazio) e signal(mutex).
wait(vazio),	signal(mutex),	signal(cheio),	wait(mutex),	wait(cheio),	signal(mutex), signal(vazio) e signal(mutex).
O que caracteriza o processamento batch? Quais aplicações podem ser processadas neste tipo de ambiente?
Caracteriza‐se por um processamento de dados que ocorre através de um lote de tarefas enfileiradas, de modo que o sistema operacional só processa a próxima tarefa após o término completo da tarefa anterior. Ex: Geração de holerites de salário mensal de empregados.	
O que é sincronização entre processos?
Quando threads independentes precisam se comunicar e sincronizar para executar tarefas cooperativas.
Quando Sistema Operacional coordena o quantum para processos serem finalizados simultâneamente.
Quando Threads acessam uma seção crítica.
Quando um processo bloqueia outro processo em execução.
Quando processo aguarda outro processo ser concluído para poder entrar em estado de execução.
O que são sistemas com múltiplos processadores e quais as vantagens em utilizá-los?
São sistemas chamados de Dual‐Core, Triplo‐Core, Quad‐Core, Hexa‐Core, assim, por diante, caracterizando‐se por possuir mais de um núcleo de processo dentro de um sistema. Possua a vantagem do paralelismo, permitindo mais de um processo ser executado ao mesmo tempo.   
O que significa interrupção síncrona?
Quando instrução de processo interrompe processo em execução.
Correção de processo mal executado.
Ocorre devido a execução de softwares.
Processos que encerram processo ao mesmo tempo.
Sistema Operacional bloqueia mais de uma thread.
Os sistemas multiprocessados tem importância cada vez maior, possuem mais de um
processador compartilhando o barramento do computador compartilhado e, as vezes o relógio, a memória e os dispositivos. Quais são as principais vantagens destes Sistemas?
Multiprocessadores originalmente eram usados ​​apenas por empresas que precisavam de seus computadores para executar uma série de tarefas ao mesmo tempo . No entanto, como a popularidade do computador pessoal cresceu, multiprocessadores tornou uma necessidade , mesmo para os computadores da casa. Hoje quase todos os computadores pessoais usa um processador dual-core, ou multiprocessador, para os usuários a manter a funcionalidade. Há muitas vantagens em usar este tipo de processador em oposição a um único processador , mesmo quando se usa o computador para uso pessoal.
Por	que	dizemos	que	existe	uma	subutilização	de	recursos	em	sistemas monoprogramáveis?
Porque em sistemas monoprogramáveis somente é possível a execução de um programa por vez. Como um programa não utiliza todos os recursos do sistema totalmente ao longo da sua execução, existe ociosidade e, consequentemente, subutilização de alguns recursos.												
Por que o espaço de endereço de um processo é dividido em região de dado, de texto e de pilha?
Pois é necessário uma grande área de memória.
Para evitar o estouro de buffer.
Pois cada região possui forma peculiar de acesso.
Para facilitar a declaração da classe.
Pois o ponteiro faz a leitura de todas as instruções.
Por que programas concorrentes com múltiplos threads são mais rápidos que programas concorrentes implementados com múltiplos processos?
Threads são implementadas pela própria aplicação e não pelo sistema operacional
Com o uso de múltiplos processos, cada funcionalidade do software implica na criação de alguns novos processos para atender a essa funcionalidade
O interpretador interrompe o processo que executou a chamada de comandos e endereça a próxima instrução da fila na memória principal
Porque permite que os computadores com múltiplos núcleos de processamento possam aproveitar todo o seu potencial e operar de forma mais rápida
Como os threads de um mesmo processo dividem o mesmo espaço de endereçamento, a comunicação entre eles é realizada de forma mais rápida e eficiente
Quais as principais dificuldades que um programador teria no desenvolvimento de uma aplicação em um ambiente sem um sistema operacional?
A maior dificuldade que o programador teria seria em programar em linguagem de máquina, já que o hardware não possui ambiente programável. O programador teria que programar todo os componentes de hardware: vídeo, teclado, mouse, placa de rede, disco rígido. Cada tarefa que a aplicação fosse fazer teria que ser detalhada num nível muito baixo para que o computador funcione. Sendo assim  
Quais as vantagens dos sistemas multiprogramáveis?
As vantagens do uso de sistemas multiprogramáveis são a redução do tempo de resposta das aplicações processadas no ambiente e de custos, a partir do compartilhamento dos diversos recursos do sistema entre as diferentes aplicações.
Quais os componentes de um processador e quais são as suas funções?
O processador tem a função “trabalhar” toda a informação que é gerada durante a operação do computador, na verdade a melhor palavra para descrever a função do processador é justamente “processar”. Quando você move o mouse até um arquivo na sua área de trabalho, clica duas vezes e aquele arquivo é aberto com o Microsoft Word (caso seja um arquivo .docx), o processador é responsável por “processar” o posicionamento do mouse, traduzindo o posicionamento enviado pelo mouse para o computador e levando o ponteiro do mouse para as coordenadas corretas do seu monitor.
Quais os benefícios de um sistema com múltiplos processadores em um computador pessoal?
Tudoé feito de modo paralelo , o os processadores executam tarefas em paralelo , e por isso são melhores, por exemplo cada processador tem seu proprio cache, instruçoes são executas ao mesmo tempo só que cada processador executa uma , por isso são mais rápidos.
Quais são as três maneiras pelas quais um processo pode chegar ao estado suspenso- pronto?
A partir do processo em execução, do processo em estado bloqueado ou do processo suspenso-bloqueado.
A partir do processo em execução, do processo em estado pronto ou do processo em estado suspenso-bloqueado.
A partir do processo em estado bloqueado, do processo em estado pronto ou do processo em estado suspenso-bloqueado.
A partir do processo em execução, do processo em estado pronto ou do processo em estado bloqueado.
A partir do processo em bloqueado, do em estado suspenso-bloqueado, ou com intervensão de um evento.
Quais são as unidades funcionais de um sistema computacional?
Existem computadores dos mais diferentes tipos e tamanhos, mas todos podem ser enfocados como um conjunto de dispositivos interligadas, trabalhando em harmonia, para realizar atividades de processamento de dados.
Estes dispositivos que compõem o computador são geralmente reunidos, para fins didáticos, conforme suas funções, em:
Unidade de entrada
Unidade de saída
Unidade aritmética e lógica
Unidade de memória principal ou interna
Unidade de memória auxiliar, ou externa, ou de massa, ou magnética
Unidade de controle.
Quais são os tipos de sistemas multiprogramáveis?
	Sistemas Monoprogramáveis / Monotarefa
		Sistemas Multiprogramáveis / Multitarefa
	Sistemas Batch
	Sistemas de Tempo Compartilhado
	Sistemas de Tempo Real
	Sistemas com Múltiplos Processadores
	Sistemas Fortemente Acoplados
	Sistemas Fracamente Acoplados
Qual a grande diferença entre sistemas de tempo compartilhado e tempo real? Quais
aplicações são indicadas para sistemas de tempo real?
O fator tempo de resposta. Nos sistemas de tempo real, os tempos de resposta devem estar
dentro de limites rígidos. Aplicações de controle de processos, como no monitoramento de
refinarias de petróleo, controle de tráfego aéreo, de usinas termoelétricas e nucleares são
executadas em sistemas de tempo real.
Qual a grande diferença entre sistemas fortemente acoplados e fracamente acoplados?
Nos sistemas fortemente acoplados (tightly coupled) existem vários processadores compartilhando uma única memória física (shared memory) e dispositivos de entrada/saída sendo gerenciados por apenas um sistema operacional. Em função desta características, os sistemas fortemente acoplados também são conhecidos como multiprocessadores. 
Sistemas Fracamente Acoplados 
Os sistemas fracamente acoplados (loosely coupled) caracterizam-se por possuir dois ou mais sistemas computacionais conectados através de linhas de comunicação. Cada sistema funciona de forma independente, possuindo seu próprio sistema operacional e gerenciando seus próprios recursos, como UCP, memória e dispositivos de entrada/saída. Em função destas características, os sistemas fracamente acoplados também são conhecidos como multicomputadores.
Qual	é	a	grande	diferença	entre	sistemas	monoprogramáveis	e	sistemas multiprogramáveis?
	Os sistemas monoprogramáveis se caracterizam por permitir que o processador, a memória e os periféricos permaneçam exclusivamente dedicados à execução de um único programa. Nos sistemas multiprogramáveis ou multitarefa, os recursos computacionais são compartilhados entre os diversos usuários e aplicações. Enquanto em sistemas monoprogramáveis existe apenas um programa utilizando os recursos disponíveis, nos multiprogramáveis várias aplicações compartilham esses mesmos recursos.
							
Qual é a maior desvantagem de usar sinais para a IPC?
Deixa sistema vulnerável.	
Não ocorrer troca de dados.
Afeta significantemente o desempenho da máquina.
Pode haver troca de mensagens.
Bloqueia processos
Qual seria o tipo de sistema operacional recomendável para uso como servidor de aplicações em um ambiente corporativo? Justifique sua resposta.
Definição de servidor de aplicação: Um Servidor de Aplicações (em inglês Applications Server), é um servidor que disponibiliza um ambiente para a instalação e execução de certas aplicações, centralizando e dispensando a instalação nos computadores clientes. Os servidores de aplicação também são conhecidos por middleware.
	
Qual a vantagem da forma assíncrona de comunicação entre processos e como esta pode ser implementada?
A vantagem deste mecanismo é aumentar a eficiência de aplicações concorrentes. Para implementar essa solução, além 
da necessidade de buffers para armazenar as mensagens, devem haver outros mecanismos de sincronização que permitam ao processo identificar se uma mensagem já foi enviada ou recebida.
	
Quando o processo multithreading é utilizado?
Quando o sistema operacional permitir várias linhas de execução independentes dentro do mesmo processo.
Quando o sistema operacional transferir o controle do processo atual para algum novo processo.
Quando um novo processo retomar a sua execução exatamente do ponto onde ele parou.
Quando um único processador aparentar executar vários processos concorrentemente, executando um pedaço de cada até terminarem.
Quando a execução das instruções de um processo alternar com a execução das instruções de outros processos.
Quando se deve fazer uma exclusão mútua?
Quando processo lê recurso acessado por outro processo.
Ao término de processos concorrentes.
Quando ocorrer um deadlock.
Quando thread lê recurso acessado por outro thread.
Quando a thread acessa uma seção crítica.
(ATPS) Sincronização Condicional é uma situação onde o acesso ao recurso compartilhado exige a sincronização de processos vinculada a uma condição de acesso. Um recurso pode não se encontrar pronto para uso devido a uma condição específica.
Identifique se as alternativas a seguir são Verdadeiras (V) ou Falsas (F)
(V) o processo que deseja acessá-lo deverá permanecer bloqueado (em espera) até que o recurso fique disponível.
(V) a comunicação entre dois processos através de operações de gravação e leitura em um buffer, onde processos produtores geram informações utilizadas por outros processos consumidores.
(V) um processo não tenta gravar dados em um buffer cheio ou realizar uma leitura em um buffer vazio.
(V) a tarefa de ler ou gravar dados no buffer é realizado por dois procedimentos que executam concorrentemente, de forma mutuamente exclusiva.
(V) um recurso seja retirado do processo no caso de outro processo necessitar do mesmo recurso.
Analise o pseudocódigo de uma comunicação entre processos sem utilização de buffer e assinale a alternativa correta.
PROCEDIMENTO Comunica_processo01 INÍCIO
FIM
STRING: mensagem;
ESCREVA: ("Entre com mensagem"); LEIA (mensagem);
SEND (Comunica_processo02, mensagem); ESCREVA ("Mensagem enviada com sucesso");
Comunica_processo02 é um processo emissor.
Processo emissor e receptor não sincronizam a comunicação.
O processo Comunica_processo01 realiza comunicação bidirecional.
A linha de comando SEND bloqueia o processo Comunica-processo01.
O processo Comunica_processo02 envia a sua mensagem por meio da variável mensagem.
Supondo que várias instâncias do processo abaixo sejam executadas paralelamente, descreva quais são os problemas que podem ocorrer e acrescente nas lacunas do algoritmo as sintaxes necessárias para a solução dos problemas.
PROGRAMA conta_corrente;
INÍCIO
...
LEIAbd (arq_conta, reg_cliente); LEIALINHA (deposito_saque); reg_cliente.saldo+:= deposito_saque; ESCREVAbd (arq_conta, reg_cliente);
...
FIM
Problemas: reg_cliente.saldo+:= deposito_saque;	
Analise o algoritmo abaixo desenvolvido para fazer uma exclusão mútua.
PROGRAMA algoritmo2
VAR CA, CB:Boleano;
PROCEDIMENTO Processo A INÍCIO
FIM
REPETE
ENQUANTO (CB) FAÇA {NADA}
CA:=verdade;Região_crítica_A; CA:=falso; Processamento_A;
ATÉ falso;
PROCEDIMENTO Processo B INÍCIO
FIM
REPETE
ENQUANTO (CA) FAÇA {NADA}
CB:=verdade; Região_crítica_ B; CB:=falso; Processamento_B;
ATÉ falso;
INÍCIO // main
CA:=falso; CB:=falso; COMECE PAR
Processo A;
Processo B;
FIM PAR
FIM
A partir do algoritmo, assinale a alternativa correta.
O algoritmo realiza perfeitamente a exclusão mútua, sem gerar nenhum problema.
O algoritmo realiza a exclusão mútua, mas há risco de starvation.
O algoritmo não realiza a exclusão mútua, pois há o risco de nenhum processo ser bloqueado.
O algoritmo realiza a exclusão mútua, mas há risco de deadlock.
O algoritmo não realiza a exclusão mútua, pois nenhum dos processos acessa a seção crítica.
Comente cada linha do pseudocódigo abaixo para explicar o que o algoritmo está fazendo.
PROGRAMA Filósofo
VAR garfos : vetor[5] de semáforo:=1; lugares : semáforo:=4;
I : Inteiro;
PROCEDIMENTO Filósofo (I:Inteiro) INÍCIO
FIM INÍCIO
REPETE
Pensamento; Desce (lugares); Desce (garfo[I]);
Desce (garfo[(I+1)%5]); Comendo;
Sobe (garfo[I]);
Sobe (garfo[(I+1)%5]); Sobe (lugares);
ATÉ falso;
COMECE PAR
PARA I := 0 até 4 Faça Filósofo (I)
TERMINE PAR
FIM
(CPAT) Situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que nunca ocorrerá. Qual a alternativa que traduz esse conceito?
Starvation.
Não preempção.
Rendezvous.
Deadlock.
Parend.
Sobre conceitos de DEADLOCK, qual alternativa abaixo é considerada correta?
Um processo consegue ter acesso a um recurso A e solicita um recurso B. Simultaneamente outro processo consegue B e solicita A. Ambos são bloqueados e permanecem bloqueados.
Um processo consegue ter acesso a um recurso B e solicita um recurso B. Em seguida, outro processo consegue A e solicita A. Ambos não são bloqueados e permanecem liberados.
Processo C tem acesso a D e solicita X. Processo D, tem acesso a X e solicita Z. Não há bloqueio.
Deadlock é executada quando os processos não são bloqueados.
Um processo não consegue ter acesso a um recurso A e não solicita um recurso B. Simultaneamente outro processo consegue B e solicita A.
Sobre Threads é correto afirmar que:
A Thread é a única maneira utilizada por vários processos e só pode ser executada em uma única tarefa
Thread é utilizada somente em arquiteturas monoprocessadas.
Thread não é fluxo de execução
A Thread é uma das maneiras utilizadas por um processo para dividir a si mesmo em duas ou mais tarefas
A Thread não divide a si mesmo em duas ou mais tarefas
Um processo, durante seu ciclo de vida, assume diversos estados. Considere, para um mesmo sistema operacional, três processos: A, B e C. Os três processos, referentes ao mesmo programa, encontram-se nos seguintes estados: A está executando, B está pronto e C está esperando o término de E/S (leitura de arquivo em disco). Os processos A, B e C compartilham recursos comuns?
Um sistema monousuário pode ser um sistema multiprogramável? Dê um exemplo.
Uma alternativa para o aumento de desempenho de sistemas computacionais é o uso de processadores com múltiplos núcleos, chamados multicores. Nesses sistemas, cada núcleo, normalmente, tem as funcionalidades completas de um processador, já sendo comuns, atualmente, configurações com 2, 4 ou mais núcleos. Com relação ao uso de processadores multicores, e sabendo que threads são estruturas de execução associadas a um processo, que compartilham suas áreas de código e dados, mas mantêm contextos independentes, analise as seguintes asserções.
Ao dividirem suas atividades em múltiplas threads que podem ser executadas paralelamente, aplicações podem se beneficiar mais efetivamente dos diversos núcleos dos processadores multicores
porque
o sistema operacional nos processadores multicores pode alocar os núcleos existentes para executar simultaneamente diversas sequências de código, sobrepondo suas execuções e, normalmente, reduzindo o tempo de resposta das aplicações às quais estão associadas.
Acerca dessas asserções, assinale a opção correta.
A As duas asserções são proposições verdadeiras, e a segunda é uma justificativa correta da primeira.
B As duas asserções são proposições verdadeiras, mas a segunda não é uma justificativa correta da primeira.
C A primeira asserção é uma proposição verdadeira, e a segunda, uma proposição falsa. D A primeira asserção é uma proposição falsa, e a segunda, uma proposição verdadeira. E Tanto a primeira quanto a segunda asserções são proposições falsas.
Uma antiga empresa de desenvolvimento de software resolveu atualizar toda sua infraestrutura computacional adquirindo um sistema operacional multitarefa, processadores multi-core (múltiplos núcleos) e o uso de uma linguagem de programação com suporte a threads.
O sistema operacional multitarefa de um computador é capaz de executar vários processos (programas) em paralelo. Considerando esses processos implementados com mais de uma thread (multi-threads), analise as afirmações abaixo.
Os ciclos de vida de processos e threads são idênticos.
Threads de diferentes processos compartilham memória.
Somente processadores multi-core são capazes de executar programas multi-threads.
Em sistemas operacionais multitarefa, threads podem migrar de um processo para outro.
É correto apenas o que se afirma em A I.
B II.
C I e III. D I e IV. E II e IV.

Continue navegando