Linux и приложения для Android на ARM по сравнению с x86

Я был всегда озабочен этим так, я сделал:

(sleep 5; rm /path/to/shell/script) &
exit 0

Поочередно можно объединить в цепочку к временному сценарию:

echo >/tmp/rmme rm /path/to/shell/script
. /tmp/rmme
2
16.01.2013, 23:47
2 ответа

"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, и т.д. являются первым.

5
27.01.2020, 21:51
  • 1
    Спасибо за действительно подробный ответ. Вы знаете о каком-либо Raspberry Pi и других дистрибутивах Linux ARM, которым встроили GUI? –  Suman 17.01.2013, 17:13
  • 2
    @Suman: у Меня еще нет того (он прибывает скоро :)), но так как у Pi есть HD-видео, я предположил бы, что все дистрибутивы Pi имеют X и так далее доступный в их repo. Этот: fedoraproject.org/wiki/Raspberry_Pi, кажется, имеет его по умолчанию, с помощью XFCE. Существует также ссылка там на официальную мягкую фетровую шляпу 18 дистрибутивов ARM, которые являются, вероятно, для более общего использования (т.е., не центрально Пи). –  goldilocks 18.01.2013, 16:34
  • 3
    Спасибо, я сделал некоторое рытье и нашел, что изображение Raspbian действительно включает LXDE, поэтому просто нуждаются в поле Pi для проверения его на теперь. :) –  Suman 18.01.2013, 17:48

Я рассмотрю второй вопрос, так как находится больше по теме с сайтом. Приложения для Android выполняют виртуальную машину процесса, известную как Dalvik. Это очень похоже на JVM Java. Вся эта мысль позади этого является "записью однажды, выполненный где угодно". Код Java не компилируется в собственный машинный код, он компилируется в байт-код, который может быть выполнен VM. С языком, таким как C, код компилируется в машинный код, который варьируется в зависимости от архитектуры.

3
27.01.2020, 21:51

Теги

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