Baixe o app para aproveitar ainda mais
Prévia do material em texto
* * SISTEMAS OPERACIONAIS SIMONE MARKENSON Rio de Janeiro, maio de 2011 CONTEÚDO DA AULA * FUNÇÕES * COMPONENTES DE UM S.O. Gerenciador de Processos Gerenciador de Memória Gerenciador de Disco Gerenciador de Rede Gerenciador de E / S Gerenciador de Arquivos Sistema de Proteção Sistema Interpretador de Comandos S.O. * CLASSIFICAÇÃO MONOTAREFA X MULTITAREFA executa CONCORRENTE ≠ SIMULTÂNEO * PERCENTUAL DE TEMPO QUE A TAREFA UTILIZOU A CPU NO ÚLTIMO MINUTO SISTEMAS MULTITAREFA * CLASSIFICAÇÃO MONOUSUÁRIO X MULTIUSUÁRIO USUÁRIO = GENTE!!!! TODO SISTEMA MULTIUSUÁRIO É OBRIGATORIAMENTE MULTITAREFA MULTIUSUÁRIO SIGNIFICA MAIS DE UMA PESSOA NO MESMO SISTEMA * MODO USUÁRIO MODO KERNEL instruções não privilegiadas instruções privilegiadas SYSTEM CALL MODO USUÁRIO X MODO KERNEL SYSTEM CALL (CHAMADA AO SISTEMA): PORTA DE ACESSO AO KERNEL * RESUMINDO Sistema Operacional é um conjunto de programas cujas principais funções são: Interface com usuário Administração dos recursos Segurança e estabilidade Sistemas multitarefa utilizam as interrupções para promover a sensação de execução simultânea, mas sabemos que se trata de execução concorrente. * RESUMINDO – aula 1 1) São funções do sistema operacional: ( ) gerenciar recursos de hardware e fornecer um aplicativo para navegação na internet ( ) gerenciar recursos de hardware e interface com o usuário ( ) interface com o usuário e correção ortográfica ( ) gerenciar recursos de software e interromper uma tarefa em execução. 2) Para que uma aplicação execute instruções privilegiadas deverá executar: ( ) uma arquivo específico para gerenciamento de hardware ( ) uma interrupção de hardware. ( ) uma solicitação ao administrador do sistema. ( ) uma chamada ao sistema 3) O uso de interrupções permite a utilização de: ( ) sistemas concorrentes ( ) comunicação de dados ( ) dispositivos de hardware como teclado e disco ( ) bibliotecas de software * RESUMINDO – aula 1 1) São funções do sistema operacional: ( ) gerenciar recursos de hardware e fornecer um aplicativo para navegação na internet (X) gerenciar recursos de hardware e interface com o usuário ( ) interface com o usuário e correção ortográfica ( ) gerenciar recursos de software e interromper uma tarefa em execução. 2) Para que uma aplicação execute instruções privilegiadas deverá executar: ( ) uma arquivo específico para gerenciamento de hardware ( ) uma interrupção de hardware. ( ) uma solicitação ao administrador do sistema. (X) uma chamada ao sistema 3) O uso de interrupções permite a utilização de: (X ) sistemas concorrentes ( ) comunicação de dados ( ) dispositivos de hardware como teclado e disco ( ) bibliotecas de software * CONCEITOS DE PROCESSOS Instância de um programa em execução. É a unidade de carga e alocação de uma tarefa Um programa é carregado para a memória onde aloca uma determinada área para código e dados * ESTADOS DE UM PROCESSO modelo de 5 estados * RESUMINDO – aula 2 1) Sobre o conceito de processos, marque a afirmação verdadeira. ( ) Processo é a mesma coisa que programa. ( ) Processo é um programa que está em execução ( ) Processo é uma característica do processador ( ) Processo é um programa armazenado no disco 2) Pode ser responsável pela troca de contexto: ( ) Operação aritmética ( ) Interrupção por tempo provocada pelo temporizador ( ) sistema operacional ( ) Outro programa que quer executar. * RESUMINDO – aula 2 1) Sobre o conceito de processos, marque a afirmação verdadeira. ( ) Processo é a mesma coisa que programa. (X) Processo é um programa que está em execução ( ) Processo é uma característica do processador ( ) Processo é um programa armazenado no disco 2) Pode ser responsável pela troca de contexto: ( ) Operação aritmética (X) Interrupção por tempo provocada pelo temporizador ( ) sistema operacional ( ) Outro programa que quer executar. * THREADS São fluxos de execução distintos dentro de um mesmo processo. É a unidade de execução de um sistema. Um processo Um thread Múltiplos processos Um thread por processo Um processo múltiplos threads Multiplos processos Múltiplos threads por processo * Para que servem? Melhor aproveitamento da fatia de tempo Compartilhamento de Recursos Economia de tempo de gerenciamento Utilização de Múltiplos Processadores * RESUMO Uma thread pode ser imaginada então como uma função de um programa que tem “vida própria” para a execução mas não pode ser criada isoladamente. * RESUMINDO – aula 3 1) Uma thread é a execução de um fluxo de processamento, isto significa que um processo pode ser composto por várias threads. Neste contexto é correto afirmar que: ( ) Uma thread é equivalente a um processo filho pois a execução de cada thread é independente ( ) Uma thread pode ser compartilhada por vários processos pois o espaço de endereçamento é compartilhado. ( ) Uma thread pode existir sem estar associada a um processo. ( ) Threads de um mesmo processo podem ter suas execuções independentes e compartilham espaço de endereçamento de memória. 2) Considere uma aplicação baseada em threads em um sistema operacional com suporte a threads. Se uma das threads for bloqueada por solicitar uma operação de E/S as demais threads do mesmo processo: ( ) Poderão continuar executando se não dependerem do thread que foi bloqueada. ( ) Serão bloqueadas também. ( ) Não serão bloqueadas mas ficarão aguardando o desbloqueio da thread que executou a operação de E/S ( ) Serão interrompidas provocando um erro no processo. * RESUMINDO – aula 3 1) Uma thread é a execução de um fluxo de processamento, isto significa que um processo pode ser composto por várias threads. Neste contexto é correto afirmar que: ( ) Uma thread é equivalente a um processo filho pois a execução de cada thread é independente ( ) Uma thread pode ser compartilhada por vários processos pois o espaço de endereçamento é compartilhado. ( ) Uma thread pode existir sem estar associada a um processo. (X) Threads de um mesmo processo podem ter suas execuções independentes e compartilham espaço de endereçamento de memória. 2) Considere uma aplicação baseada em threads em um sistema operacional com suporte a threads. Se uma das threads for bloqueada por solicitar uma operação de E/S as demais threads do mesmo processo: ( X) Poderão continuar executando se não dependerem do thread que foi bloqueada. ( ) Serão bloqueadas também. ( ) Não serão bloqueadas mas ficarão aguardando o desbloqueio da thread que executou a operação de E/S ( ) Serão interrompidas provocando um erro no processo. * CONCORRÊNCIA Thread 1 Thread2 Linha 1 A= A * 2 B= B + 1 Linha 2 B= B * 2 A= A + 1 Caso 1: Thread 1 linha 1 e linha 2, thread 2 linha 1 e linha 2 Resultado final: A =3 B = 3 Caso 2: Thread 2 linha 1 e linha 2, thread 1 linha 1 e linha 2: Resultado final: A = 4 B= 4 Caso3: Thread1 linha1, thread 2 linha1 e linha 2, thread1 linha 2 Resultado final: A = 3 B = 4 O RESULTADO DEPENDE DA ORDEM DE EXECUÇÃO PROBLEMAS DA CONCORRÊNCIA!!!! * CONCEITOS FUNDAMENTAIS Condição de corrida Eventos que geram resultados não determinísticos Região crítica Parte do código que utiliza recursos compartilhados Exclusão Mútua Mecanismo de proteção a uma região crítica ENTRAR_RC() Código da região crítica SAIR_RC() * COMO FUNCIONA ENTRAR_RC() Espera ocupada OU bloqueio Código da região crítica SAIR_RC() Liberação do recurso * EXCLUSÃO MÚTUA Somente um processo por vez pode executar uma região crítica Um processointerrompido fora de uma região crítica não pode impedir que outro processo tenha acesso a esta região crítica Não pode haver nem deadlock nem starvation Quando não houver processo executando uma região crítica qualquer processo que solicitar acesso deverá obtê-lo imediatamente Um processo deve permanecer executando uma região crítica por tempo finito Nada pode ser assumido sobre a velocidade relativa e dos processos nem o número de processadores * RESUMINDO – aula 4 1) A condição de corrida é derivada de: ( ) aplicações concorrentes que não garantem exclusão mútua às regiões críticas ( ) aplicações baseadas em threads ( ) sistemas operacionais sem suporte a múltiplas threads ( ) aplicações em sistemas monotarefa que tentam executar ao mesmo tempo. 2) Preciso de giz e apagador para a aula. Peguei a caixa de giz, mas parei para conversar. Ao tentar pegar o apagador fiquei sabendo que outro professor, que só daria aula no segundo tempo, pegou o apagador e aguardava a caixa de giz que não estava sobre a mesa. Não sabia quem era o outro professor então fiquei esperando que fosse devolvido. Como iria ter aula no segundo tempo, resolvi guardar o giz e esperar o apagador. Esta situação retrata: ( ) Uma condição de corrida. ( ) Um deadlock em função da exclusão mútua no acesso aos dois recursos ( ) Um evento que será solucionado assim que terminar a aula. ( ) Um deadlock que poderá ser solucionado indo em busca do apagador e arrancando-o da mão do outro professor. * RESUMINDO – aula 4 1) A condição de corrida é derivada de: ( X) aplicações concorrentes que não garantem exclusão mútua às regiões críticas ( ) aplicações baseadas em threads ( ) sistemas operacionais sem suporte a múltiplas threads ( ) aplicações em sistemas monotarefa que tentam executar ao mesmo tempo. 2) Preciso de giz e apagador para a aula. Peguei a caixa de giz, mas parei para conversar. Ao tentar pegar o apagador fiquei sabendo que outro professor, que só daria aula no segundo tempo, pegou o apagador e aguardava a caixa de giz que não estava sobre a mesa. Não sabia quem era o outro professor então fiquei esperando que fosse devolvido. Como iria ter aula no segundo tempo, resolvi guardar o giz e esperar o apagador. Esta situação retrata: ( ) Uma condição de corrida. (X) Um deadlock em função da exclusão mútua no acesso aos dois recursos ( ) Um evento que será solucionado assim que terminar a aula. ( ) Um deadlock que poderá ser solucionado indo em busca do apagador e arrancando-o da mão do outro professor. * ENFIM... SOLUÇÕES! Soluções algorítmicas São baseadas em espera ocupada Processos se alternam no uso de suas respectivas RCs, fazendo com que o tempo de execução seja ditado pelo processo mais lento. Somente pode ser utilizado por dois processos. Se um dos processos falhar (abortar, por exemplo) o outro jamais poderá entrar em sua RC novamente pois a variável vez não será alterada, contrariando uma das regras de implementação de mecanismos de exclusão mútua * ENFIM... SOLUÇÕES! Soluções baseadas em hardware Inibir interrupções Não habilitar as interrupções por erro de programação (só desligando o computador!!!) Como somente as interrupções do processador que executou a instrução são desabilitadas não garante exclusão mútua em sistemas multiprocessados. Instruções TSL Utiliza espera ocupada Possibilidade de starvation; Deve garantir exclusividade no uso do barramento para multiprocessadores * ENFIM... SOLUÇÕES! Soluções baseadas no Sistema Operacional Troca de Mensagens Utilizado também em sistemas distribuídos Utiliza primitivas send e receive para o envio e recebimento de mensagens. As primitivas podem ou não bloquear o processo Considere um receive bloqueante e um send não bloqueante. O processo deve aguardar um send par liberar o processo bloqueado na instrução receive. receive(caixa_postal) Região Crítica send (caixa_postal) * ENFIM... SOLUÇÕES! Soluções baseadas no Sistema Operacional Semáforos O semáforo deve ser inicializado com um valor não negativo. A operação wait decrementa o semáforo; se o valor ficar negativo o processo é bloqueado A operação signal incrementa o semáforo; se o valor não ficar positivo o processo bloqueado pela operação wait é desbloqueado. Wait(s) Região Crítica Signal(s) * Sincronização: produtor/consumidor BUFFER INFINITO Produtor (i) { while (T) { produz_item() wait(s) adiciona_item() signal(s) signal(n) } } Consumidor(i) { while (T) { wait(n) wait(s) remove_item() signal(s) consome_item() } } Valor inicial: s = _____ n = ______ * Sincronização: produtor/consumidor BUFFER FINITO Produtor (i) { while (T) { produz_item() wait(v) wait(s) adiciona_item() signal(s) signal(n) } } Consumidor(i) { while (T) { wait(n) wait(s) remove_item() signal(s) consome_item() signal(v) } } Valor inicial: s = _____ n = ______ v= ______ * RESUMINDO – aula 5 1) Considere o problema do produtor/consumidor com buffer infinito (caso 1). O que acontece se trocarmos de posição as linhas wait(n) e wait(s) na rotina consumidor? ( ) deadlock ( ) condição de corrida ( ) starvation do produtor ( ) não faz diferença a ordem em que estas linhas são executadas 2) Considerando o problema do produtor/consumidor com buffer finito (caso 2), o que acontece se trocarmos de posição as linhas signal(n) e signal(s) na rotina produtor? ( ) condição de corrida. ( ) deadlock ( ) starvation do consumidor ( ) não faz diferença a ordem em que estas linhas são executadas * RESUMINDO – aula 5 1) Considere o problema do produtor/consumidor com buffer infinito (caso 1). O que acontece se trocarmos de posição as linhas wait(n) e wait(s) na rotina consumidor? ( X ) deadlock ( ) condição de corrida ( ) starvation do produtor ( ) não faz diferença a ordem em que estas linhas são executadas 2) Considerando o problema do produtor/consumidor com buffer finito (caso 2), o que acontece se trocarmos de posição as linhas signal(n) e signal(s) na rotina produtor? ( ) condição de corrida. ( ) deadlock ( ) starvation do consumidor (X ) não faz diferença a ordem em que estas linhas são executadas * *
Compartilhar