реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> VxWorks, пофлудим немного...
beer_warrior
сообщение Jan 23 2008, 12:54
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Доброго времени суток господа!
Вот уже неделю, как изучаю сабжевую систему, а к пониманию не приблизился.
Нет, конечно прикладной софт на нее я уже писать смогу, но без понимания философии системы это дурное дело.
Вот приблизительный список нескладух:
1.Переключение задач или вытесняющее или раунд-робин. Если есть вытеснение, зачем карусель?
2.Отсутсвует защита памяти, но зато есть управление виртуальной.
3.Изумительные вызовы типа taskLock() и taskSafe(), чтобы если уже залочить задачу навеки, чтобы никто ее не снял и не вытеснил. Это особо интересно в контексте использования этой оси в критических приложениях.
4.Собственные вызовы типа taskSpawn() перемежаются со стандартными POSIX, тоже самое с объектами синхронизации.

Вобщем выглядит это похоже на ранние поделки Мелкософт. Но ведь система сертифицирована как супер-пупер надежная и устойчивая.
Кто-то может объяснить в чем тут дело?


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Andrew2000
сообщение Jan 23 2008, 15:22
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675



Цитата(beer_warrior @ Jan 23 2008, 15:54) *
1.Переключение задач или вытесняющее или раунд-робин. Если есть вытеснение, зачем карусель?
2.Отсутсвует защита памяти, но зато есть управление виртуальной.

1. А возможно такое - вытеснение по приоритетам, а если задачи на одном приоритете, то между ними карусель?
2. А не наоборот? Т.е. единое адресное пространство, но с возможностью защиты задач друг от друга.
(просто интересно)
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 23 2008, 15:31
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
1. А возможно такое - вытеснение по приоритетам, а если задачи на одном приоритете, то между ними карусель?

Возможно и так, но тогда зачем эту карусель включать-выключать?
Цитата
2. А не наоборот? Т.е. единое адресное пространство, но с возможностью защиты задач друг от друга.
(просто интересно)

In VxWorks, one important resource that is not part of a task's context is memory address space: all code executes in a single common address space. Giving each task its own memory space requires virtual-to-physical memory mapping, which is available only with the optional product VxVMI;

А как еще защитить, если не на уровне MMU? Софтварные защиты весьма условны.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Andrew2000
сообщение Jan 23 2008, 15:45
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675



Цитата(beer_warrior @ Jan 23 2008, 18:31) *
Возможно и так, но тогда зачем эту карусель включать-выключать?

Выключать, чтоб задачи сами контролировали когда отдавать управление, или через Time Slicing (если такое есть).

Цитата
In VxWorks, ..., which is available only with the optional product VxVMI;
А как еще защитить, если не на уровне MMU? Софтварные защиты весьма условны.

Ясно, ключевое слово "optional product VxVMI" - не знал про такой.
А некоторые микроконтроллеры не имеют аппаратных блоков MMU, зато имеют что-то типа memory overlay control (как например в моем "любимом" Tricore).

А такая просьба - скинте куда-нить доки на VxWorks (это вроде не секрет) - давно хотел посмотреть - что это за система.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 23 2008, 16:15
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Выключать, чтоб задачи сами контролировали когда отдавать управление, или через Time Slicing (если такое есть).

Есть-есть. Только чем Time Slicing лучше чем преэптивность?.
Цитата
зато имеют что-то типа memory overlay control (как например в моем "любимом" Tricore).

А с этого места подробней плз.

З.Ы.
доки здесь:
http://www.slac.stanford.edu/exp/glast/fli.../vxworks/guide/


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
grau
сообщение Jan 24 2008, 09:10
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 3-02-05
Пользователь №: 2 390



Цитата(beer_warrior @ Jan 23 2008, 15:54) *
Вобщем выглядит это похоже на ранние поделки Мелкософт. Но ведь система сертифицирована как супер-пупер надежная и устойчивая.
Кто-то может объяснить в чем тут дело?


Насколько понимаю, следует разделять ранние версии, до 6, и поздние. Первые действиетельно вызывали очень много нареканий. Последнии стали, вроде как, надежнее, но за такие деньги экспериментируют только если очень надо.
Go to the top of the page
 
+Quote Post
Andrew2000
сообщение Jan 24 2008, 10:54
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675



Цитата(beer_warrior @ Jan 23 2008, 19:15) *
Есть-есть. Только чем Time Slicing лучше чем преэптивность?

Preemption - вытеснение низкоприоритетной задачи когда появляется высокоприоритетная.
Round-robin - между задачами _одного_ приоритета.
Time Slicing - также между задачами _одного_ приоритета (альтернатива Round-robin) - максимальное кол-во тиков, пока может выполнятся задача, перед тем как задача с _таким же_ приоритетом получит управление (для каждой задачи задается отдельно).
(это я написал вспоминая Nuсlеus, но, похоже, с Vx они близнецы-братья)

Цитата
А с этого места подробней плз.

А какие тут подробности? Нет MMU, есть просто регистры в которых можно прописать границы, за которые программа не имет права вылезать при обращении к памяти, а границы эти менять в ядре при переключении задач.
"The TC1775 memory protection system specifies the addressable range and read/write
permissions of memory segments available to the currently executing task. The memory
protection system controls the position and range of addressable segments in memory.
It also controls the kinds of read and write operations allowed within addressable
memory segments. Any illegal memory access is detected by the memory protection
hardware, which then invokes the appropriate Trap Service Routine (TSR) to handle the
error."
(в прошлый раз чуть промахнулся - не "memory overlay", а "memory protection". memory overlay там немного для других целей)
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 24 2008, 12:32
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Preemption - вытеснение низкоприоритетной задачи когда появляется высокоприоритетная.
Round-robin - между задачами _одного_ приоритета.

Это я понимаю.
Но Р-Р, является включаемой опцией. Причем как я понял программной. Т.е. предполагается, что м.б. ситуация, когда задачи одного приоритета разруливаются, только по доброй воле программиста. Т.е. пока явно не сделан exit()/sleep()/suspend().В сочетаниии с taskLock() складываеться интересная ситуация - управление переключением отдано на откуп именно прикладному программисту. Мне всегда казалось, что одно из ключевых преимуществ ОС - автоматизация переключения задач, и обеспечение общей устойчивости системы при сбое одной из задач.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Jan 30 2008, 18:07
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Round-robin - вещь, в общем-то, ненужная. А почему сделана? Потому что - у всех есть,
а у нас в системе нет??? Конкуренты будут заявлять: "А у них нет Round-robin !!!" Вот и сделали...
Go to the top of the page
 
+Quote Post
tag
сообщение Jan 31 2008, 07:19
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561



Цитата(beer_warrior @ Jan 24 2008, 15:32) *
Это я понимаю.
Но Р-Р, является включаемой опцией. Причем как я понял программной. Т.е. предполагается, что м.б. ситуация, когда задачи одного приоритета разруливаются, только по доброй воле программиста. Т.е. пока явно не сделан exit()/sleep()/suspend().


...это нормальная ситуация для любой ОС. Time slicing поэтому и придумали.

Цитата(beer_warrior @ Jan 24 2008, 15:32) *
В сочетаниии с taskLock() складываеться интересная ситуация - управление переключением отдано на откуп именно прикладному программисту. Мне всегда казалось, что одно из ключевых преимуществ ОС - автоматизация переключения задач, и обеспечение общей устойчивости системы при сбое одной из задач.


...taskLock() отнюдь не способ управления переключением с целью переключения, а способ сохранения целостности данных
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 31 2008, 13:54
Сообщение #11


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Round-robin - вещь необходимейшая.
Приоритетной схемой можно обойтись только при малом количестве задач и несложном их администрировании.
Где есть WEB сервер, множественный доступ, многоканальное обслуживание и т.д. без Round-Robin, а вернее схемы равноприоритетного обслуживания задач выкрутится нельзя.


Цитата(yuri_t @ Jan 30 2008, 22:37) *
Round-robin - вещь, в общем-то, ненужная. А почему сделана? Потому что - у всех есть,
а у нас в системе нет??? Конкуренты будут заявлять: "А у них нет Round-robin !!!" Вот и сделали...
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Feb 2 2008, 18:10
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Давайте определимся с терминологией.

Round-robin - это когда задачи преключаются по таймеру, т.е работала себе задача и вдруг - сработал некий глобальный системный таймер и задача снята с исполнения - не потому, что ждет семафор или появления нового элемента в очереди и т.п. и не потому, что после прерывания задача с более высоким приоритетом стала активной, а просто потому, что истекло время, отведенное данной задаче на работу.

Так вот, такой механизм в real-time системах не нужен и, более того - вреден.

Если же нужно множество задач с одинаковым приоритетом - то нужно просто создать множество threads(tasks) c одинаковым приоритетом (но это не Round-robin !!!)
Go to the top of the page
 
+Quote Post
Andrew2000
сообщение Feb 2 2008, 21:04
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675



Цитата(yuri_t @ Feb 2 2008, 21:10) *
Если же нужно множество задач с одинаковым приоритетом - то нужно просто создать множество threads(tasks) c одинаковым приоритетом (но это не Round-robin !!!)

??? ничего не понял, поясните плиз, и как их переключать?
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Feb 3 2008, 09:27
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



Цитата(Andrew2000 @ Feb 3 2008, 00:04) *
??? ничего не понял, поясните плиз, и как их переключать?

А чего непонятного? задача конечно может работать сама по себе, но обычно она чего-то получает снаружи и чего-то наружу отдает. А это вызов сервисов с ожиданием.
Go to the top of the page
 
+Quote Post
vshemm
сообщение Feb 3 2008, 11:36
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



Преемптивность - это, как сказали, вытеснение текущей задачи как только появится высокоприоритетная задача. Маст хэв при нескольких приоритетах.

RR - это когда задачи одного приоритета по очереди поступают на выполнение, т.е. если порядок определен как 1-2-3, то после первой задачи всегда будет запускаться №2.

Переключение задач в RR может осуществляться как явно программистом (засыпание, ожидание, явный перешедулинг), так и самой системой с помощью TimeSlicing, когда задачам выдается квант времени, по истечении которого она вытеснится независимо от программиста.
TimeSlicing появился во времена, когда пользователи с помощью терминалов подключались к мейнфрейму и запускали свои расчеты. Т.о., каждому пользователю казалось, что он один работает с мейнфреймом (хотя и более медленным чем на самом деле).
Однако, если задача не вычислительная, а событийная (т.е. ждет событие - реагирует на него - опять впадает в ожидание), TimeSlicing усложняет жизнь, ага smile.gif

Цитата(beer_warrior @ Jan 23 2008, 15:54) *
...
3.Изумительные вызовы типа taskLock() и taskSafe(), чтобы если уже залочить задачу навеки, чтобы никто ее не снял и не вытеснил. Это особо интересно в контексте использования этой оси в критических приложениях.
4.Собственные вызовы типа taskSpawn() перемежаются со стандартными POSIX, тоже самое с объектами синхронизации.

Вобщем выглядит это похоже на ранние поделки Мелкософт. Но ведь система сертифицирована как супер-пупер надежная и устойчивая.
Кто-то может объяснить в чем тут дело?

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

4. Типичный бардак, обусловленный повышением производительности. POSIX вызовы - это, скорее всего, обертки для нейтивных функций, поэтому когда можно использовать нейтив вызовы - их и используют. Еще можно покурить доку на предмет их отличий smile.gif

А вообще, ОС не может быть супер-пупер надежной и устойчивой, т.к. эти характеристики больше зависят от программиста. В лучшем случае, система не будет мешать программисту и отвлекать его своими "багами" и "фичами". Так что к заявлениям маркетологов нужно относиться как к заявлениям маркетологов smile.gif
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 09:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016