Недавно мне пришлось решить задачу обедающих философов, и я справился с ней успешно. Однако теперь мне нужно решить ее снова, используя другой метод.
Вот требования:
На основе алгоритма Задачи обедающих философов и использования Интерфейсы ServerSocket и Socket в Java предоставляют распределенное решение этой проблемы. Ваша реализация должна соответствовать следующим требованиям:
Клиенты-философы: каждый философ должен быть реализован как независимый клиент, то есть каждый философ будет установить соединение с сервером через Сокет.
Централизованный сервер ресурсов: общие ресурсы («вилки») должны быть управляется централизованным сервером. Этот сервер, реализованный с использованием ServerSocket, будет принимать соединения от клиентов (философов) и контролировать доступ к ресурсам.
Протокол связи: Определите четкий и хорошо документированный протокол связи между сервером и клиентами, основанный на примерах RFC (например, SMTP или FTP). Например, при инициировании соединения философ (клиент) может отправить сообщение *HELLO*, а сервер ответит *HI *. Этот протокол должен обеспечивать весь поток взаимодействия, включая запросы на доступ к ресурсам, уведомления о начале размышления, запросы на прием пищи и возврат вилок.
Идентификация философа >: При установке первоначального соединения сервер должен назначить уникальный ID каждому философу. В случае потери соединения философ должен повторно подключиться, сообщив ранее назначенный ID.
Журналы сервера: Сервер должен поддерживать - журналы памяти о деятельности каждого философа, в которых хранится такая информация, как количество раз, когда философ думал и количество завершенных приемов пищи.
Время размышлений: время философа время размышления должно быть случайной величиной в миллисекундах, следующей за нормальное распределение со средним значением 5 и стандартным отклонением 2. Убедитесь, что это значение не является отрицательным (минимальное значение равно нулю), чтобы обеспечить согласованность системы.
Я пытаюсь решить эту проблему уже почти неделю, но ничего не помогает.
Заранее благодарен за любую помощь.
Недавно мне пришлось решить задачу обедающих философов, и я справился с ней успешно. Однако теперь мне нужно решить ее снова, используя другой метод. Вот требования: На основе алгоритма [b]Задачи обедающих философов[/b] и использования Интерфейсы [b]ServerSocket[/b] и [b]Socket[/b] в Java предоставляют распределенное решение этой проблемы. Ваша реализация должна соответствовать следующим требованиям: [list] [*][b]Клиенты-философы[/b]: каждый философ должен быть реализован как независимый клиент, то есть каждый философ будет установить соединение с сервером через [b]Сокет[/b]. [*][b]Централизованный сервер ресурсов[/b]: общие ресурсы («вилки») должны быть управляется централизованным сервером. Этот сервер, реализованный с использованием [b]ServerSocket[/b], будет принимать соединения от клиентов (философов) и контролировать доступ к ресурсам. [*][b]Протокол связи[/b]: Определите четкий и хорошо документированный протокол связи между сервером и клиентами, основанный на примерах RFC (например, SMTP или FTP). Например, при инициировании соединения философ (клиент) может отправить сообщение *HELLO*, а сервер ответит *HI *. Этот протокол должен обеспечивать весь поток взаимодействия, включая запросы на доступ к ресурсам, уведомления о начале размышления, запросы на прием пищи и возврат вилок. [*][b]Идентификация философа[/b] >: При установке первоначального соединения сервер должен назначить уникальный [b]ID[/b] каждому философу. В случае потери соединения философ должен повторно подключиться, сообщив ранее назначенный [b]ID[/b]. [*][b]Журналы сервера[/b]: Сервер должен поддерживать - журналы памяти о деятельности каждого философа, в которых хранится такая информация, как количество раз, когда философ думал и количество завершенных приемов пищи. [*][b]Время размышлений[/b]: время философа время размышления должно быть случайной величиной в миллисекундах, следующей за нормальное распределение со средним значением 5 и стандартным отклонением 2. Убедитесь, что это значение не является отрицательным (минимальное значение равно нулю), чтобы обеспечить согласованность системы. [/list] Я пытаюсь решить эту проблему уже почти неделю, но ничего не помогает. Заранее благодарен за любую помощь.