OberonCore
https://forum.oberoncore.ru/

Параллельные программы на основе Simplified CSP
https://forum.oberoncore.ru/viewtopic.php?f=31&t=6464
Страница 1 из 1

Автор:  Rifat [ Вторник, 29 Октябрь, 2019 15:30 ]
Заголовок сообщения:  Параллельные программы на основе Simplified CSP

На Дне Оберона в Орле докладывал данную тему. Интересно узнать мнение других людей и обсудить данную тему.
Сразу хочу предпредить, что слайды не предназначались для самостоятельного распространения, поэтому они являются только дополнением к докладу.

Вложения:
OberonDay2019.pdf [238.12 КБ]
Скачиваний: 49

Автор:  Дмитрий Дагаев [ Вторник, 29 Октябрь, 2019 19:53 ]
Заголовок сообщения:  Re: Параллельные программы на основе Simplified CSP

Мне доклад понравился. Хотелось бы понять, как Вы практически предполагаете реализацию. Допустим, отработали корректность планировщика и всего там внутри. Пользовательская программа, которая осуществляет обмен только через сообщения, получает доказательства корректности. Каков интерфейс обмена сообщениями? Я говорил про active objects, вы говорили, нет, библиотека. Можете пояснить?

Автор:  Дмитрий Дагаев [ Вторник, 29 Октябрь, 2019 21:38 ]
Заголовок сообщения:  Re: Параллельные программы на основе Simplified CSP

Также хотелось бы увидеть, как выглядит стандартная задача, например, про обедающих философов. Она должна быть интуитивно понятна, т.к. это интеллектуально-управляемое ПО. Ну и доказуема в смысле корректности.

Автор:  Дмитрий Дагаев [ Вторник, 29 Октябрь, 2019 21:47 ]
Заголовок сообщения:  Re: Параллельные программы на основе Simplified CSP

В АО это так
Код:
MODULE Philo;
IMPORT Semaphores;
CONST
    NofPhilo = 5; (* number of philosophers *)
VAR
    fork: ARRAY NofPhilo OF Semaphores.Sem;
    i: LONGINT;
TYPE
    Philosopher = OBJECT
        VAR
            first, second: LONGINT;
            (* forks used by this philosopher *)
        PROCEDURE & Init(id: LONGINT);
        BEGIN
            IF id # NofPhilo-1 THEN
                first := id; second := (id+1)
            ELSE
                first := 0; second := NofPhilo-1
            END
        END Init;
    BEGIN {ACTIVE}
        LOOP
            .... Think....
            fork[first].P; fork[second].P;
            .... Eat ....
            fork[first.V; fork[second].V
        END
    END Philosopher;
VAR
    philo: ARRAY NofPhilo OF Philosopher;
    BEGIN
        FOR i := 0 TO NofPhilo DO
        NEW(fork[i]);
        NEW(philo[i]);
    END;
END Philo.

Автор:  Rifat [ Среда, 30 Октябрь, 2019 09:25 ]
Заголовок сообщения:  Re: Параллельные программы на основе Simplified CSP

Да, интересная задача. Постараюсь ей заняться, когда будет время, и выложу решение.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/