Tema 01. Introduccion a La Programacion Concurrente

34
U L E Programación Avanzada Programación Concurrente

Transcript of Tema 01. Introduccion a La Programacion Concurrente

Page 1: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������

Programación Avanzada

Programación Concurrente

Page 2: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������

Resumen� ���������

� ������������

� ������������ �����������������������

� ���������������������������������

� ��������������������

� �������������!����"������������������

� #��������������������

� $��"����%�&��&�"����'$�&&(

� $�&&)����������������

� ������������ �**��

Page 3: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������

Paralelismo� ���������)��+������������������������������"�������

� #���,���"���������"��������)

� &+�����������-���-"������������,������"�����������

� �"��,��.�������������������

� ���������,�������������������"�����,���&���/���"���������)��,���������"��������"���

� ��������,���������������������/����������������'���"�������(��0�#��������1�#����������)�#���"�����������

� ����,���"��2�������/�������������"������������������,���������������������,�3�������������"�����������

� �2���������"����"��������)��+��"�����!�/

� ������������)�45������"���������������"��������"������1��������������������������

Page 4: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �����������6

Concurrencia� �2����������"�������"������3�������2��������"��������������-��������������+��������"��������������������7�������+������������-�������� �8���������������"����������������������

� ������������������������)�����������"����������������������������9��"���"���������������������+�������������-����

Page 5: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �����������:

Terminología� ��������)�����������������������������+�����"�����������������������������+������������������"�������

� ������)�&�������7�����"�����������+�������������,��������"������������������"������� ��2�������������1���������1������������������������/�����������������3�����"�����"������� ������������� ���������

� ����������)�������������������������"��������"������

� �������������������)����������7������+����������������,������"����������������

� ����� �����������)�&+�����������������������,������"������������"��������������������"���������

� �����������������)����������7���"������������������������������������"���,��������������

� ����������������)����������7���"�����������+�����������������������,������������

� ��������������)����������������������������������1�����,������"�����������

� ����������������)��������������,����������������������������������"�������7������2�����"��������3��������2��

Page 6: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �����������;

Concurrencia (cont.)� ���2������������3�����)

� ���"�������)� ���"�����������"�����"������������������

� ������������)� ���"������������������������������"�������"������������

� ��������3�����)� ���"����������������������3�������������������������������9�������2�

� ���2������������<�)

� =����������)�#��.���"��2�����"�7��<��������-��-��������"���������"�����-����������������������

Page 7: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �����������>

Intercalación. Instrucciones Atómicas

� ���������������"���2��)�

� ��(�?�@��1���(�?�@��1��(�?�@��1�6(�?�@��

� ���2����)������������������������������,��������������� �A�/���������������7�������+����������,������"����

� �������������������)������"����2��������7�����������������������������������,���2��7�������+���������������������������"� �

� &����������������"�����������������������"�������"������������"���2�����������������������������������������������������

X:=0cobegin

x := x + 1; �x := x + 2; �

coend;

Page 8: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������

Corrección Programas Concurrentes

� �������������"���������������)������+����������������������������������������������1�"�����7����?����������������������������������/������������

� B������������������������2�����"����"��2���7�������������������

� #��������"����������)�B��"����������������������������������������������������������������������7�������+�����

� �������������"���2���������

� �����������������)��'?()�"�����������C�D'?1/()�"������������1��1�2)������

� �����������4������� ��������� ������� ��� � ���� ��� ����

� ��� �������� ������� ��� ������ ��� ����

Page 9: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �����������E

Definiciones corrección� 8����������������������"������"��"��������7�����2��,�����������7������+�������)

� ���"��������7������2������������������� ��

� ����������������������������� �&����������������F���������.�/��������-��������"������ �

� ��������������������!������"8������������������"����������������"������� �G������2������������������������������������������������������

� �#�������$���!%������&")�&�����������2������"���"���������3���������2�+��9��1�������"�����"��������������"���������-����������������"������������������������7������������"�������-

� '����������������

� ���"��������7�����2�������,����������������(��������

� '��������������

� �� �������������!���������&" �$����������������"��������������9�������+��������"����������"�����������9���,�����.������������������"��2���

� �$������ ����������!����������" ������"���������2��F�������������"��������������+��������

Page 10: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Soluciones Software para la Concurrencia

� 8�������������2������������������!����"������������������

� ���2�������7���F"����

� B��������������!����"���������������������2����������-?���/����-������"���)

� &�"��������7�5������������/�7�5����������������"�����

� &�"��������7���"���������������"�����������"�������+�����������������������

� ������������?��������9���������������������

� ��������3���"�������

� �������"�3�����������������)�"������������/�������H�

Page 11: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Modelo de concurrencia� &������������������������������7������������������������������3��-�"��)

� #����������"�������/���2��'��,�������+��(

� ��������������������������������

� I�������,���������������)

� $��"����&����"��� ������������5�������"��2����������?��������9���

� ���-����

� #��������

� �������������+��

� �����3�,���

Page 12: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Ocupado – En Espera (O-EE)� 8�������?��������9������2�+����,�������������������F�����

� ���������F����)�������������������7������"������+�������������������������

� &+��"��"����������������������������"�����������������������

� J���������������"����-�������������������������������

Page 13: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

O-EE: Primer Intento

� &+��"���������������������������1�.����������������"���������������"������������������������

� B��-�2���������������7��5��"�����������������������"������ �'I������������(

� ������������2��������)���1��1��1��1�

� ������"���������������������������������F����1�����������������������"���-�,�,�����������

Page 14: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������6

"�����������C2����

��"����!.���������@�����C�K"����LK�B��������+�������"����L������)@��CK�$�����������L

���,�����C

"�����������C2����

��"����!.���������@�����C�K"����LK�B��������+�������"����L������)@��CK�$�����������L

���,�����C

K�����"��"�����"��LM����

������)@��C��2����

��C���C�����

���

����������������������C,���������)�� �C

�N&&N�������� "�

Page 15: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������:

Segundo Intento

� #����������)������������7������"���������������������������F���������"���7���������5�������

� �������������������"���������"�������������-���������������F����

� ��$M8&#�)����������������?��������9�������������������"�3�����������-��������

Page 16: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������;

"�����������C2����

��"����!.���"�3������@�"����������C�K"����L"�3������)@�"�������CK������B��������+�������"���������L"�3������)@�G$"�������CK�$�����������L

���,�����C

"�����������C2����

��"����!.���"�3������@�"����������C�K"����L"�3������)@�"�������CK�������B��������+�������"����������L"�3������)@�G$"�������CK�$�����������L

���,�����C

K�����"��"�����"��LM����

"�3������)@�G$"�������C"�3������)@�G$"�������C��2����

��C���C�����

���

����������������������C,���"�3�����1�"�3�����)�'"�������1�G$"�������(C

�N&&N�������� "�

Page 17: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������>

"�����������C2����

��"����"�3������)@�"�������C!.���"�3������@�"����������C�K"����L

K������B��������+�������"���������L"�3������)@�G$"�������CK�$�����������L

���,�����C

"�����������C2����

��"����"�3������)@�"�������C!.���"�3������@�"����������C�K"����LK�������B��������+�������"����������L"�3������)@�G$"�������CK�$�����������L

���,�����C

K�����"��"�����"��LM����

"�3������)@�G$"�������C"�3������)@�G$"�������C��2����

��C���C�����

���

��������4������������C,���"�3�����1�"�3�����)�'"�������1�G$"�������(C

� #����������)�������������������������������/������������������"���

� ��$M8&#�)������2�7�������������������"�3�����������-��������

� �����+����������"��������������1�"�����������,���

�N&&N�������� "�

Page 18: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

"�����������C2����

��"����"�3������)@�"�������C!.���"�3������@�"�����������2����

"�3������)@�G�"�������CK�����������,�����L"�3������)@�"�������C

���CK������B��������+�������"���������L"�3������)@�G$"�������CK�$�����������L

���,�����C

"�����������C2����

��"����"�3������)@�"�������C!.���"�3������@�"�����������2����

"�3������)@�G�"�������CK����������,�����L"�3������)@�"�������C

���CK�������B��������+�������"����������L"�3������)@�G$"�������CK�$�����������L

���,�����C

M����"�3������)@�G$"�������C"�3������)@�G$"�������C��2����

��C���C�����

���

���������������������C,���"�3�����1�"�3�����)�'"�������1�G$"�������(C

� #����������)��������������������������������������F��������"������������

� ��$M8&#�)�&�"���������������������.�/���������3������"������

�N&&N�������6 "�

Page 19: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������E

Algoritmo de Dekker� �����������

� #�������������������������������������<����������������������������,-����

� ���"������+������������������7������-7�����������"��������!���

� I������������5����������������������������"�������������.���!���

� &��2������������������1����������������-7�������������"������"����

� &������"�����������������/�2�+����,��/�"���������"����,�����������

Page 20: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

"�����������C2������"����

"�3������)@�"�������C!.���"�3������@�"�����������

��������@��.���2����

"�3������)@�G$"�������C!.���������@�����C�K�����������,�����L"�3������)@�"�������C

���CK������B��������+�������"���������L������)@��C"�3������)@�G$"�������CK�$�����������L

���,�����C

"�����������C2������"����"�3������)@�"�������C!.���"�3������@�"������������������@��

�.���2����"�3������)@�G$"�������C!.���������@������C�K����������,�����L"�3������)@�"�������C

���CK�������B��������+�������"����������L������)@��C"�3������)@�G$"�������CK�$�����������L

���,�����C

M����"�3������)@�G$"�������C"�3������)@�G�"�������C������)@��C

���������������� �**��C,��� "�3�����1�"�3�����)�'"�������1�G�"�������(C

�����)�� �C

��2������C���C

��������

��**�� "�

Page 21: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

SEMÁFOROS

�������������� ��������������������

Page 22: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Concurrencia: Semáforos

� ���������������-����

� �O�&+��"�)�&?��������9�����������-����

� �&+��"����������������-����������������������������

� H��.����)��������������������� "��/������������������������� "�

� &+��"���8��������&���������

Page 23: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Definición Semáforos� B�����-����' �+*����(�������4 �����������3����"��)

� B����������������������

� B������������������"�����,��� G

� B����������"����������"�����������������-���

� 4�����"���������)

� ����'��)����-���C��)��������(� ����������������"������������������� ��������3�������-��������,�����

� P���'��)����-����(� �������"������������"���������������� �&��-�����?���������������������� �

� ������@������������"��������������������"���1������0�������������)@������

� �����'��)����-����(� �������"������������"���������������� �&��-�����?�����������������P��� �

Page 24: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������6

��������M��������C,��

�����)����-���C������������2�������$�&���4Q�&�4��������'�)��������(C

2�������'�(!���'�����(C���R������"��������'�(�����'�����(C���'�(

���C,���

"������)����/S� G���4� $�T���4�������CM&=�G

����'�����1��(C���4����������2������$M&=�G

���+�)@������G���4� $�����������S+T'+(C

�$&G &G

������"����������2������"����+�������2���������/����,��������"�����G"������� �&�"����������"��������2�������.�/�2����"����.����� �$8B��UG �&V�8B��UG�#J4B�)�&����"�����'�(�������������������3��������?��������9���1������"�����'�(���������������

Ejemplo exclusión mútua

Page 25: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������:

Productor-Consumidor� ���2�����2��������7�����"�����������������������7��)

� &?������������,������"��������7���W"�������X����

� &?������������,������"��������7���W��������X���"���������"������"����������

� &�������������)

� 8���"�������������2����2���������"������������������������������2������������������� �8���"�������������2���������������"������+�������"������������/����"��������������������.���������"��������

� 8������������������2��������������"�����������������

Page 26: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������;

Dificultades con Semáforos� ��������������9����2�+����,�

� 8���������������"��������2�����������������-���� �&�������"�����������������������������������������������

� 8������-���������,����2�����2����"�������"�������)�����7�����1�.��������������� �� � )����"�������7������5������������������������F�������������������������-���1�/�.����!��������������-���1�"�����7����������������������F���������"�������������

Page 27: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������>

MONITORES

�������������� ��������������������

Page 28: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Monitores� 45����������-��������,�� 4�"������ ������2��������� �����"�����������������������������.��������+������"�����������

� &���"�����������������������������"�������� ����������$$�'���7���5���������/���.�������(

� ������H�������"�����������+��7��������"�������������

Page 29: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������E

Definición� B�����������������)

� G����������?����������������� ��������?���������������,5��������"�������������

� &?��������9������������������?������������"��������������"��7������+����������������"�������������������������������

� I����2������������1��1��������������������"��������������7���7��������+�������������������������

� $"���������)� ���/'�()��������������"������������������������������ �����2�������?����������������������� ��

� ������'�()���������������������-�,��F�1�������"��������"������"������ �

�������

�����

�����������

��������������� �����

pc_monitor.pfc

Page 30: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Dificultades� ��"���������������������)���������������������"�������.�/������+�1����������� ����"��������/����"����������1�"��������������������"������������������������������/�������1���+�����������/�,��F��"������

� ����2������������)� �����"����������-��������"�������7���������"����� � &������7������7������"��������������������9��������"���������7������+�����1������"�����7���������5���+�������������,�3���"�������������7����������������/���7���������"�����

� A�/�����������������"����������������������7�F �&��������H���������3����������������������������������1�������������������"��������7��������������5������?"������1�/�����1�������/���"��������1���������������"��������7������.����2�������������,����2����������� ��

Page 31: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Emulación Monitores - Semáforos� �������������-������������������)��������M������N���N��������� "�

� ���������������������������-����)� B�����-������"��������������?��������9�������������"������������������������

� B�����-�����������N��"��������,����2������������

� ��������������������������������N��"������������������"��7������"�����������������"����������������������-�,��F������

� �����"�������������������������-������"��������!���'�(���������"�������������������/���������'�(������9����

� ������"�����������/'�(����-��������������"��

��������N��)@���������N��Y��C�����'�(CP���'�������N�(C '�(���&�"������������������P���'�( ������������������������'�(���������2������������������2��,�,������+������������"����������������

���������������N��)@���������N�����

� �������������������������'�(�"��)

����������N��0����.��������'�������N�(C����������'�(����� '�(

� ��"����������������������9����������������

� A�/����"��2������������������������'�(�/�'�( �$����"�������"���F���+����������P���'�(������������/�"��������"������������"����������"������ ��8���������������������'�(�/�.�����'�(������������N�0���.��������'�������N�(����������'�(������C

Page 32: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

Lectores - Escritores� G���?��������������������� &?���������������������/������������ &?������������������������ &+��"��)

� M�������������1���.����

� 4�2���������"������������������.����

� B2��������������,���������������"�����

� &+��"�)�8&N#�������� "�

Page 33: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ �������������

El problema de los filósofos

!�����"

!�����#!�����$

!�����%

!�����&'�����"

'�����#

'�����$

'�����%

'�����&

���������(�����������)*����������������������������)�����������+���������)����������,��)������������+���������)��������-��)������������)

Page 34: Tema 01. Introduccion a La Programacion Concurrente

ULE

��������

������ ������������6

Soluciones� �������-����)

� ��������������)����������������)������� "� �������2�7���

� ���������������)�������������5����������������6������"������������ ������� "�

� �������������)������ "�