- •1. Микропроцессор: понятие и функции.
- •2. Микропроцессор: функции и основные характеристики.
- •1) Выборка команд из озу
- •3. Архитектуры risc и cisc. Отличия, преимущества и недостатки.
- •Недостатки cisc архитектуры
- •4. Гарвардская архитектура.
- •Классическая гарвардская архитектура
- •Отличие от архитектуры фон Неймана
- •6. Конвейерная архитектура.
- •5. Архитектура фон Неймана.
- •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)
76. Загрузка программ на выполнение.
Загру́зчик (англ. loader) — в информатике, программа, отвечающая за загрузку исполнимых файлов и запуск соответствующих новых процессов. Обычно является частью операционной системы, но может быть и самостоятельной программой — к примеру, позволяющей операционной системе запускать программы, скомпилированные для других операционных систем (см. также: эмуляторы, WINE).
При запуске новой программы загрузчик должен:
Считать данные из запускаемого файла.
Если необходимо — загрузить в память недостающие динамические библиотеки.
Заменить в коде новой программы относительные адреса и символические ссылки на точные, с учётом текущего размещения памяти, то есть выполнить связывание адресов (англ. Relocation).
Создать в памяти образ нового процесса и запланировать его к исполнению.
Загрузчик операционной системы действует по схожему принципу, но обычно является отдельной программой, поскольку решает специфическую задачу — запуск самой операционной системы.
77. Компиляоры. Принципы работы.
Компиля́тор — программа или техническое средство, выполняющее компиляцию.
Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера). Входной информацией для компилятора (исходный код) является описание алгоритма или программа на проблемно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).
Виды компиляторов
Векторизующий. Транслирует исходный код в машинный код компьютеров, оснащённых векторным процессором.
Гибкий. Сконструирован по модульному принципу, управляется таблицами и запрограммирован на языке высокого уровня или реализован с помощью компилятора компиляторов.
Диалоговый. См.: диалоговый транслятор.
Инкрементальный. Повторно транслирует фрагменты программы и дополнения к ней без перекомпиляции всей программы.
Интерпретирующий (пошаговый). Последовательно выполняет независимую компиляцию каждого отдельного оператора (команды) исходной программы.
Компилятор компиляторов. Транслятор, воспринимающий формальное описание языка программирования и генерирующий компилятор для этого языка.
Отладочный. Устраняет отдельные виды синтаксических ошибок.
Резидентный. Постоянно находится в оперативной памяти и доступен для повторного использования многими задачами.
Самокомпилируемый. Написан на том же языке, с которого осуществляется трансляция.
Универсальный. Основан на формальном описании синтаксиса и семантики входного языка. Составными частями такого компилятора являются: ядро, синтаксический и семантический загрузчики.
Процесс компиляции состоит из следующих этапов:
Лексический анализ. На этом этапе последовательность символов исходного файла преобразуется в последовательность лексем.
Синтаксический (грамматический) анализ. Последовательность лексем преобразуется в дерево разбора.
Семантический анализ. Дерево разбора обрабатывается с целью установления его семантики (смысла) — например, привязка идентификаторов к их декларациям, типам, проверка совместимости, определение типов выражений и т. д. Результат обычно называется «промежуточным представлением/кодом», и может быть дополненным деревом разбора, новым деревом, абстрактным набором команд или чем-то ещё, удобным для дальнейшей обработки.
Оптимизация. Выполняется удаление излишних конструкций и упрощение кода с сохранением его смысла. Оптимизация может быть на разных уровнях и этапах — например, над промежуточным кодом или над конечным машинным кодом.
Генерация кода. Из промежуточного представления порождается код на целевом языке.
