"Linux", строго говоря, является ядром операционной системы, используемым и Android и подобной Unix операционной системой, упомянутой в разговорной речи как Linux, и иногда более официально как GNU/Linux, который мы знаем через дистрибутивы, такие как человечность и debian. Linux, ядро операционной системы, записан в C и должен быть скомпилирован в собственный машинный код.
Я думаю, что jordanm сделал хорошее задание ответа на вопрос № 2 относительно различий в пространстве пользователя между GNU/Linux и Android. Вот стек Android:
Linux (native machine code, instantiated by bootloader)
Dalvik (native machine code, instantiated by linux)
Application (java bytecode instantiated by dalvik)
Дальвик является "виртуальной машиной", какое время выполнения интерпретирует байт-код, и байт-код предварительно компилируется от Java. Другими словами, это - приложение пространства пользователя, которое работает все время как сервер, и это обрабатывает запросы для обработки байт-кода. Приложения Android записаны в Java, предварительно скомпилировали в байт-код и работали в виртуальной машине Дальвика.
Это очень похоже на то, что делают интерпретаторы во время выполнения, такие как оболочка, Python, жемчуг, рубин и JavaScript в том смысле, что это означает, что код, написанный для тех интерпретаторов, будет работать, если интерпретатор сделает. У них все нет той же стратегии относительно этапов между кодом и выполнением, но это - другая тема.
Те интерпретаторы все выполняются ядром операционной системы, которое также выполняет компьютер. И ядро и интерпретатор существуют на диске как машинный код; ядро является начальной загрузкой, загруженной в поршень, и впредь фундаментальный поток команд, пробегающий процессор, является ядром; ядро может также передать инструкции потоком от других артефактов машинного кода, которые оно загружает в поршень (такой как виртуальная машина Дальвика, или init демон, или оболочка или X-сервер), и это - объединенная логика системы, которая чередуется, инструкции в процессоре передают потоком таким образом, что ядро поддерживает свою роль и не может быть перемещено. Это - привратник всех аппаратных средств, таким образом, много дорог возвращается к нему, и это управляет часами.
Мобильность для приложений пространства пользователя упрощена для андроида/Дальвика, как это упрощено для жемчуга или Python. Это компилируется из кода как форма оптимизации для удовлетворения потребностей любой определенной архитектуры. Интерпретатор - то, что, как ядро, должен быть настроен и скомпилирован архитектурно-зависимым способом.
Теперь вот стек GNU/Linux:
Linux (native machine code, instantiated by bootloader)
Application (native machine code, instantiated by linux)
Приложения здесь включают оболочку и init демона. Сценарии оболочки не являются приложениями в этом смысле, поскольку они интерпретируются оболочкой, и ни один не Java, Python, жемчуг, и т.д. программы, но приложения, запущенные от оболочки или init демоном, - то, если они существуют на диске как собственный машинный код, потому что init и оболочка на самом деле просят, чтобы ядро сделало это для них - они не могут сделать этого сами.
Все те приложения - оболочка, init демон, X-сервер, Ваш веб-браузер, главным образом записанный в C или C++ - должны быть индивидуально скомпилированы в архитектурно-зависимую форму.
Надежда, которая проливает некоторый свет. Относительно Linux на ARM существует два основных потока, один для armv6 системы команд, используемой на Raspberry Pi - они специализированы - и еще один общий пар для armv7, которому я верю, включает наиболее мобильные устройства. Мягкая фетровая шляпа, debian, человечность, и т.д. дистрибутивы ARM являются последним, тогда как pidora, Raspbian, и т.д. являются первым.
/ RUN / USER / $ UID
создается PAM_SYSTEMD
и используется для хранения файлов, используемых запущенными процессами для этого пользователя. Это могут быть такие вещи, как демон брелки, Pulseaudio и т. Д.
До размера Systemd , эти приложения обычно сохраняют свои файлы в / TMP
. Они не могли использовать местоположение в / Home / $ Usor
, поскольку домашние каталоги часто устанавливаются над сетевыми файловыми системами, и эти файлы не должны использоваться между хостами. / TMP
было единственным расположением, указанным в FHS , которое является локальным и записи всех пользователей.
Однако хранение всех этих файлов в / TMP
является проблематичным, поскольку / TMP
является записью каждого, и хотя вы можете изменить владение и режим в создании файлов, это больше трудно работать с. / TMP
/ TMP
Так что SystemD пришел и создал / Run / user / $ uid
. Этот каталог является локальным в системе и доступно только для целевого пользователя. Таким образом, приложения, которые хотели хранить свои файлы, локально больше не нужно беспокоиться о контроле доступа.
Это также сохраняет вещи хорошими и организованными. Когда пользователь выходит из системы, и не остаются активные сеансы, PAM_SYSTEMD
вытирает каталог / RUN / USER / $ UID
. С различными файлами разбросаны вокруг / TMP
, вы не могли этого сделать.
Согласно последнему проекту FHS (File Hierarchy Standard), /run:
Эта директория содержит системные информационные данные, описывающие систему с момента ее загрузки. Файлы в этом каталоге должны быть очищены (удалены или усечены, соответственно) в начале процесса загрузки.
Назначения этого каталога когда-то обслуживались в /var/run. Обычно программы могут продолжать использовать /var/run для выполнения требований, установленных для /run в целях обратной совместимости. Программы, которые перешли в /var/run, должны прекратить использование /var/run, за исключением случаев, указанных в разделе о /var/run.
Программы могут иметь подкаталог /run; это рекомендуется для программ, которые используют более одного исполняемого файла. Пользователи могут также иметь подкаталог /run, хотя необходимо позаботиться о соответствующем ограничении прав доступа для предотвращения несанкционированного использования самого /run и других подкаталогов.
В случае каталога /run/user
, используется различными пользовательскими службами, такими как dconf, pulse, systemd и т.д., которым необходимо место для их файлов блокировки и сокетов. В системе зарегистрировано столько же каталогов, сколько и UID различных пользователей.