OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 13 Декабрь, 2019 03:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 29 Октябрь, 2019 15:30 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 864
Откуда: Казань
На Дне Оберона в Орле докладывал данную тему. Интересно узнать мнение других людей и обсудить данную тему.
Сразу хочу предпредить, что слайды не предназначались для самостоятельного распространения, поэтому они являются только дополнением к докладу.


Вложения:
OberonDay2019.pdf [238.12 КБ]
Скачиваний: 49
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Октябрь, 2019 19:53 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Октябрь, 2019 21:38 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 398
Откуда: Москва
Также хотелось бы увидеть, как выглядит стандартная задача, например, про обедающих философов. Она должна быть интуитивно понятна, т.к. это интеллектуально-управляемое ПО. Ну и доказуема в смысле корректности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Октябрь, 2019 21:47 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 398
Откуда: Москва
В АО это так
Код:
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.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 30 Октябрь, 2019 09:25 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 864
Откуда: Казань
Да, интересная задача. Постараюсь ей заняться, когда будет время, и выложу решение.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB