Синхронізація та паралелізм

Ядро схильне станам конкуренції за ресурси (race condition) На відміну від однопоточному користувальницької програми, ряд властивостей ядра дозволяє здійснювати паралельні звернення до ресурсів загального доступу, і тому потрібно виконувати синхронізацію для запобігання станів конкуренції за ресурси Зокрема, можливі такі ситуації

• Ядро Linux підтримує многопроцессорную обробку Тому, без відповідного захисту, код ядра може виконуватися на одному, двох або більшій кількості процесорів і при цьому одночасно звертатися до одного ресурсу

• переривання я виникають асинхронним про по відношенню до виконуваного коду

Тому, без відповідного захисту, переривання можуть виникнути під час звернення до ресурсу загального доступу, і обробник переривання може теж звернутися до цього ж ресурсу

• Ядро Linux є преемптівним Тому, без відповідного захисту, виконуваний код ядра може бути витіснений на користь іншого коду ядра, який теж може звертатися до деякого загального ресурсу

Стандартне рішення для запобігання стану конкуренції за ресурси

(Стану гонок) – це використання спін-блокувань і семафорів

Більш повне обговорення питань синхронізації і паралелізму приведено в наступних розділах

Переносимість – це важливо

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

Кілька правил, такі як не створювати залежності від порядку проходження байтів, забезпечувати можливість використання коду для 64-бітових систем, не привязуватися до розміру сторінки памяті або машинного слова та інші-мають велике значення Ці питання більш детально висвітлюються в одній з наступних глав

Резюме

Так, ядро-це дійсно щось інше: відсутній захист памяті, немає перевіреної бібліотеки функцій мови С, маленький стек, велике дерево вихідного коду Ядро Linux грає за своїми правилам і займається серйозними речами Проте, ядро-це всього лише програма воно, по суті, не сильно відрізняється від інших звичайних програм Не потрібно його боятися

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

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

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


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

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*