реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Прерывания (help)
Vitёk
сообщение May 11 2005, 11:06
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 17-01-05
Из: Ростов-на-Дону
Пользователь №: 2 018



В своё время делал примерно такую же вещь, как у Вас. Проблему конфликта прерываний решил просто:
1. при получении прерывания просто взводил флажок (позднее написал менеджер соощений);
2. основная программа после завершения всех необходимых операций усыплялась инструкцией asm HALT. Проц просыпался после взведения любого прерывания, в т.ч. и интересующего меня. После его пробуждения выполнялись обработчики прерываний (невидимо для основной программы), после чего достаточно было проанализировать флажки, и при необходимости слить буфера.
Вообще, заниматься дисковыми операциями из-под обработчика прерывания - очень скользкая и малопредсказуемая штука. Возможны конфликты - что у Вас время от времени и происходит. Мой Вам совет - пользуйтесь механизмами флажков или сообщений между независимыми процессами.
ЗЫ: Если интересно, скажите - и я выложу свой менеджер сообщений. Штука примитивная, отлаженная и нормально работающая.


--------------------
/* Всё хорошо в меру. */
Go to the top of the page
 
+Quote Post
rmihail
сообщение May 12 2005, 02:38
Сообщение #17





Группа: Новичок
Сообщений: 10
Регистрация: 20-04-05
Пользователь №: 4 305



Да, очень интересно. Если можно выложите плизз сюда или на мыло: guest@gorodok.net.
Go to the top of the page
 
+Quote Post
VAI
сообщение May 12 2005, 04:00
Сообщение #18


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Я с такой проблемой сталкивался лет 15 назад. Задокументировано, но не помню где, какие функции ДОС можно вызывать из прерываний. Обращение к файловой системе не входит в их число.
У меня решение этой проблемы было подобно Вашему. Из прерываний писалось поочереди в 2 буфера, а в основной программе опрашивались флажки заполнения буфера, и происходила запись в файл.


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Vitёk
сообщение May 12 2005, 06:49
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 17-01-05
Из: Ростов-на-Дону
Пользователь №: 2 018



Выкладываю.
Там всё написано без комментариев, поэтому сейчас накропал текстовый файлик с кратким описанием. За давностью лет многое забылось, но основные моменты, думаю, я осветил. Там же есть образец использования этой штуки, надёрганный из двух (!) рабочих программ. Так что если найдёте там логические и прочие нестыковки - не удивляйтесь. blush.gif
Если возникнут вопросы - спрашивайте, буду отвечать. А вообще там всё трогательно просто, так что разобраться будет несложно.
Успехов! cool.gif
Прикрепленные файлы
Прикрепленный файл  messager.zip ( 3.15 килобайт ) Кол-во скачиваний: 42
 


--------------------
/* Всё хорошо в меру. */
Go to the top of the page
 
+Quote Post
rmihail
сообщение May 13 2005, 08:03
Сообщение #20





Группа: Новичок
Сообщений: 10
Регистрация: 20-04-05
Пользователь №: 4 305



Цитата(Vitёk @ May 12 2005, 09:49)
Выкладываю.
Там всё написано без комментариев, поэтому сейчас накропал текстовый файлик с кратким описанием. За давностью лет многое забылось, но основные моменты, думаю, я осветил. Там же есть образец использования этой штуки, надёрганный из двух (!) рабочих программ. Так что если найдёте там логические и прочие нестыковки - не удивляйтесь. blush.gif
Если возникнут вопросы - спрашивайте, буду отвечать. А вообще там всё трогательно просто, так что разобраться будет несложно.
Успехов!  cool.gif
*


Спасибо, проблему решил. smile.gif Вынес все процедуры считывания и записи из обработчика прерывания. Загнал их в бесконечный цикл (почти бесконечный ). В обработчике сделал флаг, когда считывать. Всё работает.
ЗЫ: За мессенджер особое спасибо. Поразбираюсь.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 17:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016