Компилятор и Go Loader
Загрузчик — одна из основных частей операционной системы, которая загружает программу и библиотеки в память. Существует несколько схем загрузки для выполнения четырех функций загрузчика. Ниже приведены основные функции загрузчика.
Функции загрузчика:
- Распределение
- Связывание
- Переезд
- Загрузка
Дополнительные сведения об этих функциях см. в предварительном условии, упомянутом в начале статьи. В этой статье мы обсудим схему компиляции и загрузки загрузчика.
Скомпилируйте и загрузите:
В этой схеме архитектура памяти похожа на ассемблер, присутствующий в памяти, и он всегда будет там, когда у нас будет схема загрузки «компилируй и работай». В другой части памяти находится собранная машинная инструкция, то есть собранная исходная программа. Ассемблированная машинная инструкция помещается непосредственно в назначенную им ячейку памяти.
Работающий:
В этой схеме исходный код поступает в транслятор построчно, а затем эта единственная строка кода загружается в память. На другом языке фрагменты исходного кода выполняются. Построчный код передается транслятору, поэтому надлежащего объектного кода нет. Из-за этого, если пользователь запускает ту же исходную программу, каждая строка кода снова будет переведена переводчиком. Так вот происходит повторный перевод.
Исходная программа проходит через транслятор (компилятор/ассемблер) и потребляет одну часть памяти, а вторую часть памяти занимает ассемблер. Исходной программе не нужен этот ассемблер, но он все еще там, так что это пустая трата памяти.
Преимущества:
- Это очень просто реализовать.
- Для выполнения задачи достаточно транслятора, никаких подпрограмм не требуется.
- Это самая простая схема функций загрузчика.
Недостатки:
- От ассемблера нет никакой пользы, но он все еще существует, поэтому происходит растрата памяти.
- Когда исходный код запускается несколько раз, перевод также выполняется каждый раз. поэтому повторный перевод происходит.
- Сложно составить упорядоченную модульную программу
- Сложно обрабатывать несколько сегментов, например, если исходная программа написана на другом языке. например. одна подпрограмма на языке ассемблера, а другая подпрограмма на FORTRAN.