
- •Операційні системи
- •Функціонування комп'ютерної системи
- •Обработка переривань
- •Структура пам'яті
- •Лекція 5: Архітектура ос. Управління процессами: Основні поняття. Семафори і монітори План
- •2. Керування процесами
- •Віртуальні машини - інший розповсюджений підхід до розробки операційних систем й їхніх користувальницьких інтерфейсів
- •Механізми й політики
- •Реалізація операційних систем
- •Генерація операційної системи
- •Перемикання з одного процесу на інший
- •Планувальники, що виконують диспетчеризацію процесів
- •Лекція 10. Методи синхронізації процесів План
- •Алгоритм рішення проблеми критичної секції
- •Алгоритм «в пиріжковій» (bakery algorithm)
- •Синхронізація на основі загальних семафорів
- •Реалізація семафорів
- •Рішення за допомогою семафорів завдання
- •Рішення за допомогою семафорів завдання "читачі - письменники"
- •Рішення за допомогою семафорів завдання " філософи, що обідають,"
- •Монітори
- •Лекція № 11. Управління памяттю План
- •Динамічне завантаження й динамічна лінковка
- •Оверлейна структура програми
- •Відкачка й підкачування
- •Лекція 13. Сегментна організація пам’яті. Віртуальна пам’ять
- •Оптимальний алгоритм заміщення сторінок
- •Сторінкова організація на вимогу в Windows nt
- •Лекція № 14. Системи файлів План
- •Типова організація файлової системи зображена на мал. 19.3.
- •Логічна організація директорій
- •Монтування файлових систем
- •Структура файлової системи
- •Лекція № 15. Віртуальні файлові системи План
- •Лекція 17. Системи вводу-виводу План
- •Опитування пристроїв
- •Переривання
- •Ввід-вивід із прямим доступом до пам'яті (dma)
- •Блокові й символьні пристрої
- •Мережні пристрої істотних відрізняються від блоків і символьних; мають свій власний інтерфейс і систему команд
- •Годинники й таймери
- •Блокуємий (синхронний) і не блокуємий (асинхронний) ввід-вивід
- •Структури даних для вводу-виводу в ядрі ос
- •Життєвий цикл запиту на ввід-вивід
- •Продуктивність вводу-виводу
- •Лекція 18. Мережі й мережеві структури. Класичні и сучасні мережеві комунікаційні протоколи План
- •Мережі Ethernet
- •Протокол tcp/ip
- •Функционирование Ethernet-мереж
- •Лекція 19: Безпека операційних систем і мереж. План
- •Лекція 20. Огляд архітектури й можливостей системи Linux: архітектура, ядро, поширення й ліцензування, принципи проектування, керування процесами План
- •Історія Linux
- •Ядро Linux
- •Сучасний стан Linux, дистрибутиви й ліцензування
- •Принципи проектування й компоненти системи Linux
- •Модулі ядра, що завантажують, Linux
- •Керування процесами в Linux
- •Планування завдань ядра й синхронізація в ядрі
- •Лекція 21. Огляд архітектури й можливостей системи Linux: керування пам'яттю, ресурсами, файлові системи, драйвери пристроїв, мережі, безпека План
- •Керування фізичною пам'яттю в Linux
- •Віртуальна пам'ять в Linux
- •Виконання й завантаження користувальницьких програм в Linux
- •Системи файлів Linux
- •Ввод й вивід в Linux
- •Взаємодія процесів в Linux
- •Структура мережі в Linux
- •Безпека в Linux
- •Розвиток і використання Linux
- •Лекція 22. Огляд архітектури й можливостей систем Windows 2000/xp/2003/Vista/2008/7 План
- •Система Windows 2000
- •Історія Windows
- •Принципи проектування Windows 2000 - розширюваність, переносимость, надійність, безпека, сумісність, продуктивність, підтримка інтернаціоналізації й локалізації.
- •Архітектура Windows 2000
- •Ядро Windows 2000
- •Обработка переривань у ядрі
- •Виконавча підсистема (executive) ос Windows 2000
- •Підсистеми оточення в Windows 2000
- •Лекція 23. Системні механізми Windows План
- •Система файлів Windows
- •Рограммный інтерфейс Windows
- •Програмний інтерфейс Windows: Керування процесами
- •Керування віртуальною й фізичною пам'яттю й робочими наборами в Windows
- •Лекція 24. Ос для мобільних пристроїв. Windows Mobile План
- •Особливості ос для мобільних пристроїв
- •Ринок ос для мобільних пристроїв
- •Перспективи ос для мобільних пристроїв
- •Лекція 25. Перспективи операційних систем і мереж План
- •Операційні системи інших великих фірм
- •Solaris - операційна система розробки фірми Oracle / Sun
- •Сучасні тенденції в розвитку ос
- •Нові ос сімейства Windows
- •Нові тенденції в розвитку ос
- •Графічні оболонки ос
- •Підтримка паралельних обчислень
- •Розвиток бездротових мереж
- •Перспективи розвитку ос
Динамічне завантаження й динамічна лінковка
Під динамічним завантаженням розуміється завантаження підпрограми в пам’ять при першому звертанні до неї з користувальницької програми. Це досить корисний принцип, якщо потрібно заощадити пам'ять, оскільки ніякий "зайвий" код у цьому випадку в пам’ять не завантажується. При статичної лінковці обсяг коду, що виконується, може виявитися набагато більшим, саме за рахунок того, що до файлу бінарного коду доданий повністю код всіх використовуваних бібліотек. При динамічному завантаженні ніякої спеціальної підтримки від ОС не потрібно на етапі розробки програми.
З динамічним завантаженням викликуваних підпрограм тісно зв'язаний інший механізм – динамічна лінковка: лінковка під час виконання програми. Зрозуміло, це не означає, що під час виконання область коду програми розширюється, і до неї додається код динамічно лінкуємої підпрограми. Використається інша схема. У коді програми розміщається заглушка для виконання (execution stub) – невеликий фрагмент коду, що виконує системний виклик модуля ОС, що розміщає в пам'яті код динамічно лінкуємої бібліотечної підпрограми. При першому виклику заглушка заміняє себе на код за адресою динамічно розміщеної в пам'яті підпрограми. Очевидно, що динамічна линковка найбільш доцільно для бібліотек. Файл бінарного коду динамічно лінкуемї бібліотеки має в системі UNIX розширення імені .so (абревіатура терміна shared object), у системі Windows – розширення імені .dll (абревіатура від dynamically linked library).
Оверлейна структура програми
У ранніх ОС, особливо – для персональних комп'ютерів, для користувальницького процесу були вимушено уведені дуже тверді обмеження по пам'яті, - наприклад, в MS DOS – не більше 640 кілобайт. При такому дефіциті основної пам'яті, якщо програма виявляється настільки велика, що повністю не міститься в пам’ять максимально дозволеного обсягу, необхідно вживати спеціальні міри при розробці програми, щоб розбити її на непересічні групи модулів, такі, що в кожній групі модулі логічно взаємозалежні й повинні бути присутнім у пам'яті одночасно, модулі ж різних груп не обов'язково повинні разом завантажуватися в память. Під час виконання такої програми повинен використатися спеціальний системний механізм, названий оверлейна структура (overlay, дослівно – накладення), яка забезпечує почергове завантаження в ту саму область пам'яті то одну, те іншу групу виконуваних модулів. Проста програма, що виконує ці дії, називається драйвер оверлея (overlay driver). Інтегроване середовище розробки Турбо Паскаль забезпечували спеціальні опції компілятора, які дозволяли явно вказувати модулі, що входять у кожен оверлей.
Типовий для ранніх комп'ютерів й ОС приклад програми з оверлейной структурою – двухпросмотровий асемблер. На першому перегляді він перетворить вихідний ассемблерный код у проміжне подання, яке програма другого перегляду асемблера одержує на вході. Повністю весь асемблер (обидва перегляди) в пам’ять не містився, і довелося застосувати оверлейную структуру. Даний приклад ілюструється на рис. 15.3.
Оверлейна структура двухпросмотрового асемблера.
Лекція 12. Сторінкова організація пам’яті
План
Відкачка і підкачування
Суміжний розподіл пам'яті
Загальна задача розподілу пам'яті і стратегії її рішення
Фрагментація
Сторінкова організація
Захист пам'яті
Структура таблиці сторінок
Інвертовані таблиці сторінок
Поділювані сторінки
Сторінкова організація пам'яті (paging) - найпоширеніша стратегія керування пам'яттю, використовувана практично у всіх операційних системах. У даній лекції розглядаються загальні проблеми керування пам'яттю, принципи сторінкової організації і її різні форми.