Você está na página 1de 7

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

DEPARTAMENTO DE COMPUTAÇÃO

ENGENHARIA DE COMPUTAÇÃO

RODOLFO FERREIRA SAPATEIRO, RA: 2144328

RYAN TONON, RA: 2144352

LISTA DE EXERCÍCIOS 03 - CONCORRÊNCIA

EC36C - SISTEMAS OPERACIONAIS

CORNÉLIO PROCÓPIO

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

R: O conceito de concorrência são os programas disputando a atenção do sistema


operacional para serem executados. E estão presentes, por exemplo: quando há uma
instrução sendo executada, e necessita de entrada de dados e desocupar o processador
(os programas que estão na memória) que vai depender do grau de importância entre
eles, então em seguida assume a posição no processador.

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


represente o processo.

R: O mecanismo de interrupção funciona da seguinte maneira:

1 – Sinal de interrupção é gerado para o processador;

2 – Após o término de execução de uma instrução corrente, é identificado pelo


processador o pedido de interrupção;

3 – Conteúdos e dos registradores PC e de status são salvos;

4 – É identificado pelo processador a rotina de tratamento que será executado,


carregando o PC com o endereço inicial da rotina;

Esses processos são feitos pelo hardware, já os seguintes são feitos pelo software.

5 – É salvo pela rotina de tratamento os conteúdos dos demais registradores do


processador na pilha de controle do programa;

6 – É executado a rotina de tratamento;

7 – Por fim, após executar a rotina de tratamento, os registradores de uso normal são
restaurados, como também o registrador de status e o PC, retornando a execução do
programa interrompido.
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?

R: Os eventos síncronos são previsíveis e são executados diretamente pelo programa


(Exceção). Já os eventos assíncronos são imprevisíveis e podem ocorrer múltiplas
vezes sem estar relacionada à instrução de um programa (Interrupção).

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

R: Como o mecanismo de tratamento de exceção muitas vezes pode ser escrita pelo
próprio programador, temos alguns exemplos: ArryIndexOutOfBoundsException
(ocorre quando há uma tentaiva de acessar um elemento após o final de um array),
NullPointerException (é quando uma referência null é utilizada onde um objeto é
esperado), NumberFormatException (ocorre quando o usuário entra com um tipo de
dado a e a variável em questão é do tipo b) e entre outros exemplos.
5) Qual a vantagem da E/S controlada por interrupção comparada com a técnica de
polling?

R: Na velocidade, pois enquanto é feita a entrada e saída de dados, o processador


continua funcionando e podendo ter várias operações de E/S sendo executadas ao
mesmo tempo. Já a técnica de polling reserva um local no disco para o próximo passo,
como por exemplo o processo de impressão.

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

R: Acesso Direto a memória (DMA) é uma técnica que permite que um bloco de
dados seja transferido entre a memória principal e dispositivos de E/S sem a
necessidade de parar o processador, exceto no início e no final da transferência. Sua
vantagem está em não exigir que o processador fique checando se a E/S foi concluída.

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


computacional?

R: Porque ao usar buffers o computador não precisa interromper o processamento


frequentemente, pois deixa uma área da memória principal específica para a E/S com
os dados já contidos lá, nisso os dispositivos de E/S podem estar obtendo novas
informações mais rapidamente.

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


multiprogramação?

R: Porque torna possível a implementação da concorrência nos computadores. Ao


interromper um processamento que necessita de dados, o processador pode dar início
a outra tarefa enquanto um processo está dependente.

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

R: O pedido de impressão vai para a spool, área da memória ou de um disco onde são
armazenados todas as informações que serão impressas, nisso o buffer provê uma
estação de espera onde o dado pode ficar armazenado enquanto o dispositivo mais
lento fica carregando até que seja feita a impressão.
10) Por que a execução de programas interpretados é mais lenta que a de programas
compilados?

R: Programas interpretados estão em alto nível, portanto, precisam que em tempo de


execução o programa seja convertido em baixo nível para o processador conseguir
processá-lo. Os compilados já estão convertidos, portanto não tem esse gasto de
tempo na hora da execução.

11) Quais as funções do linker?

R: O linker serve para gerar um único arquivo executável a partir de referências


simbólicas. Ele junta os arquivos com outros módulos-objetos (bibliotecas) fazendo
com que traduza os símbolos para um linguagem compreensível para o processador.

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

R: O Loader é responsável por carregar a aplicação que será executada para a


memória. Existe o Absoluto, na qual necessita conhecer o endereço de memória
inicial e o tamanho do módulo para realizar o carregamento. E também existe o
Relocável, onde o programa pode ser carregado em qualquer posição de memória.

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?

R: Quando cada usuário traz o código executável para a memória principal, dizemos
que não foi implementado a reentrância.

Espaço de memória utilizado por 10 pessoas com código:

(200 + 300 + 200 + 500) * 10 = 12.000 kb

Já quando só uma cópia deste código executável está na memória, dizemos que foi
implementado a reentrância.

Espaço de memória utilizado por 10 pessoas com código compartilhado:

200 + 300 + 200 + 500 = 1.200 kb

Já o espaço liberado quando o sistema implementa reentrância é de: 10.800 kb


liberados.
14)
a) Até executar os processos de 1 a 5, estamos na etapa de pré processamento do
código, a primeira fase da compilação, por exemplo: o comando #defined r =
50, a variável r já foi substituída pelo valor de 50.

b) Até os procedimentos 7 e 8, estamos na etapa de tradução do código, que nada


mais é um processo onde o programa escrito em uma linguagem de
programação passa para uma linguagem que o computador entenda, como o
assembly.

c) Até as etapas 10 e 11, estamos na parte do montador, onde ocorre a tradução


da linguagem assembly para o código de máquina ou objeto e essa etapa não
pode ser lida pelo programador e nem executada pelo computador.

d) O processo ocorreu normalmente e foi criado o arquivo main.o e geometry.o.

e) Após executar a etapa 13, entramos na parte do carregador, que consiste em


pegar o código relocável, alterar os endereços necessários e por fim colocar o
código e os dados na localização de memória adequada. Já a parte de ligar
consiste juntar o código objeto com as bibliotecas necessárias para assim gerar
o programa executável.

Por isso é necessário passar os dois arquivos objetos na hora de executar o


comando, para que junte o código objeto com a biblioteca.

f) Este erro está associado ao processo de linkedição, pois no arquivo main.o


existe uma uma biblioteca chamada geometry.h, que também criou-se o
arquivo objeto dele e para gerar o programa executável precisa linkar essa
biblioteca criada ao programa principal (main).
g)

Você também pode gostar