Реферат по предмету "Информатика, программирование"


Cache': перехват текущего устройства

Евгений Каратаев
Этазаметка описывает программный перехват ввода-вывода текущего устройства вCache'. Неудобство стандартных устройств mumps, а точнее определенного ихповедения состоит в том, что если выполняется программный код, осуществляющийввод-вывод через него, то этот процесс сторонним кодом неуправляем иначе какустановкой возможных опций устройству. В то время как в некоторых случаях оченьнужно иметь возможность выполнить так называемый унаследованный (legacy) код,который оперирует текущим устройством, но при этом в самих операцияхввода-вывода произвести дополнительные действия.
Ситуацияпримерно аналогична вводу-выводу в сишном стиле и в стиле C++, когда в первомслучае мы можем открыть файл и передать его коду, а во втором случае мы можемсоздать объект ввода-вывода и переопределить для него операции чтения — записи.
Дляперехвата операций ввода-вывода текущего устройства нужно
Сделатьотдельную рутину, в которой прописать функции, вызываемые при операцияхввода-вывода.
Указатьтекущему устройству эту рутину как мнемоническую в команде use
Включитьперенаправление для текущего устройства
Вфункциях переопределяющих операции ввода-вывода можно использовать штатноеповедение текущего устройства если отключить перенаправление и при выходе изобработчика снова его включить.
Рутина-перехватчикдолжна реализовать на свое усмотрение метки rstr(len,to) Чтение с опциональным указанием заданной длины и таймаута rchr(to) Чтение номера символа wstr(expr) Запись строки W expr wchr(expr) Запись символа W *expr wtab(expr) Запись пропуска W ?expr wnl Перевод строки W ! wff Очистка экрана W #
Шаблонрутины примерно такой:
rstr(len,to)
D$ZU(82,12,0)
if $D(len)&&$D(to) d
.; перехват
. R data#len:to
e i $D(len) d
.; перехват
. R data#len
e i $D(to) d
.; перехват
. R data:to
e d
.; перехват
.R data  
D$ZU(82,12,1)
;перехват
Q $G(data)
rchr(to)
D $ZU(82,12,0)
i $d(to)
.; перехват
. R *data:to
.; перехват
e d
.; перехват
.R *data
.; перехват
D$ZU(82,12,1)
; перехват
Q data
// W expr
wstr(expr) 
D $ZU(82,12,0)
; перехват
W expr
D $ZU(82,12,1)
Q
// W *expr
wchr(expr) 
D $ZU(82,12,0)
; перехват
W *expr
D $ZU(82,12,1)
Q
// W ?expr
wtab(expr)
D $ZU(82,12,0)
; перехват
W ?expr
D $ZU(82,12,1)
Q
// W !
wnl
D $ZU(82,12,0)
; перехват
W ! 
D $ZU(82,12,1)
Q
// W #
wff
D $ZU(82,12,0)
;перехват
W#  
D$ZU(82,12,1)
Q
Послечего можно пользоваться, указывая прехватчик:  
udev::"^ИМЯРУТИНЫ"; указываем какую мнемонику использовать
D$ZU(82,12,1); реально включаем флаг использования
dnormal() ; что будет писать в текущий девайс
D$ZU(82,12,0); перед закрытием девайса возвращаем флажок
cdev
Кромепрограммного назначения перехвата для обработки вывода наследованного кодаможно использовать также и другие возможности: спулер, запись-чтение внешнихфайлов, межпроцессное взаимодействие.
Список литературы
Дляподготовки данной работы были использованы материалы с сайта karataev.nm.ru/


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.