Ядро Linux/Виконання

Матеріал з Вікіпідручника

Вступ[ред.]

Управління процесами є невід'ємною складовою будь-якої сучасної операційної системи. ОС повинна виділяти ресурси процесу, дозволяти процесу розділяти і обмінюватися інформацією, захищати ресурси кожного з процесів від втручання з бокі інших процесів і забезпечувати синхронізацію між процесами. Аби задовільнити ці вимоги, ОС має зберігати структуру даних кожного процесу, яка описує стан і право власності даного процесу, і що дозволяє ОС здійснювати контроль над кожним процесом.

З точки зору управління процесами, ядро Linux це операційна система із витискальною багатозадачністю. Як багатозадачна ОС, вона дозволяє багатьом процесам розділяти час процесора (CPU) і інші системні ресусри. Кожен CPU виконує одну задачу на один момент часу. Однак, багатозадачність дозволяє процесору переключатися між задачами, які виконуються без очікування що якийсь один із процесів має завершитися. Для цього ядро може в будь-який час тимчасово перервати виконання задачі, яка зараз виконується процесором і замінити її на іншу нову задачу, або якусь попередню призупинену задачу. Операція перемикання поточної виконуваної задачі називається перемиканням контексту (context switch).

Починаючи із версій 2.6, можливості з багатозадачності Linux поширюється також на задачі в режимі виконання ядра.

Процеси (Processes) і задачі (Tasks)[ред.]

Процес це запущена на виконання користувацька програма. Ядро дозволяє розпочати новий процес за допомогою виклику функції do_execve. Процес займає ресурси системи, такі як пам'ять та час процесора. Для створення процесів у користувацькому просторі використовують системні виклики sys_fork і sys_execve. Процес завершають за допомогою системного виклику sys_exit.

  • API: kthread_run, do_fork, do_execve,
  • Реалізація: current, task_struct