User Tools

Site Tools


система_инициализации_на_си

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
система_инициализации_на_си [2024/02/18 19:46] uf4nсистема_инициализации_на_си [2024/03/09 18:11] (current) uf4n
Line 2: Line 2:
  
 ===== Концепция ===== ===== Концепция =====
-External Link 
-Хотелось бы достигнуть наибольшей возможной скорости инициализации системы. Для этого можно было бы включить **в один код на Си** зпуск демонов, монтирование файловых систем, инициализацию драйверов и т.п. Это позволило бы сократить на порядок количесво системных вызовов, неизбежных при использовании Bash. 
  
-Проблемы обычного sysvinit:ызывает интерпретатор +Хотелось бы достигнуть наибольшей возможной скорости инициализации системы. Для этого можно было бы включить **в один код на Си** зпуск демонов, монтирование файловых систем, инициализацию драйверов и т.п
-  - Активно использует интерпретатор Bash. Убедиться в том, что Bash сравним по скорости с домкратом от ЗИЛа можно с помощью [[http://orv.org.ru/kosc_wiki/doku.php?id=%D0%BE_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D1%85_shell_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2|нашей статьи]]. Bash плох тем, что:+ 
 +Проблемы обычного sysvinit: 
 +  - Повсеместно использует интерпретатор Bash. Убедиться в том, что Bash сравним по скорости с домкратом от ЗИЛа можно с помощью [[http://orv.org.ru/kosc_wiki/doku.php?id=%D0%BE_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D1%85_shell_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2|нашей статьи]]. Bash плох тем, что:
     - Делает много обращений к диску     - Делает много обращений к диску
-    - Выполняет монтирование дисков с парсингом аргументов и тучей системных вызовов, когда можно обойтись одним системным вызовом на каждый монтируемый диск+    - Выполняет монтирование дисков с парсингом аргументов и тучей системных вызовов, когда можно обойтись одним системным вызовом для каждого монтируемого диска 
 + 
 + 
 +Система должна быть хоть немного **интерактивной**, хотя **на первых этапах** об этом **можно не задумываться**.
  
 +Очень бы хотелось сохранить интерактив, подобный тому, что предоставляет sysvinit, так как он весьма прост в реализации и понятен системным администраторам. Им не придётся переучиваться.
  
-Система должна быть хоть немного интерактивной, хотя на первых этапах об этом можно не задумываться. Если пользователь захочет изменить набор запускаемых сервисов или порядок их запуска некой специальной командой, исходный файл на Си будет перегенерирован и перекомпилирован. Это напоминает принцип работы загрузчика LILO, для которого надо запускать процедуру пв один код на Сиерегенерации MBR и PBR при любых вмешательствах в конфигурационные файлы или изменениях ядра+Если пользователь захочет изменить набор запускаемых сервисов или порядок их запуска, исходный файл на Си будет перегенерирован и перекомпилирован. Это напоминает принцип работы загрузчика LILO, для которого надо запускать процедуру перегенерации MBR и PBR при любых вмешательствах в конфигурационные файлы или изменениях ядра.
-в один код на Си +
-Очень бы хотелось сохранить интеракв один код на Ситив, подобный тому, что предоставляет sysvinit, так как он весьма прост в реализации и понятен системным администраторам. Не придётся переучиваться.+
  
-Запуск каждого демона можно описать в отдельном текстовом файле. При добавлении сервиса в автозапуск, подобно тому, как это делается в sysvinit, система инициализации должна отследить изменения в каталогах /etc/rc*.d/ и сконкатенировать код запуска демона в код init'a. Сразу после этого файл компилируется со всеми возможными оптимизациями (без оптимизаций компилировать такой init смысла нет), такими как march=native, O3 и flto.+Запуск каждого демона можно описать в отдельном текстовом файле. При добавлении сервиса в автозапуск, подобно тому, как это делается в sysvinit, система инициализации должна отследить изменения в каталогах /etc/rc*.d/ (условно) и сконкатенировать код запуска демона в код init'a. Сразу после этого файл компилируется со всеми возможными оптимизациями (компилировать такой init как-то иначе смысла нет), такими как march=native, O3 и flto.
  
 +Библиотечную функцию execve можно попробовать реализовать на ассемблече с помощью удобных макросов.
  
 +  * Наш init сохраняет систему уровней запуска (runlevels)
  
 uf4n uf4n
система_инициализации_на_си.1708285605.txt.gz · Last modified: 2024/02/18 19:46 by uf4n