OSDev

для всех
Текущее время: 29 апр 2024, 04:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: TSS прерывания и т.п.
СообщениеДобавлено: 11 апр 2012, 02:00 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
всем доброговремени суток,

скажите пожалуйста как грузить TSS

команда LGDT воспринимает только 1 регистр,
скажите это означает что таблица TSS может находится где угодно, а в регистре должен находится offset таблици

команда LIDT тоже воспринимает 1 регистр,
но это же прерывание туда надо сообщить номер прерывания, и абсолютный адрес куда надо прыгнуть(JMP)
или как то оно по другому

и кстати где в tss сохраняется состояние задачи и где карта доступа i/o перенаправление прерываний

и ещё вопрос по TSS первые 8 селекторов заняты савсем не селекторами
Код:
base             size          DPL
0                0              0
0                0              0
c0000000                            32-bit code
c0000000                            32-bit data
0                BFFFFFFF      3    32-bit code
0                BFFFFFFF      3    32-bit data
0                0             0
0                0             0

что это такое не могу понять
дальше селекторы чередуются TSS, LDT причем первый из них почемуто пишется base 32-bit TSS


далее хотелось бы узнать про IRQ -- как его программировать
скажите хотя бы как переписать прерывание которое запускается или как узнать какое прерывание запускается,
функции
get_IRQ_INTER( IRQ_N) //return interupt number
set_IRQ_INTER( IRQ_N, INTERUPT)
(просто надо бы с клавиатурой и мышью подружиться)

как запускать задачи по таймеру т.е. программирование таймера
Код:
00000000060f9920 ffffff80 ffff6ff0 00000000 Real          3888274315         3888255676      0 2-ACTIVE                  EMT Yielder
00000000060f98a0 00000000 00000080 00000000 Real          3888274315         3888256653      0 2-ACTIVE                  CPU Load Timer
00000000060f8df0 00000000 fffe9cb0 00000000 VrSy                   0      1199864031601      0 2-ACTIVE                  ACPI PM Timer
00000000060f71b0 00000000 00000000 00000000 Virt                   0                  0      0 1-STOPPED                 USB Frame Timer
00000000060f59d0 00000000 00000000 00000000 Virt                   0            5000000      0 2-ACTIVE                  Audio timer
00000000060f5890 00000000 00000000 00000000 Virt                   0                  0      0 1-STOPPED                 SB16 timer
00000000060f5370 00000000 00000000 00000000 Virt                   0                  0      0 1-STOPPED                 PCNet Restore Timer
00000000060f52f0 00000000 00000000 00000000 Virt                   0                  0      0 1-STOPPED                 PCNet SoftInt Timer
00000000060f5270 00000000 00000000 00000000 Virt                   0                  0      0 1-STOPPED                 PCNet Poll Timer
00000000060f0910 00009010 00000000 00000000 Real          3888274315         3888255604      0 2-ACTIVE                  VGA Refresh Timer
00000000060e2aa0 00016350 fffff910 00000000 VrSy                   0          990000000      0 2-ACTIVE                  MC146818 RTC/CMOS - Second2
00000000060e2a20 00000000 00000000 00000000 VrSy                   0                  0      0 1-STOPPED                 MC146818 RTC/CMOS - Second
00000000060e29a0 00000000 00000000 00000000 VrSy                   0                  0      0 1-STOPPED                 MC146818 RTC/CMOS - Periodic
00000000060e23b0 000006f0 00000000 00000000 VrSy                   0           27462701     18 2-ACTIVE                  i8254 Programmable Interval Timer
00000000060e1950 00000000 00000000 00000000 VrSy                   0                  0      0 1-STOPPED                 APIC Timer #0
00000000060de820 00000000 00000000 00000000 Real          3888274316                  0      0 1-STOPPED                 BlkCache-Commit


Последний раз редактировалось scuter 11 апр 2012, 14:17, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSS прерывания и т.п.
СообщениеДобавлено: 11 апр 2012, 07:04 

Зарегистрирован: 28 янв 2012, 18:02
Сообщения: 29
Тебе для чего? Как глубоко будешь копать?
Просто интересно.


А вообше все ответы на твои вопросы в книге Зубова "Ассемблер для..."

Чтобы ответить по коду желательно знать откуда он.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSS прерывания и т.п.
СообщениеДобавлено: 11 апр 2012, 08:43 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Читайте. Статей много книг много.

http://sasm.narod.ru/docs/pm/pm_main.htm
http://ru.osdev.wikia.com/wiki/Intel_Manual_Part_3

Ошибочка, вы попутали регистры.
Регистр LDTR указывает на LDT, а не на TSS.
На TSS указывает регистр TR.
Вернее сказать так LDTR как и TR содержит селектор сегмента из таблицы дескрипторов. В этой таблице дескрипторов и находится смещение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSS прерывания и т.п.
СообщениеДобавлено: 11 апр 2012, 14:20 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
команда LDTR воспринимает только 1 регистр,

Для загрузки TR используется команда ltr:
Код:
ltr  ax

И в AX находится селектор TSS, а её дескриптор - в GDT.
Цитата:
команда LIDT тоже воспринимает 1 регистр

Тут грузится регистр, представляющий собой адрес таблицы и её предел. Сама таблица лежит в памяти и уже в ней описываются все прерывания. За подробным описанием - к документам Intel или AMD.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSS прерывания и т.п.
СообщениеДобавлено: 11 апр 2012, 14:52 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
tlx писал(а):
Тебе для чего? Как глубоко будешь копать?

для удавольствия.

tlx писал(а):
А вообше все ответы на твои вопросы в книге Зубова "Ассемблер для..."

что то ответов я там не нашёл.

pavia писал(а):
Ошибочка, вы попутали регистры.
Регистр LDTR указывает на LDT, а не на TSS.

да действительно перепутал(LGDT).
pavia писал(а):
На TSS указывает регистр TR.
Вернее сказать так LDTR как и TR содержит селектор сегмента из таблицы дескрипторов. В этой таблице дескрипторов и находится смещение.

то есть в таблице TSS хронятся указатели на 104 байта состояния задач,
ну а где хранится i/o map


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSS прерывания и т.п.
СообщениеДобавлено: 11 апр 2012, 15:47 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
то есть в таблице TSS хронятся указатели на 104 байта состояния задач,

Неа имелось в виду таблица GDT. В ней указан базовый адрес сегмента TSS

Вот читай.
том 3, глава 6, регистр задачи
Картинке найдёшь в оригинальном руководстве.

i/o map находиться вот где:
В сегмента TSS есть поле базового адреса карты в/в (I/O map) вот оно задает смещение карты считая от базы сегмента TSS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSS прерывания и т.п.
СообщениеДобавлено: 11 апр 2012, 16:29 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
pavia писал(а):
В сегмента TSS есть поле базового адреса карты в/в (I/O map) вот оно задает смещение карты считая от базы сегмента TSS.

то есть сначало идут TSS сегмент а потом карты (I/O map),

и в сегменте TSS пишется
Сегмент состояния задачи (TSS).
Описатель точки входа в задачу.
Описатель TSS.
Регистр задачи (Task register сокращённо TR).
Флаг NT из регистра EFLAGS.

только что нахоится в начале TSS
Код:
base             size          DPL
0                0              0
0                0              0
c0000000                            32-bit code
c0000000                            32-bit data
0                BFFFFFFF      3    32-bit code
0                BFFFFFFF      3    32-bit data
0                0             0
0                0             0

что это?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB