Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Операційні системи

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Захист даних. Багато стратегічні рішення повторюються як у апаратній рівні, і лише на рівні ОС. Якщо ми пригадаємо мультипрограммный режим, то однією з необхідних умов його існування є забезпечення захисту (пам'яті та об'єктивності даних). Якщо ми розглянемо файлову систему, вона як і, як і операційна система, то, можливо однопользовательской. І тут проблеми захисту даних немає, бо людина, який… Читати ще >

Операційні системи (реферат, курсова, диплом, контрольна)

Лекція № 5.

Операційна система.

1. Призначення реалізувати основні функції операційній системы.

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

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

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

У разі, коли безлічі ресурсів кількох процесів мають непорожнє те що, те в нас виникає запитання про використання, так званих, поділюваних ресурсів. Частково ми казали про це минулій лекції: згадайте приклад із пристроєм друку. В Україні може бути кілька процесів, кожен із яких має у якості своєї ресурсу пристрій пресі й у кожний час може звернутися до цього ресурсу з замовленням на печатку якийсь інформації. Синхронізація роботи процесів з прикладу устрою друку ілюструвала нам жодну з функцій ОС, яка полягає в управлінні функціонуванням процесів. Погляньмо, що розуміється під керівництвом процессом.

Управління процессами:

1. Управління використанням часу центрального процессора.

2. Управління «подкачкой» і буфером ввода.

3. Управління поділюваними ресурсами.

Основні проблеми управління процессами.

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

Друге — управління «подкачкой» і буфером введення. Припустимо ситуацію, коли кількість людей, наприклад весь курс, сидить за комп’ютерами, і всі одночасно запустили якісь завдання вигляді процесів. У системі утворилася маса завдань (гарантовано понад сто). А вся обчислювальна система має не може взяти до роботи на мультипрограммном режимі сто завдань — це забагато. І тут утворюється, так званий, буфер введення завдань, чи буфер введення процесів, тобто буфер, у якому акумулюються ті процеси, що у розпочала диверсифікацію своєї обробки процесором. Виникає проблема черговості вибору процесів від цього буфера спершу обробки. Це планування буфера.

Тепер на завдання планування «підкачування». Процесором обробляється кілька процесів, і для нами поставлено завдання звільнити реальну оперативну пам’ять й інших завдань. І тут виникає необхідність із оброблюваних завдань відкачати на зовнішнє запам’ятовуючий пристрій. По якому алгоритму ми відкачувати ці завдання? Якою буде стратегія відкачування? Можна відкачувати, наприклад, кожну четную завдання. Як більш-менш вигідно організувати процес відкачування — це проблема.

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

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

Ми іноді називатимемо програми, управляючі ресурсами, драйверами пристроїв (фізичних чи логічних). Приміром, в ядро ОС має входити драйвер оперативного запоминающего устройства.

Далі, навколо ядра нарощуються програми управління ресурсами обчислювальної системи. Перший рівень у основному складається з драйверів фізичних пристроїв. Наступний рівень — управління логічними пристроями. І далі. Таких рівнів може бути досить багато. Чим далі від ядра, то більша абстрактність має під собою грунт. Приміром, дето нашій схемі можуть з’явитися драйвери управління файлами, які, на насправді, пов’язані з драйверами управління логічними дисками, інші ж, в своє чергу, пов’язані з драйверами реальних фізичних пристроїв й дуже далее.

Не обов’язково, що це компоненти ОС працюють у режимі супервізора, чи режимі ОС. Чимало понять з компонентів, які логічно досить віддалені від ядра, можуть працювати у звичайному користувальному режимі. Також необов’язково, всі ці компоненти ОС працюють у резидентном режимі. Зазвичай, багатьом функцій це требуется.

Тепер час торкнутися докладнішої розгляду основних функцій ОС.

Управління використанням часу центрального процессора.

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

Перша ситуація. Я маю дуже багато завдань чи програм, потрібне велике обсягу обчислювальних потужностей системи. Це завдання, котрі називають рахунковими завданнями; вони потребують великої обсягу обчислень мало звертаються до зовнішніх пристроям. Ці завдання їх необхідно виконувати на однієї обчислювальної системі. Що буде критерієм ефективності до роботи системи і під час цього пакета завдань? Який набір параметрів можна взяти й сказати: якщо великі - те добре, якщо навпаки — то погано? Для цій ситуації критерієм ефективності роботи обчислювальної системи є ступінь завантаження ЦП. Якщо він мало простоює (тобто. працює у режимі чекання, проте процеси займаються обміном, або ОС перебирає час), ми можемо сказати, що ця система працює ефективно. Цього досягти з допомогою відповідного алгоритму планування, який ось у чому. Ми запускаємо в обробці той набір завдань, який уже є щодо можливостям ОС (або максимум, або всі завдання), що забезпечується режимом мультипрограммирования. Алгоритм планування часу ЦП у тому цьому разі буде наступний: якщо ЦП виділено одного з процесів, цей процес займатиме ЦП до одній з наступних ситуаций:

1. Звернення зовнішнього устройству.

2. Завершення процесса.

3. Зафіксований факт зациклення процесса.

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

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

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

Розглянемо ситуацію на другому випадку. У системі перебуває деяке кількість процесів, і завдання планувальника розподілити час ЦП таким чином, щоб час реакції системи на запит користувача було мінімальним, або за крайнього заходу, гарантованим. Пропонується така схема. У системі використовується певний параметр (t, яку називають квантом часу (у випадку, квант часу — це значення, що може змінюватися при їх настроюванні системи). Усі безліч процесів, яке у мультипрограммной обробці, підрозділяється на два підмножини. Перше підмножина становлять процеси, котрі готові продовження виконання: наприклад, ті процеси, які замовили собі міна й чекають на нього результатів. А процеси, які готові виконання. Робота здійснюватиметься так. Той процес, які у цей час займає ЦП, володітиме їм до наступу однієї з наступних событий:

1. Звернення з замовленням на обмен.

2. Завершення процесса.

3. Вичерпання виділеного даному процесу кванта часу (t.

При наступі однієї з цих подій планувальник ОС вибирає з процесів, готові до виконання, певний процес і передає йому ресурси ЦП. А вибирає він цей процес на залежність від того алгоритму планування, який використали у цій конкретної ОС. Наприклад, процес може вибиратися випадково. Другий спосіб у тому, що відбувається хіба що послідовний обхід процесів, тобто взяли його в роботу спочатку одне із процесів, потім він звільнився, та палестинці час ЦП буде надано наступному усе своєю чергою процесу з готові до виконання. Третім критерієм, яким відбирається чергове завдання, то, можливо час, яке цей процес не обслуговувався ЦП. І тут система може вибирати процес, яка має час найбільше. Ці алгоритми мають бути реалізовані в ОС, отже, повинно бути простими, інакше система працюватиме неефективно, сама він (хоча такі є: зокрема, цим страждає сімейство Windows).

Такий тип ОС називається ОС поділу часу. Вона як, у якому мінімізується час реакції системи на запит користувача. У ідеалі, завдяки тому, що час відповіді запит мінімально, у користувача потрібно створювати ілюзія, що це ресурси системи надані лише ему.

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

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

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

Підбиваючи деяку риску під функцією управління використанням часу ЦП і планування ЦП, звертаю увагу до два факту. Перший факт те, що алгоритми, які реалізовані у системі планування розподілом часу ЦП багато чому визначають експлуатаційні властивості обчислювальної системи. Я спеціально наводив приклади, пропонуючи використовувати різні ОС до різних цілей. Другий факт. Ми розглянули три типових різновиду ОС: системи пакетної обробки, системи поділу часу й системи реального часу. Сьогодні можна казати про тому, що систему реального часу це окремий клас ОС. Гарантовано, ОС Windows нічого очікувати управляти якимись об'єктами, які мають це реальне час дуже критично. Не керуватиме такими об'єктами і ОС СОЛЯРІС чи LINUX тощо., бо ці системи є системами реального времени.

Перші дві режиму, пакетний й міжнародного поділу часу, можна сэмулировать на таких загальноприйнятих ОС. Реально, великі наклади і серйозні ОС є змішаними системами, тобто. вони є у елементах планування ЦП як алгоритми, дозволяють управляти рахунковими завданнями, і алгоритми, дозволяють управляти інтерактивними завданнями або завданнями отладочными, котрим треба трохи ЦП.

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

Управління подкачкой і буфером ввода.

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

Друге зауваження. Сучасні ОС досить «ліниві» і відкачування найчастіше здійснюють не одиницями блоків пам’яті процесів, а відкачують весь процес. Тут є двоє ключових запитань: який критерій заміщення процесу який критерій вибрати з буфера процесу, який «Нам потрібно запровадити для мультипрограммной обробки. Найбільш найпростіший варіант залежить від використанні часу перебування у тому чи іншому стані. У першому випадку, коли ми вирішуємо питання відкачування процесу з активного капітал із числа оброблюваних до області підкачування, то можемо взяти той процес, який найбільше перебуває у стані обробки по астрономічному часу. Зворотний процес то, можливо симетричний, тобто. ми можемо брати з буфера введення процесів той процес, який найбільше там перебуває. Насправді, це прості і реальні алгоритми планування, і можуть видозмінюватися із міркувань різних критеріїв. Одне з критеріїв, коли всі завдання підрозділені різні категорії, т. е. можуть бути завдання ОС — у разі вони розглядаються насамперед (і у тому числі діє алгоритм оцінки часу перебування їх там) і всі інші завдання. У такій моделі справляє враження модель життєвої несправедливості у суспільстві, де є всемогутні люди, який усе дозволительно, а є люди, що і подождать.

Управління поділюваними ресурсами.

Тут ми позначимо лише проблему, оскільки конкретні її вирішення ми розглянемо з прикладу ОС UNIX.

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

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

Насправді під час вирішення завдань найчастіше потрібно таких поділюваних ресурсів, як загальна пам’ять, але хотілося б, щоб процеси, що функціонують одночасно, могли надавати деяке вплив друг на друга. Вплив, аналогічне апарату переривань. Задля реалізації цього в багатьох ОС є кошти передачі сигналів між процесами, тоді виникає деяка програмна эмуляция переривань. Один процес каже — передай сигнал іншому процесу. У другому процесі виникає переривання виконання цієї процесу передача управління певну визначену функцію, які мають обробити отриманий сигнал. Це третя функція ОС.

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

Лекція № 6.

Минулої лекції ми казали про те, що вона практично будь-яка операційна система забезпечує буферизацію ввода/вывода. Насправді, це одну з основних функцій ОС. За аналогією боротьби з різними швидкостями доступу до різним компонентами обчислювальної системи операційна система виводить на свої межі програмну буферизацію, що також розв’язує проблеми згладжування часу доступу і проблеми синхронізації загалом (приклад із пристроєм друку). Згладжування проблем доступу у тому, що практично нічого кожна операційна система має КЭШ-буфера, які акумулюють звернення зовнішнього запоминающему влаштуванню (ВЗУ) аналогічно апаратної буферизации під час роботи з оперативної пам’яттю. Це дозволяє істотно оптимізувати операційну систему. Ознакою наявності такий буферизации є вимога припинити виконання ОС перед вимиканням машини. Наприклад, працюючи з операційній системою MS-DOS, можна вимкнути комп’ютер будь-якої миті часу, оскільки такий буферизации у ній немає. У операційні системи типу Windows і UNIX вважається некоректним просто вимкнути машину при працюючої системі, у разі є можливість, що буде деяка втрата інформації (оскільки, наприклад, моменти замовлення на міна й безпосередньо обміну далеко ще не збігаються). Ступінь цієї буферизации визначає реальну ефективність системи. Коли на нашому факультеті стали з’являтися Pentium-ы, то виявилося, що з працювати з Windows 95 у тому якісного різницю між тим, працює чи система на 486 процесорі чи Pentium-е. Це засвідчує тому, що ефективність системи не впирається у ефективності роботи з зовнішнім пристроєм. Якщо взяти операційну систему UNIX, ця різниця — буде помітна, оскільки тут швидкодія процесора сильніше впливає якість роботи системи, ніж ніж для Windows 95, оскільки у системі Windows 95 обмінів з зовнішнім носієм значно більше з допомогою деякою «тупості» алгоритмів буферизации роботи з зовнішніми устройствами.

2. Файлова система.

Ми із Вами казали, що кожна гілка операційними системами оперує деякими сутностями, однієї з них є процес. Є друга сутність, котра також важлива — це поняття файла. Файлова система — це компонент ОС, який би організацію створення, збереження і доступу до именованным набором даних. Ці іменовані набори даних називаються файлами.

Основні властивості файлов.

1. Файл — це своєрідний об'єкт, має ім'я, і дозволяє оперувати з вмістом файла через посилання це. Зазвичай ім'я — це послідовність деяких символів, довжина якої залежить від конкретної операційній системы.

2. Незалежність файла розміщення. Робота з конкретною файлом непотрібен лиш мати інформацію місце розташування цього файла осіб на зовнішньому устройстве.

3. Набір функцій ввода/вывода. Практично, кожна операційна система однозначно визначає набір функцій, який би обмін з файлом. Зазвичай, цей набір функцій складається з таких запросов:

1. Відкрити файл до роботи. Відкрити можна або вже наявний, або новий файл. Може запитати — навіщо відкривати файл?

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

2. Чтение/запись. Зазвичай обмін з файлами може організовуватися деякими блоками даних. Блок даних, з яким відбувається обмін, несе двояку сутність. З одного боку, для будь-який обчислювальної системи відомі розміри блоків даних, які найефективніші обмінюватись, тобто, це програмноапаратні розміри. З іншого боку, ці блоки даних при реальному обміні можуть варіюватися досить довільно програмістом. У функціях чтения/записи зазвичай фігурує розмір блоку даних обмінюватись і кількість блоків даних, які потрібно прочитати чи записати. Від обраного розміру блоку даних може залежати ефективність реальних обмінів, оскільки, припустимо для деякою машини розміром ефективного блоку даних є 256Кб, а ви бажаєте обміни проводити по.

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

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

4. Закриття файла. Ця операція може здійснюватися двома функціями: 1) Закрити і зберегти поточне вміст файла. 2) Знищити файл.

Після закриття файла усі зв’язки з ним припиняються, і він входить у деяке канонічне состояние.

4. Захист даних. Багато стратегічні рішення повторюються як у апаратній рівні, і лише на рівні ОС. Якщо ми пригадаємо мультипрограммный режим, то однією з необхідних умов його існування є забезпечення захисту (пам'яті та об'єктивності даних). Якщо ми розглянемо файлову систему, вона як і, як і операційна система, то, можливо однопользовательской. І тут проблеми захисту даних немає, бо людина, який працює із цієї операційній системою, є господарем всіх файлів. Приклади однопользовательских систем — MS-DOS чи Windows 95. Можна завантажити автомобіль і знищити все файли інших користувачів, розміщених на диску, оскільки у цих системах захисту немає жодної. Многопользовательская система забезпечує коректну роботу багатьох користувачів. MS-DOS він може працювати у режимі мультипрограммирования, але досить коректний, оскільки помилка в одному процесі можуть призвести до затиранию операційної системи й сусіднього процесу. Але ж і в операційній системі Windows 95 може працювати багато користувачів, але це робота некоректне, оскільки ця операційна система має не забезпечує повне право захисту. Отже, многопользовательская система мають забезпечувати захист інформації від несанкціонованого доступу. Насправді, проблема захисту пов’язана з тільки з файлової системою. Реально операційна система забезпечує захист даних переважають у всіх областях: те й файли, і процеси, і ресурси, належать процесам, запущеним від імені одного користувача. Я зверніть увагу до цього факту, бо файлів це найбільш критична точка.

Основні властивості файлових систем.

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

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

1. Однорівнева організація файлів безперервними сегментами. Термін «однорівнева» означає, що систему забезпечує роботи з файлами унікально именованными. У межах простору ВЗУ виділяється деяка область для зберігання даних, що називається каталог. Каталог має таку структуру:

|имя |початковий блок |кінцевий блок | | | | | | | | | | | | |.

«Початковий блок» називає певний відносний адресу простору ВЗУ, від якого починається файл з заданим ім'ям. «Кінцевий блок» визначає останній блок даного файла. Функція відкриття файла зводиться до пошуку в каталозі імені файла й визначенні його початку будівництва і кінця (реально дані можуть тривати трохи менше місця, звідси буде сказано пізніше). Це дуже просте, при цьому каталог можна зберігати у пам’яті ОС, і тим самим зменшити кількість обмінів. Якщо складається новий файл, він записується на вільне місце. Аналогічно каталогу імен може матись таблиця вільних просторів (фрагментов).

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

Що буде, коли не треба записати у такому файл додаткову інформацію, а вільного простору для цього файлом немає? І тут система може вступити подвійно. Перше, вона скаже, що немає і це має зробити щось самі, наприклад, запустити якийсь процес, який перенесе цей файл деінде і додасть важливу інформацію. Цей перенесення — функція досить дорого коштує. Друга можливість — в обміні відмовлять. Це означає, що з відкритті файла потрібно було заздалегідь зарезервувати додаткове місце; у своїй файлова система перевіряє розмір вільного буфера, і якщо її замало, то шукає вільне місце там, де цей файл разместится.

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

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

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

І тут з кожним файлом пов’язаний набір атрибутів: ім'я файла, ім'я користувача, якими відбувається доступом до файлу. Така була дозволяє уникнути унікальності імен, яка потрібна у минулому разі. У такій системі потрібно унікальність імен лише серед файлів одного пользователя.

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

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

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

[pic].

3. Ієрархічна файлова система. Усі файли файлової системи побудовано структуру, що називається деревом. Рішуче дерева перебуває, так званий, корінь файлової системи. Якщо вузол дерева є листом, це файл, котрі можуть утримувати дані користувача, або бути файлом-каталогом. Вузли дерева які від аркуша є файлами-каталогами. Називати у такому ієрархічної файловою системі може відбуватися у різний спосіб. Перший тип — називати файла щодо найближчого каталогу, т. е. коли ми подивимося файли, що є найближчими до каталогу F0, — це файл F1, що є також каталогом, і файл F2. Для успішного іменування у системі однією рівні що неспроможні повторюватися імена. З іншого боку, бо всі файли пов’язані з допомогою дерева, ми можемо казати про, так званому, повному імені файла, яке складається із усіх імен файлів, що є шлях від кореня файловою системи до конкретного файлу. Повне ім'я файла F3 буде позначатися так: /F0/F1/F3. Така була хороша тим, що вона дозволяє працювати з коротким ім'ям файла (якщо системно мається на увазі, що ми справді працюємо у цьому каталозі), і які з ім'ям файла. Повні імена файлів є шляху, а будь-якому дереві з його кореня до будь-якого вузла існує єдиний шлях, отже, цим вирішується проблема уніфікації імен. Вперше такий використали в операційній системі Multix, яка розроблялася в університеті Берклі наприкінці 1960;х років. Це гарне рішення почало з’являтися згодом у багатьох операційні системи. Відповідно до цієї ієрархії, кожному з файлів можна прив’язувати якісь атрибути, пов’язані з правами доступу. Правами доступу може бути як користувальні файли, і каталоги. Структура цією системою хороша в організацію многопользовательской роботи, з допомогою відсутності проблеми іменування, і такі система може дуже добре наращиваться.

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

Персоніфікація — це можливість ОС ідентифікувати конкретного користувача і згідно з цим приймати ті чи інші дії, зокрема, захисту данных.

Якщо ми із Вами розглянемо улюблену нами операційну систему MS-DOS, те було поняття користувача з усіма наслідками — вона однопользовательская.

Другий рівень операційними системами — це операційні системи, які дозволяють реєструвати користувачів, але не всі користувачі видаються у вигляді єдиного набору деяких суб'єктів і пов’язані один з одним ніяк. Прикладом таких операційними системами можуть бути деякі операційні системи фірми IBM для mainframe-компьютеров. Наприклад, лектор не знає, хто з його слухачів якої групі належить, але не всі, присутні проти нього, користувачі його курсу. І це добре, й погано. З погляду прослуховування курсу лекцій — це добре, але щодо цим лектором якогось опитування це погано, оскільки за дня не встигне опитати всіх. Він має буде всіх слухачів якось поділити, бо як — не известно.

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

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

Лекція № 7.

3. Операційна система UNIX.

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

У 1960;х років в Bell Laboratories фірми AT&T проводилися дослідження та розробка однією з перших операційними системами в сучасному її розумінні - ОС Multix. Ця операційна система мала властивостями ОС поділу часу, многопользовательской системи, соціальній та в цій системі було запропоновано основні рішення з організації файлових систем, зокрема, була запропонована ієрархічна древообразная файлова система. З цієї розробки кілька днів отримала початок операційна система UNIX. Один із історій розробки цією системою свідчить, що у фірмі був непотрібний комп’ютер PDP-7 з дуже малоразвитым програмним забезпеченням і була потрібна машина, яка б організовувати комфортну роботу користувача, зокрема, обробку текстовій інформації. Відома група людей — це Кен Томпсон й Денніс Рітчі, узялися до розробки нової операційній системи. Інший варіант цієї історії говорить у тому, що нібито він займався реалізацією деякою ігри та зовсім кошти, хто був їм доступні, виявилися незручні - вони вирішили пограти з машиною. Через війну з’явилася операційна система UNIX.

Особливістю цією системою було те, що у неї першої системної програмою, що була написана з допомогою мови, відмінного від машинного мови (ассемблера). Для цілей написання цього системного програмного забезпечення, зокрема, ОС UNIX, також проводилися роботи, які починалися від мови BCPL. З нього було освічений мову B, який оперував з машинними словами. Далі абстракція машинних слів — BN, і, нарешті мову Сі. З 1983 року операційна система UNIX (її початкова версія) була переписана мовою Сі, і сталося, що майже 90% ОС було написане мовою високого рівня, не що залежить від архітектури машини, а 10% цією системою було написано на ассемблері. У ті десять відсотків ввійшли найбільш критичні за часом частини операційній системы.

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

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

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

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

Отже, 1973 рік — рік появи написаної мовою Сі операційній системи UNIX. Якими основними властивостями мала цю систему? Перше властивість — це концепція файлів. Основним об'єктом, яким оперує операційна система, є файл. Файл, з погляду операційній системи UNIX, — це зовнішнє пристрій. Файл — це каталог, який містить інформацію про його файлах. І далі, на сьогодні, файлом можна вважати, у сенсі та інформаційний процес, котрі можуть работать.

Друге властивість — то окрема структура ОС. На відміну від попереднього операційними системами, у яких кожна команда була «зашита» всередину ОС, тобто. її було якабо модифікувати, в UNIX-е проблеми команд вирішені дуже елегантно. По-перше, UNIX декларує стандартний інтерфейс передачі параметрів ззовні всередину процесу. По-друге, все команди реалізовані як файлів. Це означає, які можна вільно додавати нові команди у систему, і навіть не прибирати й модифікувати їх. Тобто система UNIX відкрита і можна легко развивать.

Почнемо розгляд конкретних властивостей операційній системы.

Файлова система. Організація файлів. Фундаментальна обізнаність із файлами.

Файлова система UNIX-а — це многопользовательская ієрархічна файлова система. Її структуру ми малювали минулій лекції. Вона представима деревом, коренем якого є, так званий, кореневої каталог. Вузлами, відмінними від листя дерева, є каталоги. Листям можуть бути або файли (у традиційному розумінні), або порожні каталоги. У системі містять поняття імені файла — це, яке асоційовано з набором даних у межах каталогу, якому цей файл належить. Крім того, є поняття повного імені - це унікальний шлях від кореня файловій системи до конкретного файла. Дозволено збіг імен файлів, що є у різних каталогах.

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

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

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

Фундаментальна обізнаність із файлами.

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

У будь-якій системі прийнято розбивка простору ВЗУ певні області даних, які називаються блоками. Розмір логічного блоку є фіксованим атрибутом ОС. У операційній системі UNIX розміри блоку визначає певний параметр, котрі можуть змінюватися залежно від версії системи. Для визначеності будемо говорити, що логічний блок ВЗУ дорівнює 512 байт.

Уявімо адресне простір СВЗУ як послідовності блоків. Нульовий блок СВЗУ — це блок початковій завантаження, чи блок, в яку повергнута програмний завантажник. Розміщення цього блоку в нульовому блоці СВЗУ визначається апаратно, оскільки апаратний завантажник звертається завжди саме до нульового блоку. Це останній компонент файлової системи, який залежить від аппаратуры.

Наступний блок — це суперблок файловою системи. Він має оперативну інформацію про про поточний стан ОС, і навіть даних про параметрах настройки файловій системи. Зокрема, суперблок містить інформацію про кількість, про, індексних дескрипторів в файловою системі. Також суперблок містить інформацію про кількість блоків, складових файлову систему, і навіть інформацію про вільних блоках файлів, про вільних індексних дескрипторах, й інші дані, що характеризують час, дату модифікації та інші спеціальні параметры.

|Блок |Супербло|Область |Блоки |Область | |початковій |до |індексних |файлів |збереження | |завантаження |файловой|дескриптор| | | | |системи |вв | | | |0 | | | | |.

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

1. Поле, що б тип файла (каталог чи нет).

2. Поле коду защиты.

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

4. Довжина файла в байтах.

5. Статистика: поля, що характеризують дату та палестинці час створення і т.п.

6. Поле адресації блоків файлов.

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

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

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

Суперблок. Найцікавіше в суперблоці викликають останні поля: поля інформації про вільних блоках файлів і вільних індексних дескрипторах. У файловій системі UNIX-а помітно вплив двох чинників. Перший чинник — те, що файлова система розроблялася на той час, коли обсяг вінчестера в 5−10Мб вважався дуже великих. Усередині структури файлової системи помітні старання авторів оптимізувати використання простору зовнішнього устрою. Другий чинник — властивість файловій системи по оптимізації доступу. Критерій оптимальності доступу — кількість обмінів файловою системи з зовнішнім пристроєм, що вона виробляє для забезпечення потреб. [pic].

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

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

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

Друга критична ситуація — коли не потрібно дістати вільний блок, але вміст масиву вичерпалося. І тут система діє так: якщо нульової елемент списку нульовий, це означатиме, що вичерпалося все простір файлової системи, і видається повідомлення звідси. Якщо не нульовий, його вміст одно адресою продовження масиву, і операційна система подчитывает відповідний блок і розміщає це продовження цього разу місце масиву в суперблоке.

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

Лекція № 8.

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

Індексний дескриптор — це об'єкт UNIX-а, який у взаємно однозначне відповідність до вмістом файла, крім випадків, коли файл є певний спеціальний файл, асоційований з зовнішнім пристроєм. У індексному дескрипторі існують такі поля:

1. Поле, що б тип файла (каталог чи нет).

2. Поле коду защиты.

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

4. Довжина файла в байтах.

5. Статистика: поля, що характеризують дату та палестинці час створення і т.п.

6. Поле адресації блоків файлов.

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

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

[pic].

У разі, якщо файл ще більше, то використовується дванадцятий елемент поля адресації. Він має номер блоку, де міститься 128 записів про номерах блоків, містять по 128 номерів блоків файловій системи, т. е. тут використовується подвійна опосередкованість. Якщо файл ще більше, то використовується тринадцятий елемент і використовується потрійна опосередкованість (аналогічно подвійний, але додається ще одна рівень). Граничний розмір файла (при розмірі блоку 512) дорівнюватиме (128 + 1282 + 1283) * 512 байт = 1Гб + 8Мб + 64Кб > 1Гб.

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

Блоки файлів. Розмір простору блоків файлів визначено однозначним чином з допомогою інформацією суперблоке.

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

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

Каталоги.

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

У каталозі А утримуватися файли У, З повагою та D, як і раніше, що файли У і З може бути як файлами, так каталоги, а файл D є каталогом.

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

Під час створення каталогу у ньому завжди створюються дві записи: запис на спеціальний файл безпосередньо з ім'ям «.» (точка), з яким асоційований індексний дескриптор самого каталогу, і файл «.» (дві точки), з яким асоціюється індексний дескриптор (ІД) батьківського каталогу. У нашій прикладу каталог, А має, наприклад, ІД з номером 7, а каталог D має ІД з номером 5. Файл F має ІД № 10, файл G має ІД № 101. І тут файлкаталог D матиме таке содержимое:

|Имя |№ІД | |"." |5 | Перша запис — запис на себе. | |"." |7 | Друга запис — на батька (каталог А). | |"F" |10 | Далі перераховані файли, що у цьому | | | |каталозі. | |"G" |101 | Отаким буде вміст каталогу D. |.

Відмінність файла-каталога від файлів користувача залежить від вмісті поля типу файла в ІД. Для кореневого каталогу полі батька буде посилатися нею самого.

Тепер схематично розглянемо, як можна використовувати повні імена і структура каталогів. У системі, у кожний час роботи користувача визначено поточний каталог, тобто каталог й усе шлях від кореня, пов’язаний із цією каталогом, котрий за вмовчанням підставляється до всім іменам файлів, не які з символу «/». Якщо поточний каталог D, можна говорити просто про файлах F і G, і якщо треба дістатись файла У, необхідно використовувати повне ім'я чи спеціальний файл «.», тобто., в тому випадку, конструкцію «./У». Ми посилаємося на файл «.» — це означає, що треба прочитати ІД батька і за ним дістатись вмісту каталогу А. Потім у файле-каталоге, А треба вибрати рядок безпосередньо з ім'ям У і визначити ІД файла У, та був зробити відкриття файла. Усе це операція досить трудомістка, але те, що файли відкриваються нечасто, це нічого очікувати позначатися зі швидкістю роботи системы.

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

Специальные файли устройств.

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

Також є полі, що б номер драйвера, що з цим пристроєм (в однієї устрою може бути кілька драйверів, але з навпаки). Це поле, на насправді, є номер в таблиці драйверів відповідного класу пристроїв. У системі є дві таблиці: для блокй у байт-ориентированных пристроїв. Також у ІД визначено певний цифровий параметр, що може бути переданий драйверу як уточняющего інформацію про работе.

Организация обміну даними з файлами.

Визначимо спочатку, що низкоуровневым вводом/выводом в системі. У файловою системі UNIX-а визначено деякі спеціальні функції, які називаються системними викликами. Системні виклики здійснюють безпосереднє звернення до операційній системі, тобто, це функції, виконують деякі дії ОС. Реалізація системних і бібліотечних функцій (наприклад, математичних) від початку відрізняється. Якщо бібліотечна функція буде подгружена в тіло процесу, що користується цієї бібліотекою, то ми все дії вона найчастіше робитиметься не більше цього процесу, а системний виклик відразу ж потрапляє передає управління операційній системи та вона виконує замовлене дію. У UNIX-е задля забезпечення низкоуровнего ввода/вывода, тобто. ввода/вывода, який у вигляді системних викликів, є набір функцій. Ось основні з них:

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

(крім коду та об'єктивності даних, зрозуміло) деяка службова інформація, зокрема, таблиця файлових дескрипторів. Вона, як і всі таблиці у системі UNIX, позиційна, тобто. номер дескриптора відповідає номера запис у цієї таблиці. З файловим дескриптором (ФД) асоційовано ім'я файла і всі необхідні атрибути до роботи з ним.

Номери ФД унікальні у межах процесу. Є аналогічна функція create — функція відкриття нового файла.

2. read/write — системні виклики чтения/записи, параметрами якого є номер ФД і пояснюються деякі атрибути, які такі важливі до нашого рассмотрения.

3. close — системний виклик роботи з файлом, параметром якого є номер ФД. Після звернення до цієї функції ФД стає вільним, а робота цього процесу з файлом завершается.

Ось лише деякі системні виклики, щоб забезпечити ввод/вывод (до речі, вони майже додають коду до вашої програмі). Подробиці подивіться самостійно. Я звернув вашу увагу, що це системні виклики, тому що ввод/вывод можна проводити і крізь бібліотеки ввода/вывода. Для цього є, так званий, файловий міна й функції fopen, fread, і т.д. (з префіксом f). Це бібліотечні функції. Ці функції самі звертаються до низкоуровневым функцій всередині себя.

Розглянемо організацію обміну з системної погляду в операційній системі UNIX. При організації обміну операційна система поділяє дані на дві категорії: дані, асоційовані з процесом користувача, і такі, асоційовані з операційній системой.

Таблиця індексних дескрипторів відкритих файлів. Перша таблиця даних, асоційованих з операційній системою, — таблиця індексних дескрипторів відкритих файлів (ТИДОФ). Ця таблиця містить записи, кожна з яких містить копію індексного дескриптора кожному за відкритого у системі файла. Через цю копію здійснюється доступом до блокам файлів. Кожна записів таблиці містить також полі, характеризує кількість відкритих в системі файлів, використовують даний дескриптор (лічильник). Тобто, якщо і той ж файл відкритий від імені двох процесів, то запис в ТИДОФ створюється одна, але кожне додаткове відкриття цього файла збільшує лічильник на единицу.

Таблиця файлів. Таблиця файлів (ТФ) містить інформацію про ім'я відкритого файла, і має посилання ТИДОФ.

Лекція № 9.

Ми, що систему може працювати зі змістом файла у тому лише тому випадку, якщо процес зареєстрував своє бажання з цим файлом. Факт такий реєстрації називається відкриттям файла. При відкритті файла не більше процесу кожному імені открываемого файла (відкриватися може вже наявний файл, або новий) ставлять у відповідність унікальне ціла кількість, що називається файловим дескриптором (ФД). У межах процесу ФД мають нумерацію від 0 до k-1. Значення k — це параметр настройки ОС, визначальний, скільки одночасно відкритих файлів може бути процесу. Тут треба сказати, що говоримо про кількість одночасно відкритих файлів (як і написаний будь-який книжці по UNIX-у), проте, насправді, k — це якомога більше ФД, які можна асоційовані з однією файлом, оскільки і той ж файл не більше процесу можна відкрити два разу, й утворюється два ФД. До чого це приведе, ми розглянемо кілька пізніше, але цілком коректно. Після відкриття файла, усі фінансові операції обміну здійснюються через вказівки файлового дескриптора (тобто. ім'я більш ніде не вказується). Із кожним файловим дескриптором асоційований ряд параметрів (про неї трохи позже).

Погляньмо, як організується ввод/вывод, а точніше обробка низкоуровнего обміну, з погляду ОС. Зараз буде розказано про логічного схемою організації ввода/вывода, бо реальна схема влаштована дещо інакше, але це нас потребу не так важно.

Усі дані, із якими оперує система, поділяються на два класу. Перший тип даних — дані, асоційовані з операційній системою, тобто загальносистемні дані. До цих даним належить ТИДОФ. Розмір таблиці фіксований й кількістю одночасно відкритих ФД. Кожна запис у цій таблиці містить деяку інформацію, серед якої нас цікавити следующая:

1) Копія ІД відкритого файла. Для будь-якого відкритого файла, ІД, що характеризує вміст цього файла, копіюється і розміщується в.

ТИДОФ. Після цього є всі маніпуляції з файлом (наприклад, зміна адресації файла) походять з копією ІД, а чи не із самою ІД на диске.

ТИДОФ розміщається оперативному пам’яті, тобто. доступом до інформацією ній здійснюється быстро.

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

Тепер час торкнутися, так званої, таблиці файлів (ТФ). Таблиця файлів складається з фіксованого кількості записів. Кожна запис ТФ відповідає відкритого у системі файлу {{або, точніше ФД}}. Причому у переважній більшості випадків це є взаємно однозначне відповідність. Той випадок, коли це є взаємно однозначне відповідність, ми розглянемо нижче. Кожна запис ТФ містить покажчики чтения/записи по файлу. Це означає, що, якщо відкритий і той ж файл у двох процесах чи двічі на одному процесі, те з кожним відкриттям пов’язаний свій покажчик, і вони друг від друга не залежать (майже завжди, крім деяких випадків). Кожна запис ТФ містить, так званий, індекс спадковості - це є певна ціле число.

Це дані рівня ОС, тобто. дані, які описують стан проблеми, у системі в целом.

Із кожним процесом пов’язана, так звана, таблиця відкритих файлів (ТОФ). Номер запис у даної таблиці є номер ФД. Кожний рядок цієї таблиці має посилання відповідну рядок ТФ. Це означає, що інформація про покажчиках, що з ФД, хіба що розірвано. З одним боку, файлові дескриптори — це з, є атрибутом процесу, з іншого боку, покажчик — це з, є атрибутом операційній системи. Здається, нелогічне, і ми розглянемо, у яких ця нелогічність проявляється. І тому коротко розглянемо концептуальні питання, пов’язані з формуванням процесу. Операційна система UNIX має функцію fork (). Це системний виклик. При зверненні до цього системному викликові до системі відбувається деяке дію, яке більшості з вас може бути безглуздим, — відбувається копіювання процесу, в якому зустрілася цю функцію, тобто. створюється процесс-двойник. Навіщо це потрібно, я скажу кілька позже.

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

Припустимо, є процес № 1, і з нею асоціюється таблиця відкритих файлів № 1. У процесі відкритий файл безпосередньо з ім'ям Name, і до цього файлу поставлене відповідність файловий дескриптор I. Це означає, що у відповідної рядку ТОФ буде запис, має посилання ТФ. У ТФ визначено якісь атрибути, пов’язані з відкриттям файла, і навіть є покажчик чтения/записи, тобто. той покажчик, яким ми справді працюємо, обмінюючись інформацією з файлом. Записи в ТФ мають посилання ТИДОФ, в якою копія ІД, відповідного файлу безпосередньо з ім'ям Name.

Припустимо, у цьому процесі вкотре відкритий файл безпосередньо з ім'ям Name. Система поставила то відповідність файловий дескриптор J. Тобто. цьому відкриттю відповідає J-тая рядок ТОФ першого процесу. У цьому записи буде посилання запис ТФ, яка поставлено відповідність другому відкриттю файла Name. І що індекси спадковості обох випадків дорівнюватимуть одиниці. У цьому записи будуть свої, пов’язані з цим відкриттям, покажчики чтения/записи. Покажчики файлових дескрипторів I і J незалежні друг від друга, тобто. при чтении/записи через файловий дескриптор I, покажчик файлового дескриптора J не зміниться. Ця запис буде посилатися той самий самий індексний дескриптор з ТИДОФ, і значення лічильника буде одно двум.

Припустимо, процес № 1 виконав звернення до функції fork (), утворилася копія процесу, причому, обидві копії починають працювати не вдома з fork (), і з другим процесом буде асоціюється ТОФ № 2. Також буде відкритий файл Name по ІД I і з ІД J. Але цього разі, коли процес отримав відкриті файли у спадщину після батька, то посилання з відповідних рядків ТОФ відбуватимуться не так на нові записи ТФ, але в ті ж, яких посилалися відповідні ФД у батька. У цих процесів покажчики читання записи будуть однакові, тобто. якщо пересунути покажчик щодо одного процесі, він автоматично пересунеться й у іншого процесу. Цей випадок, як раз той, коли немає взаємно однозначного відповідності між рядками ТФ і рядками ТОФ. При породженні цих посилань лічильник поповнюється два. І, відповідно, з ІД, з допомогою адресації блоків, здійснюється доступом до блокам файлів. Така інформаційна організація обміну означає, що обмін зі змістом кожного файла здійснюється централізовано, тобто. у кінцевому результаті всі замовлення обмін йдуть через одну-єдину запис, хоч би скільки файлів, пов’язаних із цим ІД, був відкрито у системі. Тут немає жодних колізій, коли у часі починається плутанина в виконаних, чи невиконаних обмінах, що з одним дескриптором.

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

Розглянемо приміром типові дії при зверненні до тих або іншим суб'єктам системним вызовам.

Звернення до функції fork (). Як відомо, при зверненні до цієї функції система створює копію вихідного процесу. У цьому система дублює ТОФ процесу в ТОФ процесса-наследника, і навіть збільшує на одиницю індекс спадковості в рядках ТФ, асоційованих з відкритими файлами вихідного процес, і навіть збільшує лічильник відкритих файлів, що з даним ІД, в ТИДОФ.

Звернення до функції open (). При зверненні до цієї функції відбувається следующее:

1. По повного імені визначається каталог, у якому розміщений файл.

2. Визначається номер ІД. За номером ІД здійснюється пошук в таблиці ТИДОФ.

3. Якщо запис з заданим номером виявлено, фіксуємо номер відповідного рядка ТИДОФ і переходимо до кроку 5.

4. Якщо ж рядок не виявлено, відбувається формування нової рядки, відповідної новому ІД і фіксується її номер.

5. Коригуємо лічильник посилань (стрілок) на запис ТИДОФ. Номер запис у ТИДОФ записується в запис ТФ, соціальній та ТОФ встановлюється посилання відповідну запис ТФ. Після цього, у програму повертається номер терміни ТОФ, у якій перебуває посилання запис в ТФ.

При операціях ввода/вывода дії системи очевидны.

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

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

Розглянемо, як виконується послідовність дій у виконанні замовлення для читання блоку. Вважатимемо, що зробив замовлення читання N-ого блоки з устрою з номером M.

1. Серед буферів буферного пулу здійснюється пошук заданого блоку, тобто. якщо виявлено буфер, у якому N-ий блок М-ого устрою, то фіксуємо номер цього буфера. І тут, звернення до реального фізичному влаштуванню немає, а операція читання інформації є поданням інформації з знайденого буфера. Переходимо на крок 4.

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

3. Здійснюється читання N-ого блоку устрою М у знайдену буфер.

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

5. Передаємо як результату читання зміст цього буфера.

Ви бачите, тут є оптимізація, що з мінімізацією реальних інтерпретацій фізичному влаштуванню. Це досить корисно при роботі системи. Запис блоків здійснюється за аналогічною схемою. Таким чином організована буферизация при низкоуровневом вводе/выводе. Переваги незаперечні. Недоліком і те, що систему у разі є критичною до несанкціонованим выключениям харчування, тобто. ситуація, коли буфера системи не вивантажені, а відбувається нештатное припинення виконання програм ОС, що може спричинити до втрати информации.

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

Отже, цю систему розрахована на надійну апаратуру і коректні професійні умови експлуатації. Для боротьби з імовірністю втрати інформації у разі позаштатних ситуацій, система досить «розумна», і діє вірно. Як-от, у системі є певний параметр, котрі можуть оперативно змінюватися, що визначає періоди часу, якими здійснюється скидання системних даних. Друге — є команда, яка то, можливо доступна користувачеві, — команда SYNC. З цієї команді здійснюється скидання даних на диск. І третє - система має деякою надмірністю, що дозволяє у разі втрати інформації, зробити набір дій, які інформацію відновлять чи спірні блоки, які зірвалася ідентифікувати за належністю до файлу, будуть записані в певне місце файловою системи. Тут їх можна спробувати проаналізувати й відновити вручну, або втратити щось. Наш університет однією з перших у країні почав експлуатувати операційну систему UNIX, і вже можна сказати, що проблем ненадійності системи, з погляду фатальною втрати інформації, не было.

Сьогодні ми починали розмову про те, що маємо є системні виклики і бібліотеки ввода/вывода. Ще один засіб, що дозволяє оптимізувати роботу системи, — це стандартна бібліотека ввода/вывода, що з include-файлом stdio.h. Суть концептуального обміну той самий сама, що й за організації низкоуровневого ввода/вывода. Різниця, що, якщо open () повертає номер файлового дескриптора, fopen () повертає покажчик певну структуру спеціального типу FILE. Друге і основну — це бібліотека функцій. Багато функції сервісу, що надає ця бібліотека, реалізуються не більше вашого адресного простору. У частковості, такий функцією сервісу є іще одна рівень буферизации ввода/вывода. Суть його у цьому, що у ресурсах процесу можна виділити буфер, який працюватиме аналогічно буферному пулу операційної системи й, який мінімізує звернення вашого процесу системним викликам ввода/вывода. Зрозуміло, що ця бібліотека ввода/вывода реалізується через програму, використовує системні виклики ввода/вывода. Це означає, що виникає чинник подвійний буферизации, хоча це збільшує ненадежность.

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

Лекція № 10.

Минулої лекції ми розібрали такі моменти, пов’язані з організацією функціонування файлової системи. Це системна організація низкоуровнего обміну. Нами з’ясовано, за рахунок організації даних, операційна система UNIX досить простими й «прозорими» засобами розв’язує проблеми можливих конфліктів у разі кількох відкриттів один і тієї самої файла. Ми бачили, що це відкриття однієї й тієї ж файла (під файлом ми розуміємо не ім'я, а вміст) зрештою зводяться на роботу з однією копією ІД. Ми із Вами з’ясували, що всі відкриття файлів, пов’язані з однією ІД, породжують для процесів можливість відносини із своїми покажчиками чтения/записи по файлом, крім випадків, коли файл у процесі було отримано через успадкування, тобто. файл було отримано від процесса-отца через функцію fork () процессом-сыном.

Ми із Вами з’ясували, що систему поділяє що обслуговуються устрою на два класу: блок-ориентированные і байт-ориентированные. Одне і те пристрій може і байт-ориентированным, та Блокорієнтованим. Це як від самої устрою, і від наявності драйверів — програм управляючих цим пристроєм. Прикладом такого устрою є оперативна память.

Ми із Вами розглянули принципи організації низкоуровнего обміну для блок-ориентированных пристроїв, й у контексті цього ми познайомились зі засобами буферизации, що застосовуються в ОС UNIX, доцільність яких у тому, що за аналогією з буферами чтения/записи з оперативної пам’яті (апаратним засобом), операційна система створює програмні кошти, що дозволяють мінімізувати кількість інтерпретацій фізичному влаштуванню. Цей механізм вигідно відрізняв і ОС UNIX. Тут слід зазначити, що буферизация обміну то, можливо багаторівневої. Перший додатковий рівень може з’явитися завдяки тому, що пристрій може мати свої апаратні буфера, реалізовані за аналогією з буферами оперативної памяти.

Ми також казали про те, що, крім низкоуровнего ввода/вывода, з яким пов’язані функції, щоб забезпечити системні виклики (open, read, write тощо.), існують высокоуровневые кошти доступу — це стандартна бібліотека ввода/вывода stdio. h, підключення якої дозволяє вживати в організацію обмінів іще одна рівень буферизации (це оптимізація інтерпретацій системним викликам), який асоційований з процесом, тобто. буферизация відбувається поза рахунок ресурсів процесу. Ми оцінювали, що добре, що погане. Вочевидь, що буферизация скорочує кількість обмінів з повільним зовнішнім пристроєм, і більше таких рівнів, тим менше відбувається обмінів. Проте погано те, що з допомогою буферизации знижується надійність системи. Наприклад, при несподіваному системі вимиканні харчування, все буфера втрачають інформацію. Момент звернення до обміну далекий до реального обміну, і тому можливі неприємні ситуації. Але, попри ці недоліки, досвід показує, що фатальні втрати інформації відбуваються вкрай редко.

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

Відкриваючи файл, ми з ІД. Нами з’ясовано, що з ІД здійснюється через роботи з його копією, розміщеної в програмних таблицях оперативному пам’яті. Це означає, тобто майже немає накладних витрат, що з маленькими файлами, й інші накладні витрати малі при працювати з величезними файлами. Виходить отже майже усю інфраструктуру, підтримує роботу файловій системи, працює з допомогою глибокої ешелонованої буферизации. Атрибути файлів [pic].

Ми із Вами згадали організації користувачів системи; вона не має ієрархічну трирівневу структуру.

Будь-який користувач належить до групи. Відповідно до ієрархією користувачів, визначено ієрархія захисту файлів і користувачів. Визначено поняття власника файла. Спочатку власником файла є користувач (а точніше, процес користувача), створив цей файл. Атрибут «власник файла» можна змінити командою changeown. Кожен файл має атрибути захисту, пов’язані з ієрархією. Є права доступу до деяких діям файла із боку власника файла. Це права для читання, на запис, виконання. Кожен файла, крім прав, що з рівнем користувача, є права, пов’язані з рівнем групи. Це права всім користувачів групи, до якої підключено власник файла, крім її самої (тобто. права власника та його групи різні). Третя категорія захисту — й інші. Це права, які мають усі користувачі системи, крім власника та його групи. У системі є команда зміни прав доступу changemode.

Крім атрибутів доступу, кожен файл може мати ознаки, в частковості, т.зв. t-бит і s-бит, які теж встановлюються деякою командою. Ми, вже знаючи структуру файловій системи, розуміємо, що у принципі файл може у дуже фрагментированном вигляді. З іншого боку, файл то, можливо великим, а під час відкриття великого файла, виникають накладні витрати, пов’язані з доступом до далеким блокам файла. Тому відкриття файла — це тривалий процес. Щоб оптимізувати це дію, в системі є можливість позначити виконувані файли t-битом. Після цього відбувається таке: у разі, якщо викликається виконуваний файл, позначений t-битом, то, при першому виклик за сеанс роботи системи відбувається копіювання тіла файла до області збереження. При кожному повторному виклик файла, спочатку відбувається перегляд каталогу області збереження, у тому разі, якщо шуканий файл є, то завантаження файла відбувається з ВЗУ, та якщо з цій галузі. Тобто якщо це іще одна шлях мінімізації інтерпретацій ВЗУ. Зазвичай можливість установки t-бита — це прерогатива системного адміністратора, і системний адміністратор сам вибирає ті процеси (і відповідно, файли), що треба позначити t-битом. Звичайно їм позначаються ті процеси, що використовуються найчастіше (якщо, наприклад, йде практикум, то t-битом можна буде позначити файл компилятора).

S-бит ми розглянемо кілька поверхово, але повернемося щодо нього пізніше. Є наступна проблема. Всі кошти системи належать комусь, т.к. все кошти, все команди (крім деяких вбудованих) у кінцевому рахунку представляють з себе файли, які мають є власник. Деякі з цих команд можуть звертатися до ті чи інші системні файли. Виникає проблема, пов’язана з тим, що з одного боку, мусить бути захист від несанкціонованого доступу до файлу. З іншого боку, все команди мають потенційні права всім категорій. Що робити? Є можливість помічати деякі файли s-битом. Власник файла з s-битом залишається незмінною, але під час запуску цього файла, власнику процесу що запустив цей файл, надаються права про доступ до даних від власника вихідного файла.

Припустимо, є виконуваний файл безпосередньо з ім'ям file, і він працює якимто чином із файлом file2, де знаходиться конфіденційна, інформація. Припустимо, file коригує file2, де знаходиться інформація про всіх зареєстрованих користувачів і зокрема, file може змінювати пароль користувача у системі. Якщо запущу file від імені, можуть виникнути дві ситуації: або я — не зможу працювати з file2, у якому облікова інформацію про користувачів, оскільки він закритий всім інших; або вона відкрита всім, тоді немає жодної захисту. І тут працює s-бит. Суть його роботи ось у чому. Власником вихідного файла є користувач ROOT. Припустимо, цей файл захотів запустити користувач безпосередньо з ім'ям MASH. Якщо MASH запускає цей файл немає і p. sбіта, виходить, власником файла є ROOT, а власником процесу став MASH. І тут, файли, які недоступні користувачеві MASH, стануть недоступними та її процесу, і MASH зможе змінити свій пароль у системі. S-бит дозволяє продовжити права власника (ROOT) файла на власника (MASH) процесу (запущеного від цього файла), й тимчасово сеансу роботи процесу йому будуть доступні всі ті файли, хто був доступні власнику файла (ROOT).

Наступне питання: як інтерпретуються права доступу до каталогам (оскільки каталоги також є файлами)? Дозвіл для читання з каталогу означає, що дозволено вхід до каталогу і «відкриття файлів від цього каталогу. Дозвіл на запис дає можливість створювати й знищувати файли у тому каталозі. Дозвіл виконання — це можливість для пошуку у цьому каталозі (наприклад, з допомогою команди ls).

Файловая система з погляду пользователя.

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

У кореневому каталозі є файл безпосередньо з ім'ям unix. Це той самий файл, який запускається програмним загрузчиком, і що формує ядро системы.

Каталог ETC. У цьому вся каталозі перебувають стандартні файли даних системи та команди, щоб забезпечити певний рівень управління функціонуванням системи. 1. Файл passwd. Усі користувачі в системі зареєстровані через цей файл. Це означає, що й користувач може працювати, то файлі passwd є рядок, позначений ім'ям користувача, що містить набір деяких даних, розділених символом роздільника. Зокрема, рядок файла passwd містить номер групи, до якої підключено користувач, іноді може містити закодований пароль на вхід користувача у системі. Закодований — означає те що системі використовується взаємно неоднозначна можливість відображення послідовності символів в певний код, й у системі зберігається відображення цього пароля. Сучасні UNIX-ы зберігають паролі в окремої захищеної базі даних (хоча файл passwd теж є), оскільки файл passwd зазвичай відкритий для читання, алгоритм перетворення теж зазвичай відомий є можливість підібрати пароль.

Далі, рядок містить полі якому має бути атрибут, що характеризує прізвище, ім'я і по батькові користувача; полі якому вказується статус користувача; полі якому зазначений «домашній» каталог. У цьому ж рядку зазначено (чи то, можливо зазначено) з якою інтерпретатором команд цей користувач працюватиме. Може бути деякі інші параметры.

2. Файл rc. У цьому вся файлі в текстовому вигляді перебуває набір команд, які виконані за мінімального завантаження ОС. Наприклад, за мінімального завантаження, операційна система може запускати процес перевірки схоронності файлової системы.

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

3. У цьому каталозі перебувають команди, що дозволяють змінювати паролі користувача (виконуваний файл passwd), дозволяють «примонтировать» до файлової системі локальні файлові системи та отбазировать ці самі локальні системи, дозволяють запускати процес тестування і корекції файлової системи. Цей процес відбувається перевіряє файлову систему по деякому набору ознак, наприклад, безліч вільних файлів має за поєднанні з безліччю зайнятих файлів давати все безліч файлів. І далее.

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

Каталог MNT. Це каталог, якого можна «примонтировать» локальні файлові системи. До сьогодні ми вважали, що файлова система розміщена однією устрої, але реально тут інше. Є основна файлова система на системному устрої, і є довільне (в розумних межах) кількість локальних файлових систем, які монтуються до системи з допомогою деякою команди. Коренем локальної файлової системи буде каталог MNT.

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

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

Також, тут є підкаталог BIN (/USR/BIN), у якому розміщуються адміністратором системи додаткові «домотканные» команди, що їх розміщення каталозі /BIN вважається некорректным.

Підкаталог INCLUDE. Ви ще пам’ятаєте, що таке рядок include. Ця рядок дає команду препроцессору Сі взяти файл з каталогу /USR/INCLUDE. Цей каталог має підкаталоги, й близького нам цікавий підкаталог SYS (/USR/INCLUDE/SYS). У ньому є include-файлы, асоційовані з системними можливостями, зокрема signal. h — це перерахування тих сигналів, якими можуть обмінюватися два процесса.

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

———————————- A.

B.

D.

C.

F.

G.

ТОФ № 1.

Name.

I: I:

Name.

J:

rw.

rw.

ТФ.

ТИДОФ.

Блоки Счетчик Индекс Наследственности.

ТОФ № 1.

Name.

I: I:

Name.

J:

ТОФ № 2.

Name.

I: I.

Name.

J: J:

rw.

rw.

ТФ.

ТИДОФ.

Блоки.

Показати весь текст
Заповнити форму поточною роботою