CONCORRNCIA Prof Andr L Alves Sistemas Operacionais Introduo

  • Slides: 28
Download presentation
CONCORRÊNCIA Prof. André L. Alves Sistemas Operacionais

CONCORRÊNCIA Prof. André L. Alves Sistemas Operacionais

Introdução • Nesta aula serão apresentados mecanismos, técnicas e dispositivos que possibilitam a implementação

Introdução • Nesta aula serão apresentados mecanismos, técnicas e dispositivos que possibilitam a implementação da concorrência como interrupções e exceções, buffering, spooling e reentrância. • Inicialmente será apresentada uma comparação entre os sistemas monoprogramáveis para ilustrar a importância do conceito de concorrência.

Objetivo • Entender o conceito e a importância da concorrência no projeto e implementação

Objetivo • Entender o conceito e a importância da concorrência no projeto e implementação de sistemas operacionais.

Concorrência Sistemas operacionais podem ser vistos com um conjunto de rotinas executadas de forma

Concorrência Sistemas operacionais podem ser vistos com um conjunto de rotinas executadas de forma concorrente e ordenada (PINKERT, 1990). É o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis (MACHADO e MAIA, 2007).

Sistemas monoprogramáveis X multiprogramáveis Fig. 1 Sistema monoprogramável x sistema multiprogramável (MACHADO e MAIA,

Sistemas monoprogramáveis X multiprogramáveis Fig. 1 Sistema monoprogramável x sistema multiprogramável (MACHADO e MAIA, 2007) Tabela 1 Exemplo de utilização do sistema (MACHADO e MAIA, 2007) Leitura de um registro Execução de 100 instruções Total 0, 0015 s 0, 0001 s 0, 0016 s % utilização da CPU (0, 0001 / 0, 0015) = 0, 066 = 6, 6%

Ambiente multiprogramável Tabela 2 As vantagens da multiprogramação (STALLINGS, 1997). Características Prog 1 Prog

Ambiente multiprogramável Tabela 2 As vantagens da multiprogramação (STALLINGS, 1997). Características Prog 1 Prog 2 Prog 3 Utilização da UCP Alta Baixa Utilização de E/S Poucas Muitas Tempo de processamento 5 min 10 min Memória utilizada 50 kb 100 kb 80 kb Utilização de disco Não Sim Utilização de terminal Não Sim Não Utilização de impressora Não Sim

Monoprogramação X Multiprogramação Tabela 3 Comparação entre monoprogramação e multiprogramação (MACHADO e MAIA, 2007)

Monoprogramação X Multiprogramação Tabela 3 Comparação entre monoprogramação e multiprogramação (MACHADO e MAIA, 2007) Utilização da UCP Utilização da memória Utilização de disco Utilização de impressora Tempo total de processamento Taxa de throughput Monoprogramação Multiprogramação 17% 30% 33% 30 min 6 prog/hora 33% 67% 67% 15 min 12 prog/hora

Concorrência (implementação) Deve ser implementada de maneira que, quando um programa perde o uso

Concorrência (implementação) Deve ser 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.

Interrupções e exceções • Eventos inesperados que podem ocorrer durante a execução de um

Interrupções e exceções • Eventos inesperados que podem ocorrer durante a execução de um programa ocasionando um desvio forçado no seu fluxo de execução. • Consequência da sinalização de algum dispositivo de hardware externo ao processador ou da execução de instruções do próprio programa.

Interrupção Mecanismo que tornou possível a implementação da concorrência nos computadores sendo o fundamento

Interrupção Mecanismo que tornou possível a implementação da concorrência nos computadores sendo o fundamento básico dos sistemas multiprogramáveis (MACHADO e MAIA, 2007). • Possibilita que o SO sincronize a execução de todas as suas rotinas e dos programas dos usuários, além de controlar os dispositivos; • Independe da instrução que está sendo executada.

Interrupção e exceção Fig. 2 Mecanismos de interrupção e exceção (MACHADO e MAIA, 2007).

Interrupção e exceção Fig. 2 Mecanismos de interrupção e exceção (MACHADO e MAIA, 2007). Tabela 4 Mecanismo de interrupção (MACHADO e MAIA, 2007) Via hardware 1. 2. 3. 4. Via software 5. 6. 7. Um sinal de interrupção é gerado pelo hardware; Após o término da execução da instrução corrente, o processador identifica o pedido de interrupção; Os conteúdos registradores PC e de status são salvos; O processador identifica qual a rotina de tratamento que será executada e carrega o PC com o endereço inicial desta rotina; A rotina de tratamento salva o conteúdo dos demais registradores do processador na pilha de controle do programa; A rotina de tratamento é executada; Após o término da execução da rotina de tratamento, os registradores de uso geral são restaurados, além do registrador de status e o PC, retornando à execução do programa interrompido.

Rotina de Tratamento • Para cada tipo de interrupção existe uma rotina de tratamento

Rotina de Tratamento • Para cada tipo de interrupção existe uma rotina de tratamento associada, para a qual o fluxo deve ser desviado. • A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina de tratamento. • O processador deve saber para qual rotina de tratamento deve ser desviado o fluxo de execução.

Vetor de interrupção Fig. 3 Estrutura de um vetor de interrupção (MACHADO e MAIA,

Vetor de interrupção Fig. 3 Estrutura de um vetor de interrupção (MACHADO e MAIA, 2007).

Tipos de interrupções Interrupções mascaráveis: tipo de interrupção de hardware que pode ser desativada

Tipos de interrupções Interrupções mascaráveis: tipo de interrupção de hardware que pode ser desativada (mascarada) temporariamente quando um programa necessita de toda a atenção do microprocessador. Interrupções não mascaráveis: interrupção de hardware que ignora e tem precedência sobre todas as outras requisições de interrupção. Nesse caso, as interrupções possuem prioridades que são estabelecidas por um controlador de pedidos de interrupção que define prioridades de atendimento.

Interrupções x Exceções • As interrupções são ocasionadas por eventos assíncronos (não relacionados à

Interrupções x Exceções • As interrupções são ocasionadas por eventos assíncronos (não relacionados à instrução do programa corrente). Por serem imprevisíveis, podem ocorrer múltiplas vezes. • As exceções são ocasionadas por eventos síncronos (resultado direto da execução de uma instrução do próprio programa) , previsíveis e, por definição, só podem ocorrer um de cada vez. São tratadas da mesma forma que as interrupções (Fig. 2) e muitas vezes pode ser escrita pelo próprio programador.

Exceções public class Divisao { public static void main(String[] args) { int a, b;

Exceções public class Divisao { public static void main(String[] args) { int a, b; Scanner s = new Scanner(System. in); System. out. print("Dividendo: "); a = s. next. Int(); System. out. print("Divisor: "); b = s. next. Int(); System. out. println(a / b); } } Algoritmo 1. Divisão entre dois números quaisquer em Java.

Tratamento de Exceções import java. util. Scanner; import java. util. Input. Mismatch. Exception; public

Tratamento de Exceções import java. util. Scanner; import java. util. Input. Mismatch. Exception; public class Tratamento { public static void main(String[] args) { int a, b; boolean aux = true; Scanner s = new Scanner(System. in); do { try { System. out. print("Dividendo: "); a = s. next. Int(); System. out. print("Divisor: "); b = s. next. Int(); System. out. println(a / b); aux = false; } catch(Arithmetic. Exception e 1) { System. err. print("O divisor deve ser diferente de zero. "); } catch(Input. Mismatch. Exception e 2) { System. err. print("Os números devem ser inteiros. "); s. next. Line(); } } while (aux); } } Algoritmo 2. Tratamento de exceções em Java.

Buffering • Consiste na utilização de uma área de memória (buffer) para a transferência

Buffering • Consiste na utilização de uma área de memória (buffer) para a transferência entre os periféricos e a memória principal. • Permite que, quando um dado for transferido para o buffer após uma operação de leitura, o dispositivo de entrada inicie uma nova leitura. • Neste caso, enquanto a UCP manipula o dado localizado no buffer, o dispositivo realiza outra operação de leitura no mesmo instante. • O mesmo raciocínio pode ser aplicado para operações de gravação.

Buffering Fig. 4 Operações de E/S utilizando buffer (MACHADO e MAIA, 2007).

Buffering Fig. 4 Operações de E/S utilizando buffer (MACHADO e MAIA, 2007).

Buffering ü Permite minimizar o problema da disparidade de velocidade de processamento entre o

Buffering ü Permite minimizar o problema da disparidade de velocidade de processamento entre o processador e os dispositivos E/S ü Seu objetivo principal é manter, na maior parte do tempo, processador e dispositivos E/S ocupados.

Spooling • O Spooling ou simplesmente Spool (do acrônimo Simultaneous Peripheral Operations On-line) referese

Spooling • O Spooling ou simplesmente Spool (do acrônimo Simultaneous Peripheral Operations On-line) referese a um processo de transferência de dados colocando-os em uma área de trabalho temporária (arquivo de spool) onde outro programa pode acessá-lo para processá-lo em um tempo futuro. Fig. 5 Técnica de Spooling (MACHADO e MAIA, 2007).

Spooling • Presente na maioria dos sistemas operacionais modernos para gerenciamento de impressão. •

Spooling • Presente na maioria dos sistemas operacionais modernos para gerenciamento de impressão. • Permite desvincular o programa do dispositivo de impressão, impedindo que um programa reserve a impressora para uso exclusivo, favorecendo a concorrência.

Reentrância • É a capacidade de um código executável (código reentrante) ser compartilhado por

Reentrância • É a capacidade de um código executável (código reentrante) ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja na memória. • Permite que cada usuário possa estar um ponto diferente do código reentrante, manipulando dados próprios, exclusivos de cada usuário.

Reentrância Fig. 6 Reentrância (MACHADO e MAIA, 2007).

Reentrância Fig. 6 Reentrância (MACHADO e MAIA, 2007).

Reentrância • Exemplos: ü Editores de texto ü Compiladores e linkers

Reentrância • Exemplos: ü Editores de texto ü Compiladores e linkers

Exercícios de pesquisa e fixação 1. O que é concorrência e como este conceito

Exercícios de pesquisa e fixação 1. O que é concorrência e como este conceito está presente nos sistemas operacionais multiprogramáveis? 2. Por que o mecanismo de interrupção é fundamental para a implementação da multiprogramação? 3. Explique o mecanismo de funcionamento das interrupções. 4. O que são eventos síncronos e assíncronos? Como estes eventos estão relacionados ao mecanismo de interrupção e exceção? 5. Dê exemplos de eventos associados ao mecanismo de exceção.

Exercícios de pesquisa e fixação 6. Pesquise: qual a vantagem da E/S controlada por

Exercícios de pesquisa e fixação 6. Pesquise: qual a vantagem da E/S controlada por interrupção comparada com a técnica de Spooling? 7. Pesquise: o que é DMA (Data Memory Access) e qual é a vantagem desta técnica. 8. Como a técnica de buffering permite aumentar a concorrência em um sistema computacional? 9. Explique o mecanismo de Spooling de impressão. 10. Em um sistema multiprogramável, seus usuários utilizam o mesmo editor de textos (200 Kb), compilador (300 Kb), software de correio eletrônico (200 Kb) e uma aplicação corporativa (500 Kb). Caso o sistema não implemente a 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?

Bibliografia MACHADO, Francis Berenger; MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais. 4ª ed. São

Bibliografia MACHADO, Francis Berenger; MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais. 4ª ed. São Paulo: LTC, 2007 DEITEL, Harvery M. ; DEITEL, Paul J. ; CHOFFNES, David R. . Sistemas operacionais. 3ª ed. São Paulo: Pearson Education, 2005 TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 2ª ed. São Paulo: Pearson Prentice Hall, 2008 SILBERSCHATZ, Abraham; GALVIN, Peter Baer; GAGNE, Greg. Fundamentos de Sistemas Operacionais. 6ª ed. Rio de Janeiro: LTC, 2004 SILBERSCHATZ, A. . Sistemas Operacionais. 6ª ed. Rio de Janeiro: LTC, 2004 OLIVEIRA, Rômulo Silva de; CARISSIMI, Alexandre da Silva; TOSCANI, Simão Sirineo. Sistemas Operacionais. 3ª ed. Porto Alegre: Sagra Luzzatto, 2004 TANEMBAUM, A. S. . Organizacao estruturada de computadores. 4ª ed. Rio de Janeiro: LTC, 2001 RAMOS, Marcos V. M. ; JOSÉ NETO, João; SANTIAGO, Italo. Linguagens Formais. 1ª ed. Porto Alegre: Bookman, 2009 Prof. André L. Alves 28