Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Старий CS
Старий IP ІзTSS Програми, яка викликає
SS: SP Figure: Стек програми, яка викликає
Сергiй Стасюк Системне програмне забезпечення Керування процесорним часом
У неформатованiй частинi TSS можуть мiститися вiдомостi про власника завдання, область збереження для регiстрiв 80287 i тому подiбне. Селектор, що знаходиться в TR не можна використати для прочитування i запису в TSS, тому зазвичай в GDT вiдразу за дескриптором TSS знаходиться дескриптор сегменту даних, вiдповiдного TSS, вiн має номер TR+8 (оскiльки молодшi бiти TI i RPL чiпати не можна). Завдання можна перемикати командою мiжсегментного переходу JMP, яка в якостi аргументу отримує селектор TSS i зсув, який iгнорується. За допомогою команди CALL можна здiйснювати виклик iншого завдання.
Сергiй Стасюк Системне програмне забезпечення Керування процесорним часом
Правила захисту сегментiв поширюються i на TSS. Безпосередньо його можна використати тiльки усерединi кiльця, визначуваного його рiвнем DPL чи в кiльцi з бiльшим прiоритетом. Перемкнутися на завдання, що має TSS в кiльцi з меншим номером, можна через шлюз завдання:
63 47 39 31 15 0 NOTHING P TYPE NOTHING Селектор TSS NOTHING TYPE = DPL 0010 1 Figure: Формат шлюза задачi
Сергiй Стасюк Системне програмне забезпечення Керування процесорним часом
Якщо виклик завдання здiйснюється командою CALL, встановлюється прапор NT=1 i в полi зворотного зв’язку в TSS програми, яка викликана заноситься селектор TSS завдання, яке викликає. Команда JMP скидає бiт NT в 0 при перемиканнi завдань, а команда CALL не модифiкує (не скидає) бiт B в селекторi TSS програми, яка викликає, зате встановлює в 1 цей бiт в селекторi TSS завдання, яке викликається. Команда IRET у разi NT=1 робить перемикання на завдання, селектор TSS якого мiститься в полi зворотного зв’язку сегменту стану поточного завдання.
Сергiй Стасюк Системне програмне забезпечення Керування процесорним часом
Приклад диспетчеризацiї RR:
; переривання таймеру PUSH DS PUSH AX STR AX; зберiгаємо TR в AX ADD AX, 8; пропустити 0 дескриптор MOV DS, AX ASSUME DS: TSS; повiдомити асемблеру про TSS, що використов JMP DWORD PTR nextproc POP AX POP DS IRET
Сергiй Стасюк Системне програмне забезпечення Керування процесорним часом
TSS1 TR TSS2
поточна nextproc
nextproc
Figure: Зв’язок мiж задачами в реалiзацiї RR
Сергiй Стасюк Системне програмне забезпечення Керування процесорним часом
Перемикання контексту для 80287 виконується командами FSAVE i FRESTOR. Процесор зустрiвши команду ESC перевiряє бiт TS в MSW. Якщо TS=1, то виникає особливий випадок використання спiвпроцесора. Процедура обробки цього переривання аналiзує бiт EM: якщо EM=1, команди спiвпроцесора емулюються програмно, iнакше необхiдно вiдновити регiстри 287 з поточного TSS i скинути бiт TS в 0.
Сергiй Стасюк Системне програмне забезпечення Керування процесорним часом
У 80486 TS знаходиться в регiстрi CR0. Узагальнимо. Перемикання завдань вiдбувається: JMP або CALL для дескриптора TSS; JMP або CALL для шлюзу завдання; Переривання або виключення iндексують шлюз завдання в IDT; Поточне завдання виконує команду IRET при встановленому прапорi NT.
Сергiй Стасюк Системне програмне забезпечення Керування процесорним часом
Шлюзи виклику дозволяють робити мiжсегментну передачу управлiння без перемикання процесiв. Формат шлюзу виклику: 63 47 39 36 31 15 0 NOTHING or 0 P TYPE COUNTER Селектор Смещение
|