Baixe o app para aproveitar ainda mais
Prévia do material em texto
Kernel Vídeos salvos na pasta Link http://www.oreilly.com/openbook/opensources/book/appa.html PSW PC Leia o capítulo 5 de Fundamentos de Sistemas Operacionais – 6ª Edição Autores: Silberschatz, Galvin e Gagne. Leia a descrição das funções da biblioteca Pthreads utilizada para implementação de threads de usuário. Um processo que contenha threads é composto pelo seu PCB (Process Control Block) e pelos blocos específicos para cada thread que contém uma estrutura de contexto de software e uma estrutura de contexto de hardware. Cada thread possui contextos próprios de hardware e software, porém compartilham o mesmo espaço de endereçamento alocado ao processo. Vamos entender melhor. Pense em funções de um mesmo processo onde todas as funções são capazes, por exemplo, de ver e alterar o conteúdo de variáveis globais. Nessa aula, você aprendeu: • O que é uma thread. • Quais os tipos de threads disponíveis e suas características. • As vantagens e desvantagens do uso de threads. Leia os artigos: Pthread Tutorial, Chapin, P., 2005. Sun Os Multithread Architecture, Sun Microsystems, USENIX Winter´91. Execute o programa contagem utilizando o sistema operacional Linux. O código fonte em C pode ser obtido em contagem.c e deve ser compilado com o comando g++ –o contagem contagem.c –lpthread. Execute os testes sugeridos nos roteiro de testes. Nesta aula, iremos entender como os recursos são compartilhados entre processos e threads e os problemas característicos desse compartilhamento. Serão analisadas situações problemas com a motivação para resolvê-las. Então, vamos começar? Suponha que um Processo P1 está executando quando é interrompido pelo final da fatia de tempo. Outro Processo P2 será selecionado para execução e poderá querer utilizar o mesmo recurso que estava sendo utilizado por P1. E agora? Vamos entender o exemplo: Considere que as variáveis A e B, ambas iniciadas com o valor 1, são compartilhadas por duas threads de um mesmo processo e cada uma delas deverá executar: Podemos perceber neste exemplo muito simples que obtivemos 3 resultados diferentes em função da ordem em que os processos ocorrem. Esse efeito é denominado CONDIÇÃO DE CORRIDA. Há condição de corrida quando existem recursos compartilhados entre duas ou mais threads ou entre dois ou mais processos sem as devidas precauções. Mais uma informação importante: Sabe aqueles problemas de “erro intermitente” do sistema operacional? Não existe erro intermitente de software, já que não existe “mau contato” dentro de um programa. Erros intermitentes são mesmo erros de programação que ocorrem em determinadas situações. Essas situações podem se repetir ou não com frequência. Com a repetição do contexto é impraticável, torna-se muito mais difícil localizar um erro de execução do programa. Vamos conhecer agora um exemplo mais prático. Exclusão Mútua Mecanismo de Exclusão Mútua: Solução que impede que dois ou mais processos tenham acesso a uma mesma região crítica, ou seja, impede acesso simultâneo a um determinado recurso. NOTA: acesso simultâneo a região crítica não é a mesma coisa que execução simultânea. Nesta aula, iremos aprender como implementar os principais mecanismos de exclusão mútua, baseados em algoritmos, características de hardware e funcionalidades do sistema operacional, comparando vantagens e desvantagens de cada um. Utilizaremos o problema do produtor/consumidor para entendermos a abordagem de sincronização entre processos através dos recursos do sistema operacional. Então, vamos começar? Mecanismo de Exclusão Mútua: Solução que impede que dois ou mais processos tenham acesso a uma mesma região crítica, ou seja, impede acesso simultâneo a um determinado recurso. NOTA: acesso simultâneo a região crítica não é a mesma coisa que execução simultânea. Regras de acesso: • 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. Além de permitirem a implementação de exclusão mútua, os semáforos também podem ser utilizados para sincronização condicional entre processos. Um problema clássico que exemplifica essa função é o Problema do produtor /consumidor. Nesta aula conheceremos as estratégias utilizadas para alocação (escalonamento) e distribuição do tempo do processador entre os processos ativos. Analisaremos cada uma destas estratégias em função de medidas como tempo de resposta e vazão. Então, vamos começar? Escalonador A tarefa é executada por um processo do sistema operacional denominado escalonador (scheduler). Escalonador: Processo do sistema operacional responsável por indicar o próximo processo que será executado dos que estiverem prontos para execução segundo uma estratégia pré-definida. Considerações importantes para o cálculo do tempo de resposta: 1) FCFS: Computar a soma dos tempos de espera considerando a ordem de chegada e de processamento . Para fins de simplificação pode-se considerar que a diferença do instante de criação de cada processo é nula. 2) Prioridade: Não é utilizado sozinho. Para fins de exercício é semelhante ao FCFS porém a ordem de execução é dada pela prioridade e não pela ordem de chegada. 3) SJF: Também é não-preemptivo e a ordem de execução é dada pelo tamanho estimado do processo (o menor primeiro). 4) Round Robin (Circular): Os processos são atendidos na ordem de chegada mas após atingirem o tempo máximo permitido (fatia de tempo) são recolocados no final da fila. O retorno de uma operação de E/S pode alterar a ordem de execução. (Calcule do tempo de resposta para as estratégias FCFS, Round Robin e SJF. Para simplificar os cálculos serão desconsiderados os tempos de troca de contexto e a diferença de tempos entre as inserções de cada processo). 5) Múltiplas filas com realimentação: Cada processo é inicialmente colocado na fila de maior prioridade e menor fatia de tempo. Ao término da fatia é recolocada na fila com prioridade menor que a primeira mas com uma fatia de tempo maior e assim sucessivamente (depende do numero de filas). Ao executar uma operação de E/S o processo retorna a fila onde estava. Soluções: Nesta aula, conheceremos as estratégias utilizadas para alocação da memória principal para os processos ativos. Analisaremos cada uma dessas estratégias em função de dinâmica utilizada e da eficácia de cada método principalmente quando medimos desperdício de memória em uma alocação. Então, vamoscomeçar? Partição Princípio da Localidade Redução de trashing Nesta aula aprenderemos como os sistemas operacionais gerenciam o uso dos dispositivos de entrada e saída. Em função da diversidade existente destes dispositivos está é uma das mais complexas tarefas de gerência do sistema operacional. Não existe uma implementação genérica que atenda a todos os dispositivos. Para isolar as características do hardware é utilizado um modelo de camadas onde as camadas de mais baixo nível ficam responsáveis pela interface com o hardware enquanto as de mais alto nível com a interface com o usuário. Vamos começar? Disco roda em velocidade constante. A cada acesso deve posicionar cabeça na trilha, no inicio do setor. Nesta aula, aprenderemos como os sistemas gerenciam arquivos considerando aspectos de estrutura, alocação e segurança. Vamos começar?
Compartilhar