
- •1.3. Короткий нарис історії ос
- •1.3.1. Передісторія ос
- •1.3.2. Пакетні ос
- •1.3.3. Ос з поділом часу
- •1.3.4. Однозадачние ос для пеом
- •1.3.5. Багатозадачні ос для пк з графічним інтерфейсом
- •1.4. Класифікація ос
- •1.5. Критерії оцінки ос
- •1.5.2. Ефективність
- •1.5.3. Зручність
- •1.5.4. Масштабованість
- •1.5.5. Здатність до розвитку
- •1.6. Основні функції і структура ос
- •1.7. Ос, що використовуються в подальшому викладі
- •1.7.2. Windows
- •1.7.3. Unix
- •2. Управління пристроями
- •2.1. Основні завдання управління пристроями
- •2.2. Класифікація периферійних пристроїв і їх архітектура
- •2.3. Переривання
- •2.4. Архітектура підсистеми вводу / виводу
- •2.5. Способи організації введення / виводу
- •2.5.1. Введення / висновок з опитування і по перериваннях
- •2.5.2. Активне і пасивне очікування
- •2.5.3. Синхронний і асинхронний ввід / вивід
- •2.6. Буферизація і кешування
- •2.6.1. Поняття буферизації
- •2.6.2. Згладжування нерівномірності швидкостей процесів
- •2.6.3. Розпаралелювання введення та обробки
- •2.6.4. Узгодження розмірів логічної та фізичної записи
- •2.6.5. Редагування при інтерактивному введенні
- •2.6.6. Кешування дисків
- •2.6.7. Випереджаюче читання.
- •2.7. Драйвери пристроїв
- •2.8. Управління пристроями в ms-dos
- •2.8.1. Рівні доступу до пристроїв
- •2.8.2. Драйвери пристроїв в ms-dos
- •2.8.3. Управління символьними пристроями
- •2.8.4. Управління блоковими пристроями
- •2.8.4.2. Розділи і логічні томи
- •2.8.4.3. Засоби доступу до дисків
- •2.9. Управління пристроями в Windows
- •2.9.1.1. Драйвери пристроїв в Windows
- •2.9.1.2. Доступ до пристроїв
- •2.10. Управління пристроями в unix
- •2.10.1. Драйвери пристроїв в unix
- •2.10.2. Пристрій як спеціальний файл
- •3. Управління даними
- •3.1. Основні завдання управління даними
- •3.2. Характеристики файлів та архітектура файлових систем
- •3.3. Розміщення файлів
- •3.4. Захист даних
- •3.6. Файлова система fat і управління даними в ms-dos
- •3.6.1. Загальна характеристика системи fat
- •3.6.2. Структури даних на диску
- •Структура записи каталога файловой системы fat
- •3.6.4. Робота з файлами в ms-dos
- •3.6.4.1. Системні функції
- •3.6.4.2. Доступ до даних
- •3.6.4.3. Структури даних у пам'яті
- •3.6.5. Нові версії системи fat
- •3.7. Файлові системи і управління даними в unix
- •3.7.1. Архітектура файлової системи unix
- •3.7.1.1. Жорсткі і символічні зв'язку
- •3.7.1.2. Монтовані томи
- •3.7.1.3. Типи і атрибути файлів
- •3.7.1.4. Управління доступом
- •3.7.2. Структури даних файлової системи unix
- •3.7.3. Доступ до даних в unix
- •3.7.4. Розвиток файлових систем unix
- •3.8. Файлова система ntfs і управління даними в Windows
- •3.8.1. Особливості файлової системи ntfs
- •3.8.2. Структури дискових даних
- •3.8.2.1. Головна таблиця файлів
- •3.8.2.2. Атрибути файлу
- •3.8.3. Доступ до даних
- •3.8.4. Захист даних
- •3.8.4.1. Аутентифікація користувача
- •3.8.4.2. Дескриптор захисту
- •4. Управління процесами
- •4.1. Основні завдання управління процесами
- •4.2. Реалізація багатозадачного режиму
- •4.2.1. Поняття процесу і ресурсу
- •4.2.2. Квазіпараллельний виконання процесів
- •4.2.3. Стану процесу
- •4.2.4. Невитісняючаі витісняюча багатозадачність
- •4.2.5. Дескриптор і контекст процесу
- •4.2.6. Реєнтерабельним системних функцій
- •4.2.7. Дисципліни диспетчеризації та пріоритети процесів
- •4.3. Проблеми взаємодії процесів
- •4.3.1. Ізоляція процесів та їх взаємодія
- •4.3.2. Проблема взаємного виключення процесів
- •4.3.3. Двійкові семафори Дейкстри
- •4.3.4. Засоби взаємодії процесів
- •4.3.4.1. Цілочисельні семафори
- •4.3.4.2. Семафори з множинним очікуванням
- •4.3.4.3. Сигнали
- •4.3.4.4. Повідомлення
- •4.3.4.5. Спільна пам'ять
- •4.3.4.6. Програмні канали
- •4.3.5. Проблема тупиків
- •4.4. Управління процесами в ms-dos
- •4.4.1. Процеси в ms-dos
- •4.4.2. Середа програми
- •4.4.3. Запуск програми
- •4.4.4. Завершення роботи програми
- •4.4.5. Перехоплення переривань і резидентні програми
- •4.5. Управління процесами в Windows
- •4.5.1. Поняття об'єкта у Windows
- •4.5.2. Процеси і нитки
- •4.5.3. Планувальник Windows
- •4.5.4. Процес і нитка як об'єкти
- •4.5.5.2. Об'єкти синхронізації та функції очікування
- •4.5.5.3. Типи об'єктів синхронізації
- •4.5.5.4. Критичні секції
- •4.5.6. Повідомлення
- •4.6. Управління процесами в unix
- •4.6.1. Життєвий цикл процесу
- •4.6.2. Групи процесів
- •4.6.3. Програмні канали
- •4.6.4. Сигнали
- •4.6.5. Засоби взаємодії процесів в стандарті posix
- •4.6.6. Планування процесів
- •4.6.6.1. Стану процесів в unix
- •4.6.6.2. Пріоритети процесів
- •4.6.7. Інтерпретатор команд shell
- •5. Управління пам'яттю
- •5.1. Основні завдання управління пам'яттю
- •5.2. Віртуальні й фізичні адреси
- •5.3.2. Розподіл з фіксованими розділами
- •5.3.3. Розподіл з динамічними розділами
- •5.4. Сегментна організація пам'яті
- •5.5. Сторінкова організація пам'яті
- •5.6. Порівняння сегментної і сторінкової організації
- •5.7. Управління пам'яттю в ms-dos
- •5.8. Управління пам'яттю в Windows
- •5.8.1. Структура адресного простору
- •5.8.3. Відображення виконуваних файлів
- •5.8.4. Файли, відображувані на пам'ять
- •5.8.5. Стеки і купи
- •5.9. Управління пам'яттю в unix
- •Література
3.7.1.2. Монтовані томи
В UNIX немає поняття «буква диска», подібно буквах A:, C: і т.д., використовуваним в MS-DOS і в Windows. У системі може бути декілька дискових томів, але, перш ніж отримати доступ до файлової системи будь-якого диска, крім основного, користувач повинен виконати операцію монтування диска. Вона полягає в тому, що даний диск відображається на який-небудь з каталогів основного томи. Як правило, для цього використовуються порожні підкаталоги каталога / mount або / mnt.
Якщо уявити файлову систему на дисковому томі у вигляді дерева, то монтування томи - це як би «щеплення» одного дерева до якого-небудь місця на іншому, основному дереві. На відміну від цього, MS-DOS і Windows допускають використання декількох окремих дерев.
3.7.1.3. Типи і атрибути файлів
Для кожного файлу в UNIX зберігається його тип, який при видачі каталогу позначається одним із таких символів:
- Звичайний файл, тобто файл, що містить дані;
d - каталог;
c-символьний спеціальний файл, тобто, насправді, символьне пристрій;
b-блоковий спеціальний файл;
l-символічна зв'язок;
p-іменований канал (буде розглянуто в п. 4.6.3);
s-сокет - об'єкт, який використовується для передачі даних по мережі.
Особливістю UNIX є те, що робота з різними типами об'єктів, перерахованими вище (файлами, пристроями, каналами, сокетами) організується з використанням одного і того ж набору функцій файлового введення / виводу.
До числа атрибутів, що описують файл, відносяться його розмір в байтах, число жорстких зв'язків і три «тимчасових штампа»: дата / час останнього доступу до файлу, останньої модифікації файлу, останньої модифікації атрибутів файлу. Цю останню величину часто називають неточно «датою створення файлу».
Для спеціальних файлів замість розміру зберігаються старший і молодший номера пристрою, див. п. 2.10.1.
Крім того, для кожного файлу зберігаються атрибути управління доступом, описані в наступному пункті, а також інформація про розміщення файлу на диску, описана в п. 3.7.2.
3.7.1.4. Управління доступом
Для кожного файлу (в тому числі каталогу, спеціального файлу) визначені такі поняття, як власник (один з користувачів системи) і група-власник. Їх числові ідентифікатори (звані, відповідно, UID і GID) зберігаються разом з іншими атрибутами файлу. Повні імена, паролі та інші характеристики користувачів і груп зберігаються в окремому системному файлі. Власником файлу зазвичай є той користувач, який створив цей файл.
Крім того, для файлу задаються атрибути захисту, що зберігаються у вигляді 9 біт, які визначають допустимість трьох основних видів доступу - на читання, на запис і на виконання - для власника, для членів групи-власника і для інших користувачів.
При відображенні каталогу за допомогою команди ls-l ці атрибути показуються у вигляді 9 букв або прочерків, наприклад:
r w x r - x - x
У наведеному прикладі показано, що сам власник файлу має всі права (r - читання, w - запис, x - виконання), члени групи-власника можуть читати файл і запускати на виконання (якщо цей файл містить програму), всім іншим дозволено тільки виконання .
Платний користувач (адміністратор системи) завжди має повний доступ до всіх файлів.
У тому випадку, якщо файл є каталогом, права доступу на читання і на виконання розуміються трохи інакше. Право на читання каталогу дозволяє одержати імена файлів, що зберігаються у цьому каталозі. Право на виконання каталогу означає можливість читати атрибути файлів каталогу, використовувати ці файли, а також право зробити даний каталог поточним. Можливі цікаві ситуації: якщо поточний користувач не має права на читання каталога, але має право на його «виконання», то він не може дізнатися імена файлів, що зберігаються в каталозі; однак, якщо він все ж якимось чином дізнався ім'я одного з файлів , то може відкрити цей файл або запустити на виконання (якщо цьому не перешкоджають атрибути доступу самого файлу).
Щоб видалити файл, не потрібно мати ніяких прав доступу до самого файлу, але необхідно право на запис у відповідний каталог (тому що видалення файлу є зміна не файлу, а каталога). Втім, у сучасних версіях UNIX доданий ще один бітовий атрибут, при установці якого видалення дозволено тільки власникові файла або користувачеві, що має право запису у файл.
Зміна атрибутів захисту, а також зміна власника файлу, можуть бути виконані тільки самим власником або привілейованим користувачем.
Ще два бітових атрибуту, що мають відношення до захисту даних, називаються SUID та SGID. Вони визначають, які права (а точніше сказати, чиї ідентифікатори власника і групи) успадкує при запуску програма, що зберігається в цьому файлі. Обидва біта за замовчуванням скинуті, при цьому програма використовує ідентифікатори UID і GID того користувача, який її запустив. Програма як би «діє від імені цього користувача», і використовує його права доступу до файлів. Якщо ж для встановлені атрибути SUID та / або SGID, то запущена програма буде використовувати ідентифікатори UID і / або GID свого власника.
Для чого такі тонкощі? Уявімо собі, що користувач хоче змінити свій пароль. З одного боку - нормальне бажання, яке слід задовольнити. З іншого боку, пароль даного користувача зберігається в одному файлі з паролями інших користувачів, і доступ до цього файлу має бути, очевидно, закритий для всіх пересічних користувачів. Можна підібрати й інші приклади ситуацій, коли звичайному користувачеві необхідний обмежений доступ до даних, які система повинна захищати.
Рішення, яке пропонує UNIX, полягає в наступному. Для роботи з паролями є спеціальна програма, власником якої є адміністратор системи. Програма доступна для виконання всім користувачам, але у неї встановлений біт SUID. В результаті цього запущена програма працює від імені адміністратора, тобто отримує необмежений доступ до файлів. Таким чином, відповідальність за захист системних даних перекладається на працюючу програму.
Слід зазначити, що в UNIX немає особливих засобів захисту для периферійних пристроїв. Як було описано вище, пристрої (а також іменовані канали та сокети) вважаються особливими типами файлів, тому для них визначені ті ж атрибути захисту, що і для файлів.