Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Eye On Ass— рейтинг популярности.onion сайтов, статистика по хитам (не путать.. DarkHost— Хостинг для тех,кто решил перейти на темную сторону. Естьразные тарифы и кастомные домены onion. Онлайн. hydra рабочее зеркало

Опит

Наївне рішення полягає в тому, що нам слід циклічно опитувати ознаку події (приклад 6.1). Це рішення добре не лише концептуальною простотою, але і тим, що якщо цикл опиту короткий, час реакції буде дуже маленьким. Тому такий метод нерідко використовують для обробки послідовностей подій, наступних один за одним з невеликим інтервалом. Проте це рішення, зване опитом (polling) має і великий недолік: завантаживши процесор опитом, ми не можемо зайняти його ніж би то не було іншим.

Приклад 6.1. Приклад використання режиму опиту

; Приведений фрагмент коди використовує опит таймера TMRO
; кварцевого генератора, що працює від "вартового", з частотою 32768гц.
; Цикл опиту в чистому вигляді TMRO — регістр таймера
; Timervalue — просто змінна
; регістр 0 — акумулятор, що позначається також як W.
; Такий цикл чекає одного відліку таймера.
MOVF TMRO, 0
MOVWF Timervalue
G5h_continuel
MOVF Timervalue, 0
SUBWF TMRO, 0
BNZ G5h_continuel
; Код містить два цикли опиту: перший цикл генерує ; сигнал високої напруги, другий, — низького.
; В результаті виходить періодичний сигнал, званий меандром.
; Фрагмент визначника номера на основі мікроконтроллера PIC
; (с) 1996, Дмитро Іртегов.
; Запит до АТС но видачу номера.
; Генератор меандра з частотою 501.5 гц. Видає 50 періодів (100 мс).
; генерує 2 періоди по 16 тиків і один — по 17.
; Виходить дуже схоже.
6enerate500hz
MOVLW 50
MOVWF Aonbytecounter
MOVLW 3
MOVWF Tmpl
MOVF TMRO, 0
MOVWF Timervalue G5h_nextperiod
MOVLW 8
ADDWF Timervalue, 1
BSF Line_ctl_port, Line_answer G5h_continuel
MOVF Timervalue, 0
SUBWF TMRO, 0
BNZ G5h_continuel
MOVLW 8
ADDWF Timervalue, 1
BCF Line_ctl_port, Line_answer
DECFSZ Tmpl, 1 Goto G5h_continueo
MOVLW 3
MOVWF Tmpl
INCF Timervalue, 1 G5h_continueo
MOVF Timervalue, 0
SUBWF TMRO, 0
BNZ Gsh_continueo
DECFSZ Aonbytecounter, 1 Goto G5h_nextperiod
Return

Цей недолік можна переформуліровать і інакше: якщо процесор зайнятий Чимось іншим, він може дізнатися про подію, лише завершивши поточну Діяльність. Якщо подія дійсно важлива, втім, ми можемо розставити команди перевірки його ознаки за всім кодом програми, але для складних програм, оброблювальних багато різних подій, це рішення навряд чи можна вважати практичним.
З точки зору вбудовуваних застосувань, режим опиту має ще один істотний недолік: опитуючий процесор не можна вимкнути В той же час, вимкнений процесор споживає значно менше енергії і не створює електромагнітних перешкод, тому при розробці програм для таких застосувань вважається хорошим тоном вимикати (переводити в режим чекання) процесор завжди, коли це можливо. В цьому випадку звичайно, необхідно передбачити які-небудь засоби для виведення процесора з цього достатку при виникненні події, що цікавить нас.

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017