
- •Системне програмування
- •1. Головний завантажувальний запис диску Master Boot Record.
- •2. Таблиця розділів та логічні диски
- •3. Таблиця розміщення файлів (fat). Загальна схема використання fat
- •4. Файлова система iso9660.
- •5. Файлова система udf
- •6. Таблиця відкритих файлів (sft). Стандартні файлові маніпулятори та їх розташування в sft.
- •7. Таблиця файлів завдань jft та її зв’язок з таблицею відкритих файлів sft.
- •9. Файлова система ntfs
- •10. Використання api функцій для роботи з файлами
- •11. Методи налагоджування драйверів та механізм підготовки їх до виконання
- •12. Команда ініціалізації драйверу. Її зміст, призначення та місце розташування. Визначення адреси точки розриву.
- •13. Об’єкти і їх дескриптори в Windows
- •14. Процедура переривання драйвера, її функція. Таблиця переходів
- •16. Загальний зв’язний список драйверів. Правила для встановлення нового драйверу.
- •19. Процедура стратегії драйвера та її основна задача.
- •20. Заголовок запиту драйверу, його складові частини та їх призначення
- •22.Обслуговування пам’яті в dos
- •23. Буфер попередньої трансляції в сторінковій організації пам’яті
- •Привілеї сегмента задаються полем dpl байта управління доступом.
- •26.Глобальні, локальні таблиці дескрипторів та idt.
- •27. Перетворення логічної адреси на лінійну в реальному та захищеному режимах
- •29.Таблиця дескрипторів переривань (idt).
27. Перетворення логічної адреси на лінійну в реальному та захищеному режимах
Спрощена схема перетворення логічного адреси в лінійний показана на рис. 1.6.
Рис. 1.6. Перетворення логічного адреси в лінійний
Таблиці дескрипторів створюються операційною системою на етапі її ініціалізації перед перемиканням процесора в захищений режим і згодом можуть змінюватися як самою операційною системою, так і додатками (явно чи неявно).
Крім базового адреси, дескриптори містять і іншу інформацію, що описує сегменти пам'яті. Зокрема, в них знаходиться розмір сегмента, а також рівень доступу, яким має володіти додаток для доступу до сегмента.
Якщо додаток спробує адресувати пам'ять, яка лежить за межами області, описаної дескриптором, відбудеться апаратне переривання. Аналогічна реакція буде і на спроби додатки виконати недозволений доступ, наприклад, зробити спробу запису в сегмент, для якого дозволено тільки читання, або в програмний сегмент, що містить виконуваний код. Додаток також не може використовувати селектори, для яких немає заповнених дескрипторів.
Таким чином, в захищеному режимі програма не може робити з адресами все, що йому заманеться, як це було в реальному режимі. Більш детальну інформацію про це ви можете отримати з 6 томи "Бібліотеки системного програміста".
Навіщо потрібно використовувати дескрипторні таблиці двох типів?
У мультизадачною операційній системі можна використовувати одну глобальну таблицю дескрипторів для опису областей пам'яті, що належить операційній системі і кілька локальних таблиць дескрипторів для кожного процесу. У цьому випадку при відповідній настройці базових адрес можна ізолювати адресні простори операційної системи і окремих процесів. Якщо зробити так, що кожен процес буде користуватися тільки своєю таблицею дескрипторів, будь-який процес зможе адресуватися тільки до своїх сегментах пам'яті, описаним у відповідній таблиці, і до сегментів пам'яті, описаним в глобальній таблиці дескрипторів. У системі може існувати тільки одна глобальна таблиця дескрипторів.
Зауважимо, що операційна система Microsoft Windows версії 3.1 створює одну загальну глобальну таблицю дескрипторів, одну таблицю локальних дескрипторів для системної віртуальної машини, в рамках якої працюють всі додатки Windows, і по одній локальній таблиці дескрипторів для кожної віртуальної машини DOS. Детальніше про це ви можете дізнатися з глави "Драйвери для Windows" 17 томи "Бібліотеки системного програміста", який називається "Операційна система Microsoft Windows 3.1 для програміста. Додаткові глави ".
Примітно, що всі 16-розрядні додатки Windows версії 3.1 працюють в одному адресному просторі, яке представлене однієї локальної таблицею дескрипторів. Це служить однією з причин нестабільності Microsoft Windows версії 3.1, так як погано налагоджене додаток може зруйнувати області пам'яті, що належать іншим додаткам, або навіть самій операційній системі.
Займемося тепер перетворювачем лінійної адреси у фізичний. Процес такого перетворення має саме безпосереднє відношення до сторінкової адресації пам'яті.
Лінійний адресу поділяється на три поля:
• номер таблиці в каталозі таблиць сторінок (10 біт);
• номер сторінки в таблиці сторінок (10 біт);
• зміщення всередині сторінки (12 біт)
Вся пам'ять при цьому ділиться на сторінки розміром 4096 байт, адресуються за допомогою спеціальних таблиць сторінок. У системі існує один каталог таблиць сторінок і багато таблиць сторінок. Таблиця сторінок містить 32-розрядні фізичні адреси сторінок пам'яті.
28. Організація багатозадачності в DOS Мікропроцесор Intel 8088, що використовувався в перших ПК, не був спеціально розроблений для реалізації багатозадачності. Частково проблема (як було показано в попередньому розділі) полягала в недоліках управління пам'яттю. У той час, як безліч програм починає і закінчує своє виконання, багатозадачна операційна система повинна здійснювати переміщення блоків пам'яті для об'єднання вільного простору. На процесорі 8088 це було неможливо реалізувати в стилі, прозорому для додатків. Сама DOS не могла тут чим-небудь істотно допомогти. Будучи розробленої таким чином, щоб бути маленькою і не заважати додаткам, DOS підтримувала, крім завантаження програм та забезпечення їм доступу до файлової системи, ще не так багато коштів. Тим не менш, творчі програмісти, які працювали з DOS на зорі її появи, знайшли шлях подолання цих перешкод, переважно при використанні резидентних (terminate-and-stay-resident, TSR) програм. Деякі TSR-програми, такі як спулер, використовували переривання апаратного таймера для виконання процесу у фоновому режимі. Інші, подібно спливаючим (popup) утилітам, таким як SideKick, могли виконувати одну із завдань перемикання - призупинення виконання програми на час роботи утиліти. DOS також була вдосконалена для забезпечення підтримки резидентних програм. Деякі виробники програмного забезпечення намагалися створити багатозадачні оболонки або оболонки, що використовують перемикання між завданнями, як надбудови над DOS (наприклад, Quarterdeck's DeskView), але тільки одна з цих оболонок одержала широке поширення на ринку. Це, звичайно. Windows.