Аргументы ядру

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

6
задан AIB 11 May 2011 в 17:39
поделиться

5 ответов

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

Вот как это делается в ARM . Обычно ядро ​​не может загрузить машину с нуля. Может из биоса, но тогда не с нуля. Требуется некоторая инициализация, это работа загрузчика.

2
ответ дан 17 December 2019 в 00:13
поделиться

Есть некоторые параметры, которые ядро ​​Linux принимает от загрузчика, из которых сейчас я могу вспомнить параметр vga . Например:

kernel /vmlinuz-2.6.30 root=/dev/disk/by-uuid/3999cb7d-8e1e-4daf-9cce-3f49a02b00f2 ro vga=0x318

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

2
ответ дан 17 December 2019 в 00:13
поделиться

Для ядра Linux загрузчик должен сообщить ядру несколько вещей. Он включает в себя такие вещи, как командная строка ядра (как уже упоминалось несколько других людей), где в память был загружен initrd , и его размер, если используется initrd (ядро не может загрузить его само ; часто при использовании initrd модули, необходимые для доступа к устройствам хранения, находятся внутри initrd, и ему также может потребоваться выполнить довольно сложную настройку перед тем, как получить доступ к хранилищу), и несколько различных мелочей.

См. Documentation / x86 / boot.txt (ссылка на версию 2.6.30) для получения более подробной информации о традиционной архитектуре x86 (как 32-разрядной, так и 64-разрядной), включая то, как эти переменные передаются в настройку ядра. код.

2
ответ дан 17 December 2019 в 00:13
поделиться

Linux принимает переменные от загрузчика, чтобы разрешить использование определенных параметров. Я знаю, что вы можете сделать так, чтобы вам не приходилось входить в систему (режим восстановления), и есть несколько других вариантов. В основном это просто позволяет делать исправления, если есть проблема с чем-то или для смены пароля. Вот как Ubuntu Live-CD загружает Linux, если вы выберете другой вариант.

0
ответ дан 17 December 2019 в 00:13
поделиться

Загрузчик не использует стек для передачи аргументов ядру. По крайней мере, в случае Linux существует довольно сложная структура памяти, которую заполняет загрузчик, которую ядро ​​умеет разбирать. Так загрузчик указывает ядру на его командную строку. См. Documentaion / x86 / boot.txt для получения дополнительной информации.

1
ответ дан 17 December 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: