Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson_14_SPZ.doc
Скачиваний:
4
Добавлен:
21.12.2018
Размер:
327.68 Кб
Скачать
  1. Засоби захисту файлів і даних.

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

  • читання;

  • запис;

  • виконання.

Ці права доступу надаються трьом класам користувачів:

  • власнику файлу (користувач, який створив файл);

  • групі в яку входить власник;

  • всім іншим користувачам.

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

Після завантаження зв’язок процесів та користувачів (груп) відбувається за допомогою ідентифікаторів доступу до файлової системи, які мають назву FSUID і FSGID, а також за допомогою ефективних ідентифікаторів EUID і EGID.

При створенні файл він отримує UID (номер користувача), який співпадає з номером FSUID і відповідно отримує ідентифікатор GID та FSGID. При створенні файлу модифікується не сам файл, а каталог, в якому розміщуються нові посилання на новий файл. Знищення файлу полягає в знищенні посилання на нього. Таким чином для створення/знищення файлу в користувача повинно бути право на запис в каталог.

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

  1. Сигнали і семафори.

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

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

  • значення семафору;

  • номер процесу, який останній працював з цим семафором;

  • число процесів, які очікують збільшення значення семафору;

  • число процесів, які очікують нульового значення семафору.

Для роботи з семафорами є три наступні системні виклики:

  • semget, створення і отримання доступу до набору семафорів;

  • semop, для маніпуляції (зміни) значень семафорів;

  • semctl, для виконання різноманітних керуючих операцій над набором семафорів.

  1. Програмні канали та черги повідомлень.

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

Unix розділяє два типи програмних каналів:

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

  • неіменованим програмним каналом може користуватися тільки процес, який створив його та процеси, які породжені цим головним процесом.

Для того, щоб створити іменований програмний канал використовується виклик open, щоб створити неіменований програмний канал використовується спеціальний виклик pipe.

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

Наступним механізмом міжпроцесорної взаємодії є механізм черг повідомлень, що підтримується наступними системними викликами:

  • msgget (message get) – створює нову чергу повідомлень і отримання дескриптора нової черги;

  • msgsnd (message send) – для відправки повідомлень, тобто для запису повідомлень у відповідну чергу;

  • msgrev (message resive) – служить для прийому повідомлення, тобто для вибору повідомлення з певної черги;

  • msgctl (message control) – системний виклик для здійснення керуючих функцій.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]