Page 104 - 4875
P. 104
визначення адреси блоку (по його ідентифікатору) і звільнення блоку –
приблизно аналогічно до роботи драйверів EMS чи XMS.
Щоб реалізувати багатофункціональність, прийдеться
запустити активну резидентну програму, що перехопить переривання
IRQ0 і по кожному такту системного таймера буде по черзі відбирати
керування від кожного із запущених процесів і передавати наступному.
Практично ніхто не реалізує повноцінну багатофункціональність в
DOS, коли кожен процес має власну пам’ять і не може звертатися до
пам’яті іншого процесу, — для цього існує захищений режим, але
зустрічаються досить прості реалізації для полегшеного варіанту
багатофункціональності — переключення ниток.
Нитка — це процес, що використовує той же код і ті ж дані,
що й інші такі ж процеси в системі, але відрізняється від них вмістом
стеку і регістрів. Тоді резидентна програма-диспетчер по кожному
перериванню таймера буде зберігати регістри перерваної нитки в її
структуру, зчитувати регістри наступної нитки по черзі і повертати
керування, а структури і стеки всіх ниток будуть зберігатися в
довільній спеціально виділеній загальнодоступній області пам’яті.
Зазначена програма також повинна підтримувати кілька викликів за
допомогою програмного переривання — створення нитки, видалення
нитки і, наприклад, передача керування наступної нитки, поки поточна
нитка знаходиться в стані чекання. Це призводить до складності
написання самих ниток, тому що усі вони використовують загальний
код. Абсолютно усі в коді нитки повинні бути повторно вхідними. Крім
того, нитки створюють безліч проблем, зв'язаних із синхронізацією, що
призводить до того, що в коді всіх ниток, або в основному резиденті
прийдеться реалізовувати семафори, черги, сигнали, бар'єри і всі інші
структури, що зустрічаються в реальних пакетах для роботи з нитками.
В основному резидентні програми використовуються для
розширення можливостей операційної системи, зокрема для
обслуговування зовнішніх периферійних пристроїв або реалізації
пасивного мультипрограмування.
Спочатку дискові операційної системи були односторонніми
(MS-DOS). Використання програм TSR в цьому випадку дозволяє
здійснювати переключення між програмами (звичайного та
103