
- •Архітектура пеом
- •1. Інтервальний таймер і8253/і8254 на платі івм рс: принцип будови та функціонування
- •2.Програмування інтервального таймера на рівні портів
- •3.!Читання конcтант перерахунку каналів інтервального таймера і8253/і8254
- •4.! Читання байту стану каналів 0-2 інтервального таймера: спосіб 1, 2.
- •5.! Системний час в івм рс: таймер bios (таймер ос).
- •6.Засоби bios та ос для роботи з таймером bios.
- •7.Реальний час в івм рс: годинник реального часу (rtc)
- •8.Функціональна схема годинника реального часу та порти доступу (rtc) на платі ibm pc.
- •9. Керуючі та регістри стану годинника реального часу (rtc).
- •10.Сигнальне переривання від годинника реального часу (rtc).
- •11. Періодичне переривання від годинника реального часу (rtc).
- •12.Програмування годинника реального часу (rtc).
- •13.Апаратна реалізація порту послідовної передачі даних на платі ibm pc, принцип побудови уапп.
- •14. Порти асинхронного адаптера та їх призначення
- •16. Контролер прямого доступу до пам’яті (dma). Призначення і основні функції
- •17.! Регістри каналів контролера прямого доступу до пам’яті (dma).
- •18.!Алгоритм ініціалізації контролера прямого доступу до пам’яті (dma).
- •19.! Реалізація прямого доступу до пам’яті (пдп) в івм рс ат
- •20.! Контролер переривань на платі івм рс (і8259): принцип будови та функціонування
- •21.Загальна схема переривань в івм рс ат
- •22.Види переривань: апаратні та програмні переривання
- •23.Особливості обробки апаратних переривань, пріоритети обслуговування запитів на переривання та їх зміна.
- •24. Суть і призначення векторів переривань. Таблиця векторів переривань та зміна її елементів.
- •25.! Порти доступу до контролера переривань на платі івм рс
- •27.Керування пам`яттю. Сегментація пам`яті.
- •28.Дескрипторні таблиці. Селектори сегментів.
- •29.Сторінкова організація пам`яті, сторінкове перетворення адреси.
- •30.Алгоритм сегмента сторінкової адресації.
27.Керування пам`яттю. Сегментація пам`яті.
Планувальник ядра слідкує за поділом часу між процесами. Ваша оператційна система також має поділити їх у просторі, щоб процеси не могли «наступати» чужу область оперативної пам’яті. Навіть якщо припустити, що всі програми зроблені так, щоб працювати в купі із «сусідами», ви ж не хочете, щоб помилка в одній з них призвела до неправильної роботи інших. Все, що робить операційна система для вирішення цих проблем називається керуванням пам’яттю
Робоча пам’ять процесу складається з двох областей: область коду із сегментом коду програми, що виконується (доступна процесові тільки для читання) та область даних (доступна як для читання, так і для запису). Кожен процес має свою окрему область даних, але кілька процесів будуть використовувати ту саму область коду, якщо всі ці процеси — одна і та ж програма на диску (наприклад, дві чи три запущені переглядалки *.pdf, або кілька емуляторів терміналу). Така оптимізація — дуже ефективне рішення в роботі з оперативною пам’яттю.
Модуль керування пам’яттю
Навіть коли комп’ютер обладнаний достатньою кількістю оперативної пам’яті, щоб не виникало потреби використовувати обмінник, керівник пам’яттю ядра всерівно має достатньо роботи. Він слідкує за тим, щоб усі запущені програми не лізли у чужі сегменти даних (окрім тих, котрі спеціально призначені для зчитування даних з інших програм), і убезпечити дані одної програми від помилкового перезапису іншою програмою. Щоб зробити це він формує так звану таблицю даних і сегментів. Таблиця оновлюється кожного разу, коли процес потребує більше пам’яті чи відпускає якусь її частину, коли вона йому більше не потрібна (останнє відбувається, як правило, при завершенні роботи процесу).
Ця таблиця використовується для передачі команд до спеціалізованої апаратної одиниці, що називається модуль керування пам’яттю або MMU8 . У сучасних процесорах цей модуль вмонтований всередину самих процесорів. Він має специфічну властивість виставляти «огорожі» навколо використовуваних ділянок пам’яті, отож недозволені запити програм у чужі ділянки пам’яті натикаються на ці огорожі, і MMU генерує перепин.
Якщо Ви коли-небудь бачили повідомлення «Segmentation fault» або «core dumped» після того, як котрась із програм «зависла», відбулось саме те, про що ішлося — звертання програмою у пам’ять поза межами її власного сегменту. Це свідчить про помилку у програмі — перед тим, як використовувати пам’ять потрібно попросити про новий сегмент у ядра.
Є також і інший аспект для захисту процесів від «перетину інтересів». Можна, наприклад, контролювати їхні можливості доступу до файлів чи пристроїв (котрі у Юнікс’ах теж відображаються у вигляді файлів), що унеможливить погано чи зумисне шкідливо написаним програмам пошкодити важливі частини системи. Ось чому усі Юнікси мають так звані «права доступу до файлів», про що описується в наступних розділах.
Сегмента́ція па́м'яті
Технологія сегментації дозволяє поділити адресний простір процесу на кілька сегментів. Довільна адреса програми містить ідентифікатор сегмента (segment ID) і зсув від його початку. Кожен сегмент може мати власні налаштування захисту. Сегменти завантажуються в оперативну пам'ять цілком, кожний з них описується за допомогою дескриптора, що містить фізичну адресу, за яким завантажений сегмент (базова адреса), розмір і інформація про захист. Апаратна частина перевіряє границі сегмента при кожній операції доступу, що виключає факти ушкодження процесом сусіднього сегмента. Завантаження і вивантаження (свопінг) можуть бути проведені на рівні окремих сегментів, а не всієї програми. Сегментація в інших випадках використовується разом з розбиттям на сторінки, що в результаті дає гнучкий гібридний механізм керування пам'яттю. У таких системах сегменти не обов'язково повинні розташовуватися у пам'яті неперервно.