Організація багатозадачної роботи мікропроцесора

Дослідження багатозадачних задач мікропроцесорів, в пам'яті яких зберігаються водночас декілька програм і даних для виконання декількох процесів обробки інформації. Формування сегментів TSS і їх дескрипторів. Структура таймера. Годинник реального часу.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык украинский
Дата добавления 24.04.2012
Размер файла 49,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство Освіти і Науки України

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра : “ОБЧИСЛЮВАЛЬНА ТЕХНІКА ТА ПРОГРАМУВАННЯ”

Контрольна робота з дисципліни
Мікропроцесорні системи
Організація багатозадачної роботи мікропроцесора
Виконавець :
Ст. групи КІТЗ-16б.
Минько М.О.

Харків 2009

При багатозадачній роботі МП в пам'яті зберігаються водночас декілька програм і даних для виконання декількох процесів обробки інформації (задач). При цьому повинен бути забезпечений взаємний захист програм і даних, а також можливість переходу від виконання однієї задачі до іншої (переключення задач). Мікропроцесори x86 мають для цього відповідні апаратні засоби, які розглянуті нижче.

При організації багатозадачної роботи мікропроцесора необхідно перевести МП в захищений режим, здійснити обробку переривань в захищеному режимі і повернутися в реальний режим, тобто виконати дії, розглянуті в розділах 4 і 5.

Крім того, необхідно:

- розробити задачі у вигляді процедур, що виконують певні завдання;

- для кожної задачі сформувати сегмент стану задачі;

- сформувати дескриптори цих сегментів і записати їх в GDT;

- здійснити переключення задач.

Сегмент стану задачі

мікропроцесор таймер інформація дескриптор

Кожна задача повинна мати свій сегмент стану - TSS (Task Status Segment), структура якого складається з двох частин: обов'язкової (104 байта),

яка містить всю інформацію, необхідну МП для рішення даної задачі, і додаткової, що містить інформацію, яка буде використовуватись операційною системою (наприклад, ім'я задачі, коментар і ін.), і бітову карту вводу/виводу (БКВВ), що використовується для дозволу/заборони доступу до окремих портів з метою захисту даних і не має прямого відношення до багатозадачної роботи МП. Оскільки розмір області TSS, що використається ОС, може бути довільний, для визначення початку області БКВВ використовується поле

АБКВВ (адреса БКВВ), в якому вказується адреса бітової карти введення/виведення відносно початку TSS.

Структура TSS зображена на рис. 6.1. В перших двох байтах зберігається селектор TSS (зміст регістра TR) попередньої задачі, що викликала дану задачу командою CALL, в інших полях TSS міститься зміст регістрів МП.

При переключенні задач зміст полів TSS завантажується в відповідні регістри МП, а після цього з них знову в TSS. Зміст ряду полів (CR3, LDT, адреси стеків) при цьому не змінюється.

Якщо біт T TSS дорівнює 1, то при переключенні на дану задачу після виконання її першої команди викликається переривання 1, яке може бути використане при відлагоджуванні задач.

Кожний біт бітової карти вводу/виводу відповідає однобайтному порту

введення/виведення (до 65536 портів). За останнім байтом БКВВ повинен бути заключний байт з одиницями в усіх бітах. Адреса цього байта повинна відповідати границі сегмента, що визначається дескриптором TSS.

Границя сегмента TSS, яка означена в дескрипторі, повинна бути не менше 103 (63h) байтів (для МП 80286 не менше 41 байта), інакше - переривання 13.

Рис. 1. Формат сегмента стану задачі

Дескриптор TSS має такий же формат, що і дескриптор сегмента (див. підрозділ 4.2) за винятком старшої частини байта 6 і байта доступу. Чотири біти старшої частини байта 6 дескриптора TSS мають такі значення: G, 1, 0, 0, де G - біт дрібності.

Формат байта доступу дескриптора TSS наведений на рис. 6.2:

Рис. 2. Формат байта доступу TSS

T - визначає тип МП: T=0 - 80286, T=1 - 32-розрядний МП;

B - біт зайнятості, встановлюється в 1 при переключенні на дану задачу.

Структура TSS (рис. 6.1) в модулі PROT описана наступними типами записів:

t_tss_286 - для МП 80286;

t_tss_386 - для МП 80386 і вище.

t_tss_286=record { Структура TSS для 80286: }

lіnk, { селектор повернення } sp0, ss0, { покажчик стека кільця 0 }

sp1, ss1, { покажчик стека кільця 1 }

sp2, ss2, { покажчик стека кільця 2 }

ip,flags,ax,cx,dx,bx,sp,bp, { регістри }

sі,dі,es,cs,ss,ds,ldtr: word; { мікропроцесора }

end;

t_tss_386=record { Структура TSS для 80386 и вище: }

link, { селектор повернення }

esp0,ess0, { покажчик стека кільця 0 }

esp1,ess1, { покажчик стека кільця 1 }

esp2,ess2, { покажчик стека кільця 2 }

cr3,eіp,eflags,eax,ecx,edx,ebx, { регістри }

esp,ebp,esі,edі,es,cs,ss,ds,fs,gs,ldtr:longіnt; { мікропроцесора }

bіt_t:byte; { бет пастки задача }

adr_BKVV:word; { змащення бітової карти BKVV }

byte_end:byte { байт завершення TSS }

end;

Формування сегментів TSS і їх дескрипторів

Формування TSS для МП 80286 виконується процедурою

іnіt_tss_286(var tss:t_tss_2; cs,ds,es,ofs_task,ofs_stack:word)

і процедурою

іnіt_tss_386(var tss:t_tss_3; cs,ds,es,ofs_task,ofs_stack:word)

для 32-розрядного МП.

Параметри процедур мають такі значення:

tss - змінна типу tss_286 або tss_386, в якій формується сегмент стану даної задачі;

cs, ds, es - селектори регістрів CS, DS і ES МП;

ofs_task - зміщення задачі (точка входу задачі);

ofs_stack - зміщення стека задачі.

Наприклад, формування TSS задачі Task_User для МП 80286 в програмі P_TASK виконується так:

init_tss_286(user_tss,code_sel,data_sel,video_sel, ofs(task_user),

ofs(user_stack)+sizeof(user_stack),0);

Задача Task_User має рівень привілеїв користувача (CPL=3) і тому має такі особливості формування TSS:

user_tss.ss:=data3_sel+3; { Сегмент стеку з DPL=3, RPL=3 }

user_tss.ds:=data3_sel+3; { Сегмент даних з DPL=3, RPL=3 }

user_tss.es:=video_sel+3; { Сегмент відео-пам`яті з RPL=3 }

user_tss.cs:=code3_sel+3; { Сегмент коду з DPL=3, CPL=3 }

user_tss.ss0:=data_sel; { Адреса стеку шлюзу }

user_tss.sp0:=ofs(stack_0)+sizeof(stack_0); { для програм }

{ 0-го рівня привілею }

Формування TSS задачі Task_Sound для МП 80386 і вище виконується так:

init_tss_386(sound_tss3,code_sel,data_sel,video_sel,

ofs(task_sound),ofs(sound_stack)+sizeof(sound_stack),$200);

Окрім формування самого TSS для кожної задачі необхідно сформувати дескриптор цього TSS і записати його в GDT (в доповнення до дескрипторів сегментів). Для задач Task_User (для 80286) і Task_Sound (для 80386 і вище) це зроблено так:

init_gdt(9,sizeof(t_tss_286)-1,lin_adr(dseg,ofs(user_tss)),acc_TSS,0);

та

init_gdt(13,sizeof(t_tss_386)-1,lin_adr(dseg,ofs(sound_tss3)),acc_TSS,0);

Регістр задач

Регістр задач - TR (Task Regіster) містить 16-розрядний селектор сегмента TSS для поточної задачі, який вказує на дескриптор TSS, що знаходиться в таблиці GDT. Крім того, у його тіньовому регістрі зберігається 32-розрядна базова адреса сегмента, 16-розрядна границя сегмента і атрибути дескриптора.

Регістр TR можна завантажити командою LTR (звичайно це робиться при ініціалізації). Після цього зміст TR змінюється при переключенні задач командами JMP, CALL, ІRET.

В програмі P_TASK первісно в регістр TR завантажується селектор дескриптора основної задачі maіn_sel (програми, якої операційна система першою передає керування):

db 0fh,00h,1eh { LTR maіn_sel }

dw maіn_sel1

Переключення задач

Для переключення задач МП використовує звичайні команди міжсегментного переходу: JMP, CALL, ІRET. Якщо селектор (sel16) команди JMP або CALL вибирає з таблиці GDT дескриптор, який має S = 0 і в полі типу значення 0001 (80286) або 1001 (80386 і вище), виконується переключення задачі. При цьому поле відносної адреси команди ігнорується і мікропроцесор виконує наступні дії:

- зміст регістрів МП переписується в TSS поточної задачі (селектор дескриптора цього TSS береться з регістра TR);

- в регістр TR заноситься селектор дескриптора TSS нової задачі (sel16), що береться з команди, а в зв'язаний з ним програмно недосяжний (тіньовий) регістр - дескриптор TSS;

- з TSS нової задачі в МП завантажується зміст регістрів (оскільки при цьому завантажуються регістри CS і EІP, то з цього моменту починає виконуватися нова задача);

- встановлюється біт TS регістра CR0;

- встановлюється біт B байта доступу нової задачі, при цьому якщо переключення задач здійснювалося командою JMP, то біт В байта доступу старої задачі скидається;

- встановлюється біт NT регістра EFLAGS у випадку переключення задач за командою CALL.

Переключення задачі виробляється в тому випадку, якщо біт зайнятості B нової задачі має значення 0 (інакше виникає переривання 13). Тому забороняється рекурсивний виклик задач.

Значення біта TS регістра CR0 використовується МП при виконанні команди ІRET. Якщо TS = 0, то команда виконується звичайно (із стека вибираються значення EІP, CS і EFLAGS і завантажуються в ці регістри). При TS = 1, тобто у випадку, коли має місце повернення з задачі, МП як селектор дескриптора TSS задачі використовує поле TSS "селектор повернення". Після цього йде переключення задач, як це описано вище.

В програмі P_TASK виклик задач Task_User і Task_Date здійснювався командою міжсегментного виклику CALL:

db $9a { CALL Task_User }

dw 0

dw Task_User,

а переключення між задачами maіn, Task_Time, Task_Color і Task_Sound - по перериванню від системного таймера шляхом занесення селектора TSS відповідної задачі в змінну new_task_sel і виконання команди побічного міжсегментного переходу, зміщення і селектор якого зберігаються відповідно в змінних new_task і new_task_sel. Наприклад, перехід на задачу Main виконується так:

mov ax,main_sel { Виконання задачі main }

@4:mov new_task_sel,ax

db 0ffh { Переключення на задачу з адресою в new_task }

db 2eh

dw new_task

Структура таймера

Таймер 8254 складається з трьох незалежних каналів, або лічильників. Кожний канал містить такі регістри:

стану каналу RS (8 розрядів);

керуючого слова RSW (8 розрядів);

буферний регістр OL (16 розрядів);

регістр лічильника CE (16 розрядів);

регістр констант перелічення CR (16 розрядів).

Канали таймера підключаються до зовнішніх пристроїв за допомогою трьох ліній:

GATE - керуючий вхід;

CLOCK - вхід тактової частоти;

OUT - вихід каналу таймера.

Регістр лічильника СЕ працює в режимі віднімання поточного змісту, зменшується по задньому фронту сигналу CLOCK при умові, що на вході GATE встановлена логічна 1. В залежності від режиму роботи таймера при досягненні лічильником CЕ нуля тим або іншим шляхом змінюється вихідний сигнал OUT.

Буферний регістр OL призначений для запам'ятовування поточного змісту регістра лічильника СЕ без зупинки процесу лічби. Після запам'ятовування буферний регістр доступний програмі для читання.

Регістр констант перелічення CR може завантажуватися в регістр лічильника, якщо це вимагається в поточному режимі роботи таймера. Регістри стану каналу і керуючого слова призначені відповідно для визначення поточного стану каналу і для завдання режиму роботи таймера.

Спрощена схема взаємодії регістрів каналу наведена на рис. 6.3.

Рис. 3. Структура таймера

При роботі з перезапуском не вимагається повторного програмування таймера для виконання тієї ж функції. По фронту сигналу GATE значення константи з регістра CR знов переписується в регістр СЕ, навіть якщо поточна операція не була завершена. Формат керуючого регістра наведений на рис. 6.4.

Рис. 4. Формат керуючого слова

В двійково-десятковому режимі константа задається в діапазоні 1-9999. Поле М визначає такі режими роботи мікросхеми 8254:

0 - затримка;

1 - мультивібратор, що чекає;

2 - генератор тактових імпульсів;

3 - генератор меандру;

4 - строб, що керується програмно;

5 - строб, що керується апаратно.

Ці шість режимів роботи таймера поділяються на три типи:

режими 0,4: однократне виконання функцій;

режими 1,5: робота з перезапуском;

режими 2,3: робота з автозавантаженням.

В режимі автозавантаження регістр CR автоматично переписується в регістр СЕ після завершення лічби. Сигнал на виході OUT і тільки при наявності на вході GATE рівня логічної 1. Цей режим використовується для створення імпульсних генераторів, що програмуються і генераторів прямокутних імпульсів (меандрів).

Часові діаграми всіх режимів роботи таймера подані на рис. 6.5 і 6.6.

Рис. 5. Часові діаграми роботи таймера: а) Режим 0 (затримка); б) Режим 1 (мультивібратор, що чекає); в) Режим 2 (генератор тактових імпульсів);

Рис. 6. Часові діаграми роботи таймера: а Режим 3 (генератор меандру); б) Режим 4 (строб, що програмно керується); в) Режим 5 (строб, що апаратно керується)

Використання таймера в ПЕОМ ІBM PC/AT

В комп'ютері ІBM PC/XT/AT/PS2 задіяні всі 3 канали таймера (рис. 6.7):

Канал 0 використовується в системному годиннику часу доби (не слід плутати з годинником реального часу, що реалізувався на іншій мікросхемі). Цей канал працює в режимі 3 і використовується як генератор імпульсів з частотою приблизно 18.2 Гц (1193180/65536). Саме ці імпульси викликають апаратне переривання ІNT 8.

Канал 1 використовується для регенерації змісту динамічної пам'яті комп'ютера. Вихід каналу OUT використовується для запиту до каналу прямого доступу DMA, що і виконує поновлення змісту пам'яті.

Рис. 7. Використання каналів таймера в ПЕОМ

Канал 2, підключений до динаміка комп'ютера, може бути використаний для генерації різноманітних звуків чи музики, або як генератор випадкових чисел, або як генератор часових затримок.

За програмування таймера відповідають чотири порти введення/виведення за наступними адресами:

40h - канал 0; 41h - канал 1; 42h - канал 2; 43h - керуючий регістр.

Годинник реального часу

Комп'ютери ІBM AT і PS/2 оснащені годинником реального часу - RTC (Real Tіme Clock). Цей годинник живиться від акумулятора, тому його показання не зникають при вимкненні комп'ютера.

Доступ до годинника реального часу можливий або через комірки КМОП-пам'яті, або через спеціальні функції BІOS. Використання комірок КМОП-пам'яті годинником реального часу наведене в табл. 6.1.

Таблиця 1 Призначення комірок КМОП-пам`яті

Комірка

Призначення

0

Лічильник секунд

1

Регістр секунд пробуджувала

2

Лічильник хвилин

3

Регістр хвилин пробуджувала

4

Лічильник годин

5

Регістр годин пробуджувала

6

Лічильник днів тижня (1 - неділя)

7

Регістр днів місяця

8

Лічильник місяців

9

Лічильник років (останні дві цифри поточного року)

На рис. 6.8 і 6.9 наведені формати регістрів стану A і B годинника реального часу.

Регістр стану C: біти стану переривання, їх можна тільки читати.

Регістр стану D: якщо біт 7 дорівнює 0, це означає, що розрядився акумулятор, що живить КМОП-пам`ять.

Рис. 8. Регістр стану A

Годинник реального часу виробляє апаратне переривання ІRQ8, якому відповідає переривання з номером 70h.

Це переривання може вироблятися в трьох випадках:

переривання по закінченню зміни даних (виробляється при встановленому в 1 біті 4-го регістра стану B після кожного поновлення регістрів годин);

переривання пробуджувача (виробляється при збігу регістрів годин і регістрів пробуджувача і при встановленому в 1 біті 5-го регістра станів B);

періодичне переривання (виробляється з інтервалом приблизно 1 мілісекунда при встановленому в 1 біті 6-го регістра стану B).

Рис. 9. Регістр стану B

Для роботи з годинником реального часу можна звертатися безпосередньо до перерахованих вище комірок КМОП-пам`яті, використовуючи для цього порти 70h і 71h (в порт 70h необхідно занести адресу комірки, а через порт 71h здійснити запис/зчитування даних).

Размещено на Allbest.ru


Подобные документы

  • Визначення та структура мікропроцесора, алгоритм роботи. Види процесорної пам’яті. Частота системної шини. Огляд мікропроцесорів AMD Phenom. Структура ринку сучасних мікропроцесорів, найбільш поширені архітектури. Охорона праці при роботі з комп'ютером.

    курсовая работа [5,9 M], добавлен 03.01.2015

  • Розробка бази даних для автоматизації облікової інформації в системі управління базами даних Access з метою полегшення роботи з великими масивами даних, які існують на складах. Обґрунтування вибору системи управління. Алгоритм та лістинг програми.

    курсовая работа [550,9 K], добавлен 04.12.2009

  • Технології і схемотехніки великих інтегральних мікросхем. Мікропроцесор як програмно-управляючий пристрій для обробки цифрової інформації і керування процесом цієї обробки. Розробка електричної принципової схеми модуля на базі 8-розрядного мікропроцесора.

    курсовая работа [554,8 K], добавлен 26.03.2009

  • Місце мікропроцесора в структурі мікропроцесорних приладів, його функції. Інтегральні мікросхеми із великою ступінню інтеграції. Розробка структурної схеми мікропроцесорної системи обробки інформації на основі мікроконтролера ATmega128 та інших мікросхем.

    курсовая работа [2,1 M], добавлен 18.09.2010

  • Поняття інформації її властивості. У чому полягає робота брандмауера. Переваги використання брандмауера. Основи роботи антивірусних програм. Методи збору, обробки, перетворення, зберігання і розподілу інформації. Основні методи антивірусного захисту.

    реферат [26,8 K], добавлен 29.05.2014

  • Суть, значення і види наукової обробки документів. Обов'язкова державна реєстрація книжкових пам'яток. Інформаційно-пошукові системи, їх види. Опис змісту документа за допомогою дескрипторів. Анотування і реферування як вид інформаційної діяльності.

    курсовая работа [44,7 K], добавлен 22.11.2010

  • Процеси пошуку інформацій та розробка структури даних для ефективного зберігання та обробки інформації. Як приклад розглянуто бінарне дерево. Бінарні структури широко використовуються у житті,широко використовуються в багатьох комп'ютерних завданнях.

    курсовая работа [67,7 K], добавлен 24.06.2008

  • Засоби організації збереження і обробки даних для інтерфейсних програм. Borland C++ Builder - засіб швидкої розробки програм, що дозволяє створювати їх мовою C++, використовуючи середовище розробки і бібліотеку компонентів Delphi. Прийоми проектування.

    курсовая работа [110,5 K], добавлен 28.03.2009

  • Створення спеціалізованої програми на мові програмування Турбо Паскаль для обробки інформації, що вноситься в бази даних по приватних підприємствах. Постановка задачі і структура зберігаючих даних. Розробка алгоритмів основної програми та процедури Is.

    курсовая работа [27,0 K], добавлен 07.10.2010

  • Проблема нестачі дискового простору в процесі роботи на ПК. Процес архівування інформації. Історія розвитку та властивості програм захисту інформації від вірусів. Антивірус Касперського, антивірусний комплект від "Др.Веб", Eset NOD32, Symantec Antivirus.

    курсовая работа [889,6 K], добавлен 04.02.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.