Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



“Інформаційні управляючі системи та технології” 080402 “Інформаційні технології проектування” Одеса 2010

“Інформаційні управляючі системи та технології” 080402 “Інформаційні технології проектування” Одеса 2010




Сторінка18/24
Дата конвертації10.03.2017
Розмір1.41 Mb.
1   ...   14   15   16   17   18   19   20   21   ...   24

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


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

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

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

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


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

6. 1. 1 Технологія відображуваної пам’яті (mapped memory)


У ряді ОС відображувана пам’ять є базовим системним механізмом, на якому грунтуються інші види міжпроцесової взаємодії та системні вирішення. Звичайно відображувану пам’ять використовують у поєднанні з інтерфейсом файлової системи, в такому разі говорять про файли, відображувані у пам’ять (memory-mapped files).

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


Розділ 7 Керування оперативною пам’яттю


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

Різні види пам’яті організовані в ієрархію. На нижчих рівнях такої ієрархії перебуває дешевша і повільніша пам’ять бвльшого обсягу, а в міру просування ієрархією нагору пам’ять стає дорожчою і швидшою (а її обсяг стає меншим). Найдешевшим і найповільнішим запам’ятовувальним пристроєм є жорсткий диск.

Зберіга́ння - дія за значенням зберігати; технологічний процес.
Ієра́рхія (грец. ίεράρχίά, від ίερσς - священний, та άρχή - влада) - поділ на вищі й нижчі посади, чини; суворий порядок підлеглості нижчих щодо посади або чину осіб вищим. В ієрархії між її членами діють вертикальні зв'язки - відносини субординації.
Тверди́й диск або Тверди́й магні́тний диск, або Накопичувач на магнітних дисках (англ. Hard (magnetic) disk drive, англ. HDD), у комп'ютерному сленгу - «вінчестер» (від англ. winchester), - магнітний диск, основа якого виконана з твердого матеріалу.
Його також називають допоміжним запам’ятовувальним пристроєм (secondary storage). Швидшою і дорожчою є оперативна пам’ять, що зберігається в мікросхемах пам’яті, встановлених на комп’ютері,- таку пам’ять називатимемо основною пам’яттю (main memory). Ще швидшими засобами зберігання даних є різні кеші процесора, а обсяг цих кешів ще обмеженіший.

Керування пам’яттю в ОС- досить складне завдання. Потрібної за характеристиками пам’яті часто виявляють недостатньо, і щоб це не заважало роботі користувача, необхідно реалізовувати засоби координації різних видів пам’яті. Так, сучасні застосування можеуть не вміщатися цілком в основній пам’яті, тоді невикористовуваний код застосування може тимчасово зберігатися на жорсткому диску.

У цьому розділі розглянемо технології, які використовують основну пам’ять; керування пам’яттю із застосуванням допоміжних запам’ятовувальних пристроїв буде темою розділу 9, а методи динамічного розподілу пам’яті – розділу 10.


7. 1 Основи технології віртуальної пам’яті


Спочатку розглянемо передумови введення концепції вцртуальної пам’яті. Наведемо найпростіший з можливих способів спільного використання фізичної пам’яті кількома процесами (рис.7.1).




Рис. 7.1 Спільне використання фізичної пам’яті процесами

За цієї ситуації кожний процес завантажують у свою власну неперервну ділянку фізичної пам’яті, ділянка наступного процесу починається відразу після ділянки попереднього. На мал. 7.1 праворуч позначені адреси фізичної пам’яті, починаючи з яких завантажуються процеси.

Якщо проаналізувати особливості розподілу пам’яті на основі цього підходу, можуть виникнути такі запитання.


  • Як виконувати процеси,котрим потрібно більше фізичної пам’яті, ніж встановлено на комп’ютері?

  • Що відбудеться, коли процес виконає операцію записування за невірною адресою (наприклад Р2- за адресою 0х7500)?

  • Що робити, коли процесу (наприклад, процесу Р1) буде потрібна додаткова пам’ять під час його виконання?

  • Коли процес отримає інформацію про конкретну адресу фізичної пам’яті, що з неї розпочнеться його виконання, і як мають бути перетворені адреси пам’яті, використані в його коді?

  • Що робити, коли процесу не потрібна вся пам’ять, виділена для нього?

Пряме завантаження процесів у фізичну пам’ять не дає змоги дати відповіді на ці запитання. Очевидно, що потрібні деякі засоби трансляції пам’яті, яки б давали змогу процесам використовувати набори адрес, котрі відрізняються від адрес фізичної пам’яті.
Трансляція (від старофр. translater, від лат. translatus, прикметник минулого часу від transferre - «передавати», «переносити», передача)
Перш ніж розібратися в особливостях цих адрес, коротко зупинимося на особливостях компонування і завантаження програм.

Програма зазвичай перебуває на диску у вигляді двійкового виконуваного файла, отриманого після компіляції та компонування. Для свого виконання вона має бути завантажена у пам’ять (адресний простір процесу). Сучасні архітектури дають змогу процесам розташовуватися у будь-якому місці фізичної пам’яті, при цьому одна й та сама програма може відповідати різним процесам, завантаженим у різні ділянки пам’яті. Заздалегідь невідомо, в яку ділянку пам’яті буде завантажена програма.

Під час виконання процес звертається до різних адрес, зокрема в разі виклику функції використовують її адресу (це адреса коду), а звертання до глобальної змінної відбувається за адресою пам’яті, призначеною для зберігання значення цієї змінної (це адреса даних).

Програміст у своїй програмі звичайно не використовує адреси пам’яті безпосередньо, замість них вживаються символічні імена (функцій, глобальних змінних тощо).

Символіка - сукупність символів, які використовуються певною групою осіб, організацією, громадським чи політичним утворенням, державою тощо.
Внаслідок компіляції та компонування ці імена прив’язують до переміщуваних адрес (такі адреси задають у відносних одиницях, наприклад „100 байт від початку модуля”). Під час виконання програми переміщувані адреси, своєю чергою, прив’язують до абсолютних адрес у пам’яті.
Абсолютний (від лат. absolutus) - безумовний, необмежений, повний, безвідносний.
По суті, кожна прив’язка – це відображення одного набору адрес на інший. До адрес, використовуваних у програмах, ставляться такі вимоги.



  • Захист пам’яті. Помилки в адресації, що трапляються в коді процесу, повинні впливати тільки на виконання цього процессу. Коли процес Р2 зробить операцію записування за адресою 0х7500, то він і має бути перерваний за помилкою. Стратегія захисту пам’яті зводиться до того, що для кожного процесу зберігається діапазон коректних адрес, і кожна операція доступу до пам’яті перевіряється на приналежність адреси цьому діапазону.

  • Відсутність прив’язання до адрес фізичної пам’яті. Процес має можливості виконуватися незалежно від його місця в пам’яті та від розміру фізичної пам’яті. Адресний простір процесу виділяється як великий статичний набір адрес, при цьому кожна адреса такого набору є преміщуваною. Процесор і апаратне забезпечення повинні мати змогу перетворювати такі адреси у фізичні адреси основної пам’яті (при цьому та сама переміщувана адреса в різний час або для різних процесів може відповідати різним фізичним адресам).



7. 1. 1. Поняття віртуальної пам’яті


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

Завдяки віртуальній пам’яті фізична пам’ять адресного простору процесу може бути фрагментованою, оскільки основний обсяг пам’яті, яку займає процес, більшу частину часу залишається вільним. Є так зване правило „дев’яносто до десяти”, або правило локалізації, яке стверджує, що 90 % звертань до пам’яті у процесі припадає на 10% його адресного простору.

Локалізація (рос. локализация, англ. localization, нім. Lokalisierung f) - обмеження місця дії того чи іншого явища, процесу певними просторовими межами. Наприклад, локалізація загазованої дільниці шахти, локалізація затопленої дільниці (затопленого горизонту), локалізація звалища промислових відходів, хвостосховища тощо.
Адреси можна переміщати так, щоб основній пам’яті відповідали тільки ті розділи адресного простору процесу, які справді використовуються у конкретний момент.

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

У такий спосіб можна значно збільшити розмір адресного простору процесу і забезпечити виконання процесів, що за розміром перевищують основну пам’ять.


7. 1. 2. Проблеми реалізації віртуальної пам’яті. Фрагментація пам’яті


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

Ще однією проблемою є фрагментація пам’яті, що виникає за ситуації, коли неможливо використати вільну пам’ять. Розрізняють внутрішню і зовнішню фрагментацію пам’яті (рис. 7.2).

Зовнішня зводиться до того, що внаслідок виділення і наступного звільнення пам’яті в ній утворюються вільні блоки малого розміру – діри (holes). Через це може виникнути ситуація, за якої неможливо виділити неперервний блок пам’яті розміру N, оскільки немає жодного неперервного вільного блоку, розмір якого S ≥N, хоча загалом обсяг вільного простору пам’яті перевищує N.

Звільнення - в трудовому праві припинення трудових відносин між працівником і роботодавцем.
Непере́рвна фу́нкція - одне з основних понять математичного аналізу. Неперервні функції трапляються набагато частіше, ніж диференційовні, множина всіх неперервних функцій замкнена відносно арифметичних операцій (за винятком ділення) і композиції та утворює чи не найважливіший клас функцій в аналізі.
Так на мал. 7.2 для виконання процесу Р5 місця через зовнішню фрагментацію не вистачає.

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




Рис. 7.2 Зовнішня і внутрішня фрагментація

1   ...   14   15   16   17   18   19   20   21   ...   24



  • 6. 1 Види міжпроцесової взаємодії
  • 6. 1. 1 Технологія відображуваної пам’яті (mapped memory)
  • Розділ 7 Керування оперативною пам’яттю
  • 7. 1 Основи технології віртуальної пам’яті
  • 7. 1. 2. Проблеми реалізації віртуальної пам’яті. Фрагментація пам’яті