2) Considere um sistema operacional que trabalha com paginação
simples. As páginas são de 1Kbyte. O endereço lógico
é formado por 16 bits. O endereço físico é
formado por 20 bits. Qual o tamanho do:
(a) Espaço de endereçamento lógico (maior programa
possível)?
(b) Espaço de endereçamento físico (memória
principal)?
(c) Entrada da tabela de páginas, sem considerar bits de proteção?
(d) Tabela de páginas (número de entradas necessárias
no pior caso)?
3)Considerando o código abaixo, uma variação da implementação do produtor/consumidor vista em aula, responda as seguintes perguntas (justificando):
a) Está garantido o acesso exclusivo à variável "buffer" no caso de 1 produtor e 1 consumidor ?
b) É possível a ocorrência de postergação indefinida no caso de 3 produtores e 1 consumidor ?
struct tipo_dado buffer;
semaphore espera_vaga = 1; semaphore espera_dado = 0;
...
void produtor( void)
{ ...
P( espera_vaga );
buffer = dado_produzido;
V( espera_dado );
...
}
void consumidor( void)
{ ...
P( espera_dado );
dado_a_consumir = buffer;
V( espera_vaga );
...
}
4)Usando os mecanismos "mutex" e "variáveis condição"
do Posix, implemente as
operações P e V de um semáforo. Cada uma dessas
operações deverá ser substituida por um código
C com semântica similar. Lembre-se que estas operações
devem ser atômicas.
Dicas sobre o Posix:
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock( &m );
pthread_mutex_unlock( &m );
pthread_cond_t vc = PTHREAD_COND_INITIALIZER;
pthread_cond_wait( &vc , &m );
pthread_cond_signal( &vc );
5) Determine se o conjunto de tarefas abaixo é escalonável com deadline monotônico, aplicando a análise para D * P, vista em aula.
T1: J1=2 C1=4 P1=10 D1=10 B1 = 1
T2: J2=2 C2=5 P2=50 D2=30 B2 = 0
T3: J3=0 C3=10 P3=60 D3=60 B3 = 0
6) Com respeito às equações usadas na questão anterior, explique de que maneira os seguintes tempos de um sistema operacional aparecerão nos cálculos:
- Tempo gasto na execução do tratador de interrupções do timer que ocorre enquanto uma tarefa da aplicação executa;
- Processo faz chamada de sistema X mas outro processo com prioridade
menor fez a mesma chamada de sistema X antes dele e está usando
de forma exclusiva as estruturas de dados associadas com a chamada de sistema
X em questão.
7) O sistema operacional é um programa dirigido por eventos, e esses eventos são sinalizados por interrupções. Para cada uma das três classes de interrupções (periférico, proteção, chamada de sistema), descreva a reação que o sistema operacional deverá ter com relação aos estados dos processos (quais transições de estado são desencadeadas).
8) Qual a fragmentação apresentada pelos métodos de gerência de memória baseados em partições fixas, partições variáveis e paginação simples? Explique as 6 situações.
9) Suponha que o fornecedor de um Sistema Operacional de Tempo Real
informou que o tempo para chaveamento de contexto é 100us e a latência
máxima no atendimento a interrupções é de 500us.
Cite mais duas informações que seriam necessárias
para aplicar sobre o sistema as equações da teoria de escalonamento
de tempo real vista em aula. Justifique a necessidade dessas duas informações.
Cite apenas duas.
10) Qual a fragmentação apresentada pelos métodos de gerência de memória baseados em partições fixas, partições variáveis, paginação simples e segmentação simples? Justifique as 8 situações.
11) Descreva o erro na implementação do produtor-consumidor mostrada abaixo. Crie uma seqüência de eventos que termina em algum comportamento indesejado para o programa.
struct tipo_dado buffer[N];
int proxima_insercao = 0;
int proxima_remocao = 0;
...
semaphore exclusao_mutua = 1;
semaphore espera_vaga = N;
semaphore espera_dado = 0;
...
void produtor( void)
{ ...
P( exclusao_mutua );
P( espera_vaga );
buffer[ proxima_insercao ] = dado_produzido;
proxima_insercao = ( proxima_insercao + 1 ) % N;
V( espera_dado );
V( exclusao_mutua );
...
}
...
void consumidor( void)
{ ...
P( espera_dado );
P( exclusao_mutua );
dado_a_consumir = buffer[ proxima_remocao ];
proxima_remocao = ( proxima_remocao + 1 ) % N;
V( exclusao_mutua );
V( espera_vaga );
...
}
12) Dadas as tarefas T1, T2 e T3 com as restrições temporais descritas abaixo, e sabendo que T1 precede T2, calcule os tempos de respostas das três tarefas. A atribuição de prioridades segue o deadline monotonic.
Tarefa release jitter tempo de computação
período deadline
T1 1 9 80 30
T2 - 8 80 40
T3 - 7 50 50
13) Suponha que o fornecedor de um Sistema Operacional de Tempo Real informou que o tempo para chaveamento de contexto é 100us e a latência máxima no atendimento a interrupções é de 500us. Cite mais duas informações que seriam necessárias para aplicar sobre o sistema as equações da teoria de escalonamento de tempo real vista em aula. Justifique a necessidade dessas duas informações. Cite apenas duas.