Архитектура Unix

       

. Алгоритм функции exec



Рисунок 7.19. Алгоритм функции exec

алгоритм exec входная информация: (1) имя файла (2) список параметров (3) список переменных среды выходная информация: отсутствует { получить индекс файла (алгоритм namei); проверить, является ли файл исполнимым и имеет ли поль- зователь право на его исполнение; прочитать информацию из заголовков файла и проверить, является ли он загрузочным модулем; скопировать параметры, переданные функции, из старого адресного пространства в системное пространство; для (каждой области, присоединенной к процессу) отсоединить все старые области (алгоритм detachreg); для (каждой области, определенной в загрузочном модуле) { выделить новые области (алгоритм allocreg); присоединить области (алгоритм attachreg); загрузить область в память по готовности (алгоритм loadreg); } скопировать параметры, переданные функции, в новую об- ласть стека задачи; специальная обработка для setuid-программ, трассировка; проинициализировать область сохранения регистров задачи (в рамках подготовки к возвращению в режим задачи); освободить индекс файла (алгоритм iput); }


На Рисунке 7.19 представлен алгоритм выполнения системной функции exec. Сначала функция обращается к файлу по алгоритму namei, проверяя, является ли файл исполнимым и отличным от каталога, а также проверяя наличие у пользователя права исполнять программу. Затем ядро, считывая заголовок файла, определяет размещение информации в файле (формат файла).

На Рисунке 7.20 изображен логический формат исполняемого файла в файловой системе, обычно генерируемый транслятором или загрузчиком. Он разбивается на четыре части:

  1. Главный заголовок, содержащий информацию о том, на сколько разделов делится файл, а также содержащий начальный адрес исполнения процесса и некоторое "магическое число", описывающее тип исполняемого файла.
  2. Заголовки разделов, содержащие информацию, описывающую каждый раздел в файле: его размер, виртуальные адреса, в которых он располагается, и др.
  3. Разделы, содержащие собственно "данные" файла (например, текстовые), которые загружаются в адресное пространство процесса.
  4. Разделы, содержащие смешанную информацию, такую как таблицы идентификаторов и другие данные, используемые в процессе отладки.



Содержание раздела