
- •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
- •Література
4.4.3. Запуск програми
Одним з основних завдань, які повинна вирішувати система, є запуск програм на виконання. Для цього призначена системна функція Exec, яка може бути викликана або програмою COMMAND.COM, що виконує команду користувача, або безпосередньо програмою користувача, через програмне переривання int 21h.
Функція Exec вимагає вказівки ряду параметрів, з яких важливі:
· Ім'я файлу запускається програми. Якщо ім'я не містить шляху до каталогу, то файл шукається у поточному каталозі, а також в каталогах, перерахованих в змінній PATH.
· Командний рядок. Так прийнято називати рядок параметрів, що передаються програмі. При запуску програми по команді користувача командний рядок задається після імені програми, вона відділена від імені пробілом. Аналіз вмісту командного рядка повністю покладається на запускаемую програму, система лише передає цей рядок програмі.
· Адреса масиву, що містить параметри середовища програми. Якщо він не заданий, то для запускається програми створюється копія середовища програми-батька.
У MS-DOS використовуються два формати виконуваних програм.
Файл формату COM містить тільки коди позиційно-незалежної програми, яка може бути без зміни завантажена для виконання за будь-якого вільного адресою пам'яті. Всі програма повинна поміщатися в єдиному сегменті, тому розмір файлу обмежений 64 Кб.
Файл формату EXE являє собою переміщувану програму. Файл складається з заголовка, словника переміщень і власне коду. Інформація в заголовку дозволяє вказати розмір частини файлу, яка повинна завантажуватися в пам'ять при запуску програми, максимальний і мінімальний розмір пам'яті, додатково резервованій для розміщення даних, початкова адреса стека, адреса запуску програми. Розмір файлу практично не обмежений, але розмір завантажуваної частини повинен бути в межах, наданих DOS, тобто приблизно 500 - 550 Кб.
Перші два байти EXE-файлу містять сигнатуру (ознака) файлу формату EXE, в якості якої використовуються дві букви 'MZ' [10]. Вважається, що це ініціали програміста Марка Збіковского, який брав участь у розробці MS-DOS.
При запуску програми система виконує наступні дії:
· Виділяє два безперервні блоку пам'яті: для параметрів середовища (блок середовища) і для самої програми (блок PSP). Для програми, як правило, виділяється максимально можливий безперервний блок пам'яті, якщо тільки в заголовку EXE-файлу не заданий менший розмір.
· Визначає розмір завантажуваної частини програми (для COM-файлу це весь файл), і зчитує з файлу коди програми.
· Для EXE-файлу виконує настройку програми на адресу завантаження, додаючи цю адресу до тих місць програми, які перераховані в словнику переміщень.
· Формує на початку блоку програми масив, який називається PSP (Program Segment Prefix). В PSP містяться, зокрема, адресу блоку середовища, адреса повернення в батьківську програму, адреса і розмір таблиці JFT, сама ця таблиця, командний рядок програми.
· Заповнює перші 5 елементів таблиці JFT (стандартні хендл), копіюючи їх з JFT батьківської програми.
· Заносить початкові значення в регістри процесора.
· Запам'ятовує адресу PSP програми в якості ідентифікатора поточного процесу (PID, Process IDentifier).
· Нарешті, виконує перехід на адресу запуску програми.
Для COM-файлу цю адресу слід відразу за PSP, для EXE-файлу в заголовку може бути вказаний будь-яку адресу.