Відмінності між версіями «Процеси»

Матеріал з Wiki TNEU
Перейти до: навігація, пошук
м (Захист на Процеси встановлено (‎[edit=sysop] (безстроково) ‎[move=sysop] (безстроково)))
 
Рядок 1: Рядок 1:
Процеси Linux
+
Процес - це об'єкт ОС Linux, який складається з адресного простору пам'яті і набору структур даних. По суті, процес це запущена програма або служба. Кожен запущений процес в ОС Linux може породити додаткові процеси. Процес, що запустив новий процес називається батьківським процесом. Новий процес по відношенню до створив його процесові називається дочірнім.  
----
+
Процеси - це не те ж саме, що завдання: процеси є частиною операційної системи, тоді як про завдання відомо тільки командному процесору, в якому вони виконуються. Працююча програма містить в собі один або більше процесів; завдання складається з однієї або більше програм, виконуваних у вигляді команд командного процесора. Кожен процес в ОС Linux характеризується набором атрибутів, який відрізняє даний процес від всіх інших процесів. До головних атрибутів відносяться:
 
+
*Ідентифікатор процесу (PID). Кожен процес в системі має унікальний ідентифікатор. Кожен новий запущений процес отримує номер на одиницю більше попереднього.
<nowiki>Linux може керувати процесами в системі, кожен процес представлений task_struct. (структура даних) (завдання і сам процес терміни, які використовуються як взаємозамінні Linux).  Завдання    вектор масива покажчиків на кожену структуру даних в системі. Це означає, що максимальна кількість процесів у системі обмежена розміром завдання вектора, за замовчуванням він має 512 записів. Як процеси створюються, нові task_struct    виділяється з системної пам'яті і додається в завдання    вектора. Щоб його легко знайти працює процес, на який вказує поточний    покажчик.  Як і нормальний тип процесу, Linux підтримує реальні процеси часу.  Ці процеси повинні реагувати дуже швидко на зовнішні події (звідси і термін `` реальним часом'') і з ними поводяться інакше, ніж нормальні процеси користувача, планувальник.  Хоча структура даних досить велика і складна, але її можна розділити на декілька функціональних зон: </nowiki>
+
*Ідентифікатор батьківського процесу (PPID). Даний атрибут процес отримує під час свого запуску та використовується для отримання статусу батьківського процесу.
+
У Linux процеси діляться на три типи:
Linux процеси мають наступні стани:  '''Працюючий'''  Процес або працює (це поточний процес у системі) або воно готове до запуску (вона чекає, щоб бути віднесені до однієї з процесорів системи). '''Очікування'''  Процес очікує події або для ресурсу.  Linux розрізняє два типи очікування процесу; переривання і безперебійне.  Переривається очікування процесів може бути  перервана в той час як сигнали безперебійного очікування процеси чекають безпосередньо на апаратній умовах і не може бути перерваний за яких обставин. '''Зупинений'''  Процес був зупинений, як правило, надходить сигнал. Процес, який регламентуватиме може перебувати в зупиненому стані.  '''Зомбі'''  Це зупинив процес, який, з деяких причин, до цих пір task_struct    Структура даних в задачі    вектор. Це те, що це звучить як, мертві процесу. '''Планування інформації'''  Планувальник потрібна ця інформація для того, щоб чесно вирішити, який процес в системі всього заслуговує, щоб бігти. '''Ідентифікатори'''  Кожен процес у системі має ідентифікатор процесу. Ідентифікатор процесу не індексу в задачі    вектор, то це просто число. Кожен процес також має користувачів і груп ідентифікатори, вони використовуються для управління цим процесам доступ до файлів та пристроїв в системі. '''Inter-Process Communication'''  Linux підтримує класичні механізми IPC Unix сигналів, труб і семафори, а також System V IPC механізми пам'яті, що розділяється, семафорів і черги повідомлень. '''Зв'язки'''  У Linux-системі жоден процес не залежить від будь-якої інший процес. Кожен процес в системі, за винятком початкового процес батьківського процесу.  Нові процеси не створюються, вони копіюються або, вірніше, клонованих від попередніх процесів. Кожен task_struct    представляють процес зберігає покажчики на його батьківський процес і його братів і сестер (ті процеси, з тим же батьківського процесу), а також його власні процеси дитини.  Ви можете побачити сімейні відносини між запущеними процесами в Linux системи з допомогою pstree    команду: ініціалізації (1) - +-crond (98)  
+
Системні процеси - є частиною ядра і завжди розташовані в оперативній пам'яті. Системні процеси не мають відповідних їм програм у вигляді виконуваних файлів і запускаються при ініціалізації ядра системи. Виконувані інструкції і дані цих процесів знаходяться в ядрі системи, таким чином, вони можуть викликати функції і звертатися до даних, недоступним для інших процесів. Системними процесами, наприклад, є: shed (диспетчер свопінгу), vhand (диспетчер сторінкового заміщення), kmadaemon (диспетчер пам'яті ядра).
        |-Emacs (387)
+
Демони - це неінтерактивні процеси, які запускаються звичайним чином - шляхом завантаження в пам'ять відповідних їм програм (виконуваних файлів), та виконується у фоновому режимі. Зазвичай демони запускаються при ініціалізації системи (але після ініціалізації ядра) і забезпечують роботу різних підсистем: системи термінального доступу, системи друку, система мережевого доступу і мережевих послуг, поштовий сервер, dhcp-сервер і т. п. Демони не пов'язані ні з одним користувальницьким сеансом роботи і не можуть безпосередньо управлятися користувачем. Велику частину часу демони чекають поки той або інший процес запросить певну послугу, наприклад, доступ до файлового архіву або друк документа.
        |-Гал (146)
+
Прикладні (користувальницькі) процеси. До прикладних процесів належать всі інші процеси, що виконуються в системі. Як правило, це процеси, породжені в рамках користувальницького сеансу роботи. Наприклад, команда ls породить відповідний процес цього типу. Прикладні процеси linux можуть виконуватися як в інтерактивному, так і у фоновому режимі, але в будь-якому випадку час їхнього життя виконання) обмежена сеансом роботи користувача. При виході з системи всі прикладні процеси будуть знищені.
        |-Inetd (110)
+
        |-Kerneld (18)
+
        |-Kflushd (2)
+
        |-Klogd (87)
+
        |-Kswapd (3)
+
        |-Логін (160) --- Баш (192) --- Emacs (225)
+
        |-LPD (121)
+
        |-Mingetty (161)
+
        |-Mingetty (162)
+
        |-Mingetty (163)
+
        |-Mingetty (164)
+
        |-Логін (403) --- Баш (404) --- pstree (594)
+
        |-Sendmail (134)
+
        |-Syslogd (78)
+
        `-Оновлення (166)
+
<nowiki> Крім того, всі процеси в системі проводяться в двічі зв'язаний список коренем якого є ініціалізації процесів task_struct    структури даних.  Цей список дозволяє Linux-ядра, щоб дивитися на кожен процес в системі.  Він повинен зробити це, щоб забезпечити підтримку таких команд, як пс    або вбити    .
+
Час та лічильники
+
Ядро відстежує час створення процесів, а також процесорного часу, що він споживає за час свого життя. Кожен такт, поновлення ядра кількість часу в джіффісах    , Що нинішній процес провів в системі і в режимі користувача. Linux також підтримує процес конкретних таймера інтервал, процеси можуть використовувати системні виклики, налаштувати таймер, щоб посилати сигнали до себе, коли таймер закінчується.  Ці таймери можуть бути одноразових або періодичних таймерів.  
+
Файлова система
+
Процеси можуть відкривати і закривати файли, як вони хочуть і процесів task_struct    містить покажчики на дескриптори для кожного відкритого файлу, а також покажчики на два VFS індексних дескрипторів.  Перший полягає в корінь процесу (його домашній каталог), а другий перед своїми нинішніми або PWD каталог. PWD походить від Unix команду PWD    , Друк робочий каталог. Ці два VFS Інода їх рахунок    полів збільшується, щоб показати, що один або декілька процесів звернення до них. Ось чому ви не можете видалити каталог, процес має на PWD каталогу встановлений, або в цьому відношенні одним з його підкаталогів.
+
Віртуальна пам'ять
+
Більшість процесів є деякі віртуальної пам'яті (потоків ядра і демонів немає) і Linux ядра повинні відстежувати, як ця віртуальна пам'ять відображається на фізичну пам'ять системи.  
+
Процесор конкретному контексті
+
Процес може розглядатися як сума поточного стану системи.  Всякий раз, коли процес запущений він використовує регістрів процесора, стека і так далі.  Це процеси контексту і, коли процес зупиняється, все, що процесор конкретних умовах повинен бути збережений в task_struct    для процесу. </nowiki>
+

Поточна версія на 19:40, 6 грудня 2012

Процес - це об'єкт ОС Linux, який складається з адресного простору пам'яті і набору структур даних. По суті, процес це запущена програма або служба. Кожен запущений процес в ОС Linux може породити додаткові процеси. Процес, що запустив новий процес називається батьківським процесом. Новий процес по відношенню до створив його процесові називається дочірнім. Процеси - це не те ж саме, що завдання: процеси є частиною операційної системи, тоді як про завдання відомо тільки командному процесору, в якому вони виконуються. Працююча програма містить в собі один або більше процесів; завдання складається з однієї або більше програм, виконуваних у вигляді команд командного процесора. Кожен процес в ОС Linux характеризується набором атрибутів, який відрізняє даний процес від всіх інших процесів. До головних атрибутів відносяться:

  • Ідентифікатор процесу (PID). Кожен процес в системі має унікальний ідентифікатор. Кожен новий запущений процес отримує номер на одиницю більше попереднього.
  • Ідентифікатор батьківського процесу (PPID). Даний атрибут процес отримує під час свого запуску та використовується для отримання статусу батьківського процесу.

У Linux процеси діляться на три типи: Системні процеси - є частиною ядра і завжди розташовані в оперативній пам'яті. Системні процеси не мають відповідних їм програм у вигляді виконуваних файлів і запускаються при ініціалізації ядра системи. Виконувані інструкції і дані цих процесів знаходяться в ядрі системи, таким чином, вони можуть викликати функції і звертатися до даних, недоступним для інших процесів. Системними процесами, наприклад, є: shed (диспетчер свопінгу), vhand (диспетчер сторінкового заміщення), kmadaemon (диспетчер пам'яті ядра). Демони - це неінтерактивні процеси, які запускаються звичайним чином - шляхом завантаження в пам'ять відповідних їм програм (виконуваних файлів), та виконується у фоновому режимі. Зазвичай демони запускаються при ініціалізації системи (але після ініціалізації ядра) і забезпечують роботу різних підсистем: системи термінального доступу, системи друку, система мережевого доступу і мережевих послуг, поштовий сервер, dhcp-сервер і т. п. Демони не пов'язані ні з одним користувальницьким сеансом роботи і не можуть безпосередньо управлятися користувачем. Велику частину часу демони чекають поки той або інший процес запросить певну послугу, наприклад, доступ до файлового архіву або друк документа. Прикладні (користувальницькі) процеси. До прикладних процесів належать всі інші процеси, що виконуються в системі. Як правило, це процеси, породжені в рамках користувальницького сеансу роботи. Наприклад, команда ls породить відповідний процес цього типу. Прикладні процеси linux можуть виконуватися як в інтерактивному, так і у фоновому режимі, але в будь-якому випадку час їхнього життя (і виконання) обмежена сеансом роботи користувача. При виході з системи всі прикладні процеси будуть знищені.

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти