- •Анотація
- •1 Середовище програмування ос unix
- •1.1 Структура ос unix
- •1.2 Створення програми
- •1. Препроцесор
- •2. Транслятор
- •2.1 Компілятор
- •2.2 Асемблер
- •3. Редактор зв'язків(Компонувальником)
- •1.3 Формати об'єктних файлів
- •2 Використання файлової системи unix
- •2.1 Основні поняття
- •2.1.1 Типи та іменування файлів
- •2.1.2 Права доступу до файлів
- •2.1.3 Cистемные структури керування файлами
- •2.1.4 Системні виклики роботи з файлами
- •2.2 Створення та відкриття файлів
- •2.2.1 Системний виклик open
- •2.2.2 Системний виклик create
- •2.2.3 Системний виклик close
- •2.3 Читання та зипис в файл
- •2.3.1 Системний виклик read
- •2.3.2 Системний виклик write
- •2.4 Позіціонування у файлі
- •2.4.1 Системний виклик lseek
- •2.4.2 Системні виклики pread і pwrite
- •2.4.3 Системні виклики readv і writev
- •2.5 Контрольні операції над файлами
- •2.5.1 Системні виклики stat, fstat і lstat
- •2.5.2 Контроль прав доступу до файлу
- •2.5.3 Функція fcntl
- •2.5.4 Системні виклики truncate і ftruncate
- •2.6 Управління каталогами
- •2.6.1 Створення і видалення
- •2.6.2 Читання каталога
- •2.6.3 Зміна каталога
- •2.7 Управління посиланнями
- •2.7.1 Управління жорсткими посиланнями
- •2.7.2 Управління символічними посиланнями
- •2.7.3 Перейменування файлів і каталогів
- •3 Керування процесами ос unix
- •3.1 Процеси ос unix
- •3.2 Сисвизови створення процесів
- •3.3 Завершення процесу
- •3.4 Взаємодія процесів в ос unix
- •3.5 Сигнали
- •3.5.1 Поняття сигналу
- •3.5.2 Розробка оброблювачів сигналів
- •3.5.3 Генерація сигналів
- •3.5.4 Посилка сигналів іншим процесам
- •3.5.5 Блокування сигналів
- •3.5.6 Очікування сигналу
- •3.6 Трасування процесу.
- •3.7 Канали й fifo-Файли
- •3.7.1 Поняття
- •3.7.2 Створення каналу
- •3.7.3 Створення fifo-Файлів
- •3.8 Семафори
- •3.9 Повідомлення.
- •3.10 Поділювана пам'ять.
- •Література
- •Системне програмування Навчальний посібник
- •65082, Одеса, вул. Дворянська, 1/3
1 Середовище програмування ос unix
1.1 Структура ос unix
Обчислювальна система (ВС) це деяке об'єднання апаратних засобів, засобів управління апаратурою (фізичними ресурсами), засобів управління логічними ресурсами, системи програмування і прикладне програмне забезпечення.
|
Прикладні програми |
|
||||||
---|---|---|---|---|---|---|---|---|
|
Системи програмування |
|
||||||
|
У правління логічними пристроями |
|
||||||
|
Управління фізичними пристроями |
|
||||||
Апаратні засоби |
Малюнок 1.1 – Структура Обчислювальної системи
Нижній рівень - це чисто апаратура.
Наступний рівень це програми, але програми, орієнтовані на якість і властивості апаратури – асемблери. Нижня межа між фізичним рівнем і апаратурою - це інтерфейс цього управління – драйвер - набори команд управління, зрозумілих конкретному пристрою.
Наступний рівень - це рівень, який орієнтований на згладжування апаратних особливостей. Він призначений для створення комфортніших умов в роботі користувача. Тут оперують поняттями файл, процес, системний виклик.
Операційною системою вважають два рівні - логічний і фізичний. Деякі автори в ОС включають і системи програмування.
Тепер давайте подивимося на конструкцію ОС.
Малюнок 1.2 – Структура Операційної системи
1. Ядро. UNIX, як практично будь-яка ОС має поняття ядра. Ядром ОС є її резидентна частина, тобто та частина ОС, яка завжди присутня в оперативній пам'яті.
У ядро входять базові засоби управління основною суттю (файл і процес), а також деякий набір програм, що забезпечують управління деякими фізичними пристроями, – драйверів (у ядро ОС повинен входити драйвер оперативного пристрою, що запам'ятовує). У функції ядра входить обробка переривань.
2. Оболонка. Оболонку складають додатки як системні, такі, що забезпечують функціональність системи, так і прикладні, такі, що забезпечують призначений для користувача інтерфейс Unix. Оболонка багатошарова. Навколо ядра нарощуються програми управління ресурсами обчислювальної системи. Перший рівень в основному складається з драйверів фізичних пристроїв. Наступний рівень - управління логічними пристроями. І так далі. Таких рівнів може бути досить багато. Чим далі від ядра, тим більша абстрактність має місце бути.
Взаємодія оболонки з ядром відбувається за допомогою системних викликів. Системний виклик - це вимога до ОС (до ядра) провести аппаратно/системно специфічну або привілейовану операцію.
Системний виклик є функцією, написаною на мові З і є точкою входу в ядро операційної системи, через які прикладні програми мають можливість користуватися базовими послугами, UNIX, що надаються.
Системні виклики забезпечують:
зіставлення дій користувача із запитами драйверів пристроїв;
створення і припинення процесів;
реалізацію операцій введення-виводу;
доступ до файлів і дисків;
підтримку функцій терміналу.
Unix має обмежений набір системних викликів, які документовані в розділі 2 електронні довідники. (man 2 kill).
У UNIX використовується підхід, при якому кожному системному виклику відповідає функція (функції) з тим же ім'ям, що зберігається в бібліотеці мови C. Ці функції виконують необхідне перетворення аргументів і викликають необхідну процедуру ядра. В цьому випадку бібліотечний код виконує тільки роль оболонки, тоді як фактичні команди, розташовані в ядрі ОС (написані на З або Assemblere).
Крім системних викликів програмістові пропонується великий набір функцій загального призначення. Вони не є точками входу в ядро ОС, хоча в ході виконання багато хто з них (але не все) виконує системні виклики. Ці функції зберігаються в системній бібліотеці З і разом з системними викликами складають середовище програмування ОС UNIX (документовано в розділі 2 електронні довідники).
Використання системних функцій зазвичай вимагає включення в текст програми за допомогою директиви #include файлів заголовків, що містять визначення функцій. При цьому якщо ім'я файлу поміщене в уголковые дужки, це означає, що пошук файлу проводитиметься в загальноприйнятих каталогах зберігання файлів заголовків. Якщо ж ім'я файлу заголовка поміщене в лапки, то використовується явно вказане або відносне ім'я файлу.