- •Лабораторна робота №1 Тема: Розвиток комп'ютерної архітектури
- •Таблиця 1.1. Основні етапи розвитку комп'ютерів
- •Таблиця 1.2. Перші моделі серії івм-360
- •Лабораторна робота №2 Тема: Типова архітектура еом.
- •Таблиця 2.1. Інтерпретація команд перетворення з різною кількістю адрес в адресній частині
- •Лабораторна робота №3 Тема: Формати команд. Адресовий простір еом
- •Лабораторна робота №4 Тема: Етапи виконання команди. Типи і структура даних. Взаємодія основних пристроїв еом.
- •Лабораторна робота №5 Тема: Структури універсальних, функціонально-орієнтованих і спеціалізованих процесорів. Мікропроцесори
- •Таблиця 3.1. Еволюція мікропроцесорів фірми Intel. Вироби 1970-х років.
- •Таблиця 3.2. Еволюція мікропроцесорів фірми Intel. Вироби 1980-х років.
- •Таблиця 3.3. Еволюція мікропроцесорів фірми Intel. Вироби 1990-х років.
- •Лабораторна робота №6 Тема: Арифметико-логічні пристрої
- •Лабораторна робота №7 Тема: Принцип мікропрограмного управління. Реалізація різних етапів виконання команд
- •Таблиця 15.2 Мікрокоманди пристрою керування гіпотетичного процесора Уілкса
- •Лабораторна робота №8 Тема: Організація даних на магнітному диску. Внутрішня пам’ять
- •Таблиця 6.1. Характеристики пзпмд
- •Лабораторна робота №9 Тема: Ієрархічна структура пам'яті. Віртуальна пам’ять.
- •Таблиця 6.3. Основні функції api для керування віртуальною пам'яттю в системі Windows nt
- •Лабораторна робота №10
- •Листінг 7.1. Приклад програмованого вводу-виводу
- •Лабораторна робота № 12 Тема: Класи переривань
- •Лабораторна робота №12 Тема: Переривання. Дії апаратного та програмного забезпечення
- •Дії апаратного забезпечення:
- •Дії програмного забезпечення:
- •Лабораторна робота № 13 Тема: Фаза переривання основного циклу
- •Лабораторна робота №14 Тема: Організація прямого доступу до пам’яті
- •Лабораторна робота № 15 Тема: Арбітраж шини
- •Лабораторна робота № 16 Тема: Персональні еом, їх різновидності
- •Лабораторна робота № 17 Тема:Робота еом у мультипрограмному режимі
- •Лабораторна робота № 18 Тема:Системи колективного користування з розподілом та без розподілу часу. Системи реального часу
Таблиця 6.3. Основні функції api для керування віртуальною пам'яттю в системі Windows nt
Функція API |
Значення |
VirtualAlloc |
резервація або виділення області |
VirtualFree |
Звільнення області або зняття виділення |
VirtualProtect |
Зміна типу захисту на читання/запис/виконання |
VirtualQuery |
Запит про стан області |
VirtualLock |
Робить область пам'яті резидентною (тобто забороняє розбивку на сторінки в ній) |
VirtualUnlock |
Знімає заборону на розбивку на сторінки |
CreateFileMapping |
Створює об'єкт відображення файлу й іноді приписує йому ім'я |
MapViewOfFile |
Відображає файл або частину файлу в адресний простір |
UnmapViewOfFile |
Видаляє відображений файл з адресного простору |
OpenFileMappino |
Відкриває раніше створений об’єкт відображення файлу |
Перші чотири функції очевидні. Наступні дві функції дозволяють процесу робити резидентною область пам'яті розміром до 30 сторінок і скасовувати цю дію. Ця якість може знадобитися програмам, що працюють у режимі реального часу. Операційна система встановлює визначену межу, щоб процеси не ставали занадто поглинаючими. У системі NT також маються функції API, що дозволяють процесу одержувати доступ до віртуальної пам'яті іншого процесу (вони не зазначені в табл. 6.3).
Останні 4 функції API призначені для керування відображуваними в пам'ять файлами. Щоб відобразити файл, спочатку потрібно створити об'єкт відображення файлу за допомогою функції CreateFileMapping. Ця функція повертає ідентифікатор (handle) об'єкту відображення файлу й іноді ще і вводить у систему файлів ім'я для нього, щоб інший процес міг використовувати об'єкт. Дві функції відображають файли і видаляють відображення відповідно. Наступна функція потрібна для того, щоб відобразити файл, що у даний момент відображений іншим процесом. Таким чином, два і більше процесів можуть розділяти області своїх адресних просторів.
Ці функції API є основними. На них будується вся інша система керування пам'яттю. Наприклад, існують функції API для розміщення і звільнення структур даних в одній чи декількох “купах”. “Купи” використовуються для збереження структур даних, що створюються і руйнуються. “Купи” не займаються “зборкою сміття”, тому користувальницьке програмне забезпечення саме повинне звільняти блоки віртуальної пам'яті, що вже не потрібні. (“Зборка сміття” - це автоматичне видалення невикористовуваних структур даних.) “Купа” у NT подібна з функцією malloc у системах UNIX, але в NT, на відміну від UNIX, може бути кілька незалежних “куп”.
Контрольні питання:
Ієрархічна структура пам’яті.
Оверлейна організація програм.
Метод віртуальної пам’яті.
.Віртуальна пам’ять UNIX.
Віртуальна пам’ять NT.
Функції WIN API для управління віртуальною пам’яттю.
Лабораторна робота №10
Тема: Команди вводу-виводу
Жодна інша група команд не розрізняється настільки сильно в різних машинах, як команди вводу-виводу. В сучасних персональних комп'ютерах використовуються три різні схеми вводу-виводу:
1. Програмований ввід-вивід з активним чеканням.
2. Ввід-вивід з керуванням по перериваннях.
3.Ввід-вивід із прямим доступом до пам'яті.
Ми розглянемо кожну з цих схем по черзі.
Найпростішим методом вводу-виводу є програмований ввід-вивід, що часто використовується в дешевих мікропроцесорах, наприклад у вбудованих системах або у таких системах, що повинні швидко реагувати на зовнішні зміни (це системи, що працюють у режимі реального часу). Ці процесори звичайно мають одну вхідну й одну вихідну команди. Кожна з цих команд вибирає один із пристроїв вводу-виводу. Між фіксованим регістром у процесорі й обраним пристроєм вводу-виводу передається один символ. Процесор повинен виконувати визначену послідовність команд при кожному зчитуванні і записі символу.
Як приклад даного методу розглянемо термінал з чотирма 1-байтними регістрами, як показано на мал. 7.1. Два регістри використовуються для вводу: регістр стану пристрою і регістр даних. Два регістри використовуються для виводу: теж регістр стану пристрою і регістр даних. Кожний з них має унікальну адресу. Якщо використовується ввід-вивід з розподілом пам'яті, усі 4 регістри є частиною адресного простору, і будуть зчитуватися і записуватися за допомогою звичайних команд. У противному випадку для читання і запису регістрів використовуються спеціальні команди вводу-виводу, наприклад IN і OUT. В обох випадках ввід-вивід здійснюється шляхом передачі даних та інформації про стан пристрою між центральним процесором і цими регістрами.
Регістр стану клавіатури містить 2 біти, що використовуються, і 6 бітів, що не використовуються. Апаратне забезпечення встановлює самий лівий біт на 1 усякий раз, коли з'являється символ. Якщо програмне забезпечення раніше установило на 1 біт 6, то відбувається переривання. У противному випадку переривання не відбувається. При програмованому вводі-виводі для одержання вхідних даних центральний процесор звичайно знаходиться в циклі, періодично зчитуючи регістр стану клавіатури, поки біт 7 не прийме значення 1. Коли це відбувається, програмне забезпечення зчитує буферний регістр клавіатури, щоб одержати символ. Зчитування регістра даних викликає установку біта CHARACTER AVAILABLE (наявності символу) на 0.
Вивід здійснюється подібним чином. Щоб написати символ на екрані, програмне забезпечення спочатку зчитує регістр стану дисплея, щоб довідатися, чи встановлений біт READY (біт готовності) на 1. Якщо він не встановлений, програмне забезпечення проходить цикл знову і знову доти, поки даний біт не прийме значення 1. Це значить, що пристрій готовий прийняти символ. Як тільки термінал приходить у стан готовності, програмне забезпечення записує символ у буферний регістр дисплея, що переносить символ на екран і дає сигнал пристрою установити біт готовності в регістрі стану дисплея на 0. Коли символ уже відображений, а термінал готовий до обробки наступного символу, біт READY знову встановлюється на 1 контролером.
Як приклад програмованого вводу-виводу розглянемо процедуру, написану на Java (листінг 7.1). Ця процедура викликається з двома параметрами: масивом символів, який потрібно вивести, і кількістю символів, що присутні в масиві (до 1 ДО). Тіло процедури являє собою цикл, що виводить по одному символу. Спочатку центральний процесор повинен почекати, поки пристрій буде готов, і тільки після цього він виводить символ, і ця послідовність дій повторюється для кожного символу. Процедури in і out - це звичайні процедури мови асемблера для читання і запису регістрів пристроїв, що визначаються по першому параметру, з АБО в перемінну, котра визначається по другому параметру. Розподіл на 128 забирає молодші 7 бітів, при цьому біт READY залишається в біті 0.