Что такое системное программирование
Перейти к содержимому

Что такое системное программирование

Что такое системное программирование

Евдокимов А.А., Майстренко Н.В., Майстренко А.В.

1. ВВЕДЕНИЕ

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

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

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

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

При проектировании и разработке операционных систем для них могут задавать различные структуры. Самыми распространенными структурами операционных систем являются: представление системы в виде целого и неделимого объекта — «монолита», представление системы в виде некоторого множества взаимосвязанных уровней, представление системы с использованием клиент-серверной архитектуры, представление системы в виде виртуальной машины, в виде микроядра или экзоядра.

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

В разделе «Программирование в Windows» рассматриваются уровни программирования в последних версиях операционной системы Windows; описывается набор основных системных вызовов Win32 API, доступных разработчикам; рассматривается организация и назначение системного реестра; подробно описывается структура операционной системы Windows; рассматривается вопрос реализации диспетчера объектов; рассматриваются подсистемы и службы пользовательского режима. Кроме этого, рассмотрен также вопрос загрузки операционной системы Windows.

Раздел «Процессы и потоки» посвящен центральным понятиям операционных систем процессам и потокам, вопросам их реализации, взаимодействия и синхронизации. Здесь же рассмотрены основные алгоритмы планирования процессов в различных системах.

В разделе «Управление памятью» рассматривается понятие адресного пространства, вопросы организации и управления оперативной памятью, понятие виртуальной памяти и основные алгоритмы замещения страниц. Рассмотрена также реализация сегментации в памяти операционных систем.

Раздел «Файловые системы» посвящен вопросам структуры, реализации и организации управления файловых систем. В данном разделе рассматриваются также вопросы производительности файловых систем, резервного копирования и дефрагментации дискового пространства.

Системное программирование

Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 14 мая 2011.

Системное программирование (или программирование систем) — подраздел программирования, заключающийся в работе над системным программным обеспечением.

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

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

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

  • программист должен учитывать специфику аппаратной части и другие, часто уникальные, свойства системы в которой функционирует программа, использовать эти свойства, например, применяя специально оптимизированный для данной архитектуры алгоритм;
  • часто используется низкоуровневый язык программирования или такой диалект языка программирования, который
    • позволяет функционирование в окружении с ограниченным набором системных ресурсов,
    • работает максимально эффективно и имеет минимальное запаздывание по времени завершения,
    • имеет маленькую библиотеку времени выполнения (RTL) или не имеет её вообще,
    • позволяет прямое управление (прямой доступ) к памяти и управляющей логике,
    • позволяет делать ассемблерные вставки в код;

    Подводя итог, можно утверждать, что СИСТЕМНЫМ следует называть подраздел программирования как вида инженерной деятельности, в котором программист использует специфические и часто уникальные свойства и возможности ВНУТРЕННИХ УРОВНЕЙ вычислительной системы.

    Системное программирование отличается от прикладного, что обычно приводит к специализации программиста в одном из них.

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

    • Парадигмы программирования

    Wikimedia Foundation . 2010 .

    Системное программирование

    Идеи, Концепции, учения, методы исследования

    Систе́мное программи́рование, раздел программирования , в котором сочетаются исследования новых архитектур, алгоритмов , структур данных и др. и деятельность по проектированию , разработке , тестированию и сопровождению (поддержке) системного программного обеспечения (системного ПО), т. е. для создания новых информационных технологий .

    Системное ПО является фундаментом, на котором базируется всё программное обеспечение (ПО) компьютеров . Различают системное ПО машинно-зависимое (предназначено для использования в семействах компьютеров с одной и той же системой команд) и переносимое, которое используется на компьютерах с разной архитектурой . Системное ПО применяют для управления ПО компьютеров и сетевыми коммуникациями, а также для поддержки выполнения прикладных программ. К системному ПО относятся операционные системы (ОС), программные средства организации компьютерных сетей и управления ими, системы управления базами данных (СУБД), средства промежуточного ПО (предоставляют выделенному классу приложений набор услуг, напрямую не предоставляемых ОС), инструментальные средства разработки и анализа программ , поддержки информационной безопасности и др. При разработке системного ПО используются методы программной инженерии; особое внимание уделяется качеству кода (включает минимизацию числа ошибок, простоту понимания и сопровождения, хорошую документированность и т. п.), надёжности и безопасности программ.

    Системное программирование появилось в 1950-х гг., когда были созданы первые ОС, ассемблеры и компиляторы для мейнфреймов. Важным этапом стало появление системного ПО, создаваемого некоммерческими сообществами системных программистов и распространяемого вместе с текстами программ (ОС FreeBSD и Linux , СУБД PostgreSQL и MySQL и др.), что позволило многочисленным пользователям освободиться от зависимости от производителей коммерческого системного ПО.

    Опубликовано 4 июля 2022 г. в 12:07 (GMT+3). Последнее обновление 4 июля 2022 г. в 12:07 (GMT+3). Обратная связь

    Разработка программного обеспечения
    Обработка данных
    Современные технологии
    Информация

    Идеи, Концепции, учения, методы исследования

    Области знаний: Системное программирование Область знания: Информационные технологии

    • Научно-образовательный портал «Большая российская энциклопедия»
      Свидетельство о регистрации СМИ ЭЛ № ФС77-84198,
      выдано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор) 15 ноября 2022 года.
      ISSN: 2949-2076
    • Учредитель: Автономная некоммерческая организация «Национальный научно-образовательный центр «Большая российская энциклопедия»
      Главный редактор: Кравец С. Л.
      Телефон редакции: +7 (495) 917 90 00
      Эл. почта редакции: secretar@greatbook.ru
    • © АНО БРЭ, 2022 — 2023. Все права защищены.
    • Условия использования информации. Вся информация, размещенная на данном портале, предназначена только для использования в личных целях и не подлежит дальнейшему воспроизведению.
      Медиаконтент (иллюстрации, фотографии, видео, аудиоматериалы, карты, скан образы) может быть использован только с разрешения правообладателей.
    • Условия использования информации. Вся информация, размещенная на данном портале, предназначена только для использования в личных целях и не подлежит дальнейшему воспроизведению.
      Медиаконтент (иллюстрации, фотографии, видео, аудиоматериалы, карты, скан образы) может быть использован только с разрешения правообладателей.

    Системное программирование *

    Что такое операционная система и зачем она нужна?

    Уровень сложности Средний
    Время на прочтение 25 мин
    Количество просмотров 5.3K

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

    Всего голосов 20: ↑11 и ↓9 +2
    Добавить в закладки 75

    Новости

    все подряд лучшие
    abondarev 27 ноя в 17:09

    Перенос вашего проекта под Embox на новую плату STM32

    Уровень сложности Средний
    Время на прочтение 15 мин
    Количество просмотров 1.6K

    В этой статье я хочу показать, насколько в Embox легко перенести существующий проект на новую платформу. За основу возьмем уже описанный ранее демонстрационный проект с ModBus и расскажем, как портировать наш проект на новую плату на примере STM32 NUCLEO-F2207ZG.

    В статье про ModBus уже было показано, как важны для уменьшения “времени выхода на рынок” (time-to-market), переносимость ПО и удобство разработки и отладки. А теперь предположим, что мы хотим сделать новую версию нашего устройства на новой аппаратной платформе, более дешевой, менее энергопотребляющей или просто доступной на рынке.

    Всего голосов 7: ↑6 и ↓1 +5
    Добавить в закладки 14
    RustLangRu 20 ноя в 13:01

    Rust 1.74.0: конфигурация проверки в Cargo, авторизация для приватных реестров, проекции возвращаемых типов

    Уровень сложности Простой
    Время на прочтение 4 мин
    Количество просмотров 1.8K

    Команда Rust рада сообщить о новой версии языка — 1.74.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.

    Если у вас есть предыдущая версия Rust, установленная через rustup , то для обновления до версии 1.74.0 вам достаточно выполнить команду:

    rustup update stable

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

    Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta ( rustup default beta ) или nightly ( rustup default nightly ) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.

    Всего голосов 17: ↑15 и ↓2 +13
    Добавить в закладки 4
    aabzel 16 ноя в 02:12

    Диспетчер Задач для Микроконтроллера

    Уровень сложности Простой
    Время на прочтение 7 мин
    Количество просмотров 8.4K

    В программировании микроконтроллеров часто нужно написать простые тестировочные прошивки. При этом надо некоторые функции вызывать чаще, а некоторые реже. Для этого, конечно, можно запустить FreeRTOS, однако тогда этот код не будет переносим на другие RTOS например Zephyr RTOS или TI-RTOS. Поэтому надо держать наготове какой-нибудь простенький NoRTOS планировщик.

    В этот тексте я представил основные идеи алгоритма такого кооперативного планировщика.

    Всего голосов 25: ↑23 и ↓2 +21
    Добавить в закладки 92

    Истории

    maisvendoo 16 ноя в 01:54

    Запуск ОСРВ Embox на Banana Pi M1

    Уровень сложности Средний
    Время на прочтение 7 мин
    Количество просмотров 2.5K

    Об этой операционной системе я узнал на данном ресурсе, из многочисленных публикаций её разработчиков. Для тех кто не в курсе — это отечественная операционная система реального времени для встраиваемых устройств с открытым исходным кодом. Её официальный репозиторий расположен тут. Возникло желание опробовать этот проект в деле. Благодаря документации к проекту на виртуальной машине qemu удалось запустить конфигурации для разных платформ. Однако, виртуальная машина — это не для настоящих джедаев).

    Тщательно изучив список поддерживаемых одноплатников, остановил свой выбор на Banana Pi M1 с ARM-процессором Allwinner A20. Плата была заказана на Aliexpress, и когда она прибыла, настало время экспериментов. Но всё, как и ожидалось, оказалось не так просто.

    Всего голосов 18: ↑17 и ↓1 +16
    Добавить в закладки 18
    ph_piter 14 ноя в 18:19

    Книга «BPF: профессиональная оценка производительности»

    Время на прочтение 19 мин
    Количество просмотров 1.4K

    image

    Привет, Хаброжители!

    Инструменты оценки производительности на основе BPF дают беспрецедентную возможность анализа систем и приложений. Вы сможете улучшить производительность, устранить проблемы в коде, повысить безопасность и сократить расходы. Книга «BPF: профессиональная оценка производительности» — ваш незаменимый гайд по применению этих инструментов.

    Брендан Грегг — эксперт и пионер проекта BPF — представляет более 150 готовых инструментов анализа и отладки, рекомендации по их применению, а также пошаговые инструкции по разработке ваших собственных инструментов. Вы узнаете, как анализировать процессоры, память, дисковый ввод/вывод, файловую систему, сети, языки программирования, приложения, контейнеры, гипервизоры, безопасность и ядро. Вы сможете выработать глубокое понимание того, как улучшить буквально любую Linux-систему или приложение.

    Всего голосов 10: ↑10 и ↓0 +10
    Добавить в закладки 13
    davidbadd 7 ноя в 18:36

    Cotea: программный контроль исполнения Ansible

    Время на прочтение 11 мин
    Количество просмотров 5.1K

    Я Давид Бадалян, работаю в Исследовательском центре доверенного искуственного интеллекта ИСП РАН. В статье я хочу поговорить об Ansible – одной из самых популярных систем по автоматизации развёртывания.

    Стоит запустить Ansible программно, и он становится черным ящиком – нет никакого контроля над его выполнением, нет информации о тасках. Эту проблему мы обнаружили, разрабатывая оркестратор Michman для сервисов уровня PaaS. В результате мы создали cotea и gocotea: инструменты для программного исполнения Ansible-плейбуков из языков Python и Go.

    Про cotea, её архитектуру и кейсы применения я расскажу подробно под катом. Если вы DevOps-инженер и хотите узнать, как можно гибко использовать Ansible – статья точно для вас.

    Всего голосов 12: ↑12 и ↓0 +12
    Добавить в закладки 45
    PatientZero 27 окт в 16:14

    Мнение три года спустя: стоил ли того переход с JavaScript на Rust?

    Уровень сложности Средний
    Время на прочтение 7 мин
    Количество просмотров 36K

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

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

    Спустя три года, выполнив несколько развёртываний в продакшен, написав электронную книгу и выпустив примерно сто пакетов на crates.io, я решил, что настало время поделиться своими мыслями о Rust.

    Всего голосов 55: ↑54 и ↓1 +53
    Добавить в закладки 83
    ru_vds 25 окт в 16:00

    Как Rust меняет мышление разработчика

    Уровень сложности Простой
    Время на прочтение 9 мин
    Количество просмотров 44K

    Я страшно ненавижу C++. Обычно я люблю программирование, но каждый проект, с которым я имел дело на C++, ощущался как монотонная рутина. В январе 2023 года я пошёл по пути изучения Rust, поэтому теперь могу сказать, что знаю язык системного программирования, который действительно люблю использовать.

    Первый стабильный релиз Rust появился в 2015 году, и каждый год, начиная с 2016, он признаётся в Stack Overflow’s Annual Developer Survey самым любимым языком (в 2023 году эта категория называется «обожаемый»). Почему же разработчики, ощутившие вкус Rust, не могут отказаться от его использования? Похоже, в мире прогремевших наследников C/C++ репутация растёт только у Rust. Как же этот язык, появившийся на сцене меньше десятка лет назад, стал настолько популярным?

    Ржавый красный краб Феррис по версии Midjourney

    Кривая обучения оказалась крутой. Я нашёл многое, что мне нравится в Rust, но постоянно попадал в его ловушки. Однако в конечном счёте именно препятствия и проблемы, с которыми столкнулся, я научился любить больше всего.

    Я начну историю с разговора о том, что легко полюбить — со среды Rust, управления пакетами и документации. Затем я расскажу о системе типов и типажах (trait). Далее я поведаю о тех возможностях тестирования и test driven development, которые становятся возможными благодаря Rust. Наконец, мы обсудим самую запутанную и сбивающую с толку часть — одержимость Rust тем, кто какой переменной владеет.

    Всего голосов 113: ↑101 и ↓12 +89
    Добавить в закладки 188
    ser-mk 25 окт в 11:08

    Готовим драйвера МК для проброса периферии

    Уровень сложности Сложный
    Время на прочтение 12 мин
    Количество просмотров 2.5K

    В предыдущей статье рассматривался принцип, как можно прокинуть периферию микроконтроллера (UART, I2C, CAN bus etc) в обычную ПК программу, так как если бы она входила в состав нашего компьютера и висела на обшей шине с памятью. В той публикации рассматривается теория и инструменты, которые позволяют это сделать. В этой части мы рассмотрим, как на практике осуществляется подготовка кода драйверов к инструментизации ADIN LLVM pass и последующей сборке в отдельную динамическую библиотеку, которую вы можете использовать в своих проектах

    Всего голосов 16: ↑15 и ↓1 +14
    Добавить в закладки 58
    ser-mk 25 окт в 10:57

    Хардварный проброс

    Уровень сложности Сложный
    Время на прочтение 9 мин
    Количество просмотров 6.1K

    Оказывается пробрасывать можно не только сетевые порты, а еще и регистры периферии микроконтроллера(МК). Идея та же самая — открыть периферию для использования вне микроконтроллера. В случае проброса периферии, внешними клиентами будут выступать программы на ПК, и для них мы будем давать доступ к внутренним регистрам микроконтроллера. Для программ это будет выглядеть так, как будто регистры периферии находятся в адресном пространстве компьютера(ПК). Все равно, что эти самые регистры периферии висели бы на одной шине с памятью и другими устройствами ввода-вывода

    Всего голосов 24: ↑24 и ↓0 +24
    Добавить в закладки 68
    ru_vds 18 окт в 12:00

    Старые кодовые базы как классическая литература

    Уровень сложности Простой
    Время на прочтение 6 мин
    Количество просмотров 8.7K
    Ретроспектива

    Сохранившиеся фрагменты греческих папирусов, источник

    В языке и литературе работает известный принцип начитанности: чем больше человек читает хороших книг, тем больше у него словарный запас, шире кругозор. Развивается понятийный аппарат, сама собой улучшается грамотность без всяких учебников.

    Применим ли этот принцип в обучении программированию?

    Всего голосов 61: ↑61 и ↓0 +61
    Добавить в закладки 101
    kaneki_li 15 окт в 11:43

    Sun Netra X1 и опыт в его администрировании

    Уровень сложности Простой
    Время на прочтение 9 мин
    Количество просмотров 2.7K

    Приветствую читателей! В мои руки попал интересный экземпляр – сервер Netra X1 компании Sun Microsystems. Привлёк данный аппарат архитектурой Sparc, которой я раньше мало где встречал. Аппарат конечно старый, но работает безупречно. Тут родилась идея установки BBS и операционной системы Debian. Так сказать «Готовый музейный экспонат».

    Всего голосов 7: ↑7 и ↓0 +7
    Добавить в закладки 9

    Ближайшие события

    Дата 25 сентября – 30 ноября
    Место Онлайн

    Дата 30 ноября
    Время 17:30 – 00:00
    Место Москва

    Дата 1 декабря
    Время 12:30
    Место Москва • Онлайн

    Дата 4 декабря
    Время 20:00
    Место Онлайн

    Дата 5 – 6 декабря
    Время 9:00 – 23:59
    Место Москва • Белград • Онлайн

    Дата 9 – 11 декабря
    Время 10:00 – 17:00
    Место Москва

    Дата 18 – 20 декабря
    Время 10:00 – 17:00
    Место Москва

    Дата 19 – 20 января
    Время 10:00 – 18:00
    Место Москва
    Влево Вправо
    Albert_Wesker 12 окт в 11:01

    Сборка мусора: как это делается в системном программировании

    Уровень сложности Средний
    Время на прочтение 9 мин
    Количество просмотров 7.5K

    image

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

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

    Объединим две эти цели – и обнаружим, сколько же существует странных и магических методов для неблокирующего совместного использования данных в разных потоках. Давайте поговорим об одном из этих методов – «чтение-копирование-запись» (RCU).

    Всего голосов 38: ↑35 и ↓3 +32
    Добавить в закладки 77
    Apoheliy 12 окт в 03:58

    Замешиваем файлы в тэги. Часть 3

    Уровень сложности Средний
    Время на прочтение 9 мин
    Количество просмотров 1.5K

    Продолжаем создавать модуль ядра в Линукс на примере виртуальной файловой системы.

    Часть 3: Inode, Lookup

    Что в результате получилось можно увидеть по ссылкам: демо-видео, код.

    Всего голосов 7: ↑6 и ↓1 +5
    Добавить в закладки 20
    alizar 9 окт в 12:00

    Оскар Толедо: потомственный волшебник

    Уровень сложности Простой
    Время на прочтение 7 мин
    Количество просмотров 9.2K
    Ретроспектива

    Семья Толедо (пригород Мехико) и разнообразная техника их кустарного производства, в том числе компьютер, 1980 год

    Оскар Толедо — пятикратный победитель программистского конкурса IOCCC, (Международный конкурс обфусцированного кода на С). Он интересен не только сам по себе, но ещё в контексте своей семьи. Это уникальные люди, которые скромно живут в пригороде Мехико и вообще не стремятся к известности. 25 лет назад они написали свою ОС, браузер и кучу софта для него.

    Оскар Толедо — просто продолжатель семейного дела, которое началось примерно в 70-е годы прошлого века.

    Всего голосов 66: ↑64 и ↓2 +62
    Добавить в закладки 57
    RustLangRu 6 окт в 20:43

    Rust 1.73.0: новый формат сообщений о панике, изменение в работе с локальными данными потока

    Уровень сложности Простой
    Время на прочтение 3 мин
    Количество просмотров 3.9K

    Команда Rust рада сообщить о новой версии языка — 1.73.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.

    Если у вас есть предыдущая версия Rust, установленная через rustup , то для обновления до версии 1.73.0 вам достаточно выполнить команду:

    rustup update stable

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

    Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta ( rustup default beta ) или nightly ( rustup default nightly ) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.

    Всего голосов 21: ↑20 и ↓1 +19
    Добавить в закладки 20
    x6x4 6 окт в 12:30

    Вглубь std::unordered_map: магические числа

    Уровень сложности Простой
    Время на прочтение 3 мин
    Количество просмотров 6K

    Все любители кодокопания заканчивают либо хорошо, либо плохо. Мне повезло. Поэтому я решила написать свою первую статью на хабре.

    Эта статья о том, каким странным бывает легаси — и куда же всё-таки копать, чтобы понять, что происходит. stdlibc++ опровергает даже стандартные математические понятия. Как хорошо, что это хотя бы опенсорс.

    Всего голосов 22: ↑20 и ↓2 +18
    Добавить в закладки 34
    artyomsoft 3 окт в 12:00

    Протоколы семейства TCP/IP. Теория и практика

    Уровень сложности Средний
    Время на прочтение 23 мин
    Количество просмотров 55K

    image

    В сети можно найти огромное количество материала о том, как функционируют сети на базе стека протоколов TCP/IP, а также как писать компьютерные программы с сетевыми возможностями. При рассмотрении компьютерных сетей часто углубляются в описание физических основ и структур данных, передаваемых по сети, а при рассмотрении сетевого программирования основное внимание уделяют интернет-сокетам.

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

    В ходе работы над статьёй я написал небольшое приложение, которое послужит отправной точкой для понимания компьютерных сетей и семейства протоколов TCP/IP. С приложением можно экспериментировать, получая дополнительные знания.

    Приложение — простое и понятное и, надеюсь, упростит изучение материалов статьи. Ведь именно радость первой победы даёт мотивацию, достаточную для того, чтобы потратить гораздо больше времени на изучение темы.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *