- •Лабораторна робота № 10 основи роботи з операційною системою unix
- •1 Мета роботи
- •2 Основні положення
- •2.1 Загальна характеристика ос сімейства unix
- •2.2 Архітектура unix
- •2.3 Функціонування системи unix
- •2.3.1 Ядро системи
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •2.3.2 Початок і завершення сеансу робіт
- •3 Контрольні запитання
- •6 Зміст протоколу
- •2.1 Основні характеристики FreeBsd
- •2.2 Історична довідка
- •2.3 Мета проекту FreeBsd
- •2.4 Вимоги до системи при інсталяції FreeBsd
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •2.1 Поняття процесу
- •2.2 Компоненти процесу
- •2.2.1 Ідентифікатор процесу
- •2.2.2 Ідентифікатор батьківського процесу
- •2.2.3 Ідентифікатор користувача і групи
- •2.3 Стан процесу, "заблукалі" процеси
- •2.4 Управління процесами, команди kill та nice
- •2.4.1 Дворівнева схема керування процесами
- •2.4.2 Команда kill
- •2.4.3 Команда nice
- •2.5 Поточний контроль процесів, команди ps та top
- •2.6 Захист фонових процесів, команда nohup
- •3 Ключові запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Лабораторна робота № 13 права доступу в операційній системі unix
- •1 Мета роботи
- •2 Основні положення
- •2.1 Поняття прав доступу користувача
- •2.2 Основні біти доступу (читання/запис/виконання)
- •2.3 Додаткові біти доступу
- •2.4 Сполучення бітів доступу
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •2.1 Основні поняття клієнт-серверної архітектури
- •2.2 Основи мережного програмування
- •2.3 Компіляція
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Основні комбінації клавіш і команди
- •Закінчення таблиці а2
- •Закінчення таблиці а4
- •Приклади програм для реалізації клієнт-серверної архітектури
- •Перевірка буфера
- •Зчитування запису
- •Лістинг 2 Server-сервер, котрий демонструє застосування функції readvrev
2.3 Функціонування системи unix
2.3.1 Ядро системи
Ядро забезпечує базову функціональність ОС: створює процеси й керує ними, розподіляє пам'ять і забезпечує доступ до файлів та периферійних пристроїв.
Взаємодія прикладних задач з ядром відбувається за допомогою стандартного інтерфейсу системних викликів.
Інтерфейс системних викликів являє собою набір послуг ядра і визначає формат запитів на послуги. Процес запитує послугу за допомогою системного виклику певної процедури ядра, зовні схожого на звичайний виклик бібліотечної функції. Ядро від імені процесу виконує запит — і повертає процесові необхідні дані.
У наведеному прикладі програма відкриває файл, зчитує з нього дані і закриває цей файл. При цьому операція відкриття (open), читання (read) і закриття (close) файла виконуються ядром за запитом задачі, а функції open (2), read (2), close (2) є системними викликами.
main()
{
int fd;
char buf [80];
/*Відкриємо файл–одержимо надсилання (файловий дескриптор) fd*/
fd=open(“filed”,O_RDONLY);
/*Вводимо в буфер buf 80 символів*/
read (fd,buf, sizeof(buf));
/*Закриємо файл*/
close (fd);
}
Ядро складається з трьох основних підсистем:
— файлова підсистема;
— підсистема керування процесами і пам’яттю;
— підсистема введення/виведення.
Файлова підсистема забезпечує уніфікований інтерфейс доступу до даних, розташованих на дискових накопичувачах, і до периферійних пристроїв. Ті самі функції open (2), read (2), write (2) можуть використовуватися як при зчитуванні запису даних на диск, так і при виведенні тексту на принтер або термінал.
Файлова підсистема контролює права доступу до файла, виконує операції розміщення і вилучення файла, а також виконує запис/читання даних файла. Оскільки більшість прикладних функцій виконується через інтерфейс файлової системи, права доступу до файлів визначають привілей користувача в системі.
Файлова підсистема забезпечує переспрямовування запитів, адресованих периферійним пристроям, котрі збігаються з модулями підсистеми введення/виведення. Внутрішню структура ядра наведено на рисунку 2.2.
Рисунок 2.2 — Внутрішня структура ядра UNIX
Підсистема керування процесами і пам’яттю контролює:
— створення й вилучення процесів;
— розподіл системних ресурсів поміж процесами;
— синхронізацію процесів;
— міжпроцесну взаємодію.
Вочевидь, що в загальному випадку кількість активних процесів перевищує кількість процесорів комп’ютера, але в кожен окремий момент часу на кожнім процесорі може виконуватися лише один процес. ОС керує доступом процесів до обчислювальних ресурсів, створюючи відчуття одночасного виконання декількох задач.
Спеціальна задача ядра, називана розпорядником, планувальником процесів (scheduler), розв’язує конфлікти поміж процесами в конкуренції за системні ресурси (процесор, пам’ять, пристрої введення/виведення). Планувальник запускає процес на виконання, стежачи за тим, щоби процес монопольно не захопив поділювані системні ресурси. Процес звільнює процесор, очікуючи на тривалу операцію введення/виведення або на завершення кванта часу. У цьому разі планувальник обирає процес з найвищим пріоритетом і запускає його на виконання.
Модуль керування пам’яттю забезпечує розміщення оперативної пам’яті для прикладних задач. Оперативна пам’ять — коштовний ресурс, її рідко буває “забагато”. Якщо для всіх процесів недостатньо пам’яті, ядро переміщує частини процесу у вторинну пам’ять, звільнюючи ресурси для виконуваного процесу. Усі сучасні системи зреалізовують віртуальну пам’ять: процес виконується у власному логічному адресному просторі, що може перевищувати доступну фізичну пам’ять.
Модуль міжпроцесної взаємодії відповідає за повідомлення процесів про події за допомогою сигналів і забезпечує можливість передавання даних поміж різними процесами.
Підсистема введення/виведення виконує запити файлової підсистеми і підсистеми керування процесами для доступу до периферійних пристроїв. Вона забезпечує необхідну буферизацію даних і взаємодіє з драйверами пристроїв — спеціальними модулями ядра, які обслуговують зовнішні пристрої.
