PrepareForShutdown

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: PrepareForShutdown

Сообщение alexs » 21.09.2023 10:11:42

Нельзя блокировать действия пользователя!
Пример из моей жизни - я вечером работаю перед сном. После работы нажал кнопку на корпусе ПК. Он у меня СРАЗУ переходит в спящий режим. И это МОЁ желание как пользователя. Мне не надо чтобы эта железка не исполняла мои требования. Если комп не выклюился - я принудительнь завершу блокирующую программу в любом случае. А если она при этом потеряет мои данные - я просто перестану пользоваться этой программой.

1. Программа не должна допускать потери данных в любом случае (свет моргнул/кошка провод съела/убощица шваброй по компу ударила.... )
2. ПК должен быть отзывчивым в первую очередь на мои действия

Всё это относится именно к рабочей станции - на серверах своя логика. Там вообще процесс выключения - это не штатная ситуации и аларм полный....
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: PrepareForShutdown

Сообщение Alexander » 21.09.2023 13:07:49

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

А при нажатии на кнопку уже происходят все те же вышеописанные действия, но не сразу, а быстро. Просто это именно быстрые действия, не заметишь, как эти сигналы обработаны. Этого нет только в Паскале, часть программ на Си их уже так или иначе обрабатывает и при нажатии на кнопку это всё успевает произойти. Линукс очень быстрая система. То есть оно устроено и работает именно так и странно не знать этого.
Данные же не должны теряться в любом случае, это главное. Не есть доблесть то, что компьютер выключится быстро, если он при этом потеряет данные.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 758
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: PrepareForShutdown

Сообщение Сквозняк » 21.09.2023 20:47:14

Alexander писал(а):Это всё полностью неверно. До тех пор, пока пользовательские программы не завершат корректно свою работу, система не может быть остановлена - они должны блокировать завершение работы системы на время сохранения своих данных.


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

Добавлено спустя 6 минут 8 секунд:
Alexander писал(а):systemd 183 и новее включают логику, запрещающую завершение работы системы и переходы в спящий режим. Это реализовано как часть systemd-logind.daemon(8). Для этого существует несколько различных вариантов использования:


Афигительно! Уже и уход в спячку портят. Быстрый уход в спячку нужен когда пропадает электричество, а заряд батареи в безперебойнике вот-вот кончится, и тогда комп вообще потухнет с потерей всех данных. А тут какая-то сволочь не даст и спячку врубить.
Сквозняк
энтузиаст
 
Сообщения: 1119
Зарегистрирован: 29.06.2006 22:08:32

Re: PrepareForShutdown

Сообщение Alexander » 22.09.2023 08:53:20

> Быстрый уход в спячку нужен когда пропадает электричество,

Это аварийный случай, а не штатный, я его тоже упомянул. Но да, такие ситуации рассматриваются и рассматриваются отдельно. Есть форсированный режим выключения и эту тему можно и нужно развивать. Но это развитие темы аварийного, форсированного способа выключения.

Касаемо самой описанной ситуации нужно изобретать свою систему питания ПК. Имеющаяся бесперебойная имеет низкий КПД (преобразование в 50 герц) и неэффективно использует аккумулятор. Тогда и при сбое питания не придётся прибегать к решениям с потерей данных, а выключать, но выключать штатно без форсажа. Это тяжело, но если напрячься всему радиолюбительству возможно.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 758
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: PrepareForShutdown

Сообщение Сквозняк » 22.09.2023 14:47:42

Alexander писал(а):Касаемо самой описанной ситуации нужно изобретать свою систему питания ПК. Имеющаяся бесперебойная имеет низкий КПД (преобразование в 50 герц) и неэффективно использует аккумулятор. Тогда и при сбое питания не придётся прибегать к решениям с потерей данных, а выключать, но выключать штатно без форсажа. Это тяжело, но если напрячься всему радиолюбительству возможно.


Это всё дорого. На практике может использоваться древнючий ИБП, который пережил уже несколько аккумуляторов - мелких свинцовых. Как ты им не улучшай КПД преобразования, амперчасов у них мало, особенно, если они уже деградировали, а это со свинцовыми происходит очень быстро. А электричество за городом могут отключать превентивно - где-то дождь пошёл и ветер подул чуть сильнее, а отключим мы электросеть, чтобы она не сломалась и потом её не чинить. Потому, быстрый уход в спячку, это почти штатный режим, может понадобиться в любой момент.
Сквозняк
энтузиаст
 
Сообщения: 1119
Зарегистрирован: 29.06.2006 22:08:32

Re: PrepareForShutdown

Сообщение Alexander » 26.09.2023 18:59:53

Вот, что я имел в виду. Есть две схемы реальная (низковольтная) и гипотетическая (добавлением в блок питания компьютера). Реальная успешно и эффективно прослужила годы и ещё исправна. Гипотетическую ещё надо придумать. Но если свет мигает по-крупному и реальная может быть уже полезна для маломощных устройств.
Высокий КПД конечно не прибавит многое, но в 2-4 раза может продлить работу.

Изображение
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 758
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Пред.

Вернуться в Free Pascal Compiler

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 1

Рейтинг@Mail.ru