Baixe o app para aproveitar ainda mais
Prévia do material em texto
Explique, com exemplos, o conceito do escalonamento multi-filas. No escalonamento multi-filas os processos são agrupados em filas, cada fila possui um algoritmo de escalonamento, e entre as filas também existe um algoritmo de escalonamento, sendo a ultima obrigatoriamente de prioridades. Existe dois tipos de escalonamento de Multi-filas. Escalonamento multi-filas sem retorno: Os processos são alocados de acordo com as prioridades. Desvantagem: starvation. Escalonamento multi-filas com retorno: Os processos podem alterar entre filas, neste escalonamento não ocorre starvation porque possui algoritmo de envelhecimento (aging). Exemplo: Fila 1 P1, P2, P5, P10 Algoritmo: SFJ Algoritmo: Prioridade Fila2 P3, P4, P20, P7 Algoritmo: FCFS Algoritmo: Prioridades Fila3 P14, P17, P18, P19 Algoritmo: Round Robin(q=3). Explique, com exemplos, o que é seção crítica. Cada processo tem um segmento de código, chamado seção crítica, em que o processo pode estar alterando variáveis comuns. Quando um processo estiver executando sua seção crítica, nenhum outro processo deve ter autorização para fazer o mesmo. O problema da seção critica é o projeto de um protocolo que os processos possam usar para cooperar. Cada processo deve solicitar permissão para entrar em sua seção crítica. A seção de código que implementa essa solicitação é a seção de entrada. A seção crítica pode ser seguida por uma seção de saída, o código restante é a seção remanescente. Exemplo: O acesso ao banco de dados podem ser executadas de duas maneiras: (1) Leitura (2) Escrita. Suponhamos que o processo P esteja escrevendo dados, o processo Q estaria lendo, com isso geraria um problema da seção crítica. Uma solução para a seção critica deve satisfazer aos três requisitos a seguir. - exclusão mutua: se Pi esta na seção critica, nenhum outro processo pode entrar nela. - Progresso garantido: se nenhum outro processo está na seção critica, um progresso que tente faze-lo não pode ser detido indefinidamente. - Espera limitada: se um processo deseja entrar na seção crítica, há um limite no número de outros processos que podem entrar nela antes dele. Do { Flag[ i ] = TRUE Turn = j; White (flag[ j ] && turn == j); Seção crítica Flag[ i ] = FALSE; Seção remanescente }while(TRUE) Explique com exemplos o que é deadlocks. Qual a postura do SO pode adotar com relação a esse tipo de problema? Um exemplo para ilustrar a ideia de deadlocks seria quando dois carros entram em uma ucuca ponte nos sentidos contrários. Um deveria esperar o outro retornar para que o outro termine a passagem. Existe 3 medidas para esse problema: 1: O sistema ignora e finge que não existe deadlocks. Sistemas atuais utilizam este procedimento. 2: O sistema permite a entrada do deadlock, detecta e recupera. 3: O sistema assume um protocolo para prevenir ou evitar o deadlock, garantindo que nunca ocorrera deadlocks no sistema. Explique por que SJF não é implementado na pratica. Há uma dificuldade em saber a extensão da próxima requisição de CPU. Para o escalonamento de longo prazo em um sistema batch, podemos usar como tamanho o limite de tempo do processo especificado por um usuário ao submeter a tarefa. Um valor muito baixo causará um erro de limite de tempo ultrapassado e exigirá nova submissão. Embora o algoritmo SJF seja ideal, ele não pode ser implementado o nível do escalonamento de CPU de curto prazo. Não há como saber a extensão do próximo burst de CPU. Uma técnica utilizada é tentar aproximar o escalonamento SJF prevendo o valor. Espera-se que o próximo burst de CPU seja semelhante em tamanho aos anteriores. Assim, calculando o próximo burst de CPU, podemos selecionar o processo com o menor burst de CPU previsto. O próximo burst de CPU, em geral, é previsto como uma média exponencial dos períodos medidos dos bursts de CPU anteriores. Implementação de semáforos em SO modernos, destacando o mecanismo para evitar espera ocupada. Defina deadlock. Quais são as quatro condições que o caracterizam? Um conjunto de processos bloqueados, cada um retendo um recurso e esperando para adquirir um recurso retido de outro processo no conjunto. Exclusão mútua: Somente um processo de cada vez pode usar um recurso Manter e esperar: Um processo retendo pelo menos um recurso está esperando para adquirir recursos adicionais mantidos por outros processos. Sem preempção: Um recurso pode ser liberado apenas voluntariamente pelo processo que o mantém, após esse processo ter completado sua tarefa Espera circular: Existe um conjunto {P0, P1, …, P0} de processos esperando de modo que P0 está esperando um recurso que é mantido por P1, P1 está esperando um recurso que é mantido por P2, …, Pn–1 está esperando um recurso que é mantido por Pn, e P0 está esperando um recurso que é mantido por P0.
Compartilhar