Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_Шеховцов_1.docx
Скачиваний:
73
Добавлен:
09.11.2019
Размер:
14.73 Mб
Скачать

4.5. Реалізація планування в Linux

У цьому розділі розглянемо два варіанти реалізації планування в Linux — тради­ційну (належить до ядер версій до 2.4 включно) і нову, включену в ядро версії 2.6.

Ядро Linux при плануванні не розрізняє процеси і потоки, тому для визначе­ності ми надалі говоритимемо про планування процесів.

Усі процеси в системі можна поділити на три групи: реального часу із плану­ванням за принципом FIFO, реального часу із круговим плануванням, звичайні.

4.5.1. Планування процесів реального часу в ядрі

Стосовно процесів реального часу, достатньо сказати, що:

  • вони завжди матимуть під час планування пріоритет перед звичайними про­цесами;

  • процес із плануванням за принципом FIFO виконують доти, поки він сам не віддасть процесор (наприклад, внаслідок призупинення або завершення) або поки не буде витиснений процесом реального часу із вищим пріоритетом;

  • те саме стосується процесу із круговим плануванням, крім того, що він додат­ково буде витіснений після вичерпання кванта часу.

Розділ 6

Міжпроцесова взаємодія

  • Проблеми міжпроцесової взаємодії

  • Види міжпроцесової взаємодії

  • Принципи та базові примітиви передавання повідомлень

  • Технології передавання повідомлень

Дотепер ми розглядали взаємодію потоків одного процесу. Головною особливістю цієї взаємодії є простота технічної реалізації обміну даними між ними — усі пото­ки одного процесу використовують один адресний простір, а отже, можуть вільно отримувати доступ до спільно використовуваних даних, ніби вони є їх власними. Оскільки технічних труднощів із реалізацією обміну даними тут немає, основною проблемою, яку потрібно вирішувати в цьому випадку, є синхронізація потоків.

З іншого боку, кожен потік виконується в рамках адресного простору деякого процесу, тому часто постає задача організації взаємодії між потоками різних про­цесів. Ідеться власне про міжпроцесову взаємодію (interprocess communication, IPC) [37]. Ця технологія з'явилася задовго до поширення багатопотоковості.

Для потоків різних процесів питання забезпечення синхронізації теж є акту­альними, але вони в більшості випадків не ґрунтуються на понятті спільно вико­ристовуваних даних (такі дані за замовчуванням для процесів відсутні). Крім того, додається досить складна задача забезпечення обміну даними між захищеними адресними просторами. Підходи до її розв'язання визначають різні види міжпро­цесової взаємодії.

6.1. Види міжпроцесової взаємодії

Реалізація міжпроцесової взаємодії здійснюється трьма основними методами: передавання повідомлень, розподілюваної пам'яті та відображуваної пам'яті. Ще одним методом IPC також можна вважати технологію сигналів, що була розгля­нута в розділі 3.

Сигнали були розглянуті раніше, тому що їхнє використання не зводиться тільки до організації IPC (синхронні сигнали є засобом оповіщення процесу про виняткову ситуацію); без них складно пояснити ряд базових понять керування процесами (наприклад, очікування завершення процесу).