Você está na página 1de 3

Lista de Exercícios 3 – Concorrência

1. O que é concorrência e como este conceito está presente nos sistemas operacionais
multiprogramáveis?

2. Explique o mecanismo de funcionamento das interrupções e faça um esquema que


represente o processo.

3. O que são eventos síncronos e assíncronos? Como estes eventos estão relacionados
ao mecanismo de interrupção e exceção?

4. Dê exemplos de eventos associados ao mecanismo de exceção

5. Qual a vantagem da E/S controlada por interrupção comparada com a técnica de


polling?

6. O que é DMA e qual a vantagem desta técnica?

7. Como a técnica de buffering permite aumentar a concorrência em um sistema


computacional?

8. Por que o mecanismo de interrupção é fundamental para a implementação da


multiprogramação?

9. Explique o mecanismo de spooling de impressão.

10. Por que a execução de programas interpretados é mais lenta que a de programas
compilados?

11. Quais as funções do linker?

12. Qual a principal função do loader?

13. Em um sistema multiprogramável, seus usuários utilizam o mesmo editor de textos


(200 Kb), compilador (300 Kb), software de correio eletrônico (200 Kb) e uma
aplicação corporativa (500 Kb). Caso o sistema não implemente reentrância, qual o
espaço de memória principal ocupado pelos programas quando 10 usuários estiverem
utilizando todas as aplicações simultaneamente? Qual o espaço liberado quando o
sistema implementa reentrância em todas as aplicações?

14. Exercício Prático – O objetivo deste exercício é mostrar o passo a passo da


compilação e linkedição de um código-fonte em linguagem C.

Para preparação do ambiente para execução do exemplo prático, siga os passos


abaixo:
 Baixe o arquivo “codes1.zip” no Moodle;
 Crie uma nova pasta em “Documents” chamada “codes1”;
 Extraia os arquivos de “codes1.zip” e armazene-os na pasta “codes1”;
 Abra o prompt de comando do Windows;
 Digite “gcc”. Caso o comando não seja reconhecido pelo sistema, será necessário
configurar o path nas variáveis de ambiente no Windows.

Os arquivos presentes no diretório “codes1” inclui o código exemplo “main.c” que


utiliza uma biblioteca externa chamada “geometry”. Nosso objetivo é realizar, passo
a passo, o processo de compilação e linkedição dos módulos objetos dos códigos-
fonte. Antes de realizar o procedimento abra os arquivos e entenda o funcionamento
dos códigos.

 Procedimento:
1. Abra o prompt de comando;
2. Digite o comando “dir” e busque pela pasta “Documents”;
3. Acesse a pasta “codes1” utilizando o comando “cd Documents/codes1”;
4. Digite o comando “gcc –E –o main.i main.c”;
5. Digite o comando “gcc –E –o geometry.i geometry.c”;
6. Analise os arquivos gerados e responda a questão no item a;
7. Digite o comando “gcc –S –o main.s main.c”;
8. Digite o comando “gcc –S –o geometry.s geometry.c”;
9. Analise os arquivos gerados e responda a questão no item b;
10. Digite o comando “gcc –c –o main.o main.s”;
11. Digite o comando “gcc –c –o geometry.o geometry.s”;
12. Analise os arquivos gerados e responda as questões nos itens c e d;
13. Digite o comando “gcc main.o geometry.o -o main”.
14. Analise os arquivos gerados e responda a questão no item e;
15. Digite “main.exe”.
Responda as questões a seguir:
a) Analise os arquivos gerados e indique qual etapa estamos no processo de
compilação. Explique com suas palavras o que ocorre nesta etapa. Caso
tenha dúvidas sobre os parâmetros do gcc, utilize o comando “gcc --help”.

b) Analise os arquivos gerados e indique qual etapa estamos no processo de


compilação. Explique com suas palavras o que ocorre nesta etapa.

c) Analise os arquivos gerados e indique qual etapa estamos no processo de


compilação. Explique com suas palavras o que ocorre nesta etapa.

d) Ao executar os passos 10 e 11, foi retornado algum erro ou processo


ocorreu normalmente?
e) Explique com suas palavras o que ocorre nesta etapa. Por que é necessário
na execução do comando passar tanto o arquivo “main.o” quanto o arquivo
“geometry.o”?

f) Tente compilar o programa “main.c” utilizando o comando “gcc main.c -


o main”. Será retornado um erro na tela. Este erro está associado ao
processo de compilação ou de linkedição e porquê?

g) Com base no conteúdo passado em sala e no material complementar


disponibilizado no Moodle, monte um diagrama ilustrando o processo de
compilação e linkedição de um programa em linguagem C.

Observação: Evite copiar e colar os comandos no procedimento 1. Digite-os para evitar problemas na
execução.

Você também pode gostar