МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
||||||||||
Черги повідомленьЧерги утілюють модель взаємодії процесів "багато відправників - один одержувач". Цю модель часто називають поштовою скринькою (mailbox) із-за схожості з поштовою скринькою, що висить на дверях кожної квартири. Процес-одержувач є власником черги, він створює чергу, а решта процесів дістає до неї доступ, "відкриваючи" її. Черга зазвичай має зовнішнє ім'я. Передача даних в черзі відбувається завжди повідомленнями, причому кожне повідомлення має заголовок і тіло. Заголовок завжди має фіксований для даної системи формат. У нього обов'язково входить довжина повідомлення, а інша інформація залежить від специфікацій конкретної системи: це може бути пріоритет повідомлення, тип повідомлення, ідентифікатор процесу, що послав повідомлення і тому подібне Тіло повідомлення інтерпретується по правилах, що встановлюються самими процесами - відправником і одержувачем. Заголовок і тіло є істотно різними структурами даних і розташовуються в різних місцях в пам'яті. Власне черга (найчастіше - лінійний список) ОС складає із заголовків повідомлень. У елементи черги включаються покажчики на тіла повідомлень, розташовані в пам'яті системи або процесів. Як правило, можливості процесу-одержувача повідомлень не обмежуються читанням по дисципліні FIFO, йому надається багатший вибір дисциплін: LIFO, по пріоритету, по типах, по ідентифікаторах відправника і тому подібне У розпорядженні власника є також засоби визначення розміру черги, а можливо, і проглядання черги - неруйнуючого читання з неї. У розпорядженні процесу-відправника є тільки виклик типу sendMessage - посилки повідомлення в чергу. Якщо при спробі процесу послати повідомлення виявляється, що черга заповнена, процес-відправник блокується. Це, втім, досить окремий випадок, оскільки системні обмеження на розмір черг ніколи не бувають дуже жорсткими. Процес-одержувач блокується при спробі читати повідомлення, коли черга порожня. Істотним питанням при конструюванні механізму черг є питання про включення або невімкнення в ОС системної буферизації повідомлень. При включенні такого засобу (рис.9.2) тіло посиланого повідомлення копіюється в системну область пам'яті, а при читанні - копіюється з неї в адресний простір процесу-одержувача. За відсутності системної буферизації тіла повідомлень зберігаються в загальній для відправника і одержувача пам'яті, а передається тільки покажчик на тіло повідомлення (рис.9.3). У першому випадку виконуються додаткові пересилки, витрачається додаткова пам'ять і вводяться жорсткіші обмеження на об'єм повідомлень, але досягається надійність передачі і значно більш простій інтерфейс процесів. У другому випадку значно економиться пам'ять, але самі процеси повинні піклуватися про управління спільно використовуваною пам'яттю і про збереження повідомлень в ній. За відсутності системної буферизації повідомлень застосовуються зазвичай два методи передачі тіла повідомлення: або процес-відправник поміщає тіло повідомлення в окремий сегмент, що розділяється, отримує у ОС маніпулятор цього сегменту для процесу-одержувача і передає цей маніпулятор у складі повідомлення; або для всіх повідомлень виділяється одна загальна область пам'яті із загальним маніпулятором, і для розміщення повідомлення в нім використовуються системні виклики виділення пам'яті в купі.
Читайте також:
|
|||||||||||
|