Рубрика «системное программирование» - 63

imageПериодически, как правило во вторую среду месяца, можно услышать истории о том, что Windows после очередного обновления перестает загружаться, показывая синий экран смерти. В большинстве случаев причиной такой ситуации оказывается либо руткит, либо специфичное системное ПО, фривольно обращающееся со внутренними структурами ОС. Винят, конечно, все равно обновление, ведь «до него все работало». С таким отношением не удивительно, что «Майкрософт» не поощряет использование всего, что не документировано. В какой-то момент, а именно с релизом Windows Server 2003, MS заняла более активную позицию в вопросе борьбы с чудо-поделками сторонних разработчиков. Тогда появился механизм защиты целостности ядра — kernel patch protection, более известный как PatchGuard.

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

Четвертая часть перевода D Programming Language Tutorial от Ali Çehreli.
Читать полностью »

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

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

Читать полностью »

Минсвязи призывает системных программистов России объединиться - 1Министр связи и массовых коммуникаций Николай Никифоров выступил на открытии научно-практической конференции OS Day, посвящённой актуальным вопросам создания операционных систем. Мероприятие прошло 11 декабря в Институте системного программирования Российской академии наук (ИСП РАН).

Глава Минкомсвязи России рассказал о результатах диалога с ИТ-индустрией по теме развития российских конкурентоспособных продуктов на рынке ОС и системного ПО: «Все участники рынка соглашаются, что бессмысленно сегодня начинать разработку системных проектов с нуля, неважно какой вид операционных систем мы обсуждаем. Нужно отталкиваться от уже существующих разработок».

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

Мы продолжаем в гордом одиночестве разрабатывать 64-битную операционную систему LDuS и представляем её версию 0.2. Как подсказал один комментатор, систему можно было бы назвать Индус, а раз индус, то тогда это уже не версия 0.2, а Кундалини, которая поднялась до уровня второй чакры. А поскольку вторая чакра связана с общением, то и у нас новшества на тему коммуникации.

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

Читать полностью »

Приветствую!

В данной статье рассматривается использование реализации двусвязного списка ядра Linux.

Двусвязный список в ядре Linux реализован в файле include/linux/list.h. Мы будем использовать адаптированный вариант list.h [1], который отличается от оригинального возможностью использовать его в userspace. Например, создадим очередь — структурe данных с доступом к элементам по принципу «первый пришёл — первый вышел» для произвольного типа данных на основе list.h.
Читать полностью »

Продолжаем изучать планирование маленьких потоков. Я уже рассказала про два средства в ядре Linux, которые часто используются для отложенной обработки прерываний. Сегодня речь пойдет о совсем другой сущности — protothread Adam Dunkels, которые хоть и выбиваются из ряда, но в контексте рассматриваемой темы совсем не лишние.

А также:

  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

Читать полностью »

Продолжаем тему многопоточности в ядре Linux. В прошлый раз я рассказывала про прерывания, их обработку и tasklet’ы, и так как изначально предполагалось, что это будет одна статья, в своем рассказе о workqueue я буду ссылаться на tasklet’ы, считая, что читатель уже с ними знаком.
Как и в прошлый раз, я постараюсь сделать мой рассказ максимально подробным и детальным.

Статьи цикла:

  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

Многозадачность в ядре Linux: workqueue - 1

Читать полностью »

В этой статье я попытаюсь описать терминологию, используемую для описания систем, способных исполнять несколько программ параллельно, то есть многоядерных, многопроцессорных, многопоточных. Разные виды параллелизма в ЦПУ IA-32 появлялись в разное время и в несколько непоследовательном порядке. Во всём этом довольно легко запутаться, особенно учитывая, что операционные системы заботливо прячут детали от не слишком искушённых прикладных программ.

Процессоры, ядра и потоки. Топология систем - 1

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

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

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

На этот раз я хочу подойти к вопросу планирования с другой стороны. А именно, теперь я постараюсь рассказать про планирование не потоков, а их “младших братьев”. Так как статья получилась довольно объемной, в последний момент я решила разбить ее на несколько частей:

  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

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

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js