Внутреннее устройство ядра Linux 2.4



         

Создание и завершение задач и потоков ядра. - часть 4


Имена функций, реализующих системные вызовы, в Linux начинаются с префикса sys_, но они, как правило, ограничиваются только проверкой аргументов или платформо-зависимой передачей информации, а фактически всю работу выполняют функции do_. Это касается и sys_exit(), которая вызываетdo_exit() для выполнения необходимых действий. Хотя, в других частях ядра иногда встречается вызов sys_exit (), на самом деле вызывается do_exit ().

Функция do_exit() размещена в kernel/exit.c. Некоторые примечания по поводу функции do_exit():

  • Устанавливает глобальную блокировку ядра (устанавливает, но не снимает).
  • Вызывает schedule(), которая уже не возвращает управление.
  • Переводит задачу в состояние TASK_ZOMBIE.
  • Передает всем потомкам current->pdeath_signal, если он не ноль.
  • Передает "родителю" current->exit_signal, который обычно равен SIGCHLD.
  • Освобождает ресурсы, захваченные при ветвлении, закрывает открытые файлы и т.д.



  • Содержание  Назад  Вперед