Отговори на тема  [ 18 мнения ]  Отиди на страница Предишна  1, 2
ARM assembler to C 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: ARM assembler to C
palavrov написа:
Извинявай - грешно съм се изразил - исках да напиша, че и моето е с preemptivе multitasking


Не, твоето не е preemtive a cooperative:-)

За preemptive ти трябват поне 2 неща:
1) Критерий по който динамично да решаваш дали да има preemption или да няма.
2) Възможност да направиш превключване без да искаш съгласие от нишката, която губи контрол.

Пример - имаш нишка, която трябва да изчака таймоут или някаква периферия. Тук нишката доброволно се отказва от CPU-то - няма проблем. Проблемът е, че след като изтече таймоута или периферията е готова (IRQ) трябва да събудиш нишката и да решиш дали да й подадеш управлението (веднага) или само да я сложиш в списъка с искащи управление. Ти нямаш нито приоритет нито друг механизъм по който да решиш (динамично) дали ще й дадеш управление. Но дори и да имаше (1) нямаш второто условие, т.е. дори и да искаш да я събудиш не можеш, защото в момента ти се изпълнява някаква друга нишка, която си ползва всички регистри. А ти няма как да спасиш всички регистри, щото на мястото на R2 пишеш CPSR.
Просто не става... в най-добрия случай можеш само да добавиш нишката в списъка на готовите, но не можеш да й подадеш контрола *веднага*. Тя ще получи управление едва когато текущата направи yeld. Затова този подход се нарича cooperative а не preemptive ;-)


Пет Мар 30, 2012 9:59 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: ARM assembler to C
Това, че нишката може доброволно да превключи на следващия таск в списъка не пречи шедулера да я превключи насила - просто е на друго място, в прекъсването на таймера. Това, че в R2 се записва CPSR си го е решил GCC - избрал си е някой свободен регистър.

_________________
Мразя да мразя ...


Съб Мар 31, 2012 12:48 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: ARM assembler to C
Виж сега, аз мисля че добре разбирам какво си направил... а то определено НЕ Е PREEMPTIVE!
Умишлено не го превеждам тоя термин въпреки че не обичам чуждиците.


Съб Мар 31, 2012 12:26 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 18 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни