поиск по сайту
Управление Памятью Freebsd
30.11.1999 00:00
Автор: Антон
Каждый процесс начинает выполнение с тремя сегментами памяти: кода (text), данных и стека. Сегмент данных делится на инициализированные данные и неинициализированные данные (известные также как BSS). Сегмент text является сегментом только для чтения и обычно разделяется между всеми процессами, выполняющими файл, тогда как в области данных и стека может быть осуществлена запись и они индивидуальны для каждого процесса. Сегмент text и инициализированные данные для процесса считываются из исполняемого файла. Исполняемый файл отличается тем, что это обычный файл (а не каталог, специальный файл или символическая ссылка) и для него установлены один или более битов с разрешением доступа на исполнение. У каждого исполняемого файла есть заголовок exec, содержащий магическое число, обозначающее тип исполняемого файла. FreeBSD поддерживает несколько исполняемых форматов, включая следующие. Файлы, которые должны читаться интерпретатором. Файлы, которые могут исполняться непосредственно, включая AOUT, ELF и сжатый gzip ELF. Исполняемый файл вначале анализируется структурой активизации образа (imgact). Заголовок файла, который должен быть выполнен, передается по списку зарегистрированных активаторов образа для обнаружения подходящего формата. Когда подходящий формат найден, соответствующий активатор образа подготавливает файл к выполнению У файлов, попадающих в первую категорию, магическое число (занимающее 2 первых байта файла) представляет собой последовательность из двух символов «#!» , за которыми следует имя пути к интерпретатору, который должен быть использован. Это имя пути в настоящее время ограничено константой времени компиляции в 128 символов. Например, #!/bin/sh ссылается на оболочку Борна. Активатор образа, который будет выбран, обрабатывает вызов интерпретаторов. Он загрузит и запустит указанный интерпретатор, передав в качестве аргумента имя файла, который должен быть интерпретирован. Для предотвращения зацикливаний FreeBSD допускает лишь один уровень интерпретации, и интерпретатор файла не может сам интерпретироваться По соображениям производительности большинство файлов попадают во вторую категорию и являются непосредственно выполняемыми. Информация в заголовке непосредственно выполняемого файла включает архитектуру и операционную систему, для которой исполняемый файл был создан, а также указывает, является ли он статически скомпонованным или использующим разделяемые библиотеки. Выбранный активатор образа может использовать такую информацию, как знание операционной системы, для которой исполняемый файл был откомпилирован, чтобы отконфигурировать ядро для использования соответствующей интерпретации системных вызовов при работе программы. Например, исполняемый файл, построенный для запуска под Linux, может безболезненно работать под FreeBSD с использованием вектора перенаправления системных вызовов, предоставляющим эмуляцию системных вызовов Linux. В заголовке указаны также размеры сегментов text, инициализированных данных, неинициализированных данных и дополнительные сведения для отладки. Отладочная информация не используется ядром или выполняющейся программой. За заголовком следует образ сегмента text, за которым идет образ инициализированных данных. Неинициализированные данные не содержатся в исполняемом файле, поскольку они могут создаваться по требованию с использованием заполненной нулями памяти. Более подробно вы можете ознакомиться с внутренним устройством BSD в библиотеке Unix документации
Каждый процесс начинает выполнение с тремя сегментами памяти: кода (text), данных и стека. Сегмент данных делится на инициализированные данные и неинициализированные данные (известные также как BSS). Сегмент text является сегментом только для чтения и обычно разделяется между всеми процессами, выполняющими файл, тогда как в области данных и стека может быть осуществлена запись и они индивидуальны для каждого процесса. Сегмент text и инициализированные данные для процесса считываются из исполняемого файла. Исполняемый файл отличается тем, что это обычный файл (а не каталог, специальный файл или символическая ссылка) и для него установлены один или более битов с разрешением доступа на исполнение. У каждого исполняемого файла есть заголовок exec, содержащий магическое число, обозначающее тип исполняемого файла. FreeBSD поддерживает несколько исполняемых форматов, включая следующие. Файлы, которые должны читаться интерпретатором. Файлы, которые могут исполняться непосредственно, включая AOUT, ELF и сжатый gzip ELF. Исполняемый файл вначале анализируется структурой активизации образа (imgact). Заголовок файла, который должен быть выполнен, передается по списку зарегистрированных активаторов образа для обнаружения подходящего формата. Когда подходящий формат найден, соответствующий активатор образа подготавливает файл к выполнению У файлов, попадающих в первую категорию, магическое число (занимающее 2 первых байта файла) представляет собой последовательность из двух символов «#!» , за которыми следует имя пути к интерпретатору, который должен быть использован. Это имя пути в настоящее время ограничено константой времени компиляции в 128 символов. Например, #!/bin/sh ссылается на оболочку Борна. Активатор образа, который будет выбран, обрабатывает вызов интерпретаторов. Он загрузит и запустит указанный интерпретатор, передав в качестве аргумента имя файла, который должен быть интерпретирован. Для предотвращения зацикливаний FreeBSD допускает лишь один уровень интерпретации, и интерпретатор файла не может сам интерпретироваться По соображениям производительности большинство файлов попадают во вторую категорию и являются непосредственно выполняемыми. Информация в заголовке непосредственно выполняемого файла включает архитектуру и операционную систему, для которой исполняемый файл был создан, а также указывает, является ли он статически скомпонованным или использующим разделяемые библиотеки. Выбранный активатор образа может использовать такую информацию, как знание операционной системы, для которой исполняемый файл был откомпилирован, чтобы отконфигурировать ядро для использования соответствующей интерпретации системных вызовов при работе программы. Например, исполняемый файл, построенный для запуска под Linux, может безболезненно работать под FreeBSD с использованием вектора перенаправления системных вызовов, предоставляющим эмуляцию системных вызовов Linux. В заголовке указаны также размеры сегментов text, инициализированных данных, неинициализированных данных и дополнительные сведения для отладки. Отладочная информация не используется ядром или выполняющейся программой. За заголовком следует образ сегмента text, за которым идет образ инициализированных данных. Неинициализированные данные не содержатся в исполняемом файле, поскольку они могут создаваться по требованию с использованием заполненной нулями памяти. Более подробно вы можете ознакомиться с внутренним устройством BSD в библиотеке Unix документации
http://www.rusarticles.com/programmy-statya/upravlenie-pamyatyu-freebsd-585620.html
Об автореРоль И Значение «Компьютерной Помощи» <Предыдущая | Следующая> Прохождение Игры Охотник На Дракулу |
---|
Главная страница Компьютеры и сети Управление Памятью Freebsd