User Tag List

Страница 120 из 227 ПерваяПервая ... 116117118119120121122123124 ... ПоследняяПоследняя
Показано с 1,191 по 1,200 из 2264

Тема: Особенности процессоров и устройств архитектуры PDP-11. Тесты. Диагностика.

  1. #1191

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Приплыли
    Нет. Читаем внимательно: WAIT предназначен для выполнения когда вообще нечего делать. То есть если мы выполняем команду WAIT, значит мы и должны на ней висеть до упора пока не возникнет прерывание которое должно снять с нее. Если же таковое возникло - оно и снимет с WAIT. Все просто. Главное - не изобретать умных конструкций. Типичная работа с командой WAIT - это WAIT, BR .-2. Все.

    ---------- Post added at 20:31 ---------- Previous post was at 20:29 ----------

    Или если так проще будет: есть процесс который ничего не делает кроме WAIT, BR .-2 который стоит в общем планировании в самом низу. Когда больше нечего делать - он и "выполняется", когда есть чего - он и не получает управления...
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  2. #1192

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    когда вообще нечего делать
    Что-то в этом есть. То есть добавить в список задач задачу NHD (нечего делать), которая всегда активна, но с минимальным приоритетом, с учетом этого всегда найдется готовая к исполнению задача. Что же, тоже вариант...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  3. #1193

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Что-то в этом есть. То есть добавить в список задач задачу NHD (нечего делать), которая всегда активна, но с минимальным приоритетом, с учетом этого всегда найдется готовая к исполнению задача. Что же, тоже вариант...
    Такая задача в классических вытесняющих ОС реального времени всегда есть, называется idle.

  4. #1194

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Такая задача в классических вытесняющих ОС реального времени всегда есть, называется idle
    Естественно. Я тут размышляю как бы это дело прикрутить к неклассической самоделке с корпоративной (скорее, кооперативной) многозадачностью. Платформа у меня, конечно, поновее, но красивые идеи не стареют, многое, подсмотренное в недрах ОС тех времен (начиная с ДОС-360/370) легко и удобно применяется и сейчас.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  5. #1195

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Главное - не изобретать умных конструкций. Типичная работа с командой WAIT - это WAIT, BR .-2. Все.
    Угу. Во "взрослой" вытесняющей многозадачке, там. где диспетчер задач сам отбирает управление у любой задачи, если появилась более приоритетная. А вот в корпоративной - изба фигвам, там любая задача сама должна вернуть управление диспетчеру в тот момент, когда она считает это возможным. И с применением команды WAIT задача idle в такой системе не получается, не зря я на Э-60 делал бОльшую часть диспетчера задач при открытых прерываниях, а вместо ожидания просто зацикливал эту часть.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  6. #1196

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Во "взрослой" вытесняющей многозадачке, там. где диспетчер задач сам отбирает управление у любой задачи, если появилась более приоритетная. А вот в корпоративной - изба фигвам, там любая задача сама должна вернуть управление диспетчеру в тот момент, когда она считает это возможным. И с применением команды WAIT задача idle в такой системе не получается
    Если задача idle может получить управление только при отсутствии других активных задач, то вполне очевидно, что любая другая задача может активироваться только в результате прерывания.

  7. #1197

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Если задача idle может получить управление только при отсутствии других активных задач, то вполне очевидно, что любая другая задача может активироваться только в результате прерывания.
    А есть идея как придумать какую-либо причину для активации без появления какого-либо прерывания?

    ---------- Post added at 16:11 ---------- Previous post was at 16:10 ----------

    Цитата Сообщение от AFZ Посмотреть сообщение
    сама должна вернуть управление диспетчеру
    А кто мешает именно вернуть ему?
    А уж диспетчер если надо активирует нуль-задачу которая будет на особых правах - ее сам диспетчер может снять, получив сигнал в виде прерывания (или ему сигнал передадут из хандлеров прерывания).

    ---------- Post added at 16:14 ---------- Previous post was at 16:11 ----------

    На тему активации интересно почитать описание директивы WSIG$ - это директива в RSX-11 системах, ожидающая любого важного события (которое заставит диспетчер задач пересмотреть очередь), обычно используется в случае если не хватает ресурсов на что-нибудь, а отделаться сообщением об ошибке будет неправильно.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  8. #1198

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    А есть идея как придумать какую-либо причину для активации без появления какого-либо прерывания?
    Об том и речь - если активной осталась только задача idle, то эта ситуация в принципе не может измениться без прерывания, а значит вполне уместно использовать WAIT.

  9. #1199

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Если задача idle может получить управление только при отсутствии других активных задач, то вполне очевидно, что любая другая задача может активироваться только в результате прерывания.
    Ага, а Солнце восходит на востоке.
    Цитата Сообщение от form Посмотреть сообщение
    А кто мешает именно вернуть ему?
    Как кто? Команда WAIT, вестимо.

    Люди, вы себе плохо представляете, что такое корпоративная многозадачка. Это же просто банальный перебор таблицы задач и прямой вызов CALL'ом подпрограммы, исполняющей ту или иную задачу. Адрес которой, обычно, задан в той же таблице. Только в системах с детерминированным поведением команды ожидания, обычно, эта часть исполняется при закрытых прерываниях, прерывания разрешаются только перед CALL'ом, а если делать нечего, то вводится состояние ожидания.

    На любимой PDP-11, с ее индетерминированным поведением команды WAIT, приходится перебор задач делать при открытых прерываниях, закрываются они только непосредственно перед CALL'ом для пометки "взято на исполнение" в таблице задач, каковую пометку я, обычно, делал командой TRAP.

    А программы обслуживания прерываний просто отмечаются в той самой таблице задач, и все.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  10. #1200

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Люди, вы себе плохо представляете, что такое корпоративная многозадачка. Это же просто банальный перебор таблицы задач и прямой вызов CALL'ом подпрограммы, исполняющей ту или иную задачу.
    Если в такой системе есть синхронные системные вызовы, то это Вы не вполне представляете, что такое корпоративная многозадачка. Потому что смысл синхронности системного вызова как раз в том, что управление не может быть возвращено в сделавшую вызов задачу до завершения обработки вызова в ядре. В результате рано или поздно складывается ситуация, когда все задачи ждут завершения системных вызовов и не могут быть вызваны. В такой ситуации вызывается задача idle.

    В какой бы момент не произошло прерывание - выход из прерывания не может произойти в задачу idle, поэтому использование там команды WAIT совершенно безопасно. Если выход из прерывания может сразу попасть в задачу idle - значит система содержит ошибки. В нормально работающей системе возврат из прерывания сразу в задачу idle без "захода в ядро" абсолютно невозможен при любых раскладах.

Страница 120 из 227 ПерваяПервая ... 116117118119120121122123124 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Тесты ВМ1
    от nzeemin в разделе БК-0010/0011
    Ответов: 90
    Последнее: 05.10.2018, 12:24
  2. Диагностика
    от dk_spb в разделе Корвет
    Ответов: 31
    Последнее: 21.07.2017, 23:52
  3. Проблема двух процессоров.
    от Mikka_A в разделе Несортированное железо
    Ответов: 21
    Последнее: 28.11.2006, 17:04

Ваши права

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