Самый странный коммит в истории ядра Linux


Оглавление (нажмите, чтобы открыть):

Самый странный коммит в истории ядра Linux

Все ответы на андроидные ядерные вопросы: как устроено ядро Linux вообще и для Андроида в частности, механизмы взаимодействия внутри ядра, программирование ядра, обсуждение различных ошибок, возникающих при сборке ядра и при его функционировании, общие правила конфигурации ядра и прочие системные вопросы.
Здесь обсуждается ядро на уровне исходных текстов. В силу этого к своему вопросу рекомендуется приложить ссылку на репозиторий с исходными текстами ядра, протоколы (dmesg) в текстовом виде.
Вопросы сборки образов ядра и упаковки этих образов в формат конкретного загрузчика для конкретного аппарата лучше задать в специализированной теме раздела. Например, Самостоятельная компиляция ядра из исходников, Сборка ядра Android 4.4.x (KitKat) / 5.x.x(Lollipop) / 6.x.x (Marshmallow)/ 7.х.х (Nougat) для процессоров MTK, Помощь в разработке и портировании Android OS на устройствах МТК, Разработка ядра и прошивки Android 6.0 для Asus Zenfone Go, Разработка и портирование для устройств на платформе Spreadtrum SC7731, Разработка ядер и прошивок Redmi 4 (prada), RockChip rk3188 и новее,сборка ядра и другое и т.д.
Тема выросла отсюда: Скрипты на shell под Android. В родительской теме обсуждаются системные вопросы функционирование Андроида в пользовательском пространстве (userspace): начальный старт, низкоуровневое взаимодействие с системными компонентами Андроида.

Нормативные материалы по ядру Linux

  • Основополагающий документ по внутреннему устройству Андроида, Android Interfaces and Architecture, содержит раздел Kernel, в котором изложены базовые требования к ядру со стороны Андроида, освещены вопросы конфигурирования ядра, оптимизации отдельных компонент ядра и т.п.

Некоторые материалы темы:

  • Рассказ про root в Андроиде
  • Работа Андроида на многоядерных системах. Так ли они нужны, эти 4-8 процессоров? (Обсуждение, читайте 6-10 сообщений ниже по ветке).

По вопросам наполнения и актуализации шапки темы, Вам всегда готов помочь Куратор username11

Сообщение отредактировал username11 — 26.07.18, 15:29

vitaly51370,
В рамдиск лежит начальная конфигурация с инструкциями подготовки оборудования, монтирования разделов и запуска процесов, отвечающих за жизнь андройда. Kernel — ядро, не декомпилируется. Компилмруется с исходников из-под линукса. Да и вообще рекомендую работать с андройдом только из-под linuxа (ubuntu, linux mint — рекомендую их)

Сообщение отредактировал Timofey777 — 21.11.14, 00:29

У меня вопрос. Про управление частотами процессора.

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

Timofey777,
не совсем точно, править надо в 3х файлах одновременно: *_voltages.c, *_voltages.h, *_data.c
причём в каком-то из них в 2х местах.

Сообщение отредактировал adm_ — 21.11.14, 09:47

Пардон) каюсь. Не сказал что процессор интел. Для arm — да, но для х86.

а в /arch/х86 другая структура каталогов

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

И нигде нему найти. Подозреваю это где-то в другом разделе системы, может преславутый для интела ifwi

Сообщение отредактировал OLEG4120 — 22.11.14, 00:36

в arm искомое находимо по поиску (во всех файлах) любой известной частоты (в герцах, таких больших чисел в исходниках не так уж и много 😉 )

. там же и вольтаж определяется, его тоже можно/стоит синхронно подёргать.

Сообщение отредактировал adm_ — 22.11.14, 01:28

/ # # тут 0 — 1-й проц, 1 — 2-ой проц, а 0-1 оба сразу(работают/спят/присутствуют/доступны).
/sys/devices/system/cpu # ls -FxSr
power/ cpufreq/ cpu1/ cpu0/
uevent present possible online
offline kernel_max
/sys/devices/system/cpu # cat online offline present possible

1
0-1
0-1
/sys/devices/system/cpu # cat online offline present possible
0-1

0-1
0-1
/ # # ——————
/ # # тут 0 — спит, 1 — работает.
/ # cat /sys/devices/system/cpu/cpu1/online

/ # cat /sys/devices/system/cpu/cpu1/online
1
/ # # ——————
/ # # статистика по частотам, по сну не нашёл.
/sys/devices/system/cpu # ls -Fx ./cpu0/cpufreq/stats
trans_table total_trans time_in_state
/sys/devices/system/cpu/cpu0/cpufreq/stats # cat trans_table
From : To
: 1300000 1209000 1001000 806000 598000
1300000: 0 432 294 254 950
1209000: 50 0 164 93 125
1001000: 1281 0 0 22136 15357
806000: 10 0 12177 0 10296
598000: 589 0 26138 0 0
/sys/devices/system/cpu/cpu0/cpufreq/stats # cat total_trans
90420
/sys/devices/system/cpu/cpu0/cpufreq/stats # cat time_in_state
1300000 139299
1209000 17918
1001000 3652376
806000 322914
598000 925570
/ # # ——————
/ # dmesg | grep CPU
.
[57346.900942] (0)[12379:kworker/0:0][WDK]:Stop CPU:1
[57347.929911] (0)[12379:kworker/0:0]dbs_check_cpu: turn on CPU
[57347.974142] (0)[12379:kworker/0:0]Boot slave CPU
[57347.975258] (1)[0:swapper/1]CPU1: Booted secondary processor
[57350.949876] (0)[12379:kworker/0:0]dbs_check_cpu: turn off CPU
[57350.971178] (0)[12379:kworker/0:0]CPU1: shutdown
[57350.971809] (0)[12379:kworker/0:0][WDK]:Stop CPU:1
/ # # ——————
/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_governors
ondemand userspace powersave hotplug performance
/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_governor
hotplug
/ # # ——————
/ # echo `uname -m` `cat /proc/version`
armv7l Linux version 3.4.5 (znsj_bianyi5@znsj-ian5) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT Wed Nov 27 09:21:32 CST 2013

(log=/data/cpulog$$
while :;do s=`cat /sys/devices/system/cpu/cpu1/online`;
if [ «$s» != «$os» ]; then
echo «`date +%H:%M:%S` $s `cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq`» >>$log
os=$s;
if [ -f /data/cpulogkill ];then rm $log;break;fi;
fi;
usleep 200000;
done;
) /dev/null 2>&1 &

Сообщение отредактировал Visitor7 — 07.12.14, 05:01

Учитывая git commit hash, как узнать, какая версия ядра содержит его?

Предположим, что у меня есть проблема, исправленная недавним исправлением в официальном репозитории git Linux. У меня есть работа вокруг, но я хотел бы отменить ее, когда произойдет релиз, содержащий мое исправление. Я знаю точное git commit hash, например. f3a1ef9cee4812e2d08c855eb373f0d83433e34c .

Какой самый простой способ ответить на вопрос: какие версии ядра содержат этот патч? Бонусные баллы, если не требуется локальный репозиторий git Linux.

( LWM обсуждает некоторые идеи, но для этого требуется локальный репозиторий.)

3 ответа

Как упоминалось в LWN, проще всего:

Если вам не нужен локальный клон, «plain» форматированный текст gitweb содержит ту же информацию в заголовке X-Git-Tag . К сожалению, kernel.org переключился на cgit, который, по-видимому, не раскрывает эту информацию. Раньше это можно было найти так:

Здесь X-Git-Tag на самом деле отсутствует в данный момент, потому что это коммит не находится в помеченной версии в этом репозитории. Но вы можете посмотреть более раннюю фиксацию, например:

Здесь вы видите:

, который говорит мне, что тег «v3.4-rc1» был первым тегом, который следует за моим патчем, поэтому я ожидаю увидеть его в версии 3.4.

В репозитории ядра GitHub вы можете проверить все версии тегов /ядер.

При нажатии трех точек отображается полный список тегов /версий ядра.

Вы можете увидеть фиксацию в зеркале источника github. Я полагаю, вы могли бы скорректировать отпустить теги до даты фиксации (в этом случае ваше совершение составляет пять дней, самое большее недавний помеченный RC на master равен семи), но, откровенно говоря, это легче получить, если вы клонируете источник локально.

Как правильно выбрать вишневый проблематичные коммиты из Linux ядра мерзавца дерева

Задний план

У меня есть устройство, которое не работает должным образом, начиная с Linux ядра версии 4.12 и выше. Я хочу, чтобы выяснить, какие конкретный коммит причины проблемы. Мой текущий поток:

  1. Просмотр в ядре Linux в журнале фиксации на здесь
  2. При нажатии на человеке совершает, копировать фиксации идентификатора
  3. Бег git checkout
  4. Перенастройка ядра make menuconfig и перекомпилировать make -j32
  5. Установите ядро ​​на устройстве, убедитесь, вопрос, является ли по-прежнему сохраняется
  6. Если нет, то сузить диапазон коммитов, вернитесь к шагу 1

Проблема

Пока я шел через этот утомительный процесс, я обнаружил , что скомпилированные версии ядра была другой (Вы можете также просмотреть это через чтение Makefile ). Тем не менее, я не вижу изменения версии через ядро Линукса в журнале фиксаций. На самом деле, после попытки git diff , где второй совершает идентификатор 1 совершает за первый в соответствии с Linux ядра совершают журнал на шаге 1, было обнаружено , что есть изменения , которые не отражены на сайте.

Вопрос

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

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

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

Microsoft попала в число ведущих разработчиков ядра Linux

Xakep #246. Учиться, учиться, учиться!

Благодаря внедрению в ядро технологии Hyper-V главный враг Open Source попал в число ведущих разработчиков Linux по количеству коммитов, но это просто статистика. Ведь ещё свежи в памяти слова Стива Балмера, который сравнил Linux с раковой опухолью.

Третьего апреля организация Linux Foundation опубликовала ежегодный годовой отчёт по статистике коммитов в ядро Linux. В этом году произошло странное. Впервые в число 20-ти ведущих компаний, которые прислали больше всего строк кода в ядро, вошла Microsoft.

В период c декабря 2010 года до выхода версии 3.2 в январе 2012 года, компания Microsoft прислала около 20 000 строк кода. После оптимизации их количество было сокращено до примерно 7000, которые и вошли в ядро.

Показатель в 688 коммитов ставит Microsoft на 17-е место в списке компаний — самых активных разработчиков свободной операционной системы. Около 75% нового кода Linux спонсируется коммерческими компаниями, а самые активные из них за последний год — Red Hat (10,7% нового кода), Intel (7,2%) и Novell, которая ныне входит в состав Attachmate Group (3,3%). Сейчас к числу «активистов» присоединилась и Microsoft, обеспечившая около 1% нового кода в ядре Linux.

Объясняется данный казус очень просто: Microsoft активизировала разработку драйвера для интерфейса виртуализации Hyper-V. Он появился в 2009 году в staging area, то есть вместе с другим кодом, который недостаточно соответствовал стандартам качества. После этого программисты Microsoft прекратили активность и перестали отвечать на письма, однако в 2011 году ситуация изменилась и один из сотрудников Microsoft резко активизировал работу, в результате чего редмондская компания вышла в число лидеров по количеству коммитов в 2011 году.

Анатомия ядра Linux

История и архитектурная организация

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

Краткий обзор истории Linux

Хотя Linux, по всей видимости, является самой популярной операционной системой с открытым исходным кодом, на самом деле ее история в сравнении с другими операционными системами относительно коротка. На заре компьютерной эры программисты разрабатывали свои программы для «голой» аппаратуры, используя языки, понятные для этой аппаратуры. В отсутствие операционной системы использовать всю большую и дорогую вычислительную машину в каждый конкретный момент времени могло только одно приложение (и один пользователь). Первые операционные системы были разработаны в 1950-е годы, чтобы облегчить жизнь разработчиков. В качестве примера можно назвать General Motors Operating System (GMOS), разработанную для IBM 701, и FORTRAN Monitor System (FMS), созданную North American Aviation для IBM 709.

В 1960-е годы в Массачусетском Технологическом институте (MIT) и в ряде компаний была разработана экспериментальная операционная система Multics (Multiplexed Information and Computing Service) для машины GE-645. Один из разработчиков этой ОС, компания AT&T, отошла от Multics и в 1970 году разработала свою собственную систему Unics. Вместе с этой ОС поставлялся язык C. При этом C был разработан и написан так, чтобы обеспечить переносимость разработки операционной системы.

Двадцать лет спустя Эндрю Танненбаум (Andrew Tanenbaum) создал микроядерную версию UNIX® под названием MINIX (minimal UNIX), которая могла работать на небольших персональных компьютерах. Эта операционная система с открытым исходным кодом вдохновила Линуса Торвальдса (Linus Torvalds) на разработку первой версии Linux в начале 1990-х (см. Рис. 1).

Рис. 1. Краткая история основных выпусков ядра Linux

Linux быстро превратился из инициативы энтузиаста-одиночки во всемирный проект, в котором участвуют тысячи разработчиков. Одним из важнейших решений в судьбе Linux стало принятие лицензии GNU General Public License (GPL). GPL защитила ядро Linux от коммерческой эксплуатации и одновременно открыла путь к использованию разработок сообщества пользователей проекта GNU, основанного Ричардом Столлменом (Richard Stallman), объемы кода которого значительно превосходят даже объем ядра Linux. Это позволило использовать в Linux такие полезные приложения, как комплекс компиляторов GNU Compiler Collection (GCC) и различные командные оболочки.

Введение в ядро Linux

Перейдем к общему обзору архитектуры операционной системы GNU/Linux. Операционную систему можно условно разделить на два уровня, как показано на Рис. 2.

Рис. 2. Фундаментальная архитектура операционной системы GNU/Linux

На верхнем уровне находится пользовательское пространство (пространство приложений). Здесь исполняются приложения пользователя. Под пользовательским пространством располагается пространство ядра. Здесь функционирует ядро Linux.

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

Ядро Linux можно, в свою очередь, разделить на три больших уровня. Наверху располагается интерфейс системных вызовов, который реализует базовые функции, например, чтение и запись . Ниже интерфейса системных вызовов располагается код ядра, точнее говоря, архитектурно-независимый код ядра. Этот код является общим для всех процессорных архитектур, поддерживаемых Linux. Еще ниже располагается архитектурно-зависимый код, образующий т.н. BSP (Board Support Package — пакет поддержки аппаратной платформы). Этот код зависит от процессора и платформы для конкретной архитектуры.

Мастер Йода рекомендует:  Самые необходимые плагины для WordPress

Свойства ядра Linux

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

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

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

Основные подсистемы ядра Linux

Давайте рассмотрим некоторые основные компоненты ядра Linux, следуя структуре, изображенной на рис. 3.

Рис. 3. Один из возможных взглядов на архитектуру ядра Linux

Интерфейс системных вызовов

SCI — это тонкий уровень, предоставляющий средства для вызова функций ядра из пространства пользователя. Как уже говорилось, этот интерфейс может быть архитектурно зависимым, даже в пределах одного процессорного семейства. SCI фактически представляет собой службу мультиплексирования и демультиплексирования вызова функций. Реализация SCI находится в ./linux/kernel, а архитектурно-зависимая часть — в ./linux/arch. Более подробные сведения об этом компоненте можно найти в разделе Ресурсы.

Управление процессами

Управление процессами сконцентрировано на исполнении процессов. В ядре эти процессы называются потоками (threads); они соответствуют отдельным виртуализованным объектам процессора (код потока, данные, стек, процессорные регистры). В пространстве пользователя обычно используется термин процесс, хотя в реализации Linux эти две концепции (процессы и потоки) не различают. Ядро предоставляет интерфейс программирования приложений (API) через SCI для создания нового процесса (порождения копии, запуска на исполнение, вызова функций Portable Operating System Interface [POSIX]), остановки процесса (kill, exit), взаимодействия и синхронизации между процессами (сигналы или механизмы POSIX).

Еще одна задача управления процессами — совместное использование процессора активными потоками. В ядре реализован новаторский алгоритм планировщика, время работы которого не зависит от числа потоков, претендующих на ресурсы процессора. Название этого планировщика — O(1) — подчеркивает, что на диспетчеризацию одного потока затрачивается столько же времени, как и на множество потоков. Планировщик O(1) также поддерживает симметричные многопроцессорные конфигурации (SMP). Исходные коды системы управления процессами находятся в ./linux/kernel, а коды архитектурно-зависимой части — в ./linux/arch). Более подробную информацию об этом алгоритме см. в разделе Ресурсы.

Управление памятью

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

Однако управление памятью — это значительно больше, чем просто управление буферами по 4 КБ. Linux предоставляет абстракции над этими 4 КБ буферами, например, механизм распределения slab allocator. Этот механизм управления базируется на 4 КБ буферах, но затем размещает структуры внутри них, следя за тем, какие страницы полны, какие частично заполнены и какие пусты. Это позволяет динамически расширять и сокращать схему в зависимости от потребностей вышележащей системы.

В условиях наличия большого числа пользователей памяти возможны ситуации, когда вся имеющаяся память будет исчерпана. В связи с этим страницы можно удалять из памяти и переносить на диск. Этот процесс обмена страниц между оперативной памятью и жестким диском называется подкачкой. Исходные коды управления памятью находятся в ./linux/mm.

Виртуальная файловая система

Еще один интересный аспект ядра Linux — виртуальная файловая система (VFS), которая предоставляет общую абстракцию интерфейса к файловым системам. VFS предоставляет уровень коммутации между SCI и файловыми системами, поддерживаемыми ядром (см. Рис. 4).

Рис. 4. VFS предоставляет коммутационную матрицу между пользователями и файловыми системами

На верхнем уровне VFS располагается единая API-абстракция таких функций, как открытие, закрытие, чтение и запись файлов. На нижнем уровне VFS находятся абстракции файловых систем, которые определяют, как реализуются функции верхнего уровня. Они представляют собой подключаемые модули для конкретных файловых систем (которых существует более 50). Исходные коды файловых систем находятся в ./linux/fs.

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

Сетевой стек

Сетевой стек по своей конструкции имеет многоуровневую архитектуру, повторяющую структуру самих протоколов. Вы помните, что протокол Internet Protocol (IP) — это базовый протокол сетевого уровня, располагающийся ниже транспортного протокола Transmission Control Protocol, TCP). Выше TCP находится уровень сокетов, вызываемый через SCI.

Уровень сокетов представляет собой стандартный API к сетевой подсистеме. Он предоставляет пользовательский интерфейс к различным сетевым протоколам. Уровень сокетов реализует стандартизованный способ управления соединениями и передачи данных между конечными точками, от доступа к «чистым» кадрам данных и блокам данных протокола IP (PDU) и до протоколов TCP и User Datagram Protocol (UDP). Исходные коды сетевой подсистемы ядра находятся в каталоге ./linux/net.

Драйверы устройств

Подавляющее большинство исходного кода ядра Linux приходится на драйверы устройств, обеспечивающие возможность работы с конкретными аппаратными устройствами. В дереве исходных кодов Linux имеется подкаталог драйверов, в котором, в свою очередь, имеются подкаталоги для различных типов поддерживаемых устройств, таких как Bluetooth, I2C, последовательные порты и т.д. Исходные коды драйверов устройств находятся в ./linux/drivers.

Архитектурно-зависимый код

Хотя основная часть Linux независима от архитектуры, на которой работает операционная система, в некоторых элементах для обеспечения нормальной работы и повышения эффективности необходимо учитывать архитектуру. В подкаталоге ./linux/arch находится архитектурно-зависимая часть исходного кода ядра, разделенная на ряд подкаталогов, соответствующих конкретным архитектурам. Все эти каталоги в совокупности образуют BSP. В случае обычного настольного ПК используется каталог i386. Подкаталог для каждой архитектуры содержит ряд вложенных подкаталогов, относящихся к конкретным аспектам ядра, таким как загрузка, ядро, управление памятью и т.д. Исходные коды архитектурно-зависимой части находятся в ./linux/arch.

Интересные особенности ядра Linux

Помимо переносимости и эффективности, ядро Linux обладает целым рядом других интересных функций, которые не были освещены в вышеприведенном рассмотрении.

Linux, как широко используемая на практике операционная система с открытым исходным кодом, является отличной испытательной площадкой для новых протоколов и их усовершенствований. Linux поддерживает большое количество сетевых протоколов, включая традиционный TCP/IP и его высокоскоростные расширения (для сетей быстрее Gigabit Ethernet [GbE] и 10 GbE). Linux также поддерживает такие протоколы, как Stream Control Transmission Protocol (SCTP), реализующий множество дополнительных функций, отсутствующих в TCP (применяется в качестве альтернативного протокола транспортного уровня).

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

Еще одно недавнее усовершенствование Linux — возможность ее использования в качестве операционной системы для других операционных систем (т.н. гипервизора). Недавно в ядро было внесено усовершенствование, получившее название Kernel-based Virtual Machine (KVM, виртуальная машина на базе ядра). В результате этой модификации в пространстве пользователя был реализован новый интерфейс, позволяющий исполнять поверх ядра с поддержкой KVM другие операционные системы. В таком режиме можно не только исполнять другие экземпляры Linux, но и виртуализовать Microsoft® Windows®. Единственное ограничение состоит в том, что используемый процессор должен поддерживать новые инструкции виртуализации. Более подробную информацию см. в разделе Ресурсы.

Дальнейшее изучение

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

Ресурсы для скачивания

Похожие темы

  • Оригинал статьи Anatomy of the Linux kernel: History and architectural decomposition.
  • На сайте GNU описана лицензия GNU GPL, которая распространяется на ядро Linux и большинство поставляемых с ним полезных приложений. Также описана менее ограничительная форма GPL, т.н. Lesser GPL (LGPL).
  • Описания UNIX, MINIX и Linux можно найти в энциклопедии Wikipedia. Там же имеется подробное генеалогическое древо операционных систем.
  • Библиотека GNU C, она же glibc, представляет собой реализацию стандартной библиотеки C. Она используется в операционной системе GNU/Linux, а также в микроядерной операционной системе GNU/Hurd.
  • uClinux это портированная версия ядра Linux, способная работать на системах, не имеющих блока управления памятью (MMU). Это дает возможность исполнять ядро Linux на очень компактных встраиваемых платформах, например, на процессоре Motorola DragonBall, применяемом в карманных компьютерах PalmPilot.
  • «Управление ядром с помощью системных вызовов Linux» Статья посвящена важному уровню ядра Linux — интерфейсу системных вызовов, поддержку которого на уровне пространства пользователя обеспечивает библиотека glibc, позволяющая осуществлять вызовы функций между пространством пользователя и ядром.
  • «Внутреннее устройство планировщика Linux» Новый планировщик O(1), появившийся в версии Linux 2.6, обладает высокой эффективностью, хорошо масштабируется для большого числа процессов (потоков) и поддерживает SMP-системы.
  • «Доступ к ядру Linux с помощью файловой системы /proc» В статье рассматривается файловая система /proc — виртуальная файловая система, предоставляющая приложениям в пространстве пользователя принципиально новый способ взаимодействия с ядром. Помимо /proc, в статье рассматриваются загружаемые модули ядра.
  • «Клиника серверов: практическое использование виртуальных файловых систем» В статье рассматривается уровень VFS, который позволяет Linux поддерживать множество разных файловых систем через общий интерфейс. Этот же интерфейс используется и для других типов устройств, например, сокетов.
  • «Устройство процесса загрузки Linux» В статье рассматривается процесс загрузки Linux, который следует одной и той же базовой схеме независимо от того, загружаетесь ли вы с жесткого диска, дискеты, USB-накопителя или через сеть.
  • «Виртуальный стартовый диск в Linux (initrd) — обзор» В статье рассматривается виртуальный стартовый диск — функция, которая позволяет отделить процесс загрузки от физического носителя, с которого происходит загрузка.
  • «Улучшение работы сетей с помощью SCTP» Статья посвящена одному из самых интересных сетевых протоколов — Stream Control Transmission Protocol — который работает аналогично TCP, но имеет при этом ряд дополнительных полезных функций, например, обмен сообщениями, поддержка нескольких IP-адресов узла (multi-homing), передача фрагментов разных потоков данных (multi-streaming). Linux, как и BSD — отличная операционная система, если вас интересует поддержка сетевых протоколов.
  • «Анатомия механизма slab allocator в Linux» Статья посвящена одному из самых интересных аспектов управления памятью в Linux — механизма slab allocator. Этот механизм впервые появился в SunOS, но прекрасно прижился и в ядре Linux.
  • «Виртуальный Linux» Статья рассказывает о том, как Linux может использовать возможности процессоров, поддерживающих виртуализацию.
  • «Linux и симметричные многопроцессорные системы» В статье рассматривается вопрос о том, как Linux может использовать возможности процессоров с поддержкой многопроцессорных конфигураций на уровне кристалла.
  • «Знакомство с виртуальной машиной ядра Linux» В статье рассматриваются недавно появившиеся в ядре Linux средства виртуализации, превращающие ядро Linux в гипервизор для других виртуализованных операционных систем.
  • Ознакомьтесь с книгой Тима Джонса: Программирование приложений для GNU/Linux, подробно рассказывающей о программировании для Linux в пространстве пользователя.
  • В разделе Linux сайта developerWorks Россия можно найти другие ресурсы для Linux-разработчиков.
  • Используйте ознакомительные версии ПО IBM, которые можно загрузить непосредственно с developerWorks, в вашем следующем проекте разработки для Linux.

Комментарии

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

Что такое ядро Linux

Ядро Linux содержит более 13 миллионов строк кода и является одним из самых крупных проектов с открытым исходным кодом в мире. Так что такое ядро Linux и для чего оно используется?

Что такое ядро Linux?

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

Виды и версии ядра

Что такое ядро Linux вы уже знаете, но какие вообще бывают виды ядер? Есть различные способы и архитектурные соображения при создании ядер с нуля. Большинство ядер могут быть одного из трех типов: монолитное ядро, микроядро, и гибрид. Ядро Linux представляет собой монолитное ядро, в то время как ядра Windows и OS X гибридные. Давайте сделаем обзор этих трех видов ядер.

Микроядро

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

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

Плюсы

  • Портативность
  • Небольшой размер
  • Низкое потребление памяти
  • Безопасность

Минусы

  • Аппаратные средства доступны через драйверы
  • Аппаратные средства работают медленнее потому что драйверы работают в пользовательском режиме
  • Процессы должны ждать свою очередь чтобы получить информацию
  • Процессы не могут получить доступ к другим процессам не ожидая

Монолитное ядро

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

Плюсы:

  • Более прямой доступ к аппаратным средствам
  • Проще обмен данными между процессами
  • Процессы реагируют быстрее

Минусы:

  • Большой размер
  • Занимает много оперативной памяти
  • Менее безопасно

Гибридное ядро

Гибридные ядра могут выбирать с чем нужно работать в пользовательском режиме, а что в пространстве ядра. Часто драйвера устройств и файловых систем находятся в пользовательском пространстве, а IPC и системные вызовы в пространстве ядра. Это решение берет все лучшее из обоих предыдущих, но требует больше работы от производителей оборудования. Поскольку вся ответственность за драйвера теперь лежит на них.

Плюсы

  • Возможность выбора того что будет работать в пространстве ядра и пользователя
  • Меньше по размеру чем монолитное ядро
  • Более гибкое

Минусы

  • Может работать медленнее
  • Драйверы устройств выпускаются производителями

Где хранятся файлы ядра?

Где находится ядро Linux? Файлы ядра Ubuntu или любого другого Linux-дистрибутива находятся в папке /boot и называются vmlinuz-версия. Название vmlinuz походит с эпохи Unix. В шестидесятых годах ядра привыкли называть просто Unix, в 90-х годах Linux ядра тоже назывались — Linux.

Когда для облегчения многозадачности была разработана виртуальная память, перед именем файла появились буквы vm, чтобы показать что ядро поддерживает эту технологию. Некоторое время ядро называлось vmlinux, но потом образ перестал помещаться в память начальной загрузки, и был сжат. После этого последняя буква x была изменена на z, чтобы показать что использовалось сжатие zlib. Не всегда используется именно это сжатие, иногда можно встретить LZMA или BZIP2, поэтому некоторые ядра называют просто zImage.

Нумерация версии состоит из трех цифр, номер версии ядра Linux, номер вашей версии и патчи или исправления.

В паке /boot можно найти не только ядро Linux, такие файлы, как initrd.img и system.map. Initrd используется в качестве небольшого виртуального диска, который извлекает и выполняет фактический файл ядра. Файл System.map используется для управления памятью, пока еще ядро не загрузилось, а конфигурационные файлы могут указывать какие модули ядра включены в образ ядра при сборке.

Архитектура ядра Linux

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

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

Мастер Йода рекомендует:  Тест насколько хорошо вы знаете C#

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

Модули ядра

Что, если бы Windows уже имела все нужные драйвера по умолчанию, а вы лишь могли включить те, которые вам нужны? Именно такой принцип реализуют модули ядра Linux. Модули ядра также известные как загружаемые модули (LKM), имеют важное значение для поддержки функционирования ядра со всеми аппаратными средствами, не расходуя всю оперативную память.

Модуль расширяет функциональные возможности базового ядра для устройств, файловых систем, системных вызовов. Загружаемые модули имеют расширение .ko и обычно хранятся в каталоге /lib/modules/. Благодаря модульной природе вы можете очень просто настроить ядро путем установки и загрузки модулей. Автоматическую загрузку или выгрузку модулей можно настроить в конфигурационных файлах или выгружать и загружать на лету, с помощью специальных команд.

Сторонние, проприетарные модули с закрытым исходным кодом доступны в некоторых дистрибутивах, таких как Ubuntu, но они не поставляются по умолчанию, и их нужно устанавливать вручную. Например, разработчики видеодрайвера NVIDIA не предоставляют исходный код, но вместо этого они собрали собственные модули в формате .ko. Хотя эти модули и кажутся свободными, они несвободны. Поэтому они и не включены во многие дистрибутивы по умолчанию. Разработчики считают что не нужно загрязнять ядро несвободным программным обеспечением.

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

Мифы, правда и ложь о ядре Linux

Разработчик Linux из OSL, Greg Kroah-Hartman, представил доклад, в котором постарался развеять основные домыслы и заблуждения, связанные с ядром Linux.
В ироничной форме обсуждаются такие часто поднимаемые вопросы как непостоянство kernel API, отсутствие у Linux красивого «правильного» дизайна, отсутствие ‘plug-n-play’ на уровне, сравнимом с Windows, и т.п.
В конце заявляется, что все хорошо, и постепенный захват мирового господства идет по плану 🙂

Re: Мифы, правда и ложь о ядре Linux

> Вы уверены, что это работа для домашнего компьютера?

А что, круг задач, решаемых на приборе _общего назначения_, устанавливается законодательством? С каких пор?

Re: Мифы, правда и ложь о ядре Linux

>>эмулятора прибора на ПС

>Вы уверены, что это работа для домашнего компьютера?

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

Re: Мифы, правда и ложь о ядре Linux

> Зупусти мне Command & Conquer Gold который под Win. Могу поспорить что не запустишь.

Неужели «Compatibility» с windows 95 не помогает?

Re: Мифы, правда и ложь о ядре Linux

Re: Мифы, правда и ложь о ядре Linux

> Опять-таки, из той же цитаты: «/actually/ mean (and have warped into over time)». Пока что трудно говорить о чем-то, поскольку не прошло достаточное количество времени. Но «все течет, все меняется». Терминология не исключение.

Ну так это, простите, не проблема XML 🙂

Re: Мифы, правда и ложь о ядре Linux

>Original Install Date: 12.02.2004, 2:55:02 PM с:\windows Size: 3.24 GB (3,485,079,817 bytes) Size on disk: 2.85 GB (3,066,201,288 bytes)Contains: 18,838 Files 1,431 Folders

Смеёшься? Что, кроме папки виндовс этому виндовсу ниче не надо? да? Гы-гы-гы, насмешил) А вот удали-ка всё что не c:\windows!

НИЧЕ я с ней не делал. Поставил антивирь, апдейты и ворд. Мама успела сделать от силы десяток-другой файлов в ворде. Своп переназначен на D:

Re: Мифы, правда и ложь о ядре Linux

Ну тогда мой черед спросить, седайко, вы дурак? у меня вот ниче не тормозит пока в ХР не перегружусь. Минуты две гружусь.

Re: Мифы, правда и ложь о ядре Linux

>покажи мне софт, под ХР, не работающий под 2000

Гы, Windows Media Player 10, Internet Explorer 7.

Re: Мифы, правда и ложь о ядре Linux

MSN Messenger > 7.0 🙂

Re: Мифы, правда и ложь о ядре Linux

Dungein Keeper II :)))

Re: Мифы, правда и ложь о ядре Linux

так еще и регистрироваться надо 😉

Re: Мифы, правда и ложь о ядре Linux

>> Не все равно. ХР после установки занимал 1,5-2 гб. Через недели две — 5.

>Объясни, что ты с ней сделал У меня:

>Original Install Date: 12.02.2004, 2:55:02 PM с:\windows

>Size: 3.24 GB (3,485,079,817 bytes) Size on disk: 2.85 GB (3,066,201,288 bytes)

>Contains: 18,838 Files 1,431 Folders

Можно провести лпрос кто что делал с папкой /usr, что у всех различия. Кстати, у Вас MSDN и VS стоит какая нибудь?

Re: Мифы, правда и ложь о ядре Linux

> Можно провести лпрос

Не нужен никакой опрос. Windows начиная с ME/2000 автоматически делает «точки отката», по которым можно восстанавливать систему. Т.е. если с некоторой периодичностью понаставить кучу софта, то до таких размеров занимаемое пространство и вырастет.

Re: Мифы, правда и ложь о ядре Linux

Во, какая баталия развелась! Можно свои 5 копеек?

Давайте признаем, что Linux больше заботится о совместимости. Программу написанную 10 лет назад я смогу запустить и сейчас. А вот винда. Чего стОит галочка «Windows 98 compatibility» в WinXP, которая в большинстве случаев бесполезна.

А еще давайте признаем, что Линукс дает больше свободы. Поскольку уж мы говорим о ядре — сколько та файловых систем поддерживается в Винде по умолчанию? Даже, не по умолчанию — сколько говорите? Давайте, бросайте камень по поводу железа, которое не поддерживается Линукс. Я отфутболю рассказав некую историю, когда я боролся с некой звуковухой, которая не определялась правильно, и ставился левый драйвер, который ничего не мог делать, и как я с этим боролся. Линукс проще настроить чем в Винде ошибку в Plug-n-play побороть. Кстати, та звуковуха под Linux без проблем стала.

Я много в свое время спорил по поводу Linux vs Windows и почему секретарша не ставит себе какой-нибудь SuSE. Сошлись на том, что Винда — для тех, которым много не надо — окошки есть, удобно и красиво, ну и ладно, гда там мой плеер (как его там), что бы этот блестящий диск с 6 фильмами посмотреть. Извините за сарказм, я на самом деле таких людей понимаю, мне лично абсолютно пофиг какие у меня трубы в квартире и тип материала унитаза чтобы сделать свое дело в сартире. Но компьютером я живу, общаюсь, развлекаюсь, работаю и от этого девайса мне нужно выжать все, чтобы я смог 100 писем просмотреть за 5 минут а потом смотреть какой-нить HDTV на языке-оригинале и при этом закачивая из торрентов отдавать по ftp, а то и сайтик сварганить — и чтобы все это работало идеально на моем несильном железе. Не нужно это большинству, как и водпровод с канализацией и пыльным телевизором — не для меня. Каждому свое. И я готов часами лазить по и-нету и читать маны и смотреть форумы для того, чтобы добавить ключик к wget чтобы он мне все треки скачал из http сайта (для тех кто в танке — утрирую).

Это я к тому, что любой спор Windows vs Linux — включая споры по поводу их ядра — бесполезен. Каждый хорош своим. Главное это то, что важнее для тебя.

Извините за такое изобилие 🙂

Re: Мифы, правда и ложь о ядре Linux

>Писать опенсорсный код будет тот, кто не готов брать за свою работу деньги. То есть тот, кто не уверен, что его труд чего-нибудь да стоит.

>В вин 2000 уже есть все, что нужно 95% пользователей.

Нормальный проигрыватель с нормальной поддержкой DVD, нормальной броузер, нормальные игры, нормальное средство подготовки документов, нормальный почтовый клиент и т.д. Неужели это всё там есть. А нету. Потому, что им это невыгодно!

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

>Цуки, это ж кадый год под определение «ну такой, офисный комп» подставляют то, что в прошлом году самым мощным было! Что, текст теперь набирать пентиума второго-третьего не хватает? Операционная система должна распределять ресурсы, вать машу, а виста сраная их только пожирает.

>засунуть всем мелкомягким в задний проход, и провернуть.

>А может вам свои руки туда запихать? >если вы смогли заставить винду тормозить на 3гб ОЗУ и атлоне 64

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

>А вообще говоря, набирать тексты и 486+вин311 может

Набирать тексты можно и на Спектруме. Хоть в ОС Doors, хоть в ZX-Windows. Да хоть на бэйсике накатать программу типа VI, в которой будет команда выхода, сохранения текста на магнитную ленту и распечатки на принтере!

>Угадай, сколько занимает базовая система + одна графическая рабочая среда.

Дай я за него отвечу. Две дискеты!

>Гы, Windows Media Player 10, Internet Explorer 7.

Да кому эти какашки нужны. Кроме фанатиков m$ конечно же =)

Re: Мифы, правда и ложь о ядре Linux

P.S. Почему-то «пять копеек» имени Kroz’a читать приятнее и интереснее, чем рассказы о «могучем виндовсе» в топике про ядро линукса.

P.P.S: На работе виндовс, дома из-за работы виндовс.. придешь на ЛОР (на ЛОР. ) и тут найдется фанатег, который будет с пеной у разных отверстий рассказывать мне что я люблю ХР, жить не могу без ХР и молиться должен опять-таки на ХР && совершать намаз на висту. Еси виндовс такой хороший, то почему есть ЛОР?

Re: Мифы, правда и ложь о ядре Linux

>эволюция, которая всегда приносила куда более эффективный результат чем всякого рода революции.
Пара миллионов лет и Linux победит?

Re: Мифы, правда и ложь о ядре Linux

Dimez>В отличие до .NET, в котором есть 3 почти полностью несовместимые(1.0, 1.1 и 2.0)
Dimez>версии и одна вообще непонятно зачем сделана(1.2, которая идёт с VS2003 и тоже с приколами.)
:)) типа, слепые рассматривали слона и пришли к неожинанным выводам :))
может с mono перепутал?

Re: Мифы, правда и ложь о ядре Linux

>Size: 3.24 GB (3,485,079,817 bytes) Size on disk: 2.85 GB (3,066,201,288 bytes)

Это как? Размер больше, чем занимаемое на диске место. Мсье — волшебник? :)))

Re: Мифы, правда и ложь о ядре Linux

> покажи мне софт, под ХР, не работающий под 2000

Premiere Pro 1.x и старше.

> Неужели «Compatibility» с windows 95 не помогает?

А он вообще работает?

Re: Мифы, правда и ложь о ядре Linux

>> попробовал бы аффтар писать прикладной код под фрэймворк, в котором меняется API от версии к версии. он бы просто сошёл бы с ума.

>Расскажи это миллиону леммингов, пишущих под MS DirectX

Почему у меня под DX9c идут старые игры, писанные под DX3?

Re: Мифы, правда и ложь о ядре Linux

>Почему у меня под DX9c идут старые игры, писанные под DX3?

потому что у тебя помимо DX9 стоит и DX3. А ты не знал? 🙂

Re: Мифы, правда и ложь о ядре Linux

>>Size: 3.24 GB (3,485,079,817 bytes) Size on disk: 2.85 GB (3,066,201,288 bytes)

> Это как? Размер больше, чем занимаемое на диске место. Мсье — волшебник? :)))

Нет, просто сжатие на редко используемые данные (dllcache, например) включено. NTFS умеет

Ну ок. Есть еще Program Files на 2.2гб на диске с кучей мелких и не очень программ (2/3 доставлены мною — pdf reader, tora. ) . Своп лежит на другом диске — размер 1 гб (больше не нужно, т.к. памяти 2гб). И того еще 3гб. Рабочие вещи (.net sdk, jdk, msdn, oracle) я не считаю — это работа.

Это разве много?

Re: Мифы, правда и ложь о ядре Linux

> Программу написанную 10 лет назад я смогу запустить и сейчас

Это еще смотря какую и что для этого потребуется. Особенно прикольно будет с софтом который новым gcc не скомпилится. 🙂 А старая glibc пошлет лесом новое ядро. Все же стоит признать что в винде больше внимания уделяется совместимости.

> Поскольку уж мы говорим о ядре — сколько та файловых систем поддерживается в Винде по умолчанию?

А это наверное для того, чтобы можно было заполнять форумы по сотне страниц рассказами, о том что где и как свалилось? 🙂 Чем плохо иметь 2-ве fs, что-то типа попроще ext2/3 и что-то уровня XFS или NTFS ( но с уровнем отладки ext2 ?)

> И я готов часами лазить по и-нету и читать маны и смотреть форумы для того, чтобы добавить ключик к wget чтобы он мне все треки скачал из http сайта

Offline explorer. уже есть 🙂 Хотя wget отличная штука. Иногда пользуюсь. Кстати там есть возможность в процессе закачки менять ограничение скорости?

> Каждый хорош своим. Главное это то, что важнее для тебя.

Главное здесь подход без фанатизма.

Re: Мифы, правда и ложь о ядре Linux

> Почему у меня под DX9c идут старые игры, писанные под DX3?

Тогда может ты расскажешь всей России еще и о том, что запустил ГЭГ под WinXP? 🙂

Re: Мифы, правда и ложь о ядре Linux

> Тогда может ты расскажешь всей России еще и о том, что запустил ГЭГ под WinXP? 🙂

А что, у кого-то он не идет? Я где-то год назад, в очередной раз его был прошел под windows xp.

Re: Мифы, правда и ложь о ядре Linux

>покажи мне софт, под ХР, не работающий под 2000

>Гы, Windows Media Player 10, Internet Explorer 7.

Adobe Premier 7.0

Re: Мифы, правда и ложь о ядре Linux

>С чего такое число? У вас есть статистика количества опенсорсного и проприентарного софта на планете?

Да, и заодно критерий, какой софт считать, а какой нет. А то если считать ВЕСЬ софт, то закрытый софт одними календарями и часиками на дельфях и прочих дотнетах по количеству кода уделает какой-нить ОпенОффис.

Re: Мифы, правда и ложь о ядре Linux

>Нормальный проигрыватель с нормальной поддержкой DVD, нормальной

ага, единственный нормальный dvd проигрыватель (windvd) на линух портировали совсем недавно и то неизвестно как он там работает, сомневаюсь я что так же как и в виндах 🙂

>броузер, нормальные игры,

а что в линухе уже есть нормальные игры? например? (да движке кваков не предлагать)

>нормальное средство подготовки документов, нормальный почтовый клиент и т.д. Неужели это всё там есть.

как ни странно есть

Re: Мифы, правда и ложь о ядре Linux

Хм.. Любопытно, ознакомимся..

Re: Мифы, правда и ложь о ядре Linux

> The article goes on to show how the community based distros, like Gentoo and Debian, would slowly become obsolete and not work on any new hardware platforms, and dry up as no users would be able to use them anymore

Чет я не пойму чем ему генту не угодил? Странное заявление на мой взгляд.

Re: Мифы, правда и ложь о ядре Linux

>Не нужен никакой опрос. Windows начиная с ME/2000 автоматически делает «точки отката», по которым можно восстанавливать систему.

Причем восстанавливается не всегда.

Re: Мифы, правда и ложь о ядре Linux

Тридцать тысяч файлов примерно в сорока вложенных каталогах. Windows XP SP2. NTFS. p-IV 3,0 1Gb, SATA, X800 256Mb.

Делаю поиск (виндовый), нахожу 7500 файлов (ну с копейками). Выделаю все файлы в окне результатов и жму правую кнопку мыши.

Десять минут проходит — процесс висит.

Снял процесс руками, весь explorer перегрузился, половина значков из трея исчезло.

Re: Мифы, правда и ложь о ядре Linux

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

Особенно понравилось про что БОЛЬШИМИ буквами написано «ЧИТАЙТЕ ДОКИ. ОНИ РУЛЕЗ»

Re: Мифы, правда и ложь о ядре Linux

>Десять минут проходит — процесс висит.

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

>Снял процесс руками, весь explorer перегрузился, половина значков из трея исчезло.

«Launch folder windows in a separate process.» — не пробовали?

Re: Мифы, правда и ложь о ядре Linux

Re: Мифы, правда и ложь о ядре Linux

>»Launch folder windows in a separate process.» — не пробовали?

берем и открываем одно окно из «My computer».

Мастер Йода рекомендует:  Фреймворк Symfony 4 - полный онлайн курс на русском языке

А теперь убей первый explorer.exe :)))

Re: Мифы, правда и ложь о ядре Linux

>ага, единственный нормальный dvd проигрыватель (windvd) на линух портировали совсем недавно и то неизвестно как он там работает, сомневаюсь я что так же как и в виндах 🙂

А что, xine DVD как-то не так играет?

>а что в линухе уже есть нормальные игры? например? (да движке кваков не предлагать)

А на движке DOOM3, UT и «Tux на пузе катится с горы»?

>как ни странно есть

MikTeX и sylpheed-claws-win32 или Thunderbird, на крайний случай Evolution.

Re: Мифы, правда и ложь о ядре Linux

>А на движке DOOM3, UT и «Tux на пузе катится с горы»?

движок дума3==движок квака (квак4 на чем по твоему сделан ? 🙂 ) UT вообще херь страшная после 99’го.

нормальное что-нибудь под линух есть и чтоб запускалось без эмуляции? например Call Of Duty 1,2/Serious Sam/FarCry/Vietcong/Trackmania что-нибудь из этого есть?

Re: Мифы, правда и ложь о ядре Linux

>»Launch folder windows in a separate process.» — не пробовали?

Нет. И наверное MS не зря не сделала этого «из коробки».

Re: Мифы, правда и ложь о ядре Linux

Движки UT бывают разные.

Движок UT2007 сейчас вообще на волне — кроссплатформенный, быстрый.

Re: Мифы, правда и ложь о ядре Linux

> нормальное что-нибудь под линух есть и чтоб запускалось без эмуляции? например Call Of Duty 1,2/Serious Sam/FarCry/Vietcong/Trackmania что-нибудь из этого есть?

И это вы называете НОРМАЛЬНЫМ? по моему не совсем удачный пример, ну да ладно.

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

Мне не совсем понятно отношение разговора о играх к теме ядра, но возможно «нормальных» игр стало бы в линуксе больше, если бы Вы их покупали. 😉

Re: Мифы, правда и ложь о ядре Linux

я их и так покупаю, только что-то пока мне в магазине ни разу не удалось встретить диск с игрой под линух 🙂

а нормальных игр не будет пока линух будет оставаться на 1% десктопов, а это будет похоже вечно, учитывая политику разработчиков системы и в том числе ядра.

Re: Мифы, правда и ложь о ядре Linux

> > Программу написанную 10 лет назад я смогу запустить и сейчас

> Это еще смотря какую и что для этого потребуется. Особенно прикольно будет с софтом который новым gcc не скомпилится. 🙂 А старая glibc пошлет лесом новое ядро. Все же стоит признать что в винде больше внимания уделяется совместимости.

Вы не праы, и будете оставаться таким пока не дадите мне пример программы, которую я у себя на системе не запущу (Slackware). А что до Windows — вверху було достаточно примеров, что не запускается под новые версии Windows. Я сам не пробовал, но уверен, что и сам найду такие программы, если надо будет.

Совместимость — не конек Windows.

> > Поскольку уж мы говорим о ядре — сколько та файловых систем поддерживается в Винде по умолчанию?

> А это наверное для того, чтобы можно было заполнять форумы по сотне страниц рассказами, о том что где и как свалилось? 🙂 Чем плохо иметь 2-ве fs, что-то типа попроще ext2/3 и что-то уровня XFS или NTFS ( но с уровнем отладки ext2 ?)

Ими всеми пользуются, а значит они востребованы. А значит это, что юзер который пересядет на Windows, не сможет реализовать все свои запросы нод этой системой после Linux. А вот пользователи Windows просто не знают, что можно творить с хорошей файловой системой. На необразованности большинства пользователей Микрософт и играет.

Лично меня просто бесит отсутствие симлинков и хардлинков в Windows (я имею ввиду посредством стандартного софта) — без этой фичи я уже не могу нормально работать, больно уж удобно.

> > И я готов часами лазить по и-нету и читать маны и смотреть форумы для того, чтобы добавить ключик к wget чтобы он мне все треки скачал из http сайта

> Offline explorer. уже есть 🙂 Хотя wget отличная штука. Иногда пользуюсь. Кстати там есть возможность в процессе закачки менять ограничение скорости?

Ну давай разбирать по косточкам каждую программу. Так я сейчас найду чего не в Explorer, и, поверьте, список будет не маленьким. Или имеется ввиду что программы, которая б могла менять скорость на лету вообще нет под Линукс? Честно, я такой не знаю, но мне кажется, что она есть. Кстати, а вы сможете в Windows регулировать скорость потоков по сети ЛЮБОГО трафика на лету? Мне кажется я знаю как это сделть в Линукс СТАНДАРТНЫМИ СРЕДСТВАМИ 😛

> > Каждый хорош своим. Главное это то, что важнее для тебя.

> Главное здесь подход без фанатизма.

Точно. Фанатики орудуют общими словами чтобы обосновать свои идеи, а обычные люди — конкретными примерами. Жду от вас примеров, если вы, конечно, настроены продолжать дискуссию.

Самый странный коммит в истории ядра Linux

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

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

Через некоторое время поймал интересный звонкий сигнал. На глубине 20 см лежал круглый предмет.
Находка увесистая — 475 грамма, диаметр 5 см. Материал понять не могу. Мысли идут в сторону ядра войны 1812 года.

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

Хотелось бы прочесть комменты копарей, что уже поднимали похожие штуки. Как чистить? И стоит ли вообще?
Всем желаю найти свой клад!

Метание ядра

Миссия НАСА к Марсианскому ядру | Перевод

Краткое, но яркое описание миссии InSight, и инструментов, которые помогут узнать больше о ядре Марса.

Большое спасибо Альфие Паниной за великолепную озвучку. Можете её поддержать в её проекте научных лекториев Нижнего Новгорода: https://vk.com/ratiohallnnov

Крымская война.

Кусок мачты английского корабля с русским ядром.

Где мои ядра.

Купил парень на али восстановленный htc m9.

Пришёл к нам, говорит камера фиолетовая, я поменял камеру и через 3 дня пришёл с криками, «вы что охуели. Где мои ядра?»

Когда я сдавал телефон у меня было 8 ядер, сейчас 4.

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

Но я не нашёл, ребят как они выглядят? Чтоб знать что искать)))))

Не пробил!

В Бердянске есть забавный памятник в виде ядра.

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

Что будет, если Земля останется без защиты.

Отрывок из фильма «Ядро» 2003г.

Я не уверен, что прям именно так и будет, но суть я думаю вы поймёте.

Этим постом, я всего лишь хотел сказать, что наше Солнышко далеко не наш друг. И ещё, что нам очень повезло. Магнитное поле Земли защищает нас от солнечного ветра и космической радиации.

Нет, бл..ть, не будет всё так как на видео!

Бл..ть, на..уй я запилил этот пост?!

Типичные пользователи линукса готовят пельмени.

Вышло новое обновление ядра 4.10

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

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

«В целом разработка 4.10 завершилась не так скромно, как ожидалось изначально. После огромного релиза 4.9 я ожидал, что многие вещи не будут столь значимыми, но получился довольно средний по современным меркам ядра релиз. В итоге мы имеем примерно 13 000 коммитов (исключая подсчёт коммитов слияния — это ещё примерно 1200)», — сообщил Линус Торвальдс в анонсе.

Из заметных изменений:

поддержка Virtual GPU (презентация);

новая утилита perf c2c (может быть использована для анализа Cache Line Contention на системах NUMA);

возможность ручного распределения кэшей L2/L3 между группам процессов (Intel Cache Allocation Technology, статья);

хуки eBPF для cgroups;

гибридный опрос блоков;

улучшение управления обратной записью (writeback management, статья).

В 4.10 добавлен новый «perf sched timehist» для предоставления детальной истории планируемых задач, кроме того, для MD RAID 5 появилась экспериментальная поддержка FAILFAST и кэша обратной записи.

Также в новую версию вошло огромное число улучшений для разных файловых систем: EXT4, F2FS, XFS, OverlayFS, CIFS, UBIFS, BEFS. Удалена давно никем не поддерживаемая LogFS. Была значительно улучшена поддержка архитектуры ARM. Обновлены многочисленные драйверы, в особенности драйвер GPU для AMD Radeon.

Ядру Linux — 25 лет!

25 августа 1991 года, после 5 месяцев разработки, 21-летний студент Линус Торвальдс объявил в телеконференции comp.os.minix о создании рабочего прототипа новой операционной системы Linux, для которой было отмечено завершение портировния bash 1.08 и gcc 1.40. Первый публичный выпуск ядра Linux был представлен 17 сентября. Ядро 0.0.1 имело размер 62 Кб в сжатом виде, поддерживало одну архитектуру i386 и содержало около 10 тыс. строк кода. Ядро версии 4.7, вышедшее в июле 2020 года, насчитывает 21.7 млн. строк кода и поддерживает несколько десятков архитектур (точное количество установить невозможно).

Хороший повод выпить и перечитать замечательную книгу «Just for Fun: The Story of an Accidental Revolutionary»!

Попала.

Архитектура ОС Windows и Linux

Добрый день Пикабушники!

Сегодня я решил показать Вам различия между ядрами операционных систем Windows и Linux.

Начнем с относительно простого ядра Linux.

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

Теперь перейдем к Windows:

Как видим структура ядра намного более сложная. Преимущество это или недостаток? Каждый решает для себя сам. Программа под Windows обращается через документированный Windows API к «своей» библиотеке (например Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll), эти библиотеки по внутреннему протоколу (документация для разработчиков не из Microsoft не доступна) обращается по протоколу Native API к Ntdll.dll и далее передается через диспетчер системных сервисов ядру (все это внутри Ntoskrnl.exe).

После обработки в режиме ядра и использованию драйверов данные передаются Hal.dll — библиотеке которая непосредственно управляет оборудованием. Второй системой управляющей оборудованием является графическое ядро (проприетарные функции видеокарт в основном касаются именно этого).

Важно отметить одну особенность пользовательского режима ядра Windows — «Подсистемы окружения». Эта компонента позволяет Windows использовать коды стандартов POSIX, Win16 и т.п. Данный механизм по сути является набором виртуальных ядер сторонних ОС и позволяет быстро адаптировать под Windows любой сторонний код.

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

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

Разработчики ядра Linux восстали против хамства Линуса Торвальдса

Сообщество разработчиков Linux приняло принципы поведения при возникновении конфликтов между участниками рассылки Linux Kernel Mailing List (LKML). Предполагается, что они помогут создать более комфортные условия для работы и избавят участников сообщества от регулярных оскорблений и унижений со стороны сослуживцев.

Кодекс был написан ведущим разработчиком Linux Грегом Кроа-Хартманом (Greg Kroah-Hartman), ответственным за поддержку стабильной ветки ядра. Под ним поставили подписи 60 членов сообщества. После этого кодекс был прочтен и одобрен Торвальдсом и опубликован в LKML. «Посмотрим, сработает ли это», — написал Торвальдс в комментариях к записи.

«Разработка ядра Linux — крайне личный процесс в отличие от традиционных способов создания программного обеспечения. Ваш код и ваши идеи будут скрупулезно оценивать другие участники. И часто результатом этой оценки будут становиться осуждения и критика. Как правило, такой процесс всегда ведет к улучшению кода перед тем, как он будет включен в ядро. Вы должны понять, что так происходит потому, что каждый участник желает добиться наилучшей реализации. И именно такой подход позволил создать самое надежное ядро операционной системы. Поэтому мы не хотим ограничивать вклад людей, что может повлиять на окончательный результат», — говорится в принятом «Кодексе разрешения конфликтов» (Code Of Conflict).

«Однако персональные оскорбления, угрозы и другие действия, вызывающие дискомфорт, неприемлемы. Если вы столкнетесь с таким отношением, пожалуйста, свяжитесь с консультативным комитетом Technical Advisory Board организации Linux Foundation или любым из его членов. Они сделают все возможное от себя, чтобы разрешить конфликт», — говорится в кодексе.

Вместе с тем автор Code Of Conflict призвал участников сообщества остудить пыл и уважительно относиться друг к другу. «Пожалуйста, стремитесь не выходить за рамки приличий и фокусироваться именно на технической стороне обсуждаемых проблем», — говорится в кодексе.

Линус Торвальдс одобрил кодекс поведения разработчиков и намерен проверить, сработает ли он

Примечательно, что самым известным грубияном в сообществе Linux является создатель ядра Линус Торвальдс (Linus Torvalds), приступы гнева которого хорошо известны разработчикам свободного ПО. В январе 2015 г. Торвальдс заявил, что ему без разницы, какие чувства испытывают обещающиеся с ним разработчики. «Некоторые люди думают, что я приятен. И они оказываются крайне удивлены, когда понимают, что заблуждались. Я неприятный человек. И вы меня не заботите. Я забочусь о технологии и ядре — вот что для меня важно», — сказал он. На самом деле он не такой уж плохой человек, просто не переносит бестолковых людей, считают люди, знакомые с ним лично.

Тем не менее, среди участников сообщества распространено мнение, что такое отношение Торвальдса вредит сообществу, так как другие начинают его копировать. «Я увлекаюсь Linux более 20 лет. Знаете, почему я никогда не принимала участия в проекте? Из-за этого человека», — поделилась в Twitter Бодил Стокке (Bodil Stokke), не сумевшая пройти мимо январского заявления создателя ядра.

Проблема состоит в том, что тон Торвальдса стал популярен не только в рассылке LKML, но и в компаниях, чей бизнес основан на открытом коде. Джим Уайтхерст (Jim Whitehurst), генеральный директор одной из таких компаний, Red Hat, однажды признался, что его сотрудники вполне могут позволить себе назвать его идиотом в личной беседе.

Обнаружение ядра Linux снимок в фиксации истории

У меня есть снимок Linux ядра, предоставляемой компанией для одного из своих устройств в соответствии с предписаниями по GPL.

У меня также есть история Linux ядра как репозиторий (со многими фиксациями старше снимки и многими новыми).

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

Это возможно? (По крайней мере, хорошая оценка.)

Модификация другого ответа, вы могли бы взять на себя дифф

  1. Добавьте свое дерево , как осиротевшие совершить, как описано здесь

Сделайте это с помощью команды:

  1. для фиксаций в подозрительной диапазоне, бегите git diff —shortstat COMMIT , он будет печатать что — то вроде «N строк изменились, M вставок, K удалений». Вы должны найти коммят с минимальными подсчетами.

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

Вот что я хотел бы сделать:

Проверьте Makefile дерева вы должны найти версию (например, 4.15). Используйте это, чтобы сузить диапазон возможных фиксаций (только те, где Maekfile имели эту версию)

Возьмите SHA1 подписи всех файлов в дереве у вас есть — например,

найти . -не -path ./.git типа F -exec sha256sum <> \; > kernel.log

Сделайте то же самое для каждой фиксации в диапазоне и сохранить полученные файлы

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

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