Привилегированная инструкция на Java

Можно ли сделать некоторые привилегированные инструкции (например, sti, cli) доступными через API Java?

Почему бы и нет? (Или, если это так, не могли бы вы дать мне общее представление о том, как это будет реализовано?)

Спасибо

3 ответа

Решение

В обычной реализации Java единственным вариантом является реализация кода, который выполняет привилегированные инструкции в собственном методе, который вы вызываете с использованием JNI или JNA. И это не принесет вам пользы... потому что аппаратное обеспечение / операционная система будет препятствовать выполнению инструкций. (Вы получите незаконную ловушку с инструкциями... и программа будет убита.)

Почему бы и нет?

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


В простой реализации Java может быть возможно выполнить привилегированные инструкции через собственный код или, возможно, другими способами. (Например, в JNode компилятор собственного кода заменит определенные вызовы "магического" метода привилегированными инструкциями... при тщательно контролируемых обстоятельствах.)

STI и CLI являются низкоуровневыми зависимыми от платформы прерываниями.

Когда вы пишете исходный код на языке Java (язык), вы нацеливаетесь на виртуальную машину Java, которая выполняет байт-код Java. Таким образом, инструкции вашего исходного кода не переводятся напрямую в машинный код для физического компьютера. Он преобразуется в байт-код, который затем запускается (а также перекомпилируется во время выполнения компилятором JIT) для настройки на вашу физическую машину.

Поэтому у вас нет возможности (так как это не было целью разработки Java, и не было бы смысла выставлять это), чтобы легко использовать эти привилегированные инструкции. Они предназначены для абстрагирования.

Мы используем "высокоуровневые" языки по определенной причине.

Не уверен, почему вы заинтересованы в таких вещах, но для начала ознакомьтесь с этой статьей.

Другие вопросы по тегам