OSDev

для всех
Текущее время: 26 апр 2024, 00:57

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




Форум закрыт Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 31 окт 2012, 10:16 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
При инициализации своих объектов задачи ставлю их в кольцо задач, и процессор BSP вместо простого зацикливания ставлю на постоянное хождение по кольцу задач и проверку бита на активацию по этому биту.
Основная активация конечно по прерываниям, но эта активация тоже очень пригодиться.
У объекта задача есть страница для каталога страниц и страница для стека процессора, плюс данные о уровне защиты и много чего ещё.
Вообще ядро буду делать как модуль для работы с объектами, т.к. главное в моей системе это стабильная работа задач, и настройка объектов (устройств, модулей, протоколов, форматов, ...).
Часть кода для настройки процессоров выглядит так:
Код:
            ;Синхронизация
@@:   bt    dword[SEMAPHORE],0
   jnc   @b            ;ожидание сброса бита занятости
   lock btr dword[SEMAPHORE],0      ;установка бита занятость для изменения общих регистров
   jnc   @b
      inc byte[sys_080]
      mov esp,0
   lock bts dword[SEMAPHORE],0      ;снятие бита занятости

   mov ecx,1Bh         ;включим APIC
   rdmsr
   bts eax,11
   wrmsr 
   mov eax,[0FEE00000h+20h]
   shr eax,24         ;номер lapic   
       
movzx edx,byte[sys_080] ;номер cpu
dec edx
mov ebp,cpusss+4096
shl edx,8
add ebp,edx
movzx edx,byte[sys_080] ;номер cpu

здесь объекты забиваю для процессора   
 
   mov ecx, 1Bh
   rdmsr
   bt eax, 8       ;Если процессор не BSP (bootstrap processor) то АР (application processor) и мы выходим.
   jc @f
sti
.0:
   hlt
jmp .0
@@:     
mov esp,cpusss+4096

call init_cpu   ;сообщение процессорам для пробуждения   
                      здесь код
jmp         в кольцо задач


Процессор BSP уходит на кольцо задач, а процессоры АР в hlt и ждут задания, причём они не имеют своего стека, а получают стек от задачи.
Для себя поставил цель сделать так, чтобы процессоры AP решали все проблемы задачи, и при активации задачи ей даётся свободный процессор или сам BSP идёт её выполнять.
Ещё будет работа нескольких процессоров над одной задачей (без стека)
Как известно процессоры быстрее не станут, а их количество будет расти.
Подробности писать не буду, если есть что добавить к алгоритму пишите, буду рад.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 окт 2012, 10:29 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Настраиваю сами объекты на запросы к устройствам, включения бита занятости и ожидания готовности.
Графические объекты будут запрашивать себя отрисовать, "звуковые" запрашивают себя проиграть и ждут команды о том, что уже проиграны, объекты данных будут себя подгружать с носителей или сохранять себя в сеть или на оборот и обратно. Причём всё идёт в одной задаче и выполняются задачи с большим количеством таких объектов параллельно.
Если не чёкнусь то доделаю, уже осталось не много.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 ноя 2012, 05:58 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Кстати придумал модель параллельной работы объектов.
Предположим есть первый процессор и остальные, первый не главный, т.к. всё может выполняться любым процессором. Объекты могут быть параллельные и нет, у параллельных есть свой стек, например ebp указывает на адрес объекта(его начало), а esp на конец объекта и там небольшой объём для стека и функции работающие с этим объектом используют этот стек.
У объекта есть управляющие биты, активен, не активен(запущен, или в ожидании и в этих случаях стек занят и сохранён его указатель), установка этих битов естественно синхронизирована для процессоров.
Объекты имеют свою задачу с адресным пространством в котором они работают, а у задачи стек для не параллельных объектов.
Смысл понятен, подробности писать не буду.

Модель очень параллельна и выигрыш во всех смыслах, но только я не могу понять почему её не используют, неужели всё так печально в параллельности систем?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 ноя 2012, 13:47 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
Модель очень параллельна и выигрыш во всех смыслах, но только я не могу понять почему её не используют, неужели всё так печально в параллельности систем?

Я был поражён как в ДОС всё летает на 2МГц(Мегагерцы - это не опечатка). А это однапроцесная ОС.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 ноя 2012, 14:52 

Зарегистрирован: 19 май 2011, 14:54
Сообщения: 73
Цитата:
Кстати придумал модель параллельной работы объектов.
Предположим есть первый процессор и остальные, первый не главный, т.к. всё может выполняться любым процессором. Объекты могут быть параллельные и нет, у параллельных есть свой стек, например ebp указывает на адрес объекта(его начало), а esp на конец объекта и там небольшой объём для стека и функции работающие с этим объектом используют этот стек.


Поймал себя на мысли, что если у вас в тексте заменить слово "объект", на "тред", то идея "объектов" начинает выглядеть вполне стандартной тредовой моделью с тред-специфик данными.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 дек 2012, 10:54 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
pavia писал(а):
Я был поражён как в ДОС всё летает на 2МГц(Мегагерцы - это не опечатка). А это однапроцесная ОС.

Есть некоторый недавний опыт работы под дос на 75МГц. Всё не так радостно когда графические какие-нибудь дела.
Даже в двухцветных видеорежимах вывод буковок (особенно через BIOS) - "ползает".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Форум закрыт Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 6 ] 

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


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

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


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

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