Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание диспетчера процессов, нужна любая помощь 
:(
    Опции темы
Fixin
Дата 4.9.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



PM MAIL ICQ   Вверх
Romikgy
Дата 4.9.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(Partizan @  4.9.2006,  21:25 Найти цитируемый пост)
к слову: предмет называется "Операционные системы" и на лабах действительно пишем некоторые из компонентов ОС.... 

Имхо если вы пишете компоненты к оси, то ты смазал поминимуму разделом, по максимуму форумом,
потому как раздел про Win API т.е. то что юзает сама ось винда,
и переключение между задачами в ней уже встроенно ,
ежели ты пишешь для своей (или виртуальной) оси этот компонент , тогда те надо курить по процессорам , что  и как происходит при переключении между задачами, имхо здесь это не обсуждается, хотя могу и ошибаться
Да и вам на парах ведь тоже чтото рассказывают, так что зубрите предмет

Добавлено @ 22:37 
Цитата(Partizan @  4.9.2006,  21:32 Найти цитируемый пост)
ну давайте условимся что я пишу под MS-DOS...это вас устроит?

имхо дос не много задачная smile

Добавлено @ 22:38 
хотя там какой то библой и поднималась данная вещь


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Greeen
Дата 4.9.2006, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: нет
Всего: 18



Partizan, да сложно понять вообще о чем речь. Тема звучит "Создание диспетчера процессов". Fixin тебе дал немало ссылок. Функции тоже подсказали. Что за процессы-то ты определись.
А как ты вообще в MSDOS собираешься сообразить многозадачность  smile 


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
SergeCpp
Дата 4.9.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 10
Всего: 124



PM MAIL WWW ICQ   Вверх
Partizan
Дата 4.9.2006, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



ребят....вот есть методические указания....

Порядок работы:

1.    Перехватывание прерывание 08h.

В MS-DOS переопределение стандартного прерывания производится следующим образом: 
•    Получить адрес старого обработчика.
•    Установить новый обработчик.
•    Выполнить программу.
•    восстановить старый обработчик.
Получаем адрес старого обработчика. Таблица векторов прерывания находится с адреса 0000:0000 и имеет 256 элементов (по количеству прерываний). Каждый элемент таблицы - 4-ех байтный вектор - адрес процедуры обработчика. 
Для получения адреса старого прерывания можно воспользоваться функцией Си: getvect.
Входной параметр – номер прерывания, в данном случае 0x08.
Выходной параметр – указатель на текущую процедуру обработчика прерывания.
Устанавливаем новый обработчик. Для установки адреса нового прерывания можно воспользоваться функцией Си: setvect. 
Входные параметры:
•    номер прерывания, в данном случае 0x08;
•    имя процедуры или указатель на неё.
Выходных параметров нет.

2.    Новый обработчик прерывания.

Основные действия, производимые новым обработчиком:
•    Отключить прерывания, во избежание прерывания диспетчера самим собой.
•    Сохранить адрес стека текущей задачи, регистры сохраняются автоматически (при использовании языков высокого уровня ).
•    Вызвать старый обработчик прерываний, во избежание «потери времени».
•    Вызвать менеджер процессов (Лабораторная работа №2), для определения процесса, на который необходимо переключиться.
•    Записать в регистры стека, адрес стека новой задачи.
•    Закончить обработчик, регистры восстанавливаются автоматически (при использовании языков высокого уровня).
Отключение прерываний в Си возможно с помощью функции disable() или в любом языке с помощью ассемблерной вставки: asm{cli}.
Адрес вершины стека определяется  регистрами SS (сегмент стека, в данном случае идентичен, сегменту кода – регистр CS) и SP (смещение стека). Т.к. SS=CS=Сегмент_с_загруженной_задачей, то сохранять (но восстанавливать обязательно) SS необязательно, т.к. CS должен храниться в дескрипторе процесса. Доступ к этим регистрам в Си возможен с помощью предопределенных переменных _SS и _SP (и на запись и на чтение) или  в любом языке с помощью ассемблерной вставки: asm{mov ваша_переменная,sp} на чтении, asm{mov sp, ваша_переменная} на запись. 
Включение прерываний в Си возможно с помощью функции enable() или в любом языке с помощью ассемблерной вставки: asm{sti}.


НО!!!! мне мало чего из этого понятно поэтому я и решил спросить здесь о ТЕХНОЛОГИЯХ НАПИСАНИЯ ПОДОБНЫХ ВЕЩЕЙ

Добавлено @ 23:29 
То, что дал SergeCpp некоторое прояснило....но всё-же...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Fixin
Дата 4.9.2006, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



фигассе. а где вы учитесь?
PM MAIL ICQ   Вверх
Partizan
Дата 4.9.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



хм....в Чувашском Гос. Университете на стециальности Вычислительные машины, комплексы системы и сети....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Romikgy
Дата 5.9.2006, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(Partizan @  4.9.2006,  22:20 Найти цитируемый пост)
В MS-DOS переопределение стандартного прерывания производится следующим образом

еще раз какое это отношение имеет к вин апи?

Добавлено @ 00:11 
Да и плюс ко всему, я так понимаю тему надо в асм засунуть , может там чет посоветуют smile хотя больше похоже на центр помощи


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
dumb
Дата 5.9.2006, 04:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



эту тему надо переносить в Asm win/dos.

один из самых важных моментов в этой задаче - ограничения на переключаемые "процессы".
PM MAIL   Вверх
Partizan
Дата 5.9.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



Хорошо..перенесите туда, где могут помочь.....форум называется системное программирование....думаю это оно и есть )...

всем спасибо, кто откликнулся...тогда жду переноса темы куда следует....

з.ы. где матчасть найти?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
SergeCpp
Дата 5.9.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 10
Всего: 124



Кстати, весьма опасно, если во время перехвата таймера выполняется что-либо внутри DOS'а...

Попробую поискать сейчас...

У Зубкова, например, описано...

P.S. Сталкивался с этой проблемой лично. Писал кое-что...

Вот, нашёл...
smile Первая же ссылка в Google...

Найденное целиком

Это сообщение отредактировал(а) SergeCpp - 5.9.2006, 14:51
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.