понедельник, 21 апреля 2014 г.

проц память машин код java и ассемблер

дать приборам шанс взаимодействовать с друг с другом
необходимо было использовать единую платформу на которой микро контролеры работали
проблема в том что каждый микро процессор обладает своим набором машинных комманд
и эти комманды не подходят к другим процессорам
процессор понимает набор машинных комманда
машинная команда элементарная закондированная определенным числом
(например взять число из ячейки памяти и положить в другую ячейку или увеличить на один) 
последовательность множества машинных комманд образуют машинный код
данные которыми оперирует процессор хранятся в ячейках памяти у ячеек памяти есть адреса
озу является энергозависимой памятью и при потери питания все теряется
переносит данные из винта в оперативу и там обрабатывает
был создан язык ассемблера  (сборщика так сказать )
 в нем есть некое сопоставление мнемоников и циферных кодов машинных комманд  
машинный код записанный в виде мнемоников
 ( например маш комманда 93 соответствует мнемонич комманде INC )
трансляция высоко уровневого кода в машинный код
варианты исполнения программ
ahead of time
- компиляция
разработчик создать программу в машинном коде эквивалентному программе на этом языке  компилируемые проги быстрее
- интерпретация
приложением является сам исходный код
выполняет комманды записанные в исходнике программе
парсинтся и выполняется синтаксический разбор кода интерпретатором
выполняет на компьютере каждого пользователя
+ возможна кросс платформенность
- скорость работы много меньше чем в компилируемых
- программа передается в исходном коде

разрабатывалась java для бытовых устройств чтоб в пульты подходил и холодильники где мало памяти
и на слабеньких микро контроллерах

jit компиляторы
- получили откомпилировали и сохранили код в кеш в след раз джит компилятор проверяет изменилась ли программа и если не изменилась то
просто запустится
- программа остается в исходнике и проблема упаковки
- размер исходного кода и он гораздо больше чем машинного кода
- проблема синтаксического разбора и джит компилятор жрут памят много
---
был применен подход с промежуточным кодом то есть = байт код
 есть например исходник на java скомпилирован в код виртуального процессора потом транслируется в машинный код реального процессора
+ транслируется в машин код из байт кода быстрее чем с самого начала
+ быстрее чем интерпретация
+ синтаксический разбор переносится на Ahead Of Time compiler

много времени тратится на
---
приложение к java это приложение к jre ( java runtime environment )
jre является для java приложений операционной системой и процессором

задачи jre
- выполнение байт кода и транслирует байт код в машинный код
- в современных компах выполняется через джит код
- интерпретации а паралельно происходит ее компиляция но не всей проги
а только самых часто используемых - это делает профилировщик он проверяет времени использования  и сколько тратится на компиляцию тогда накапливает статистику и дает команду Jre тогда
процесс интерпретации подменяется процессом компиляции
- откомпилированные куски могут быть закешированны

редакции
jre standart -
jre enterprise edition -
jre micro edition - урезанный вариант
виртуальная машина
java virtual machine jvm

основные варианты использования java
серверные приложения
мобильные телефоны



Комментариев нет:

Отправить комментарий