русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Шановні українці! Матеріал був перекладений з російської мови. Тому можуть бути незначні помикли...

Процеси в ОС UNIX

Процес в ОС UNIX - це програма, що запускається у власному віртуальному просторі адрес. Коли користувач входить в систему, автоматично створюється процес, в якому виконується програма інтерпретатора командного. Якщо командному інтерпретатору зустрічається команда, відповідна виконуваного файлу, то він створює новий процес і запускає в ньому відповідну програму, починаючи з функції main. Ця запущена програма, у свою чергу, може створити процес і запустити в ньому іншу програму (вона теж повинна містити функцію main) і т.д.

Для утворення нового процесу і запуску в ньому програми використовуються два системні виклики (примітиву ядра ОС UNI) - fork () і exec (ім'я-виконувані-файлу).Системный виклик fork призводить до створення нового адресного простору, стан якого абсолютно ідентична станом адресного простору основного процесу (тобто в ньому містяться ті ж програми і дані).

Іншими словами, відразу після виконання системного виклику fork основний і породжений процеси є абсолютними близнюками; управління і в тому, і в іншому знаходиться в точці, безпосередньо наступного за викликом fork. Щоб програма могла розібратися, в якому процесі тепер вона працює - основне або породженій, функція fork возвращает різні значення: 0 в породженій процесі і ціле додатне число (ідентифікатор породженого процесу) в основному процесі.

Тепер, якщо ми хочемо запустити нову програму в породженій процесі, потрібно звернутися до системного виклику exec, вказавши в якості аргументів виклику ім'я файлу, що містить нову виконувану програму, і, можливо, одну або кілька текстових рядків, які будуть передані в якості аргументів функції main нової програми. Виконання системного виклику exec призводить до того, що в адресний простір породженого процесу завантажується нова що виконується програма і з адреси, відповідного входу в функцію main.

У наступному прикладі користувача програма, що викликається як команда shell, виконує в окремому процесі стандартну команду shell ls, яка видає на екран вміст поточного каталогу файлів:

main () {
 if (fork () == 0) wait (0); / * батьківський процес * /
 else execl ("е", "е", 0); / * породжений процес * / 
}

Переглядів: 3037

Повернутися в зміст:ОС Unix



Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн