
- •1. Микропроцессор: понятие и функции.
- •2. Микропроцессор: функции и основные характеристики.
- •1) Выборка команд из озу
- •3. Архитектуры risc и cisc. Отличия, преимущества и недостатки.
- •Недостатки cisc архитектуры
- •4. Гарвардская архитектура.
- •Классическая гарвардская архитектура
- •Отличие от архитектуры фон Неймана
- •5. Архитектура фон Неймана.
- •6. Конвейерная архитектура.
- •7. Спекулятивное выполнение.
- •8. Шинная архитектура. Виды шин используемые в современных системах.
- •9. Понятия микроархитектуры микропроцессора.
- •10. Система команд: основные типы, их преимущества и недостатки.
- •11. Шины данных, адреса и «разрядность эвм». Шина данных.
- •12. Функционирование процессора в реальном и защищенном режимах.
- •13. Bios. Функции и недостатки современных реализаций.
- •Характерные недостатки bios
- •14. Post. Функции и принципы функционирования.
- •15. Uefi. Функции и преимущества по сравнению с bios.
- •Основные преимущество uefi перед bios:
- •16. Прерывания bios.
- •17. Процедура начальной загрузки ос.
- •18. Mbr и его функции.
- •19. Интерфейс acpi.
- •20. Конструкция hdd.
- •Логическая организация дискового пространства
- •Первичный (основной) раздел
- •Расширенный (дополнительный) раздел
- •Пример разбиения жёсткого диска на разделы
- •Структура записи в кэше
- •Характеристики модулей
- •Принципы работы
- •Сегментная адресация в реальном режиме
- •Сегментная адресация в защищённом режиме (селекторная адресация)
- •61) Ос: низкоуровневые функции, драйверы
- •62) Ос: Linux — структура ядра.
- •63) Ос: многозадачность. Реализации.
- •Совместная или кооперативная многозадачность
- •Вытесняющая или приоритетная многозадачность (режим реального времени)
- •64) Ос: многопоточность. Реализации.
- •65) Модули ядра Linux: назначение.
- •66) Модули ядра Linux: загрузка и выгрузка.
- •67) Linux: системные вызовы.
- •68) Linux: методы выполнения системных вызовов.
- •69) Linux: управление памятью.
- •71.Библиотеки: типы и их характеристики.
- •Динамические библиотеки
- •Статические библиотеки
- •72.Разделяемые библиотеки.
- •73.Статические библиотеки.
- •74.Этапы компиляции.
- •75. Компоновка (линковка).
- •76. Загрузка программ на выполнение.
- •77. Компиляоры. Принципы работы.
- •78. Современные компиляторы: общие характеристики.
- •79. Jit. Понятие и функционирование.
- •80. Виртуальные машины (Java etc)
78. Современные компиляторы: общие характеристики.
Виды компиляторов
Векторизующий. Транслирует исходный код в машинный код компьютеров, оснащённых векторным процессором.
Гибкий. Сконструирован по модульному принципу, управляется таблицами и запрограммирован на языке высокого уровня или реализован с помощью компилятора компиляторов.
Диалоговый. См.: диалоговый транслятор.
Инкрементальный. Повторно транслирует фрагменты программы и дополнения к ней без перекомпиляции всей программы.
Интерпретирующий (пошаговый). Последовательно выполняет независимую компиляцию каждого отдельного оператора (команды) исходной программы.
Компилятор компиляторов. Транслятор, воспринимающий формальное описание языка программирования и генерирующий компилятор для этого языка.
Отладочный. Устраняет отдельные виды синтаксических ошибок.
Резидентный. Постоянно находится в оперативной памяти и доступен для повторного использования многими задачами.
Самокомпилируемый. Написан на том же языке, с которого осуществляется трансляция.
Универсальный. Основан на формальном описании синтаксиса и семантики входного языка. Составными частями такого компилятора являются: ядро, синтаксический и семантический загрузчики.
79. Jit. Понятие и функционирование.
Just-in-time compilation (JIT, компиляция «на лету»), dynamic translation (динамическая компиляция) — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы программы. Таким образом достигается высокая скорость выполнения по сравнению с интерпретируемым байткодом[1] (сравнимая с компилируемыми языками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию. JIT базируется на двух более ранних идеях, касающихся среды исполнения: компиляции байт-кода и динамической компиляции.
В языках, компилирующихся в байт-код, таких как Lua, Perl, GNU CLISP или Java, исходный код транслируется в одно из промежуточных представлений, известное как байт-код. Байт-код не является машинным кодом какого-либо компьютера и может переноситься на различные компьютерные архитектуры. Байт-код интерпретируется (исполняется) виртуальной машиной.
JIT используется в реализациях Java, JavaScript, .NET Framework, в одной из реализаций Python — PyPy.[2] Существующие наиболее распространённые интерпретаторы языков Ruby, Perl, Python и им подобных имеют ограниченные или неполные JIT.
Проект DotGNU разрабатывает библиотеку libJIT, которая предоставляет возможность привести JIT в любой скриптовой язык. Проекты LLVM и GNU Lightning[3] также могут быть использованы для создания JIT.
впервые компиляция на лету была введена в реализациях динамического интерпретируемого языка Smalltalk.