Внутреннее устройство ядра Linux 2.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.


  • Освобождает ресурсы, захваченные при ветвлении, закрывает открытые файлы и т.д.





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