Андрей Смирнов
Время чтения: ~18 мин.
Просмотров: 1

Какой приоритет в реальном времени является наивысшим приоритетом в linux

Определения приоритетов

Осталось обосновать определения приоритетов. Сделать это можно разными способами. Можно просто определить, никак не обосновывая. Можно и обосновать. Не претендуя на всеобщность я приведу один из подходов. Интересен он только тем, что его можно повторить для других специфических условий. Подход будет такой. Будем придумывать критерий, который позволит из общей массы запросов выделить те, которые требуют более пристального внимания. Потом из этих отобранных выбирать те, которые требуют ещё более пристального внимания. Ход мысли, надеюсь, понятен. А дальше из этих критериев и сделаем определения приоритетов. Чтобы определения были ясными, будем стараться каждый раз выбрать такой критерий, чтобы он был максимально простым и понятным.

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

Вернёмся к делению на приоритеты. Перво-наперво поделим все запросы на важные и неважные. Все неважные безжалостно закрываем.

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

Если Вам почему-то кажется, что все проблемы срочные и критичные, то просто попытайтесь письменно сформулировать, в чём важность и критичность каждой. Вот те, для которых не приходится натужно придумывать причину важности или брать нахрапом (сами что ли не понимаете, это же очень критично!), те и будут критичными

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

Вернёмся обратно к приоритетам

Нужно ли выделять в отдельный приоритет что-то ещё более важное? Да вроде бы уже и не нужно. Дальше только аврал

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

  • важные, но не критичные запросы (сюда по-умолчанию попадают все новые запросы);
  • срочные и критичные (требуется обоснование почему);
  • срочные и критичные, для которых нет обходного пути (тоже само собой с обоснованием).

Ну и конечно сверхприоритет:

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

Итого получилось четыре понятных приоритета. Формулировки определений на канцелярите (чтобы можно было взять в свой регламент и исправить по месту) см. в табличке выше.

Названия можно взять предложенные мной, а можно нейтральные числовые — первый (самый высокий), второй, третий и четвёртый. А то бывает, что у кого-то рука не поднимается открывать запросы с приоритетом, который называется «Низким». Я, например, привык пользоваться обоими.

Планирование потоков

Для того чтобы понимать, в каком порядке исполнять код различных потоков, необходима организация планирования тих потоков. Ведь система может иметь как одно ядро, так и несколько. Как иметь эмуляцию двух ядер на одном так и не иметь такой эмуляции. На каждом из ядер: железных или же эмулированных необходимо исполнять как один поток, так и несколько. В конце концов система может работать в режиме виртуализации: в облаке, в виртуальной машине, песочнице в рамках другой операционной системы. Поэтому мы в обязательном порядке рассмотрим планирование потоков Windows. Это — настолько важная часть материала по многопоточке, что без его понимания многопоточка не встанет на своё место в нашей голове никоим образом.

Итак, начнём. Организация планирования в операционной системе Windows является: гибридной. С одной стороны моделируются условия вытесняющей многозадачности, когда операционная система сама решает, когда и на основе каких условия вытеснить потоки. С другой стороны — кооперативной многозадачности, когда потоки сами решают, когда они всё сделали и можно переключаться на следующий (UMS планировщик). Режим вытесняющей многозадачности является приоритетным, т.к. решает, что будет исполняться на основе приоритетов. Почему так? Потому что у каждого потока есть свой приоритет и операционная система планирует к исполнению более приоритетные потоки. А вытесняющей потому, что если возникает более приоритетный поток, он вытесняет тот, который сейчас исполнялся. Однако во многих случаях это бы означало, что часть потоков никогда не доберется до исполнения. Поэтому в операционной системе есть много механик, позволяющих потокам, которым необходимо время на исполнение его получить несмотря на свой более низкий по сравнению с остальными, приоритет.

Уровни приоритета

Windows имеет 32 уровня приоритета (0-31)

  • 1 уровень (00 — 00) — это Zero Page Thread;
  • 15 уровней (01 — 15) — обычные динамические приоритеты;
  • 16 уровней (16 — 31) — реального времени.

Самый низкий приоритет имеет Zero Page Thread. Это — специальный поток операционной системы, который обнуляет страницы оперативной памяти, вычищая тем самым данные, которые там находились, но более не нужны, т.к. страница была освобождена. Необходимо это по одной простой причине: когда приложение освобождает память, оно может ненароком отдать кому-то чувствительные данные. Личные данные, пароли, что-то ещё. Поэтому как операционная система так и runtime языков программирования (а у нас — .NET CLR) обнуляют получаемые участки памяти. Если операционная система понимает, что заняться особо нечем: потоки либо стоят в блокировке в ожидании чего-либо либо нет потоков, которые исполняются, то она запускает самый низко приоритетный поток: поток обнуления памяти. Если она не доберется этим потоком до каких-либо участков, не страшно: их обнулят по требованию. Когда их запросят. Но если есть время, почему бы это не сделать заранее?

Продолжая говорить о том, что к нам не относится, стоит отметить приоритеты реального времени, которые когда-то давным-давно таковыми являлись, но быстро потеряли свой статус приоритетов реального времени и от этого статуса осталось лишь название. Другими словами, Real Time приоритеты на самом деле не являются таковыми. Они являются приоритетами с исключительно высоким значением приоритета. Т.е. если операционная система будет по какой-то причине повышать приоритет потока с приоритетом из динамической группы (об этом — позже, но, например, потому, что потоку освободили блокировку) и при этом значение до повышения было равно , то повысить приоритет операционная система не сможет: следующее значение равно , а оно — из диапазона реального времени. Туда повышать такими вот «твиками» нельзя.

Оптимизация пинга и частоты кадров

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

Таким образом, для оптимизации под игры системы Виндовс 10, очень важно показатель пинга понизить. Сделать это можно двумя способами

Изменение схемы электропитания

На большинстве устройств, работающих под Windows 10, по умолчанию установлен сбалансированный режим питания, способный обеспечить и наилучшее взаимодействие, и достаточное время работы от батареи.

Стандартные настройки электропитания

Однако некоторые геймеры утверждают, что такой режим питания негативно отражается на игровом процессе. Чтобы найти оптимальный для себя вариант, стоит попробовать внести некоторые изменения в настройки питания и протестировать другие возможные режимы.

Оптимизация Windows 10 для игр через параметры электропитания:

  1. Запустить «Пуск» и перейти в «Параметры».
  2. Открыть раздел «Система».
  3. Выбрать подраздел «Питание и спящий режим».
  4. Кликнуть на строку «Дополнительные параметры питания».
  5. Поставить отметку в графе «Высокая производительность».
  6. Перезагрузить устройство.

Совет! Активация режима высокой производительности предполагает повышение рабочих температур и соответствующий уровень потребления энергии, поэтому использовать его лучше только на ПК.

Удаление временных файлов

Данный способ универсален и позволяет снизить пинг и поднять фпс как на ноутбуках с Виндовс 10, так и на стационарных компьютерах. Более того, подобную очистку системы рекомендуется регулярно проводить всем владельцам техники, даже при отсутствии видимых проблем.

Алгоритм действий:

  1. Кликнуть ПКМ по ярлыку «Этот компьютер».
  2. Из контекстного меню выбрать пункт «Свойства».
  3. Перейти во вкладку «Общие» и выбрать опцию очистки диска.
  4. Поставить отметки в каждом пункте.
  5. Нажать на «ОК».
  6. Перезагрузить устройство.

Установка последней версии DirectX

DirectX представляет собой набор API и является необходимым элементом для корректной работы программ, приложений и игр под управлением Виндовс 10. Обновления для него выходят нечасто, но с каждым новым апдейтом DirectX становится всё более стабильным и многофункциональным, позволяя каждый раз выводить игровой процесс на совершенно новый уровень.

Чтобы проверить версию установленного инструмента, нужно:

  1. Комбинацией «Win» + «R» вызвать меню «Выполнить».
  2. Ввести команду «dxdiag».
  3. Во вкладке «Система» найти строку «Версия DirectX».

Определение версии DirectX

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

Конкурс хаков: запускаем процессы с заранее заданным приоритетом

Поздравляем участника конкурса

Этот текст был прислан на конкурс авторов, который мы запустили весной. Мы разобрались с большим количеством пришедших материалов, подвели итоги и наградили победителей. Автор этой заметки получил приз — трехмесячную подписку на «Хакер». Поздравляем!

Для начала выбираем программу или игру, которой хотим задать приоритет. Возьмем, например, браузер Google Chrome. Жмем правой клавишей мыши на ярлык Chrome и в контекстном меню выбираем расположение файла.

Xakep #247. Мобильная антислежка

Не забудь указать «Показывать расширения файлов». Для этого в «Проводнике» выбирай «Упорядочить → Параметры папок → Вид» и снимай галочку «Скрывать расширения для зарегистрированных типов файлов», жми «Применить» и «OK».

Теперь копируем название chrome.exe , кликнув два раза по названию, и жмем Ctrl + C или выбираем в контекстном меню «Копировать».

Идем в реестр, для этого жмем Win + R и пишем regedit .

Жмем Enter, откроется редактор реестра.

Переходим по пути HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options . Жмем правой клавишей мыши по разделу «Image File Execution Options» и в контекстном меню выбираем «Создать» и «Раздел».

Называем новый раздел chrome.exe .

Если не выходит переименовать раздел и он назвался «Новый раздел #1», то кликаем на нем правой клавишей мыши и в контекстном меню выбираем «Переименовать».

В этом же разделе создаем еще один раздел. Назовем его PerfOptions и создадим в нем параметр DWORD (32 бита). Для этого жмем правой кнопкой мыши по разделу PerfOptions и в контекстном меню выбираем «Создать → Параметр DWORD (32 бита)».

Задаем систему исчисления «Десятичная» и в значении указываем приоритет в виде цифры — например, 3. Жмем ОK.

  • 1 — приоритет Idle (низкий)
  • 5 — приоритет BelowNormal (ниже среднего)
  • 8 — приоритет Normal (средний)
  • 6 — приоритет AboveNormal (выше среднего)
  • 3 — приоритет High (высокий)

Закрываем реестр, запускаем браузер и диспетчер задач (Ctrl + Shift + Esc, Ctrl + Alt + Delete или правой клавишей мыши на панели задач и «Запустить диспетчер задач» в контекстном меню). В диспетчере задач переходим на вкладку «Процессы» и ищем процесс chrome.exe . Жмем по нему правой клавишей мыши и в контекстном меню выбираем «Приоритет», чтобы проверить, установился ли тот приоритет, который ты задавал.

Таким образом можно оптимизировать процессы, задав высокий приоритет программам, которыми ты пользуешься больше всего, а низкий — программам, которые тебе не важны.

Конкурс продолжается

Мы решили продлить конкурс и превратить его в постоянную акцию. Прислав нам описание хака, полезный совет или описание клевой неизвестной проги, ты по-прежнему можешь получить подписку на месяц, три месяца или, если постараешься, на год. Следуй рекомендациям и присылай свой текст!

Послесловие

Вот такая вот штука. Вообще мне программа очень понравилась, т.к она реально эффективна и позволяет ускорить компьютер и Windows, и, условно говоря, процессор.

К слову, по идее особенно сильно прирост ощутят владельцы многоядерных процессоров, а так же пользователи браузера FireFox (он процессорозависим и при получении Realtime приоритета начинает ощутимо шустрее летать (особенно в купе с этими настройками)) и всех кто как-то связан с процессорозависимыми полновесными приложениями (это я про всякие рендеры в фото, видео и 3D редакторах).

PS: Отзывы о личных ощущениях в плане прироста производительности интересны ничуть не меньше чем вопросы 😉

Что такое приоритеты и для чего они нужны?

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

Приоритет подразумевает определённую задачу, аспект либо объект, имеющий преимущество перед другими, несущий главное значение. Он всегда стоит на первом месте при перечислении планов и желаний. Осознавая собственные приоритеты, умея ими управлять, можно научиться рационально использовать время, силы и энергию, не растрачиваясь по мелочам.

Люди часто разрываются между несущественными задачами, которые мешают им делать что-то важное и нужное. Умение расставлять приоритеты похоже на талант

Если оно не передалось с рождения, его следует прививать с детства. В противном случае человек рискует не добиться больших высот, будет всю жизнь топтаться на одном месте.

Как изменить приоритет процесса в Windows 10


  admininfo.info  April/2020

При работе с операционными системами Windows одним из его основных компонентов являются процессы, и, как правило, вся операционная система основывает свою работу на правильном выполнении процессов, которые в ней активны. Эти процессы в основном соответствуют приложениям, которые мы часто запускаем как пользователи, но, кроме того, существует также ряд процессов операционной системы, которые отвечают за оптимальную работу Windows в целом.

Важно помнить, что операционная система сама распределяет ресурсы, которые будут предоставлены процессу с учетом его приоритета, таким образом, чем выше уровень приоритета, тем больше ресурсов будет выделено выбранному процессу. В средах Windows 10 мы находим следующие приоритеты, доступные для процессов

В средах Windows 10 мы находим следующие приоритеты, доступные для процессов

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

Как пользователи, мы имеем возможность временно изменить приоритет процесса, чтобы ускорить или замедлить работу приложения и заставить его потреблять меньше ресурсов операционной системы. При выполнении этого процесса этот новый уровень приоритета, примененный к процессу, будет действовать до его завершения, поэтому, как только мы его закроем, в следующий раз он откроется с уровнем приоритета по умолчанию (Обычный), если приложение не имеет Настройки для автоматического изменения приоритета.

Некоторые приложения могут автоматически настраивать свой приоритет для ускорения процесса архивирования, поэтому желательно не редактировать этот приоритет, чтобы не видеть никаких последствий для приложения

Важно помнить, что уровень приоритета в реальном времени не должен устанавливаться нами, так как это может вызвать нестабильность операционной системы, поскольку приложение, работающее с таким уровнем приоритета, может потреблять 100% Процессор и перехватывает ввод с клавиатуры и мыши, делая компьютер непригодным для использования и подверженным обычным задачам

Теперь Solvetic объяснит, как изменить приоритет процесса в Windows 10.

Доступ к диспетчеру задач

Для этого мы должны получить доступ к диспетчеру задач, используя один из следующих параметров:

Используя комбинацию клавиш Ctrl + Alt + Delete и в появившемся списке выберите Task Manager

Щелкните правой кнопкой мыши на панели задач Windows 10 и в появившихся параметрах выберите «Диспетчер задач».

Используйте комбинацию клавиш + X или щелкните правой кнопкой мыши меню «Пуск» и выберите «Диспетчер задач».

В появившемся окне мы перейдем на вкладку Details и увидим следующее:

1. Отредактируйте приоритет процесса Windows 10

Для этого мы выберем процесс, который нужно отредактировать, щелкнем по нему правой кнопкой мыши и нажмем строку «Установить приоритет», и там мы увидим различные доступные опции:

При выборе нового приоритета мы увидим следующее:

Там мы нажимаем кнопку «Изменить приоритет», и теперь мы видим, что приоритет этого процесса был изменен:

2. Запустите приложение с определенным приоритетом Windows 10

Windows 10 предлагает нам возможность автоматически запускать приложение с определенным уровнем приоритета, и для этого мы получаем доступ к командной строке и выполняем следующий синтаксис: запустите «» / AboveNormal «C: \ Windows \ System32 \ (App) .exe»

Мы можем проверить в диспетчере задач, что открытое приложение имеет выбранный приоритет:

Там мы можем выбрать один из установленных уровней приоритета.

3. Изменить уровень приоритета приложения с помощью wmic Windows 10

Утилита командной строки WMI (WMIC) предоставляет интерфейс командной строки для WMI. WMIC совместим с существующими оболочками и служебными командами, с помощью которых мы можем вносить изменения в приоритет процесса.

Чтобы использовать его, мы снова получим доступ к командной строке и выполним следующий синтаксис:

wmic process, где name = «Имя процесса», установить приоритет «Уровень приоритета» Там мы введем имя процесса и в поле уровня приоритета будем использовать одно из следующих значений:

В реальном времени

256 высокая

128 Выше нормы

32768 нормальный

32 Ниже нормального

16384 низкий

64 Например, вы можете выполнить следующее: wmic process, где name = «notepad.exe» вызов setpriority 32768

Там уровни приоритета будут редактироваться в зависимости от количества открытых приложений. Этими простыми методами мы можем редактировать уровни приоритета процесса в Windows 10, но мы можем применять его в предыдущих версиях Windows.

учебные пособия

Как расставить приоритеты в жизни

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

Почему же на работе, в быту, на отдыхе мы стремимся выполнить второстепенные задачи, а главные цели откладываем на потом? Так работает наш мозг. Он подсказывает путь наименьшего сопротивления. Малозначимые дела обычно и усилий требуют немного. А вот удовлетворение от их выполнения велико. Вот и получается, что быстро выполняем то одно дело, то другое и параллельно хвалим себя. Но потом выясняется, что главное дело так и осталось невыполненным, а сил и времени на него уже нет. Все самоудовлетворение от выполненных задач сходит на нет.

Что же важно оценивать, чтобы расставить приоритеты в жизни:

важность – неважность;
срочность – несрочность;
главное – второстепенное;
быстрый и короткий результат – перспективы, отсроченный результат и выгода.

Также предстоит научиться отделять важное от срочного. Для этого срочные дела нужно обязательно проверять на важность

Как это сделать:

  1. К любому делу задайте вопрос: «Что будет, если я этого не сделаю?»
  2. Оцените значимость последствий. Где они серьезней для вас (хуже, опаснее), то дело и важнее, то есть приоритетнее.

Ценности личности – это значимые для человека вещи. У каждого человека своя система ценностей. А соответственно и приоритеты в жизни будут разные. Кто-то на первое место ставит семью, а кто-то работу; кто-то здоровье, а кто-то опасные развлечения; кто-то погоню за мечтой, а кто-то стабильную работу. Проблема ценностей тянет на отдельную статью, и об этом мы еще обязательно поговорим. А пока могу порекомендовать самостоятельно разобраться в своих ценностях или воспользоваться диагностическим тестом из опросника Рокича или Шварца.

Как и на работе, в жизни должна быть главная цель и второстепенные. Второстепенные цели строятся вокруг главной. Главная жизненная идея (месседж) определяет характер ваших взаимоотношений с другими людьми. Так, если вы женщина и хотите самореализоваться как женщина (в классическом понимании этой роли), то большее внимания уделите построению семейной жизни.

Проанализируйте, как вы провели последний месяц жизни. Вас устраивает такой результат? Вы довольны тем, как складывается ваша жизнь в сфере карьеры, отношений, работы, здоровья, финансов, личностного развития. Если нет, то почему и что вас тревожит. Те сферы, в которых вы не получаете удовлетворения и которые беспокоят вас, и нужно сделать приоритетом.

Примеры расстановки приоритетов в жизни человека

Приведенные ниже примеры весьма условны, поскольку не учитывают индивидуальных особенностей человека. Но для начала можно ориентироваться и на них, а понимание, что нужно именно вам, придет постепенно.

Для мужчины

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

  1. Работа и профессия, деньги, доход.
  2. Семья и дети, близкие, родители.
  3. Хобби и общение.
  4. Имидж.
  5. Здоровье.

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

Для женщины

У большинства женщин принципы иные. Исторически эволюция сделала их хранительницами очага, а потому нет ничего удивительного в том, что дамы часто ставят на первое место семью и детей. Только тогда, когда в жизни отсутствует гармония, эта сфера женщиной смещается ниже. Пример — женщине приходится «тянуть» семью, одной растить детей. Даже в этом случае все делается ради семьи, и она — главное. Но порой происходит замена по «мужскому типу», когда выходит в приоритеты работа. Но это обычно редкость.

Приоритеты женщины в среднем обычно выглядят так.

  1. Семья, близкие, дети, отношения.
  2. Имидж.
  3. Здоровье.
  4. Работа, реализация в профессии, социуме.
  5. Все остальное.

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

Для подростка

Когда ребенок переходит в категорию подростков, для него вопрос расстановки приоритетов имеет важнейшее значение. Современная молодежь часто страдает от отсутствия четких целей вовсе не потому, что не умеет их ставить, а потому, что не может определиться, что важнее. В целом, возрастная психология диктует такую усредненную модель.

  • Отношения в социуме, общение.
  • Имидж.
  • Обучение и выбор профессиональных ориентиров.
  • Хобби.
  • Семья и родители.
  • Другие ценности.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации