Когда вы вводите в командную строку docker run nginx — кажется, что произошло какое-то волшебство: за считанные секунды появляется полностью изолированная среда. Но здесь нет никакой магии, а просто инженерия ядра Linux. Давайте подробнее разберём эту тему подробнее и изучим, что именно происходит внутри ядра, когда Docker создаёт контейнер.
Рубрика «ядро»
Перезапускаемые последовательности в Linux: выход в свет
2025-09-27 в 8:05, admin, рубрики: abi, GNU, linux, numa, timeweb_статьи_перевод, процессор, ядроФича под названием перезапускаемые последовательностиЧитать полностью »
Пишем и запускаем свой исполняемый файл на Linux
2025-09-23 в 12:16, admin, рубрики: C, linux, велосипед, велосипедостроение, исполняемый файл, ядроВсем привет!
Я бы хотел создать цикл статей, который будет посвящен созданию слоя совместимости для запуска Windows приложений на ОС семейства Linux. При этом хочу сделать акцент на реализации собственного формата исполняемого файла и использования метода дистилляции для перевода программного кода из формата в формат. Это очень обширная тема, чтобы уместить её в одну статью, а также достаточно сложная для понимания «извне», поэтому я буду стараться излагать всё на доступном языке и подходить к этой тематике, так скажем, из далека.
Читать полностью »
Операционная система в 1 000 строках кода (Часть 1)
2025-01-19 в 9:01, admin, рубрики: risc-v, ruvds_перевод, UNIX, ассемблер, операционные системы, Программирование, разработка ос, Си, ядро
Всем привет! В этой небольшой книге (серии статей, — прим. пер.) мы с нуля, шаг за шагом, напишем скромную ОС.
Вы можете насторожиться, услышав, что разработка ОС или ядра, в частности, их базовых функций на удивление проста. Даже система Linux, которая воспринимается как масштабный опенсорсный проект, на стадии версии 0.01 включала всего 8 413 строк кода. Сегодня ядро Linux действительно огромно, но начиналось оно, как и типичный хобби-проект, с крохотной базы кода.
В рамках предстоящей серии статей мы на языке С реализуем базовое переключение контекста, страничное распределение памяти, режим пользователя, командную оболочку, драйвер дискового устройства и операции чтения/записи. И хотя такой объём работы может показаться масштабным, всё это уместится всего в 1 000 строк кода.
Но сразу предупрежу — процесс окажется не так прост, как выглядит на первый взгляд. Самой сложной частью создания собственной ОС является отладка. И мы не сможем использовать для этого printf, пока её не реализуем. Здесь вам потребуется освоить различные техники и приёмы отладки, которые в разработке ПО вы никогда не использовали. В частности, начиная «с нуля», вы будете встречать сложные этапы вроде процесса загрузки и страничной организации памяти. Но не пугайтесь, «отлаживать ОС» мы тоже научимся!
Чем сложнее отладка, тем больше радости от получения рабочего продукта. Так что приглашаю вас погрузиться в захватывающий мир разработки операционных систем!Читать полностью »
Оптимизация кольцевого буфера для повышения пропускной способности
2024-12-28 в 10:10, admin, рубрики: amd, linux, MESI, SPSC, timeweb_статьи_перевод, TLB, буфер, ядроВ этой статье мы рассмотрим классический конкурентный кольцевой буфер и обсудим, как его можно оптимизировать для повышения производительности. Я покажу вам, как существенно улучшить этот показатель от 5,5 миллионов элементов в секунду до 112 миллионов элементов в секунду — и эти показатели выше, чем в реализациях Boost и Folly. Если вам требуется готовая реализация со всеми этими оптимизациями, посмотрите мою библиотеку SPSCQueue.h.
Как создать простую операционную систему с нуля
2024-11-01 в 7:07, admin, рубрики: операционная система, системное программирование, создание ос, ядроМногие разработчики хоть раз задумывались о том, чтобы создать свою собственную операционную систему (ОС). Это может показаться сложной задачей, но, если разбить процесс на этапы, создание минимальной ОС становится более реалистичным. В этой статье мы рассмотрим основные шаги создания простой операционной системы с нуля, а также инструменты и знания, которые могут вам понадобиться.
Что такое операционная система?
Как Linux создаёт и подсчитывает сокеты
2024-09-07 в 8:05, admin, рубрики: linux, tcp, timeweb_статьи_перевод, udp, UNIX, веб-сервер, Сетевые технологии, сокеты, ядроПривет!
Если у вас уже есть некоторый опыт работы с веб-серверами, то вам наверняка доводилось попадать в классическую ситуацию «адрес уже используется» (EADDRINUSE).
В этой статье будут подробно разобраны не только предпосылки, позволяющие судить, случится ли в ближайшей перспективе такая ситуация (для этого достаточно просмотреть список открытых сокетов), но и будет рассказано, как можно прослеживать конкретные пути кода в ядре (где происходит такая проверка).
Если вам просто интересно, как именно работает системный вызов socket(2)Читать полностью »
Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»?
2024-03-27 в 8:00, admin, рубрики: android, linux, monobogdan_ништячки, Samsung, sc6820, Spreadtrum, timeweb_статьи, гаджеты, девайсы, Железо, кастомы, китайцы, копии, Моддинг, научпоп, подделки, портирование, почитать, реплики, смартфоны, Читальный зал, ядра, ядро
Моддинг-сцена с разработкой и портированием кастомных прошивок для Android-устройств существует вот уже более 10 лет. В основном, энтузиасты пытаются проапгрейдить свои устройства путем портирования более свежих версий Android, чем предлагает производитель девайса. Чего уж говорить, если Galaxy S III, которому уже 12 лет стукнуло, получил неофициальный апгрейд до Android 14. Порой мне в голову приходят различные, весьма странные моддерские мысли: например, почему бы не портировать на старенький смартфон… ещё более старую версию Android, дабы посмотреть «что будет». Казалось бы «портировал и портировал», но в процессе работы я столкнулся с множеством интересных нюансов и особенностей работы Android, о которых хотел бы рассказать и вам — моим читателям! Сегодняшняя статья будет в классическом «научпоп»-стиле без кода, зато с подробными объяснениями одной из техник портирования Android-прошивок путем патчинга скриптов для конфигурации системы и подмены Board-specific библиотек, дабы система «увидела» всё необходимое железо! Интересно? Тогда жду вас под катом!Читать полностью »
Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник до ума своими руками
2023-07-25 в 8:05, admin, рубрики: DIY, I2C, kernel, linux, nix, opi, Orange Pi, orange pi 2g iot, orange pi 3g iot, orange pi zero, Raspberry Pi, SPI, UNIX, vstack_статьи, Блог компании vStack, гаджеты, доводим до ума, Компьютерное железо, Настройка Linux, одноплатники, одноплатные компьютеры, ядро
В прошлой статье, мы с вами рассмотрели на что способен одноплатный компьютер, который стоит всего 1.000 рублей. Как мы выяснили, перспективы у данного девайса весьма неплохие, однако по факту, Orange Pi продаёт практически голую железку, которую нужно дорабатывать самому. Да, тут есть Ubuntu/Fedora, да, тут выведена гребенка с I2C/SPI — однако из коробки это всё работает криво-косо, либо не работает совсем. Даже обещанные шины SPI/I2C фактически не доступны в системе «из коробки». Материалов о доработке этого одноплатника в сети мало, поэтому я решил довести его до ума сам и поделится с вами — в том числе, готовыми бинарными образами! Интересно, на что способен доработанный одноплатник по цене ящика пива? :)
Читать полностью »
Семафоры в Linux медленно сходят со сцены
2023-04-26 в 21:36, admin, рубрики: легаси, мьютексы, Программирование, Процессоры, Разработка под Linux, семафоры, ядроС годами подходы к обработке конкурентности в ядре Linux сильно изменились. К 2023 году в арсенале разработчиков ядра появились, в частности, автозавершения, хорошо оптимизированные мьютексы, а также россыпь неблокирующих алгоритмов. Но были времена, когда управление конкурентностью сводилось к использованию обычных семафоров. Дискуссия о внесении небольшого изменения в API семафоров лишний раз свидетельствует, как сильно они изменились за долгую историю ядра.
