Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spz / lect / lekc1_2_1_Linux

.pdf
Скачиваний:
14
Добавлен:
23.02.2016
Размер:
199.45 Кб
Скачать

1

Базові поняття сучасних операційних систем

1.Загальна характеристика сімейства операційних систем Unix, особливості архітектури сімейства ОС Unix

2.Основні поняття системи Unix

2.1.Віртуальна машина

2.2.Користувач

2.3.Інтерфейс користувача

2.4.Привілейований користувач

2.5.Привілейований користувач

2.6.Команди і командний інтерпретатор

2.7.Процеси

3.Функціонування системи Unix . Виконання процесів

Загальна характеристика сімейства операційних систем Unix, особливості архітектури сімейства ОС Unix

Unix являє приклад винятково вдалої реалізації простої мультипрограмної і багатокористувальницької операційної системи. У свій час вона проектувалася як інструментальна система для розробки програмного забезпечення. Своєю унікальністю система Unix зобов'язана багато в чому тій обставині, що вона була, створена всього двома розроблювачами ( Кеном Томпсоном і Денісом Рітчі).Люди, що створювали її, розробляли систему для себе, і перший час використовували на міні-ЕОМ із дуже скромними обчислювальними ресурсами. З цієї причини Unix, має просту, але дуже могутню командну мову і незалежну від пристроїв файлову систему. Оскільки при створенні цієї ОС використовувалася мова високого рівня, на якій пишуться не тільки системні, але і прикладні програми (мова йде про мову С), то система і додатки, що виконуються в ній, вийшли легко переміщуваними (мобільними). Компілятор з мови С для всіх відтрансльованих програм дає реєнтерабельний і поділюваний код, що дозволяє ефективно використовувати наявні в системі ресурси.

Першою метою при розробці цієї системи було прагнення зберегти простоту й обійтися мінімальною кількістю функцій.

Другою метою була спільність. Ті самі методи і механізми повинні були використовуватися в багатьох випадках. Тому спільність у Unixсистемах виявляється в багатьох аспектах, і зокрема:

звертання до файлів, пристроям введення/виведення і буферам міжпроцесних повідомлень виконуються за допомогою тих самих примітивів;

2

ті самі механізми іменування, присвоєння альтернативних імен і захисту від несанкціонованого доступу застосовуються до файлів з даними і директоріями і пристроям;

ті самі механізми працюють у відношенні програмно й апаратно ініціюємих переривань.

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

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

Unix-системи поставляються з великим набором системних і прикладних програм, що включають редактори текстів, програмувальні інтерпретатори командної мови, компілятори з декількох популярних мов програмування, включаючи С, С++, ассемблер, РЕRL, FORTRAN і багато іншіх, компоновщики (редакторів міжпрограмних зв'язків), відтладчики, численні бібліотеки системних і користувальницьких програм, засоби сортування і ведення баз даних, численні адміністративні й обслуговуючі програми. Для абсолютної більшості цих програм є документація, що включає в себе такі важливі документи, як вихідні (як правило, з гарними коментарями) тексти програм. Крім цього, опис і документація в більшій частині доступні користувачу безпосередньо за екраном в інтерактивному режимі. Використовується ієрархічна файлова система з повним захистом, робота зі томами, які знімаються, забезпечується незалежність від пристроїв.

Центральною частиною системи Unix є ядро (кеrnel).

Основні поняття системи Unix

Одним з достоїнств ОС Unix є те, що система базується на невеликому числі понять; коротко їх розглянемо.

Віртуальна машина

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

3

наданого користувачу, називається образом. Можна сказати, що процес — це виконання образа. Образ складається з:

образа пам'яті;

значень загальних регістрів процесора;

стану відкритих файлів;

поточного директорія (каталогу файлів) і іншої інформації.

Образ процесу під час його виконання розміщується в основній пам'яті. У старих версіях системи Unix образ міг бути вивантажений (откачан) на диск, якщо якому-небудь більш пріоритетному процесу потрібно місце в основній пам'яті.

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

Образ пам'яті поділяється на три логічних сегменти:

сегмент реєнтерабельних процедур (починається з нульової адреси у віртуальному адресному просторі процесу);

сегмент даних (розташовується за сегментом процедур і може рости убік великих адрес);

сегмент стека (починається зі старшої адреси і росте убік молодших адрес

уміру занесення в нього інформації при викликах підпрограм і при перериваннях).

Користувач

Із самого початку ОС Unix розроблялась як інтерактивна багатокористувальницька система. Іншими словами, Unix призначений для мультитерминальної роботи. Щоб почати працювати, людина повинна «увійти» у систему, ввівши з вільного термінала своє облікове ім'я (ассоunt name) і, можливо, пароль. Людина, зареєстрована в облікових файлах системи і, отже, що має обліковий запис, називається зареєстрованим користувачем системи. Реєстрацію нових користувачів звичайно виконує адміністратор системи. Користувач не може змінити своє облікове ім'я, але може установити і/чи змінити свій пароль. Паролі зберігаються в окремому файлі в закодованому виді.

Усі користувачі ОС Unix явно або неявно працюють з файлами. Файлова система ОС Unix має деревоподібну структуру. Проміжними

4

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

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

Інтерфейс користувача

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

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

Привілейований користувач

Ядро ОС Unix ідентифікує кожного користувача по його ідентифікаторі (UID — user identifier), унікальному цілому значенню, що привласнюється користувачу при реєстрації в системі. Крім того, кожен користувач відноситься до деякої групи користувачів, що також ідентифікується деяким цілим значенням (GID — group identifier). Значення UID і GID для кожного

5

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

Очевидно, що адміністратор системи, що теж є зареєстрованим користувачем, повинний мати більші можливості, чим звичайні користувачі. В ОС Unix ця задача вирішується шляхом виділення єдиного нульового значення UID. Користувач з таким UID називається суперкористувачем або root. Він має необмежені права на доступ до будь-якого файлу і на виконання будь-якої програми. Крім того, такий користувач має можливість повного контролю над системою. Він може зупинити її і навіть зруйнувати.

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

Команди і командний інтерпретатор

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

(Повна командна мова багата по можливостях і досить складна, однак більшість команд прості у використанні і запам'ятати їх не важко.)

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

Люба командна мова сімейства Unix фактично складається з трьох частин:

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

убудованих команд, виконуваних безпосередньо інтерпретатором командної мови;

команд, що представляються окремими виконуваними файлами.

6

У свою чергу, набір команд останнього виду включає стандартні команди і команди, створені користувачами системи.

Для того щоб виконуваний файл, розроблений користувачем ОС Unix, можна було запускати як команду shell, досить визначити в одному з вихідних файлів функцію з ім'ям main. Якщо ужити як ім'я команди ім'я такого виконуваного файлу, командний інтерпретатор створить новий процес і запустить у ньому зазначену виконувану програму, починаючи з виклику функції main.

Процеси

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

Функціонування системи Unix . Виконання процесів

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

Процес може виконуватися в одному з двох станів, а саме користувальницькому і системному. У користувальницькому стані процес виконує користувальницьку програму і має доступ до користувальницького сегмента даних.

У системному стані процес виконує програми ядра і має доступ до системного сегмента даних.

Коли користувальницькому процесу потрібно виконати системну функцію, він створює системний виклик. Фактично відбувається виклик ядра системи як підпрограми. З моменту появи системного виклику процес вважається системним. Таким чином, користувальницький і системний процеси є двома фазами того самого процесу, але вони ніколи не перетинаються між собою.

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

7

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

Будь-яке введення/виведення у Unix-системах трактується як введення з деякого файлу і виведення у деякий файл. Клавіатура й екран термінала теж інтерпретуються як файли (перший можна тільки читати, а в другий можна тільки писати).

Linux

Linux -Unix-подібна операційна система для персональних комп'ютерів і робочих станцій.

Як відомо, Linux — це вільно розповсюджувана версія Unix, що спочатку була розроблена Лінусом Торвальдсом в університеті Хельсінкі (Фінляндія). Усі компоненти системи, включаючи вихідні тексти, поширюються з ліцензією на вільне копіювання й установку для необмеженого числа користувачів.

Linux був створений за допомогою багатьох Unix-програмістів і ентузіастів з Інтернету. До даного проекту добровільно підключилися ті, хто має досить навичок і здібностей розвивати систему. Більшість програм Linux розроблено в рамках проекту в Кембріджі, Массачусетс. Але в нього внесли вклад також програмісти усього світу.

Спочатку Linux створювалася як «саморобна» Unix-подібна реалізація для ПК типу IВМ РС із процесором I80386. Однак Linux став настільки популярний і його нині підтримує таке велике число компаній, що в даний час є реалізація цієї ОС практично для всіх типів процесорів і комп'ютерів на їхній основі. На базі ОС Linux створюються й вбудовані системи, і суперкомп'ютери. Система підтримує більшість сучасних інтерфейсів і технологій.

Linux підтримує більшість властивостей, які притаманні іншим реалізаціям Unix, плюс ряд тих, яких більше ніде немає.

8

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

Linux добре сумісний з стандартами для Unix. Така сумісність враховувалася при його створенні. Більшість вільна розповсюджуваних по мережі Інтернет програм для Unix може бути відкомпільована для Linux практично без особливих змін. Крім того, усі вихідні тексти для Linux, включаючи ядро, драйвери пристроїв, бібліотеки, користувальницькі програми й інструментальні засоби поширюються вільно.

Linux підтримує різні типи файлових систем для збереження даних. Деякі файлові системи, такі як файлова система ехt2fs, були створені спеціально для Linux. Підтримуються також інші типи файлових систем, наприклад Мinix-1 і Хеnix. Реалізована також система керування файлами на основі FАТ, що дозволяє безпосередньо звертатися до файлів, що знаходяться в розділах з цією файловою системою. Підтримується і файлова система ISO 9660 СD-RОМ для роботи з дисками СD-RОМ. Є системи керування файлами і на томах із НРFS і NTFS, щоправда, вони працюють тільки на читання файлів. Створено варіанти системи керування файлами і для доступу до

FАТ32.

Linux забезпечує повний набір протоколів стека ТСР/IР для мережної роботи.

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

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

Цей механізм агресивного кешeирования дозволяє збільшити продуктивність системи.

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

9

чи кодів мати «повні» виконувані програми, що не мають потребу в поділюваних бібліотеках. У Linux поділювані бібліотеки динамічно зв'язуються під час виконання, дозволяючи програмісту заміняти бібліотечні модулі своїми власними.

Соседние файлы в папке lect