Фрагментация памяти. Часть 2: Разрозненные свободные блоки - внешняя фрагментация памяти. Описание (к рисунку из предыдущего поста)
Пусть у нас есть куча блоков памяти, некоторые из которых используются, некоторые свободны, и процесс размером 50 КБ, который нужно где-то разместить. Проблема здесь в том, как разместить этот процесс размером 50 КБ в этой разбросанной памяти.
Обратите внимание на свободные блоки: 10 КБ, 5 КБ, 15 КБ, 5 КБ, 10 КБ и 5 КБ. Если их сложить, то получится 50 КБ свободного места. Похоже, что это достаточно для процесса с потребностью в 50 КБ
Но эти свободные блоки не находятся в одном непрерывном куске. Они разбросаны, разделены выделенной памятью.
Вот как выглядит внешняя фрагментация: достаточно общего пространства, но не в едином куске, достаточно большом для использования. Самый большой свободный блок — 15 КБ, что слишком мало для 50 КБ.
Этот тип фрагментации происходит в системах динамической памяти, где процессы приходят и уходят. По мере того, как память выделяется и освобождается, вы в конечном итоге получаете эти небольшие, разбросанные свободные пространства.
Это как куча маленьких пустых мест на парковке — места в целом предостаточно, но ни одного достаточно большого для большого грузовика.
На схеме показано, как эти промежутки (10 КБ, 5 КБ, 15 КБ и т. д.) не могут быть объединены для размещения процесса объемом 50 КБ, в результате чего он не может быть запущен, даже если технически имеется достаточно свободной памяти.
Один из способов исправить это — сжатие, когда вы перемещаете всю выделенную память вместе, чтобы создать больший свободный блок. Но это требует времени и ресурсов, и не все системы могут это сделать.
Другой подход заключается в использовании более эффективных стратегий распределения, таких как «наилучшее соответствие» (best-fit) или «первое соответствие» (first-fit), чтобы уменьшить частоту возникновения подобных ситуаций.
Пусть у нас есть куча блоков памяти, некоторые из которых используются, некоторые свободны, и процесс размером 50 КБ, который нужно где-то разместить. Проблема здесь в том, как разместить этот процесс размером 50 КБ в этой разбросанной памяти.
Обратите внимание на свободные блоки: 10 КБ, 5 КБ, 15 КБ, 5 КБ, 10 КБ и 5 КБ. Если их сложить, то получится 50 КБ свободного места. Похоже, что это достаточно для процесса с потребностью в 50 КБ
Но эти свободные блоки не находятся в одном непрерывном куске. Они разбросаны, разделены выделенной памятью.
Вот как выглядит внешняя фрагментация: достаточно общего пространства, но не в едином куске, достаточно большом для использования. Самый большой свободный блок — 15 КБ, что слишком мало для 50 КБ.
Этот тип фрагментации происходит в системах динамической памяти, где процессы приходят и уходят. По мере того, как память выделяется и освобождается, вы в конечном итоге получаете эти небольшие, разбросанные свободные пространства.
Это как куча маленьких пустых мест на парковке — места в целом предостаточно, но ни одного достаточно большого для большого грузовика.
На схеме показано, как эти промежутки (10 КБ, 5 КБ, 15 КБ и т. д.) не могут быть объединены для размещения процесса объемом 50 КБ, в результате чего он не может быть запущен, даже если технически имеется достаточно свободной памяти.
Один из способов исправить это — сжатие, когда вы перемещаете всю выделенную память вместе, чтобы создать больший свободный блок. Но это требует времени и ресурсов, и не все системы могут это сделать.
Другой подход заключается в использовании более эффективных стратегий распределения, таких как «наилучшее соответствие» (best-fit) или «первое соответствие» (first-fit), чтобы уменьшить частоту возникновения подобных ситуаций.
👍6🥰1👏1🍌1
Добавлена статья про Классы хранения (Storage class) в языке программирования Си
https://metanit.com/c/tutorial/4.8.php
#c_ansi
https://metanit.com/c/tutorial/4.8.php
#c_ansi
🔥19👍4❤2👏1🖕1
Microsoft выпустила скрипт на PowerShell, который создаёт папку «C:\inetpub», если она была удалена в Windows 11
Microsoft выпустила скрипт на PowerShell под названием Set-InetpubFolderAcl, который создаёт папку «C:\inetpub», если она была удалена в Windows 11. Это необходимо, даже если в системе нет Internet Information Services (IIS), причём но эту папку не нужно удалять из-за соображений безопасности.
Как объяснили в компании, скрипт установит правильные разрешения IIS для предотвращения несанкционированного доступа и потенциальных уязвимостей, связанных с CVE-2025-21204. Эта уязвимость связана с неправильной отработкой разрешения ссылок в стеке обновлений Windows. Это, вероятно, означает, что Центр обновления Windows может следовать символическим ссылкам на непропатченых устройствах (например, без обновления KB5055523) таким образом, что может позволить локальным злоумышленникам обмануть ОС, чтобы получить доступ или изменить непреднамеренные файлы или папки. Microsoft утверждает, что успешная эксплуатация позволяет злоумышленникам с низкими привилегиями повышать свои разрешения в системе и манипулировать или выполнять операции по управлению файлами в контексте учётной записи NT AUTHORITY\SYSTEM.
https://www.bleepingcomputer.com/news/microsoft/microsoft-shares-noscript-to-restore-inetpub-folder-you-shouldnt-delete/
Microsoft выпустила скрипт на PowerShell под названием Set-InetpubFolderAcl, который создаёт папку «C:\inetpub», если она была удалена в Windows 11. Это необходимо, даже если в системе нет Internet Information Services (IIS), причём но эту папку не нужно удалять из-за соображений безопасности.
Как объяснили в компании, скрипт установит правильные разрешения IIS для предотвращения несанкционированного доступа и потенциальных уязвимостей, связанных с CVE-2025-21204. Эта уязвимость связана с неправильной отработкой разрешения ссылок в стеке обновлений Windows. Это, вероятно, означает, что Центр обновления Windows может следовать символическим ссылкам на непропатченых устройствах (например, без обновления KB5055523) таким образом, что может позволить локальным злоумышленникам обмануть ОС, чтобы получить доступ или изменить непреднамеренные файлы или папки. Microsoft утверждает, что успешная эксплуатация позволяет злоумышленникам с низкими привилегиями повышать свои разрешения в системе и манипулировать или выполнять операции по управлению файлами в контексте учётной записи NT AUTHORITY\SYSTEM.
https://www.bleepingcomputer.com/news/microsoft/microsoft-shares-noscript-to-restore-inetpub-folder-you-shouldnt-delete/
BleepingComputer
Microsoft shares noscript to restore inetpub folder you shouldn’t delete
Microsoft has released a PowerShell noscript to help restore an empty 'inetpub' folder created by the April 2025 Windows security updates if deleted. As Microsoft previously warned, this folder helps mitigate a high-severity Windows Process Activation privilege…
🤣4
Рабочие специальности, которые сейчас наиболее востребованы, сократили зарплатный разрыв с IT-сферой. Об этом сообщил генеральный директор "Хэдхантер" Дмитрий Сергиенков.
Зарплаты там растут быстрее, чем в IT, скажем. В IT по-прежнему держится высокий уровень почти везде. Но рабочие специальности уже этот разрыв с IT довольно сильно сократили", - сказал он.
Также на уровень IT-сферы вышли зарплаты курьеров и водителей.
https://tass.ru/ekonomika/24164909
К слову, из вчерашнего резюме ЦБ касательно решения по ключевой ставке:
"Есть тенденция к сокращению числа вакансий и уменьшению зарплатных предложений в наиболее перегретых сегментах — например, в сфере IT."
Не удивлюсь, если в ближайщее время зарплаты в ИТ не только перестанут расти, но даже начнут сокращаться вслед за занятостью в этой сфере
Зарплаты там растут быстрее, чем в IT, скажем. В IT по-прежнему держится высокий уровень почти везде. Но рабочие специальности уже этот разрыв с IT довольно сильно сократили", - сказал он.
Также на уровень IT-сферы вышли зарплаты курьеров и водителей.
https://tass.ru/ekonomika/24164909
К слову, из вчерашнего резюме ЦБ касательно решения по ключевой ставке:
"Есть тенденция к сокращению числа вакансий и уменьшению зарплатных предложений в наиболее перегретых сегментах — например, в сфере IT."
Не удивлюсь, если в ближайщее время зарплаты в ИТ не только перестанут расти, но даже начнут сокращаться вслед за занятостью в этой сфере
TACC
Директор HeadHunter: рабочие специальности сократили зарплатный разрыв с IT-сферой
Дмитрий Сергиенков отметил, что зарплаты на уровень IT-сферы приблизились у курьеров и водителей
👌3👻3❤2👍2👎2😁2👀1💊1
This media is not supported in your browser
VIEW IN TELEGRAM
Сундар Пичаи, глава компании Google, заявил, что программистам не нужно бояться, что ИИ отберет у них работу. В качестве примера он привел свою компанию - Google: сейчас в Google 30% пишется ИИ, что увеличило скорость работы программистов на 10%. Но тем Google продолжает нанимать программистов, так как внедрение ИИ увеличивает возможности разработчиков и количество вещей, которые они могут сделать, расширяет диапазон проектов и соответственно ведет к большей потребности в разработчиках.
💯38👍5👏5🤡2🍌2🔥1🤮1
Руководство по выбору паттерна проектирования (текстовое описание к предыдущему посту)
Чтобы выбрать паттерн, сначала необходимо идентификацировать проблему. Если проблема связана с:
🔸 Созданием объектов? → Порождающие паттерны
🔸 Сборкой объектов? → Структурные паттерны
🔸 Взаимодействием объектов? → Поведенческие паттерны
𝟭. Порождающие паттерны
🔹 Singleton: Используйте, когда нужен один экземпляр класса. Некоторые примеры — это логирование и соединения с базой данных.
🔹 Фабричный метод: Отделите создание объекта от использования. Например, вы создаете различные типы подключений к базе данных на основе конфигурации.
🔹 Абстрактная фабрика: Создание семейств связанных объектов. Например, я создаю парсеры для разных форматов файлов.
🔹 Строитель: Построение сложных объектов шаг за шагом. Например, если вам нужно создать сложный доменный объект.
🔹 Прототип: создание дубликатов объектов и повторное использование кэшированных объектов для сокращения обращений к базе данных.
𝟮. Структурные паттерны
🔹 Адаптер: делает несовместимые интерфейсы совместимыми. Например, он интегрирует новую библиотеку журналирования в существующую систему, которая ожидает другой интерфейс.
🔹 Компоновщик: представляет иерархии часть-целое. Например, графические объекты в приложении для рисования могут быть сгруппированы и обработаны единообразно
🔹 Прокси: Управление доступом к объектам. Например, ленивая загрузка изображения высокого разрешения в веб-приложении.
🔹 Декоратор: Динамически добавлять/удалять поведение. Например, мы реализуем сжатие или шифрование поверх потоков файлов.
🔹 Мост: Отделите абстракцию от реализации. Например, я отделяю платформенно-зависимый код от базовой логики.
𝟯. Поведенческие паттерны
🔹 Стратегия: Определяет семейство алгоритмов. Эти алгоритмы позволяют пользователям выбирать из различных алгоритмов сортировки или сжатия.
🔹 Наблюдатель: Поддерживайте единообразное состояние, получая уведомления об изменениях и, например, уведомляя подписчиков о событиях в системе обмена сообщениями.
🔹 Команда: Инкапсулировать запрос как объект. Например, я реализую функциональность отмены/повтора в текстовом или графическом редакторе.
🔹 Состояние: инкапсулировать поведение, специфичное для состояния. Например, мы обрабатываем различные состояния элемента пользовательского интерфейса (например, включено, отключено, выбрано).
🔹 Шаблонный метод: определение скелета работающего алгоритма с передачей некоторых шагов подклассам и реализацией базового класса для модульного тестирования с настраиваемыми шагами настройки и демонтажа.
Чтобы выбрать паттерн, сначала необходимо идентификацировать проблему. Если проблема связана с:
🔸 Созданием объектов? → Порождающие паттерны
🔸 Сборкой объектов? → Структурные паттерны
🔸 Взаимодействием объектов? → Поведенческие паттерны
𝟭. Порождающие паттерны
🔹 Singleton: Используйте, когда нужен один экземпляр класса. Некоторые примеры — это логирование и соединения с базой данных.
🔹 Фабричный метод: Отделите создание объекта от использования. Например, вы создаете различные типы подключений к базе данных на основе конфигурации.
🔹 Абстрактная фабрика: Создание семейств связанных объектов. Например, я создаю парсеры для разных форматов файлов.
🔹 Строитель: Построение сложных объектов шаг за шагом. Например, если вам нужно создать сложный доменный объект.
🔹 Прототип: создание дубликатов объектов и повторное использование кэшированных объектов для сокращения обращений к базе данных.
𝟮. Структурные паттерны
🔹 Адаптер: делает несовместимые интерфейсы совместимыми. Например, он интегрирует новую библиотеку журналирования в существующую систему, которая ожидает другой интерфейс.
🔹 Компоновщик: представляет иерархии часть-целое. Например, графические объекты в приложении для рисования могут быть сгруппированы и обработаны единообразно
🔹 Прокси: Управление доступом к объектам. Например, ленивая загрузка изображения высокого разрешения в веб-приложении.
🔹 Декоратор: Динамически добавлять/удалять поведение. Например, мы реализуем сжатие или шифрование поверх потоков файлов.
🔹 Мост: Отделите абстракцию от реализации. Например, я отделяю платформенно-зависимый код от базовой логики.
𝟯. Поведенческие паттерны
🔹 Стратегия: Определяет семейство алгоритмов. Эти алгоритмы позволяют пользователям выбирать из различных алгоритмов сортировки или сжатия.
🔹 Наблюдатель: Поддерживайте единообразное состояние, получая уведомления об изменениях и, например, уведомляя подписчиков о событиях в системе обмена сообщениями.
🔹 Команда: Инкапсулировать запрос как объект. Например, я реализую функциональность отмены/повтора в текстовом или графическом редакторе.
🔹 Состояние: инкапсулировать поведение, специфичное для состояния. Например, мы обрабатываем различные состояния элемента пользовательского интерфейса (например, включено, отключено, выбрано).
🔹 Шаблонный метод: определение скелета работающего алгоритма с передачей некоторых шагов подклассам и реализацией базового класса для модульного тестирования с настраиваемыми шагами настройки и демонтажа.
❤13🔥8👏4👍1
Добавлено сравнение определения и использования Указателей в языках программирования
https://metanit.com/common/langs/2.23.php
https://metanit.com/common/langs/2.23.php
👍9🔥5🥰3😡1
Что такое MQTT? (описание к предыдущему посту)
MQTT (изначально "Message Queueing Telemetry Transport") — это легкий протокол обмена сообщениями типа "публикация-подписка".
Он предназначен для быстрой, эффективной и надежной связи между устройствами, особенно в средах с ограниченной пропускной способностью и высокой задержкой.
MQTT использует брокер для маршрутизации сообщений от издателей (устройств, отправляющих данные) к подписчикам (устройствам или приложениям, заинтересованным в этих данных) без необходимости знать друг о друге.
Издатель публикует сообщения в тему, а подписчик подписывается на эту тему. Брокер гарантирует доставку сообщений в соответствии с выбранным уровнем качества обслуживания (QoS).
Немного истории
Изобретен в 1999 году Энди Стэнфорд-Кларком (IBM) и Арленом Ниппером (Arcom) для мониторинга нефтепроводов по ненадежным спутниковым каналам связи.
Основная цель => минимальное использование полосы пропускания и расход заряда батареи.
=> IBM выпустила MQTT 3.1 как открытый протокол в 2010 году
=> Стандартизировано OASIS в 2013 г.
=> MQTT 5 выпущен в 2019 г.
Сегодня MQTT является фактическим стандартом обмена сообщениями в Интернете вещей и широко используется в различных отраслях.
Реальный пример использования:
Умная домашняя автоматизация
=> Умный термостат публикует данные о температуре на брокере MQTT.
=> Умные системы освещения или HVAC подписываются на эти данные и автоматически регулируют настройки.
=> Владельцы домов могут управлять и контролировать все устройства с помощью одного приложения.
MQTT (изначально "Message Queueing Telemetry Transport") — это легкий протокол обмена сообщениями типа "публикация-подписка".
Он предназначен для быстрой, эффективной и надежной связи между устройствами, особенно в средах с ограниченной пропускной способностью и высокой задержкой.
MQTT использует брокер для маршрутизации сообщений от издателей (устройств, отправляющих данные) к подписчикам (устройствам или приложениям, заинтересованным в этих данных) без необходимости знать друг о друге.
Издатель публикует сообщения в тему, а подписчик подписывается на эту тему. Брокер гарантирует доставку сообщений в соответствии с выбранным уровнем качества обслуживания (QoS).
Немного истории
Изобретен в 1999 году Энди Стэнфорд-Кларком (IBM) и Арленом Ниппером (Arcom) для мониторинга нефтепроводов по ненадежным спутниковым каналам связи.
Основная цель => минимальное использование полосы пропускания и расход заряда батареи.
=> IBM выпустила MQTT 3.1 как открытый протокол в 2010 году
=> Стандартизировано OASIS в 2013 г.
=> MQTT 5 выпущен в 2019 г.
Сегодня MQTT является фактическим стандартом обмена сообщениями в Интернете вещей и широко используется в различных отраслях.
Реальный пример использования:
Умная домашняя автоматизация
=> Умный термостат публикует данные о температуре на брокере MQTT.
=> Умные системы освещения или HVAC подписываются на эти данные и автоматически регулируют настройки.
=> Владельцы домов могут управлять и контролировать все устройства с помощью одного приложения.
❤8🔥3👏2
Зарплаты выпускников-айтишников лидера рейтинга вузов превысили ₽300 тыс...
Superjob назвал вузы с самой высокой зарплатой выпускников-айтишников
Первое место в рейтинге снова занял Московский физико-технический институт (МФТИ). У выпускников-айтишников этого вуза за год зарплата увеличилась на 30 тыс. и в среднем уже составляет 330 тыс. руб.
Рейтинг выглядит следующим образом
1) Московский физико-технический институт (МФТИ) — 330 тыс. руб.
2) Московский государственный университет (МГУ) — 290 тыс. руб.
3) Университет ИТМО — 290 тыс. руб.
4) Московский государственный технический университет им. Н.Э.Баумана, Национальный исследовательский ядерный университет «МИФИ», Высшая школа экономики — 280 тыс. руб.
5) Санкт-Петербургский государственный университет — 270 тыс. руб.
6) Университет Иннополис — 250 тыс. руб.
7) Национальный исследовательский университет «МЭИ», Московский авиационный институт (МАИ), «СТАНКИН» — 240 тыс. руб.
8) Казанский федеральный университет (КФУ), МИСИС, Новосибирский национальный исследовательский государственный университет — 230 тыс. руб.
9) Санкт-Петербургский политехнический университет Петра Великого — 220 тыс. руб.
10) Санкт-Петербургский государственный электротехнический университет «ЛЭТИ», Новосибирский государственный технический университет — 190 тыс. руб.
11) Национальный исследовательский Нижегородский государственный университет, Национальный исследовательский Томский политехнический университет, НИУ «Московский институт электронной техники», Санкт-Петербургский госуниверситет телекоммуникаций, Уральский федеральный университет — 180 тыс. руб.
https://www.rbc.ru/society/09/06/2025/6842e28d9a7947b2ca8a2f2a?from=newsfeed
Superjob назвал вузы с самой высокой зарплатой выпускников-айтишников
Первое место в рейтинге снова занял Московский физико-технический институт (МФТИ). У выпускников-айтишников этого вуза за год зарплата увеличилась на 30 тыс. и в среднем уже составляет 330 тыс. руб.
Рейтинг выглядит следующим образом
1) Московский физико-технический институт (МФТИ) — 330 тыс. руб.
2) Московский государственный университет (МГУ) — 290 тыс. руб.
3) Университет ИТМО — 290 тыс. руб.
4) Московский государственный технический университет им. Н.Э.Баумана, Национальный исследовательский ядерный университет «МИФИ», Высшая школа экономики — 280 тыс. руб.
5) Санкт-Петербургский государственный университет — 270 тыс. руб.
6) Университет Иннополис — 250 тыс. руб.
7) Национальный исследовательский университет «МЭИ», Московский авиационный институт (МАИ), «СТАНКИН» — 240 тыс. руб.
8) Казанский федеральный университет (КФУ), МИСИС, Новосибирский национальный исследовательский государственный университет — 230 тыс. руб.
9) Санкт-Петербургский политехнический университет Петра Великого — 220 тыс. руб.
10) Санкт-Петербургский государственный электротехнический университет «ЛЭТИ», Новосибирский государственный технический университет — 190 тыс. руб.
11) Национальный исследовательский Нижегородский государственный университет, Национальный исследовательский Томский политехнический университет, НИУ «Московский институт электронной техники», Санкт-Петербургский госуниверситет телекоммуникаций, Уральский федеральный университет — 180 тыс. руб.
https://www.rbc.ru/society/09/06/2025/6842e28d9a7947b2ca8a2f2a?from=newsfeed
РБК
Зарплаты выпускников-айтишников лидера рейтинга вузов превысили ₽300 тыс.
МГУ вернул себе второе место в рейтинге SuperJob по зарплатам айтишников, первое сохранил МФТИ. Средние зарплаты у выпускников первой пятерки за год выросли и составили от 250 тыс. до 330 тыс. руб. в
🤡28❤6😁6👍1😢1🏆1
Национальный мессенджер Max от компании VK, который Минцифры рассматривает для интеграции с "Госуслугами", будет представлен летом, рассказал глава ведомства Максут Шадаев в ходе заседания Комитета Госдумы по информполитике, технологиям и связи, а осенью в мессенджер планируют добавить функционал для ведения каналов. Это, по его словам, позволит ему сравниваться по функциональности с Telegram. Шадаев также отметил, что в приложении нельзя будет зарегистрироваться по виртуальным, подменным номерам.
https://www.kommersant.ru/doc/7794709
Не удивлюсь, если после выхода нового мессенджера начнется агитация по переходу на него, а еще через годик начнется замедление Телеграмма...
https://www.kommersant.ru/doc/7794709
Не удивлюсь, если после выхода нового мессенджера начнется агитация по переходу на него, а еще через годик начнется замедление Телеграмма...
Коммерсантъ
Презентация мессенджера Max пройдет летом 2025 года
Подробнее на сайте
👎28🤡20💩9👍1🤮1
От создателя языка Zig:
"The idea of private fields and getter/setter methods was popularized by Java, but it is an anti-pattern."
("Идея приватных полей и методов getter/setter, популяризованная Java, - это антипаттерн")
https://github.com/ziglang/zig/issues/9909#issuecomment-942686366
"The idea of private fields and getter/setter methods was popularized by Java, but it is an anti-pattern."
("Идея приватных полей и методов getter/setter, популяризованная Java, - это антипаттерн")
https://github.com/ziglang/zig/issues/9909#issuecomment-942686366
GitHub
Proposal: Private Fields · Issue #9909 · ziglang/zig
Introduction Currently, function and variable declarations are private by default and are made externally visible with the pub modifier. However, data fields are always public and there is no way t...
😁24🤔6👎4🔥1