2016-03-01 4 views
4

В чем разница между Время компиляции, Время загрузки и Время выполнения?Разница между временем компиляции, временем загрузки и временем выполнения?

  • Может ли кто-нибудь объяснить мне эти три термина на очень простом языке?
  • Было бы лучше понять, можете ли вы также привести некоторые примеры.

Cheers!

Контекст:

Классически, связывание инструкций и данных в адреса памяти может быть сделано на любом шаге по пути:

  • время компиляции. Компилятор переводит символические адреса в абсолютные адреса. Если вы знаете во время компиляции, когда процесс будет находиться в памяти, тогда может быть создан абсолютный код (Static).

  • Время загрузки. Компилятор преобразует символические адреса в относительные (перемещаемые) адреса. Погрузчик переводит их в абсолютные адреса. Если во время компиляции, когда процесс будет находиться в памяти, неизвестно, тогда компилятор должен создать перемещаемый код (Static).

  • Время исполнения. Если процесс может быть перемещен во время его выполнения из одного сегмента памяти в другой, то привязка должна быть отложена до времени выполнения. Абсолютные адреса генерируются аппаратным обеспечением. Большинство ОС общего назначения используют этот метод (динамический).

+0

Не могли бы вы предоставить немного больше контекста? Где вы слышали об этих условиях? Без дополнительного контекста ответ будет немного неопределенным/общим, и найти примеры будет сложно. –

+0

@ DanielJour отлично? –

ответ

7

Эти термины кажутся мне объяснительными, но вот попытка описать их. Ссылки для дальнейшего чтения включены.

Время компиляции есть, когда ваш код обрабатывается compiler. В этом контексте речь идет о компиляторе, который преобразует ваш код в исполняемый двоичный файл.

Load time, когда операционная система читает исполняемый от длительного хранения (как правило, жесткий диск) и загрузки его в кратковременной памяти (RAM), из которого он может быть выполнен. Как правило, жесткий диск слишком медленный для подачи процессора, поэтому оперативная память используется для хранения инструкций/программ, которые процессор готов к выполнению. Это также, когда исходное распределение памяти зарезервировано и инициализировано для использования программой.

Execution время - это когда программа выполняется или работает. Инструкции хранятся в памяти и обрабатываются процессором. В это время может быть выделена и/или освобождена дополнительная память.

+2

В вашем ответе четко объясняется концепция компиляции, загрузки и выполнения. Но, возможно, вопрос задается в контексте ** Binding **. Измените свой ответ как «Как» и когда адреса назначаются процессам в каждом из случаев? – Siraj

-1

- Исходный код должен быть скомпилирован в машинный код, чтобы стать и исполняемой программой. Этот процесс компиляции называется временем компиляции. Скомпилированную программу можно открыть и запустить пользователем.Когда приложение запущено, оно называется runtime.

-связывание означает объединение данных инструкций программы в физическую память.

-связь времени привязки означает объединение данных инструкций в физическую память и выполняется компилятором.

-связное время привязки времени выполняется загрузчиком, а привязка времени выполнения выполняется CPU.

2

Не задумываясь о том, как это делается, я напишу около , что сделано. Со ссылкой на «связывание» слово, вот что я знаю:

скомпилирован Переплет: Это перевод логических адресов в физические адреса во время компиляции. Теперь этот тип привязки возможен только в тех системах, где мы заранее знаем содержимое основной памяти и знаем, что адрес в основной памяти мы должны начать выделение. Знание этих двух вещей невозможно в современных многопрограммных системах. Поэтому можно с уверенностью сказать, что привязка времени компиляции будет возможна в системах, не поддерживающих мультипрограммирование.

Время загрузки Переплет: Это перевод логических адресов в физические адреса во время нагрузки. Перегружающий загрузчик содержит базовый адрес в основной памяти, откуда начинается распределение. Поэтому, когда приходит время загрузки процесса в основную память, все логические адреса добавляются к базовому адресу перемещающим загрузчиком для создания физических адресов.

Время пересылки: В большинстве современных процессоров поддерживается многопрограммное программирование. Поэтому возникает необходимость переноса физических адресов из одного места в другое во время выполнения. Это бережно относится к концепции привязки времени выполнения. Он используется в Уплотнение для удаления внешней фрагментации. Он также используется в Виртуальные функции.

Надеюсь, это решает ваши сомнения!

+0

Есть ли привязка времени загрузки, поддерживаемая операционными системами mutli-программирования? –

Смежные вопросы