17129

ОС Linux. Архітектура ОС Linux

Лекция

Информатика, кибернетика и программирование

Лекція №5 Тема: ОС Linux. Архітектура ОС Linux. План Архітектура Linux. Модулі ядра. Система файлів і каталоги. Імена файлів і каталогів. Розширення та дерево каталогів. Архітектура Linux В ОС Linux можна виділити три основні частини: ядро яке реа

Украинкский

2013-06-29

78 KB

24 чел.

Лекція5

Тема: ОС Linux. Архітектура  ОС Linux.

План

  1.  Архітектура Linux.
  2.  Модулі ядра.
  3.  Система файлів і каталоги.
  4.  Імена файлів і каталогів.
  5.  Розширення та дерево каталогів.

Архітектура Linux

В ОС Linux можна виділити три основні частини:

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

Linux реалізує технологію монолітного ядра. Весь код і структури даних ядра перебувають в одному адресному просторі. У ядрі можна виділити кілька функціональних компонентів.

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

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

Модулі ядра

Ядро Linux дає можливість на вимогу завантажувати у пам'ять і вивантажувати з неї окремі секції коду. Такі секції називають модулями ядра (kernel modules)  і виконують у привілейованому режимі.

Модулі ядра надають низку переваг.

  •  Код модулів може завантажуватися в пам'ять у процесі роботи системи, що спрощує налагодження компонентів ядра, насамперед драйверів.
  •  З'являється можливість змінювати набір компонентів ядра під час виконання: ті з них, які в цей момент не використовуються, можна не завантажувати у пам'ять.
  •  Модулі є винятком із правила, за яким код, що розширює функції ядра, відповідно до ліцензії Linux має бути відкритим. Це дає змогу виробникам апаратного забезпечення розробляти драйвери під Linux, навіть якщо не заплановано надавати доступ до їхнього вихідного коду.

Підтримка модулів у Linux складається із трьох компонентів.

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

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

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

Особливості системних бібліотек

Системні бібліотеки Linux є динамічними бібліотеками, котрі завантажуються у пам'ять тільки тоді, коли у них виникає потреба. Вони виконують ряд функцій:

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

Файл.

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

Система файлів: каталоги

Файлова система з погляду користувача – це «простір», у якому розміщаються файли. Наявність файлової системи дозволяє визначити не тільки «як називається файл», але й «де він перебуває». Розрізняти файли тільки по імені було б недоцільно: доводилося б пам'ятати, як називається кожен файл і при цьому піклуватися про те, щоб імена ніколи не повторювалися. Більше того, необхідний механізм, що дозволяє працювати із групами тематично зв'язаних між собою файлів (наприклад, компонентів однієї й тієї ж програми або різних глав дисертації). Інакше кажучи, файли потрібно систематизувати.

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

Linux може працювати з різними типами файлових систем, які розрізняються списком підтримуваних можливостей, продуктивністю в різних ситуаціях, надійністю й іншими ознаками. У цій лекції будуть описані можливості файлової системи Ext2/Ext3, на сьогодні de facto стандартної файлової системи для Linux.

Більшість сучасних файлових систем (але не всі!) використають у якості основного організаційного принципу каталоги. Каталог - це список посилань на файли або інші каталоги. Прийнято говорити, що каталог містить файли або інші каталоги, хоча в дійсності він тільки посилається на них, фізичне розміщення даних на диску звичайно ніяк не пов'язане з розміщенням каталогу. Каталог, на який є посилання в даному каталозі, називається підкаталогом або вкладеним каталогом. Каталог у файловій системі найбільше нагадує бібліотечний каталог, що містить посилання на об'єднані по якихось ознаках книги й інші розділи каталогу (файли й підкаталоги). Посилання на той самий файл може втримуватися в декількох каталогах одночасно - це робить доступ до файлу більше зручним. У файловій системі Ext2 кожен каталог - це окремий файл особливого типу (“d”, від англ. «directory»), що відрізняється від звичайного файлу з даними: у ньому можуть утримуватися тільки посилання на інші файли й каталоги.

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

У файловій системі Linux немає папок і документів. Є каталоги й файли, можливості яких куди ширше.

Імена файлів і каталогів

Припустимі імена

Головні відмітні ознаки файлів і каталогів - їхні імена. В Linux імена файлів і каталогів можуть бути довжиною не більше 256 символів, і можуть містити будь-які символи, крім “/”. Причина цього обмеження очевидний: даний символ використається як роздільник імен у складі шляху, тому не повинен зустрічатися в самих іменах. Причому Linux завжди розрізняє прописні й малі літери в іменах файлів і каталогів, тому “methody”, “Methody” й “METHODY” будуть трьома різними іменами.

Є кілька символів, припустимих в іменах файлів і каталогів, які потрібно використати з обережністю. Це так називані спецсимволи “*”, “\”, “&”, “<”, “>”, “;”, “(”, “)”, “|”, а також символи пробілу й табуляції. Справа в тому, що ці символи мають особливе значення для будь-якої командної оболонки, тому потрібно буде спеціально подбати про те, щоб командна оболонка сприймала ці символи як частина імені файлу або каталогу. Символ “-” означає, що наступне слово - ключ, а пробіли й табуляції розділяють параметри в командному рядку.

Розширення

Багатьом користувачам знайоме поняття розширення - частина імені файлу після крапки, що звичайно обмежується декількома символами й утримуються у файлу, що вказує на тип, даних. У файловій системі Linux немає ніяких приписань із приводу розширення: в імені файлу може бути будь-яка кількість крапок (у тому числі ні однієї), а після останньої крапки може стояти будь-яка кількість символів (на відміну від старих файлових систем, організованих за принципом «8+3» (DOS, ISO9660 і т.п.), де в імені файлу припустимо не більше однієї крапки й розширення може бути не длиннее 3-х символів. Це обмеження визначило вид багатьох відомих сьогодні розширень файлів, наприклад, “txt” для текстового файлу). Хоча розширення не обов'язкові й не нав'язують технологією в Linux, вони широко використаються: розширення дозволяє людині або програмі, не відкриваючи файл, тільки по його імені визначити, якого типу дані в ньому втримуються. Однак потрібно враховувати, що розширення - це тільки набір угод про найменування файлів різних типів. Строго говорячи, дані у файлі можуть не відповідати заявленому розширенню по тій або іншій причині, тому цілком покладатися на розширення не можна.

Визначити тип умісту файлу можна й на підставі самих даних. Багато форматів передбачають вказівку на початку файлу, як варто інтерпретувати подальшу інформацію: як програму, вихідні дані для текстового редактора, сторінку HTML, звуковий файл, зображення або щось інше. У розпорядженні користувача Linux завжди є утиліта file, що призначена саме для визначення типу даних, що втримуються у файлі:


Приклад 1. Визначення типу даних у файлі

Ця утиліта ніколи не довіряє розширенню файлу (якщо воно присутнє) і аналізує самі дані. file розрізняє не тільки різні дані, але й різні типи файлів, зокрема, повідомить, якщо досліджуваний файл є не звичайним файлом, а, наприклад, каталогом.

Дерево каталогів

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

Ієрархію вкладених друг у друга каталогів можна співвіднести з ієрархією даних у системі: об'єднати тематично зв'язані файли в каталог, тематично зв'язані каталоги - в один загальний каталог і т.д. Якщо строго додержуватися ієрархічного принципу, те чим глибше буде рівень вкладеності каталогу, тим більше приватною ознакою повинні бути об'єднані дані, що втримуються в ньому. Структуру файлової системи можна представити наочно у вигляді дерева, «коренем» якого є кореневий каталог, а у вершинах розташовані всі інші каталоги. На мал. 1 зображене дерево каталогів, курсивом позначені імена файлів, прямим накресленням - імена каталогів.

Рис.1. Дерево каталогів в Linux

У будь-якій файловій системі Linux завжди є тільки один кореневий каталог, що називається “/”. Користувач Linux завжди працює з єдиним деревом каталогів, навіть якщо різні дані розташовані на різних носіях: декількох твердих або мережних дисках, знімних дисках, CD-ROM і т.п.( Це відрізняється від технології, застосовуваної в Windows , де для кожного пристрою, на якому є файлова система, використається свій кореневий каталог, позначений літерою, наприклад “a”, “c”, “d” і т. д) Для того щоб відключати й підключати файлові системи на різних пристроях до складу одного загального дерева, використаються процедури монтування й размонтирования. Після того, як файлові системи на різних носіях підключені до загального дерева, що втримуються на них дані доступні так, ніби всі вони становили єдину файлову систему: користувач може навіть не знати, на якому пристрої які файли зберігаються.

Положення будь-якого каталогу в дереві каталогів точно й однозначно описується за допомогою повного шляху. Повний шлях завжди починається від кореневого каталогу й складається з перерахування всіх вершин, що зустрілися при русі по ребрах дерева до шуканого каталогу включно. Назви сусідніх вершин розділяються символом “/” («слэш»). В Linux повний шлях, наприклад, до каталогу “methody” у файловій системі, наведеної на мал. 1, записується в такий спосіб: спочатку символ “/”, що позначає кореневий каталог, потім до нього додається “home”, потім роздільник “/”, за яким треба назва шуканого каталогу “methody”, у результаті виходить повний шлях “/home/methody”.

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

Література:

Гордеев А.В. Операционные системы: Учебник для вузов. - 2-е изд. – СПб.: Питер, 2004. – 416 с  [2], 312-339

Контрольні запитання:

  1.  Особливості архітектури ОС Linux?
  2.  Особливості системних бібліотек.


 

А также другие работы, которые могут Вас заинтересовать

81457. Цикл лимонной кислоты: последовательность реакций и характеристика ферментов. Связь между общими путями катаболизма и цепью переноса электронов и протонов 319.89 KB
  Цикл лимонной кислоты цитратный цикл цикл Кребса цикл трикарбоновых кислот ЦТК заключительный этап катаболизма в котором углерод ацетильного остатка ацетилКоА окисляется до 2 молекул СО2. Связь между атомами углерода в ацетилКоА устойчива к окислению. В условиях организма окисление ацетильного остатка происходит в несколько этапов образующих циклический процесс из 8 реакций: Последовательность реакций цитратного цикла Образование цитрата В реакции образования цитрата углеродный атом метильной труппы ацетилКоА связывается с...
81458. Механизмы регуляции цитратного цикла. Анаболические функции цикла лимонной кислоты. Реакции, пополняющие цитратный цикл 153.56 KB
  Регуляция цитратного цикла. В большинстве случаев скорость реакций в метаболических циклах определяется их начальными реакциями. В ЦТК важнейшая регуляторная реакция - образование цитрата из оксалоацетата и ацетил-КоА, катализируемая цитратсинтазой.
81459. Основные углеводы животных, их содержание в тканях, биологическая роль. Основные углеводы пищи. Переваривание углеводов 160.55 KB
  Переваривание углеводов Гликоген главный резервный полисахарид высших животных и человека построенный из остатков Dглюкозы. Его молекула построена из ветвящихся полиглюкозидных цепей в которых остатки глюкозы соединены α1 4гликозидными связями. При гидролизе гликоген подобно крахмалу расщепляется с образованием сначала декстринов затем мальтозы и наконец глюкозы. Крахмал разветвлённый полисахарид состоящий из остатков глюкозы гомогликан.
81460. Глюкоза как важнейший метаболит углеводного обмена. Общая схема источников и путей расходования глюкозы в организме 139.63 KB
  Общая схема источников и путей расходования глюкозы в организме Глюкоза является альдогексозой. Циклическая форма глюкозы предпочтительная в термодинамическом отношении обусловливает химические свойства глюкозы. Расположение Н и ОНгрупп относительно пятого углеродного атома определяет принадлежность глюкозы к D или Lряду. В организме млекопитающих моносахариды находятся в Dконфигурации так как к этой форме глюкозы специфичны ферменты катализирующие её превращения.
81461. Аэробный распад — основной путь катаболизма глюкозы у человека и других аэробных организмов. Последовательность реакций до образования пирувата (аэробный гликолиз) 220.81 KB
  Все ферменты катализирующие реакции этого процесса локализованы в цитозоле клетки. Реакции аэробного гликолиза Превращение глюкозо6фосфата в 2 молекулы глицеральдегид3фосфата Глюкозо6фосфат образованный в результате фосфорилирования глюкозы с участием АТФ в ходе следующей реакции превращается в фруктозо6фосфат. В ходе этой реакции катализируемой фосфофруктокиназой фруктозо6фосфат превращается в фруктозо16бисфосфат. Продукты реакции альдольного расщепления изомеры.
81462. Распространение и физиологическое значение аэробного распада глюкозы. Использование глюкозы для синтеза жиров в печени и в жировой ткани 103.86 KB
  Использование глюкозы для синтеза жиров в печени и в жировой ткани. Основное физиологическое назначение катаболизма глюкозы заключается в использовании энергии освобождающейся в этом процессе для синтеза АТФ. Энергия выделяющаяся в процессе полного распада глюкозы до СО2 и Н2О составляет 2880 кДж моль.
81463. Анаэробный распад глюкозы (анаэробный гликолиз). Гликолитическая оксиредукция, пируват как акцептор водорода. Субстратное фосфорилирование. Распространение и физиологическое значение этого пути распада глюкозы 121.38 KB
  Реакции анаэробного гликолиза При анаэробном гликолизе в цитозоле протекают все 10 реакций идентичных аэробному гликолизу. Восстановление пирувата в лактат катализирует лактатдегидрогеназа реакция обратимая и фермент назван по обратной реакции. С помощью этой реакции обеспечивается регенерация ND из NDH без участия митохондриальной дыхательной цепи в ситуациях связанных с недостаточным снабжением клеток кислородом. Таким образом значение реакции восстановления пирувата заключается не в образовании лактата а в том что данная...
81464. Биосинтез глюкозы (глюконеогенез) из аминокислот, глицерина и молочной кислоты. Взаимосвязь гликолиза в мышцах и глюконеогенеза в печени (цикл Кори) 215.46 KB
  Глюконеогенез процесс синтеза глюкозы из веществ неуглеводной природы. Его основной функцией является поддержание уровня глюкозы в крови в период длительного голодания и интенсивных физических нагрузок. Эти ткани могут обеспечивать синтез 80100 г глюкозы в сутки.
81465. Представление о пентозофосфатном пути превращений глюкозы. Окислительные реакции (до стадии рибулозо-5-фосфата). Распространение и суммарные результаты этого пути (образование пентоз, НАДФН и энергетика) 135.5 KB
  Окислительные реакции до стадии рибулозо5фосфата. Распространение и суммарные результаты этого пути образование пентоз НАДФН и энергетика Пентозофосфатный путь называемый также гексомонофосфатным шунтом служит альтернативным путём окисления глюкозо6фосфата. Пентозофосфатный путь состоит из 2 фаз частей окислительной и неокислительной.