Porque o mecanismo de interrupção é fundamental para a implementação da multiprogramação?

Concorrência 1. O que é ocorrência e como este conceito esta presente nos sistemas operacionais multiprogramáveis? Concorrência é o princípio básico para projeto e implementação dos sistemas operacionais multiprogramáveis onde é possível o processador executar instruções em paralelo com operações de E/S. Isso possibilita a utilização concorrente da UCP por diversos programas sendo implementada de maneira que, quando um programa perde o uso do processador e depois retorna para continuar o processamento, seu estado deve ser idêntico ao do momento em que foi interrompido. O programa deverá continuar sua execução exatamente na instrução seguinte àquela em que havia parado, aparentando ao usuário que nada aconteceu.

2. Por que o mecanismo de interrupção é fundamental para a implementação da multiprogramação? Porque é em função desse mecanismo que o sistema operacional sincroniza a execução de todas as suas rotinas e dos programas dos usuários, além de controlar dispositivos.

3. Explique o mecanismo de funcionamento das interrupções. Uma interrupção é sempre gerada por algum evento externo ao programa e, neste caso, independe da instrução que está sendo executada. Ao final da execução de cada instrução, a unidade de controle verifica a ocorrência de algum tipo de interrupção. Neste caso, o programa em execução é interrompido e o controle desviado para uma rotina responsável por tratar o evento ocorrido, denominada rotina de tratamento de interrupção. Para que o programa possa posteriormente voltar a ser executado, é necessário que, no momento da interrupção, um conjunto de informações sobre a sua execução seja preservado. Essas informações consistem no conteúdo de registradores, que deverão ser restaurados para a continuação do programa.

4. O que são eventos síncronos e assíncronos? Evento síncronos são resultados direto da execução do programa corrente. Tais eventos são previsíveis e, por definição, só podem ocorrer uma único de cada vez. Eventos assíncronos não são relacionados à instrução do programa corrente. Esses eventos, por serem imprevisíveis, podem ocorrer múltiplas vezes, como no caso de diversos dispositivos de E/S informarem ao processador que estão prontos para receber ou transmitir dados.

5. Dê exemplos de eventos associados ao mecanismo de execução. Uma instrução que gere a situação de overflow ou uma divisão por zero.

6. Que a vantagem da E/S controlada por interrupção comparada com a técnica spooling? Na E/S controlada por interrupção, as operações de E/S podem ser realizadas de uma forma mais eficiente. Em vez de o sistema periodicamente verificar o estado de uma operação pendente como na técnica de spooling, o próprio controlador interrompe o processador para avisar do término da operação. Com esse mecanismo, o processador, após a execução de um comando de leitura ou gravação, permanece livre para o processamento de outras tarefas.

7. O que é DMA e qual a vantagem desta técnica? A técnica de DMA permite que um bloco de dados seja transferido entre a memória principal e dispositivos de E/S, sem a intervenção do processador, exceto no início e no final da transferência. Quando o sistema deseja ler ou gravar um bloco de dados, o processador informa ao controlador sua localização, o dispositivo de E/S, a posição inicial da memória de onde os dados serão lidos ou gravados e o tamanho do bloco. Com estas informações, o controlador realiza a transferência entre o periférico e a memória principal, e o processador é somente interrompido no final da operação.

8. Como a técnica de buffering permite aumentar a concorrência em um sistema computacional? Como o buffering permite minimizar o problema da disparidade da velocidade de processamento existente entre o processador e os dispositivos de E/S, esta técnica permite manter, na maior parte do tempo, processador e dispositivos de E/S ocupados.

9. Explique o mecanismo de spooling de impressão? No momento em que um comando de impressão é executado, as informações que serão impressas são gravadas antes em um arquivo em disco, conhecido como arquivo de spooling, liberando imediatamente o programa para outras atividades. Posteriormente, o sistema operacional encarrega-se em direcionar o conteúdo do arquivo de spooling para a impressora.

10. Em um sistema multiprogramável, seus usuários utilizam o mesmo editor de textos (200Kb), compilador (300Kb), software de correio eletrônico (200Kb) e uma aplicação corporativa de (500Kb). 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? Sem reentrância, cada usuário teria sua cópia do código na memória totalizando 10 x (200 Kb + 300 Kb + 200 Kb + 500Kb) = 12.000 Kb. Caso a reentrância seja implementada, apenas uma cópia do código seria necessária na memória principal (200 Kb + 300 Kb + 200 Kb + 500 Kb) totalizando 1.200 Kb. Um total de 10.800 Kb seria liberado da memória principal.

Processos e Threads 1. Defina o conceito de processo. Um processo pode ser definido como o ambiente onde um programa é executado. Este ambiente, além das informações sobre a execução, possui também o quanto de recursos do sistema cada programa pode utilizar, como o espaço de endereçamento, tempo de processador e área em disco.

2. Por que o conceito de processo é tão importante no projeto de sistemas multiprogramáveis? Através de processos, um programa pode alocar recursos, compartilhar dados, trocar informações e sincronizar sua execução. Nos sistemas multiprogramáveis os processos são executados concorrentemente, compartilhando o uso do processador, memória principal, dispositivos de E/S dentre outros recursos.

3. É possível que um programa execute no contexto de um processo e não execute no contexto de umoutro? Por que? Sim, pois a execução de um programa pode necessitar de recursos do sistema que um processo pode possuir enquanto outro não.

4. Quais partes compõem um processo? Um processo é formado por três partes, conhecidas como contexto de hardware, contexto de software e espaço de endereçamento, que juntos mantêm todas as informações necessárias à execução de um programa.

5. O que é o contexto de hardware de um processo e como é a implementação da troca de contexto?

O contexto de hardware armazena o conteúdo dos registradores gerais da UCP, além dos registradores de uso específico como program counter (PC), stack pointer (SP) e registrador de status. Quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador. No momento em que o processo perde a utilização da UCP, o sistema salva as informações no contexto de hardware do processo.

6. Qual a função do contexto de software? Exemplifique cada grupo de informação. No contexto de software são especificadas características e limites dos recursos que podem ser alocados pelo processo, como o número máximo de arquivos abertos simultaneamente, prioridade de execução e tamanho do buffer para operações de E/S. O contexto de software é composto por três grupos de informações sobre o processo: identificação, quotas e privilégios. Ver item 5.2.2.

7. O que é o espaço de endereçamento de um processo? O espaço de endereçamento é a área de memória pertencente ao processo onde as instruções e dados do programa são armazenados para execução. Cada processo possui seu próprio espaço de endereçamento, que deve ser devidamente protegido do acesso dos demais processos.

8. Como o sistema operacional implementa o conceito de processo? Qual a estrutura de dados indicada para organizar os diversos processos na memória principal? O processo é implementado pelo sistema operacional através de uma estrutura de dados chamada bloco de controle do processo (Process Control Block — PCB). A partir do PCB, o sistema operacional mantém todas as informações sobre o contexto de hardware, contexto de software e espaço de endereçamento de cada processo.

9. Defina os cinco estados possíveis de um processo? Estado de Execução: processo que está sendo processado pela UCP no momento. Estado de Pronto: processo que aguarda para ser executado. Estado de Espera: processo que aguarda por algum evento ou recurso para prosseguir processamento. Estado de Criação: processo cujo PCB já foi criado porém ainda não teve seu processamento iniciado. Estado de Terminado: processo que não pode ter mais nenhum programa executado no seu contexto, porém o sistema operacional mantém suas informações de controle presentes na memória..

10. Dê um exemplo que apresente todas as mudanças de estado de um processo, juntamente com o evento associado a cada mudança. Estado de Execução: processo que está sendo processado pela UCP no momento. Estado de Pronto: processo que aguarda para ser executado. Estado de Espera: processo que aguarda por algum evento ou recurso para prosseguir processamento. Estado de Criação: processo cujo PCB já foi criado porém ainda não teve seu processamento iniciado. Estado de Terminado: processo que não pode ter mais nenhum programa executado no seu contexto, porém o sistema operacional mantém suas informações de controle presentes na memória.

11. Diferencie processos multithreads, subprocessos e processos independentes. Processos independentes não têm vínculo com os processos criadores. A criação de um processo independente exige a alocação de um PCB, possuindo contextos de hardware, contexto de software e espaço de endereçamento próprios. Subprocessos são processos criados dentro de uma estrutura hierárquica. Caso um processo pai deixe de existir, os subprocessos subordinados são automaticamente eliminados. Semelhante aos processos independentes, subprocessos possuem seu próprio PCB. Além da dependência hierárquica entre processos e subprocessos, uma outra característica neste tipo de implementação é que subprocessos podem compartilhar quotas com o processo pai. Neste caso, quando um subprocesso é criado, o processo pai cede parte de suas quotas ao processo filho. Processos multithreads suportam múltiplos threads, cada qual associado a uma parte do código da aplicação. Neste caso não é necessário haver diversos processos para a implementação da concorrência. Threads compartilham o processador da mesma maneira que um processo, ou seja, enquanto um thread espera por uma operação de E/S, outro thread pode ser executado.

12. Explique a diferença entre processos foreground e background. Um processo foreground é aquele que permite a comunicação direta do usuário com o processo durante o seu processamento. Neste caso, tanto o canal de entrada quanto o de saída estão associados a um terminal com teclado, mouse e monitor, permitindo, assim, a interação com o usuário. Um processo background é aquele onde não existe a comunicação com o usuário durante o seu processamento. Neste caso, os canais de E/S não estão associados a nenhum dispositivo de E/S interativo, mas em geral a arquivos de E/S.

13. Qual a relação entre processo e a arquitetura microkernel? A arquitetura microkernel baseia-se na utilização de processos em modo usuário para executar diversas funções relativas ao sistema operacional, como gerência de memória e escalonamento.

14. Dê exemplos de aplicações CPU-bound e I/O-bound. CPU-bound: Aplicações científicas que efetuam muitos cálculos. I/O-Bound: Aplicações comerciais, que se baseiam em leitura, processamento e gravação.

15. Justifique com um exemplo a frase “o sinal está para o processo assim como as interrupções e exceções estão para o sistema operacional”. Quando ocorre uma divisão por zero, por exemplo, o sistema operacional é notificado do problema através de uma exceção. Por sua vez, o sistema deve notificar ao processo que gerou o problema através de um sinal.

16. Explique como a eliminação de um processo utiliza o mecanismo de sinais. Quando um processo é eliminado, o sistema ativa o sinal associado a este evento. O processo somente será excluído do sistema quando for selecionado para execução. Neste caso, é possível que o processo demore algum período de tempo até ser eliminado de fato.

Atividade 1: Criação de Processos a) Práticas de simulação • •

Execute o simulador SOsim e identifique as quatro janelas que são abertas na inicialização. Crie um processo: janela Gerência de Processos / Criar – janela Criação de Processos / Criar.

b) Análise Prática • • •

Na janela Gerência de Processos, observe algumas informações sobre o contexto de software do processo como PID, prioridade, estado do processo e tempo de processador. Na janela Gerência de Processador, observe o processo transacionando entre estados. Na janela Gerência de Processador, movimente a barra de Clock de UCP e observe as variações ocorridas.

c) Questão teórica para responder com a ajuda do simulador Com base na observação do comportamento do processo criado, identifique se o processo é I/Obound ou CPU-bound. Justifique sua resposta. O processo criado é do tipo CPU-bound, pois em nenhum momento ele passa para o estado de espera, característica básica dos processos do tipo I/O-bound, estando sempre no estado de pronto e em estado de execução na CPU

Atividade 2: Tipos de Processos

a) Práticas de simulação • • •

Reinicialize o simulador. Crie um processo do tipo CPU-bound: janela Gerência de Processos / Criar – janela Criação de Processos / Criar (tipo de processo deve ser CPU-bound). Crie outro processo do tipo I/O-bound: janela Gerência de Processos / Cria – janela Criação de Processos / Criar (tipo de processo deve ser I/O-bound).

b) Análise Prática • • •

Na janela Gerência de Processos, observe as mudanças de estado dos dois processos. Na janela Gerência de Processador, observe o comportamento dos processos e as mudanças de contexto em função do tipo I/O-bound e CPU-bound. Na janela Gerência de Processos, compare a taxa de crescimento do tempo de processador dos dois processos.

c) Questão teórica para responder com a ajuda do simulador Analise os efeitos gerados no caso de redução do tempo gasto na operação de E/S pelo processo I/O-bound. Com o tempo máximo de operação de E/S para o processo I/O-bound, o processo CPUbound terá seu tempo de UCP sempre maior que o outro por não precisar passar pelo estado de espera, somente de pronto. Reduzindo o tempo na operação de E/S pelo processo do tipo I/O-bound ao mínimo ele ficará com uma taxa de crescimento do tempo de UCP igual a do processo do tipo CPU-bound, pois o tempo em que o CPUbound esta em execução é o necessário para o I/O-bound realizar a operação de E/S e voltar ao estado de pronto. Atividade 3: PCB a) Práticas de simulação • •

Reinicialize o simulador. Crie dois novos processos: janela Gerência de Processos / Criar – janela Criação de Processos / Criar.

b) Análise Prática •

Na janela Gerência de Processos / PCB, observe as informações sobre o contexto de software e hardware dos processos criados.

c) Questão teórica para responder com a ajuda do simulador Identifique quais informações do PCB são estáticas ou dinâmicas e quais fazem parte do contexto de software e do contexto de hardware. São Estáticas as informações de: Prioridade, tempo de criação, PID e frames. São Dinâmicas as informações de: Estado, tempo de UCP e PC. Fazem parte do contexto de software: Prioridade, PID, tempo de UCP, tempo de criação e estado. Fazem parte do contexto de hardware: Frames e PC.

Atividade 4: Estatísticas a) Práticas de simulação

• • •

Reinicialize o simulador. Ative a janela de Estatísticas em Console SOsim / Janelas / Estatísticas. Crie dois novos processos: janela Gerência de Processos / Criar – janela Criação deProcessos / Criar.

b) Análise Prática •

Na janela Estatística, observe as informações: número de processos, estados dos processos e processos escalonados.

c) Questão teórica para responder com a ajuda do simulador Observe que em alguns momentos existem processos no estado de pronto, porém nenhum em estado de execução. Explique a razão dessa situação. Essa situação ocorre porque nesse momento esta ocorrendo a mudança de contexto, ou seja, salva-se o conteúdo dos registradores do processo em execução e logo após carrega-se o conteúdo dos registradores do próximo processo a entrar em execução.

Atividade 5: Log de Execução dos Processos a) Práticas de simulação • • •

Reinicialize o simulador. Ative a janela de Log em Console SOsim / Janelas / Log. Crie dois novos processos do tipo CPU-bound: janela Gerência de Processos / Cria – janela Criação de Processos / Criar (tipo de processo deve ser CPU-bound).

b) Análise Prática • •

Na janela Log, observe as informações sobre as mudanças de estado dos processos observando o tempo que cada processo permanece nos estados de Execução e Pronto. Reinicialize o simulador parametrizado com um valor de fatia de tempo diferente observe as diferenças na janela Log.

c) Questão teórica para responder usando o simulador Analise comparativamente a concorrência de dois processos CPU-bound executando em dois sistemas operacionais que se diferenciam apenas pelo valor da fatia de tempo. No Sistema Operacional com fatia de tempo igual a 1s, em 20 segundos cada processo entrou em estado de execução 5 vezes totalizando 10s de UCP, no entanto houve 10 s em gastos em troca de contexto. No Sistema Operacional com fatia de tempo igual a 4s, em 20 segundos o processo A entrou em execução 3 vezes totalizando 9s UCP e o B 2 vezes e 6s de UCP, totalizando 15s de UCP e apenas 5s de troca de contexto. Observamos assim que quanto menor a fatia de tempo, maiores serão os tempos gastos em trocas de contextos.

Atividade 6: Suspensão e Eliminação de Processos a) Práticas de simulação •

Reinicialize o simulador.

Crie dois novos processos: janela Gerência de Processos / Cria – janela Criação de Processos / Criar.

b) Análise Prática • • • • • • •

Na janela Gerência de Processos, observe as informações sobre o contexto de software dos processos criados. Na janela Gerência de Processador, observe a concorrência no uso do processador pelos dois processos. Compare percentualmente os tempos de uso do processador entre os dois processos. Suspenda temporariamente um dos processos na janela Gerência de Processos / Suspender. Observe os estados dos processos, a concorrência no uso do processador e novamente compare percentualmente os tempos de uso do processador entre os dois processos. Libere o processo do estado de espera (suspenso) na janela Gerência de Processos / Prosseguir. Elimine um dos processos na janela Gerência de Processos / Finalizar.

c) Questão teórica para responder com a ajuda do simulador Ao se eliminar um processo em estado de suspenso, o processo não é eliminado imediatamente. Reproduza essa situação no simulador e explique a razão da situação. Isso ocorre porque a solicitação de finalização do processo só pode ser executada depois que ele sair do estado de suspenso, pois ao solicitar a finalização o SO notifica o processo através de um bit de sinalização localizado no seu PCB, ou seja, o Sistema Operacional ativa o bit correspondente à eliminação e no momento em que o processo é escalonado, o bit é testado e ai sim será finalizado.

Gerência de Recursos 1. O que é política de escalonamento de um sistema operacional? Uma política de escalonamento é composta por critérios estabelecidos para determinar qual processo em estado de pronto será escolhido para fazer uso do processador.

2. Quais as funções do escalonador e do dispatcher? O escalonador é uma rotina do sistema operacional que tem como principal função implementar os critérios da política de escalonamento. O dispatcher é responsável pela troca de contexto dos processos após o escalonador determinar qual processo deve fazer uso do processador.

3. Quais os principais critérios utilizados em uma política de escalonamento? Utilização do processador, throughput, tempo de Processador (tempo de UCP), tempo de espera, tempo de turnaround e tempo de resposta.

4. Diferencie os tempos de processador, espera, turnaround e resposta. Tempo de processador ou tempo de UCP é o tempo que um processo leva no estado de execução durante seu processamento. Tempo de espera é o tempo total que um processo permanece na fila de pronto durante seu processamento, aguardando para ser executado. Tempo de turnaround é o tempo que um processo leva desde a sua criação até ao seu término, levando em consideração todo o tempo gasto na espera para alocação de memória, espera na fila de pronto (tempo de espera), processamento na UCP (tempo de processador) e na fila de espera, como nas operações de E/S. Tempo de resposta é o tempo decorrido entre uma requisição ao sistema ou à aplicação e o instante em que a resposta é exibida.

5. Diferencie os escalonamentos preemptivos e não-preemptivos.

No escalonamento preemptivo, o sistema operacional pode interromper um processo em execução e passá-lo para o estado de pronto, com o objetivo de alocar outro processo na UCP. No escalonamento não-preemptivo, quando um processo está em execução, nenhum evento externo pode ocasionar a perda do uso do processador. O processo somente sai do estado de execução, caso termine seu processamento ou execute instruções do próprio código que ocasionem uma mudança para o estado de espera.

6. Qual a diferença entre os escalonamentos FIFO e circular? O FIFO é um escalonamento não-preemptivo onde o processo que chegar primeiro ao estado de pronto é o selecionado para execução. Este algoritmo é bastante simples, sendo necessária apenas uma fila, onde os processos que passam para o estado de pronto entram no seu final e são escalonados quando chegam ao seu início. Quando um processo vai para o estado de espera, o primeiro processo da fila de pronto é escalonado. Todos os processos quando saem do estado de espera entram no final da fila de pronto. O Circular é um escalonamento preemptivo, projetado especialmente para sistemas de tempo compartilhado. Esse algoritmo é bastante semelhante ao FIFO, porém, quando um processo passa para o estado de execução, existe um tempo limite para o uso contínuo do processador denominado fatia de tempo (time-slice) ou quantum.

7. Descreva o escalonamento SJF e o escalonamento por prioridades. No escalonamento SJF, o algoritmo de escalonamento seleciona o processo que tiver o menor tempo de processador ainda por executar. Dessa forma, o processo em estado de pronto que necessitar de menos tempo de UCP para terminar seu processamento é selecionado para execução. O escalonamento por prioridades é um escalonamento do tipo preemptivo realizado com base em um valor associado a cada processo denominado prioridade de execução. O processo com maior prioridade no estado de pronto é sempre o escolhido para execução e processos com valores iguais são escalonados seguindo o critério de FIFO. Neste escalonamento, o conceito de fatia de tempo não existe, consequentemente, um processo em execução não pode sofrer preempção por tempo.

8. Qual a diferença entre preempção por tempo e preempção por prioridade? Preempção por tempo ocorre quando o sistema operacional interrompe o processo em execução em função da expiração da sua fatia de tempo, substituindo-o por outro processo. Preempção por prioridade, ocorre quando o sistema operacional interrompe o processo em execução em função de um processo entrar em estado de pronto com prioridade superior ao do processo em execução.

9. O que é um mecanismo de escalonamento adaptativo? É um mecanismo onde o sistema operacional identifica o comportamento dos processos durante sua execução adaptando as políticas de escalonamento dinamicamente.

10. Que tipo de escalonamento aplicações de tempo real exigem? Escalonamento por prioridades onde é possível atribuir prioridades aos processos em função da sua importância. Além disso, o mecanismo de preempção por prioridades garante o escalonamento imediato de processos críticos quando esses passam para o estado de pronto.

11. O escalonamento por múltiplas filas com realimentação favorece processos CPUbound ou I/O-bound? Justifique.

Processos I/O-bound são favorecidos neste tipo de escalonamento. Como a probabilidade desse tipo de processo sofrer preempção por tempo é baixa, a tendência é que os processos I/O-bound permaneçam nas filas de alta prioridade enquanto os processos CPU-bound tendem a posicionarse nas filas de prioridade mais baixa.

12. Considere que cinco processos sejam criados no instante de tempo 0 (P1 , P2 , P3 , P4 e P5) e possuam as características descritas na tabela a seguir: Processo

Tempo de CPU

Prioridade

P1 P2 P3 P4 P5

10 14 5 7 20

3 4 1 2 5

Desenhe um diagrama ilustrando o escalonamento dos processos e seus respectivos tempos de turnaround, segundo as políticas especificadas a seguir. O tempo de troca de contexto deve ser desconsiderado. a) b) c) d)

FIFO SJF Prioridade (número menor implica prioridade maior) Circular com fatia de tempo igual a 2 u.t.

a) P1 1 0 P3 2 9

P2 2 4 P5

P4 3 6

............ 5 6

b) P3

P4 0 5

P1

P2

1 2

2 2

P2

P5

2 9

3 6

...........

c) P3

P4 0 5

P1 1 2

P2 2 9

3 6

P2 2 2 P5 5 6

5 6

d) P3

P4

P1

0 5

12 P2 2 9

P2 2 2 P5 5 6

3 6

13. Considere um sistema operacional com escalonamento por prioridades onde a avaliação do escalonamento é realizada em um intervalo mínimo de 5ms. Neste sistema, os processos A e B competem por uma única UCP. Desprezando os tempos de processamento relativo às funções do sistema operacional, a tabela a seguir fornece os estados dos processos A e B ao longo do tempo, medido em intervalos de 5 ms (E=execução, P=pronto e W=espera). O processo A tem menor prioridade que o processo B. Processo A Processo B

Processo A Processo B

00-04 P E

05-09 P E

50-54

55-59

P W

E P

10-14 E W

6064 P E

6569 P E

15-19 E W

20-24 E P

25-29 P E

30-34 P E

35-39 P E

40-44 E W

45-49 W W

7074 E W

75-59

80-84

85-89

90-94

95-99

100-105

E W

W P

W E

P E

E -

E -

a) Em que tempos A sofre preempção? Instantes 24-25, 59-60

b) Em que tempos B sofre preempção? Nunca, pois o processo B possui maior prioridade do que o processo A.

c) Refaça a tabela anterior supondo que o processo A é mais prioritário que o processo B.

Processo A Processo B

Processo A Processo B

00-04 E P

05-09 E P

50-54

55-59

W E

P E

10-14 E P

6064 E W

6569 E W

15-19 E P

20-24 W E

25-29 P E

30-34 E W

35-39 E W

40-44 E P

45-49 W E

7074 W

75-59

80-84

85-89

90-94

95-99

100-105

106-115

P

E

E

W

W

P

E

14. Como o valor do quantum pode afetar o grau de multiprogramação em um sistema operacional? Qual a principal desvantagem de um quantum com um valor muito pequeno? Um valor de quantum grande pode prejudicar a multiprogramação, na medida em que a ocorrência de preempções por tempo é reduzida, favorecendo os processos CPU-bound e

prejudicando os processos I/O-bound. Um valor de quantum pequeno ocasionaria um grande overhead ao sistema devido a alta frequência de mudanças de contexto geradas pelas frequentes preempções por tempo. 15. Considere um sistema operacional que implemente escalonamento circular com fatia de tempo igual a 10 u.t.. Em um determinado instante de tempo, existem apenas três processos (P1, P2 e P3) na fila de pronto, e o tempo de UCP de cada processo é 18, 4 e 13 u.t, respectivamente. Qual o estado de cada processo no instante de tempo T, considerando a execução dos processos P1, P2 e P3, nesta ordem, e que nenhuma operação de E/S é realizada? a) T = 8 u.t. P1: Execução, P2:Pronto, P3:Pronto b) T = 11 u.t. P1: Pronto, P2:Execução, P3:Pronto c) T = 33 u.t. P1: Terminado, P2:Terminado, P3:Execução 16. Considere um sistema operacional que implemente escalonamento circular com fatia de tempo igual a 10 u.t. Em um determinado instante de tempo, existem apenas três processos (P1, P2 e P3) na fila de pronto, e o tempo de UCP de cada processo é 14, 4 e 12 u.t, respectivamente. Qual o estado de cada processo no instante de tempo T, considerando a execução dos processos P1, P2 e P3, nesta ordem, e que apenas o processo P1 realiza operações de E/S? Cada operação de E/S é executada após 5 u.t. e consome 10 u.t. a) T = 8 u.t. P1: Espera, P2:Execução, P3:Pronto b) T = 18 u.t. P1: Pronto, P2:Terminado, P3:Execução c) T = 28 u.t. P1: Espera, P2:Terminado, P3:Terminado 17. Existem quatro processos (P1, P2, P3 e P4) na fila de pronto, com tempos de UCP estimados em 9, 6, 3 e 5, respectivamente. Em que ordem os processos devem ser executados para minimizar o tempo de turnaround dos processos? A melhor política para minimizar o tempo de turnaround seria utilizar o escalonamento SJF na sequência de execução P3, P4, P2 e P1. 18. e 19. Considere a tabela a seguir onde Processo P1 P2 P3 P4

Tempo de UCP 40 20 50 30

Prioridade 4 3 1 3

Calcule o tempo de turnaround médio dos processos considerando que todos foram criados no instante de tempo 0 u.t e que o tempo de troca de contexto é igual a 0 e refaça depois com a troca de contexto igual a 5 u.t para os seguintes escalonamentos

FIFO Com troca de contexto=0 u.t. P1 P2 0 0 4 6 0 0

P3 1 1 0

Com troca de contexto=5 u.t P1 P2 0 0 0 4 4 6 0 5 5 SJF Com troca de contexto=0 u.t. P2 P4 0 0 2 5 0 0

P4 1 4 0

P3 0 1 7 2 0 0

1 2 5

P1 1 9 0

Com troca de contexto=5 u.t P2 P4 0 0 0 2 2 5 0 5 5

P3 1 4 0

P1 0 1 6 0 0 0

1 0 5

Circular com fatia de tempo igual a 20 u.t Com troca de contexto=0 u.t P2 P3 P4 P1 0 0 0 0 1 2 4 6 8 0 0 0 0 0 0

P1

P4 1 5 5

P3

P3 1 5 5

P4 1 2 0

1 3 0

P3 1 4 0

Com troca de contexto=0 u.t P1

P2 0 2 0

0 2 5

P3

0 4 5

0 5 0

P4 0 7 0

0 7 5

0 9 5

P1 1 0 0

P3 1 2 0

1 2 5

P4 1 4 5

1 5 0

1 6 0

P3 1 1 6 7 5 5

Atividade 1: Escalonamento Circular a) Práticas de simulação •

Execute o simulador SOsim e configure-o para trabalhar com Escalonamento Circular: janela Console SOsim / Opções / Parâmetros do Sistema na guia Processador.

b) Análise Prática • •

• • •

Crie dois processos com a mesma prioridade (um CPU-bound e outro I/O-bound): janelaGerência de Processos / Criar – janela Criação de Processos / Criar Na janela Gerência de Processos, observe o tempo de processador de cada processo durante dois minutos e as mudanças de estado. Após esse período anote o tempo de processador de cada processo. Analise o balanceamento no uso do processador pelos dois processos. Na janela Gerência de Processos finalize os dois processos. Na janela Gerência de Processador, aumente a fatia de tempo movimentando a barra de Fatia de Tempo. Na janela Gerência de Processos, observe mais uma vez o tempo de processador de cada processo durante dois minutos e as mudanças de estado. Após esse período anote o tempo de processador de cada processo. Compare os tempos anotados nas duas e

analise o resultado do balanceamento no uso do processador pelos dois processos. Identifique as causas da variação.

c) Questão teórica para responder com a ajuda do simulador Considere a concorrência, nesse tipo de escalonamento, com dois processos CPU-bound que não realizam operações de E/S. Qual o efeito da variação da fatia de tempo sobre o balanceamento no uso do processador? Não há efeito algum porque os dois usam de forma idêntica a UCP. Após a analise percebe-se que mesmo aumentando a fatia de tempo os dois processos continuam passando a mesma quantidade de tempo na CPU e o tempo total de CPU só é diferente porque, mesmo sendo criados juntos, um entra primeiro n UCP para ser processado. Outra coisa que pode modificar esse tempo total de CPU é se a fatia de tempo for aumentada quando determinado processo tiver executando, isso aumentara a quantidade total de tempo de CPU desse processo

Atividade 2: Escalonamento Circular com Prioridades Estatísticas I a) Práticas de simulação 

Execute o simulador SOsim e configure-o para trabalhar com Escalonamento Circular com prioridades Estáticas: janela Console SOsim / Opções / Parâmetros do Sistema na guia Processador.

b) Análise Prática    

Crie um processo CPU-bound com prioridade 3 e um outro I/O-bound com prioridade 4: janela Gerência de Processos / Criar – janela Criação de Processos / Criar. Na janela Gerência de Processos, observe o tempo de processador de cada processo durante dois minutos e as mudanças de estado. Após esse período anote o tempo de processador de cada processo. Verifique a preempção por prioridade que ocorre toda vez que o processo I/O-bound de maior prioridade passa para o estado de Pronto. Analise o balanceamento no uso do processador pelos dois processos comparativamente a Atividade 1.

c) Questões teóricas para responder com a ajuda do simulador Quais devem ser os critérios para determinar as prioridades dos processos? A determinação das prioridades dos processos em um sistema operacional deve ser feito baseado em critérios como a importância do processo, a maximização de desempenho do sistema, Melhor aproveitamento do processador dentre outros. Caso, nesse escalonamento, todos os processos sejam criados com a mesma prioridade, qual o benefício dessa política sobre o Escalonamento Circular? Não haverá nenhum benefício, uma vez que dessa forma eles se comportarão da mesma forma.

Atividade 3: Escalonamento Circular com Prioridades Estatísticas II a) Práticas de simulação 

Execute o simulador SOsim e configure-o para trabalhar com Escalonamento Circular com Prioridades Estáticas: janela Console SOsim / Opções / Parâmetros do Sistema na guia Processador.

b) Análise Prática 

Crie um processo CPU-bound com prioridade 4 e um outro I/O-bound com prioridade 3: janela Gerência de Processos / Criar – janela Criação de Processos / Criar.

Na janela Gerência de Processos, observe o escalonamento dos dois processos. Analise o problema do starvation.

c) Questões teóricas para responder com a ajuda do simulador Por que o problema do starvation pode ocorrer? Starvation ocorre quando um ou mais processos não conseguem obter recursos no sistema enão pode progredir. Neste caso, o processo tem baixa prioridade e pode nunca ser escolhido. Cite duas ações que o administrador do sistema pode realizar quando é identificada a situação de starvation em um processo. Aumentar a prioridade do processo não executado, ou suspender a execução do processo que utiliza a CPU para que o processo em estado de starvation entre na UCP.

Atividade 4: Escalonamento Circular com Prioridades Dinâmica a) Práticas de simulação   

Execute o simulador SOsim e configure-o para trabalhar com Escalonamento Circular com Prioridades Dinâmicas: janela Console SOsim / Opções / Parâmetros do Sistema na guia Processador. Habilite as janelas de log e estatísticas: janela Console SOsim / Janelas. Na janela Gerência do Processador desloque a barra Frequência clock para a metade da escala.

b) Análise Prática        

Crie um processo CPU-bound com prioridade base 3 e mais três processos I/Obound com prioridade base 4, porém com perfis diferentes (tipo 1, 2 e 3): janela Gerência de Processos / Criar – janela Criação de Processos / Criar. Observe as prioridades base e dinâmica dos quatro processos na janela Gerência de Processos. Identifique os motivos das prioridades dinâmicas dos processos variarem ao longo do tempo. Observe na janela de log o valor do incremento recebido na prioridade de cada processo, Identifique o porquê das diferenças nos valores do incremento. Observe na janela de estatísticas o percentual de utilização da UCP. Suspenda o processo CPU-bound: janela Gerência de Processos / Suspender. Observe na janela de estatísticas as mudanças no percentual de utilização da UCP e identifique o porquê. Libere o processo CPU-bound do estado de suspenso: janela Gerência de Processos / Prosseguir.

c) Questão teórica para responder com a ajuda do simulador Qual o critério utilizado pelo sistema operacional para determinar diferentes valores de incremento à prioridade-base de um processo quando há uma mudança do estado de espera para pronto? O sistema incrementa um valor à prioridade base em relação ao tipo de espera que o processo estava submetido. Eventos que possuem um longo tempo de espera recebem um incremento maior. Um processo CPU-bound tende a ter uma prioridade dinâmica menor que a deum processo I/O-bound.

Como a interrupção tem relação com a multiprogramação?

O mecanismo de interrupção constitui a base para a implementação do esquema de paralelismo entre CPU e periféricos na multiprogramação. É um mecanismo usado para sinalizar à CPU a ocorrência de eventos importantes relacionados aos dispositivos periféricos e outros elementos do sistema.

Qual é a finalidade das interrupções?

Quando ocorre uma interrupção, a CPU interrompe o processamento do programa em execução e executa um pedaço de código (tipicamente parte do sistema operacional) chamado de tratador de interrupção. Em muitos casos, após a execução do tratador, a CPU volta a executar o programa interrompido.

Para que servem as interrupções nos sistemas operacionais?

A interrupção avisa ao processador quando o evento ocorreu, permitindo dessa forma uma acomodação eficiente para dispositivos mais lentos. Interrupções permitem aos processadores modernos responder a eventos gerados por dispositivos enquanto outro trabalho está sendo realizado.

Qual a diferença fundamental entre interrupção é exceção?

Exceções e interrupções são eventos inesperados que interromperão o fluxo normal de execução da instrução (que está sendo executada atualmente pelo processador). Uma exceção é um evento inesperado de dentro do processador. A interrupção é um evento inesperado de fora do processo.