Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпори СПОС.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
145.46 Кб
Скачать
  1. Інтерфейс системних викликів, статичні та динамічні бібліотеки.

Системний виклик — це інтерфейс між адресним простором користувача (user-space) і сервісами, які надаються ядром Linux. Оскільки даний сервіс надається ядром, виконати функцію ядра напряму не є можливим; тому слід використовувати спеціальний інтерфейс між простором ядра та користувача. Таким інтерфейсом є системний виклик (system call).

Статичні бібліотеки

Можуть бути у вигляді початкового тексту, що підключається програмістом до своєї програми на етапі написання (наприклад, для мови Fortran існує величезна кількість бібліотек для вирішення різних завдань саме в початкових текстах), або у вигляді об'єктних файлів, що приєднуються (лінкуються) до виконуваної програми на етапі компіляції (у Microsoft Windows такі файли мають розширення .lib, у UNIX-подібніх ОС — зазвичай .a). В результаті програма включає всі необхідні функції, що робить її автономною, але збільшує розмір.

Динамічні бібліотеки

Також називаються розподілюваними бібліотеками (англ. shared library), або бібліотеками, що динамічно підключаються (англ. Dynamic Link Library, DLL). Це окремі файли, що надають програмі набір використовуваних функцій для завантажування на етапі виконання при зверненні програми до ОС із заявкою на виконання функції з бібліотеки. Якщо необхідна бібліотека вже завантажена в оперативну пам'ять, програма використуватиме завантажену копію бібліотеки. Такий підхід дозволяє зекономити час і пам'ять, оскільки декілька програм використовують одну копію бібліотеки, вже завантажену в пам'ять.

Динамічні бібліотеки зберігаються зазвичай у визначеному місці й мають стандартне розширення. Наприклад, файли .library у логічному томі Libs: у AmigaOS; у Microsoft Windows і OS/2 файли бібліотек загального користування мають розширення .dll; у UNIX-подібних ОС — зазвичай .so; у MacOS — .dylib.

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

  1. Процес. Дескриптор процесу. Створення та завершення процесів.

Під процесом розуміють абстракцію ОС, яка об'єднує все необхідне для виконання

однієї програми в певний момент часу.

Процесом називають сукупність одного або декількох потоків і захищеного адресного

простору, у якому ці потоки виконуються.

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

В UNIX-сумісних системах процеси створює вже відомий нам системний виклик

forkO. Розглянемо його реалізацію в Linux.

1. Виділяють пам'ять для нового керуючого блоку процесу ( t a s k s t r u c t ) . Якщо

пам'яті недостатньо, повертається помилка.

2. Усі значення зі структури даних предка копіюють у структуру даних нащадка.

Після цього поля, значення яких мають відрізнятися від вихідних, будуть

змінені.

Якщо користувач перевищить заданий для нього ліміт кількості процесів або

якщо кількість процесів у системі перевищить максимально можливе значення

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

і повертається помилка.

3. Для процесу генерується ідентифікатор (pid), при цьому використовують спеціальний

алгоритм, що гарантує унікальність.

4. Для нащадка копіюють необхідні додаткові структури даних предка (таблицю

дескрипторів файлів, відомості про поточний каталог, таблицю оброблювачів

сигналів тощо).

5. Формують адресний простір процесу.

6. Структуру даних процесу поміщають у список і хеш-таблицю процесів системи.

7. Процес переводять у стан готовності до виконання.