Важная информация

User Tag List

Страница 5 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 41 по 50 из 51

Тема: context switcher in new OS?

  1. #41
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А теперь предлагаю посчитать, сколько такой навернутый планировщик будет "кушать" сам. Не меньше 500-1000 тактов... Расточительно.

  2. #42
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex/AT
    А теперь предлагаю посчитать, сколько такой навернутый планировщик будет "кушать" сам. Не меньше 500-1000 тактов... Расточительно.
    посчитай сколько кушает обычная процедура обработки прерываний. с полным сохранением регистров (как обычно и делается). плюс чето там внутри работает типа музыки. а это все 3-5 тысяч тактов

  3. #43
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex/AT
    А теперь предлагаю посчитать, сколько такой навернутый планировщик будет "кушать" сам. Не меньше 500-1000 тактов... Расточительно.
    Согласен, но проект то открытый - не понравится так соберёшь своё ядро, которое будет проще и быстрей (зато может более глюкавое ).

    И потом, что можно на 500 тактов уместить - я не представляю, разве тока систему обработки прерывания с управлением неизменным списком потоков...
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  4. #44
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И потом, что можно на 500 тактов уместить - я не представляю, разве тока систему обработки прерывания с управлением неизменным списком потоков...
    Последнее (с изменяемым списком потоков!) у меня умещено на 300-400 тактов. Так что вполне нормально.

  5. #45
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex/AT
    Последнее (с изменяемым списком потоков!) у меня умещено на 300-400 тактов. Так что вполне нормально.
    300-400 тактов? Даёшь ядро на асме аттачем, оно должно быть не очень большим, посмотрю что можно на такое уместить...
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  6. #46
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    недавно чета мысля в голову стукнула как можно сделать поддержку семафоров без запрета прерываний достаточно быстрым методом.
    главная задача- в один шаг изменить значение запирающей общей ячейки памяти на "занято", получив при этом предыдущее значение. на z80 для этих целей прекрасно подходит команда dec (hl) (dec(ix/iy), inc (hl/ix/iy))

    вот примерный код семафора
    Код:
    spinlock db 1    ;1-free, other-busy
               db 0     ;for owner
    
    ...
    ld ix,spinlock
    call lock
    ...               ;do smth
    call unlock
    
    
    ...
    lock
          dec (ix)                ;A
          jr z,isfree              ;B
          inc (ix)
          call sleep
          jr lock
    isfree
          ld a,(pid)
          ld (ix+1),a
          ret
    
    unlock
          ld (ix),1
          ret
    единственная опасность, которую мне удалось рассмотреть, это если 255 процессов последовательно прервут друг друга между точками А и В. прежде чем кинуться считать такую вероятность, посчитайте вероятность простого запуска такого количества процессов %)


    http://3os.ru - довольно интересный проект. немного почитал, симпатишно, но одна мысля испортила все настроение. когда почитаете, поймете какая %)

  7. #46
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #47
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    300-400 тактов? Даёшь ядро на асме аттачем, оно должно быть не очень большим, посмотрю что можно на такое уместить...
    Я же даже тему создавал в "ОСЯХ". RTK называется

    P.S. Хочу отметить низкие ресурсные требования данной штуковины. На внутреннее переключение тасков уходит 156-195 тактов. На вызов RTK_TSLICE (отдача времени другим таскам) - 131 такт, на отдачу времени до следующего прерывания - вызов RTK_TIDLE - 164 такта. Итого имеем всего лишь от 287 до 359 тактов на фактическое переключение таска. Если в этот момент происходит отработка критического (синхронизированного) таска - еще 174/138 тактов, но это одноразово. На прерывание уходит тоже всего ничего - 272-296 тактов.
    Причем достаточно легко могу адаптировать эту штуковину под количество тасков > 8, без больших потерь во времени выполнения (порядка 40 тактов на 8 тасков).
    Последний раз редактировалось Alex/AT; 18.06.2005 в 09:24.

  9. #48
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    SEMAPH DB #80

    LD HL,SEMAPH
    SLA (HL)
    JP NC,LOCKED
    ... do something ...
    LD (HL),#80
    JP ...

    LOCKED ...

  10. #49
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex/AT
    По-моему, можно гораздо проще, классическим способом. Проанализировал, вроде затыков быть не должно. Прошу всех проанализировать:
    ну у меня тоже своего рода классический способ %) хотя у тебя изящней даже получилось %)

  11. #50
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2Alex/AT> я знаю что ты делал тему про Real Time Kernel (или как там правильней расшифровывается), однако неясно где исходники сего продукта, потому и спросил.

    И ещё, для спектрума система реального времени как таковая не очень нужна, а вот система с кооперативной многозадачностью было бы неплохо иметь...

    Насчёт указанных алгоритмов, на самом деле такой подход "не канает" по следующим соображениям: если семафор простой (т.е. проверяется только 1 байт), то нет никаких проблем, такие алгоритмы будут работать, однако если семафоры усложнятся (наверняка кстати) то придётся чтото придумывать. А точнее не придумывать а брать готовое. Обычно за семафоры (работу с ними) отвечает система, так вот когда управление переходит на п/п работы с семафорами, то ни один прикладной поток не может прервать работу этой п/п (так называемая критическая секция) - кроме может быть прерывания (int). Т.о. будет решён вопрос со сложными семафорами.
    Последний раз редактировалось GriV; 21.06.2005 в 16:41.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

Страница 5 из 6 ПерваяПервая 123456 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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