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

 
 
> Функции setjmp/longjmp
_Артём_
сообщение Jan 18 2012, 22:28
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Подумалось вдруг: а нельзя ли с помощью этих функций сделать нечто вреде кооперативной ОС?
Поискал в гугле, не нашёл подобного. Почему? Плохо искал или оно для этого не приспосабливаемо?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Jan 19 2012, 06:03
Сообщение #2


;
******

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



Цитата(_Артём_ @ Jan 19 2012, 01:28) *
Подумалось вдруг: а нельзя ли с помощью этих функций сделать нечто вреде кооперативной ОС?

Для кооперативной - слишком шикарно выходит. Зачем там нужен полный контекст?
Вот для примочек а-ля "вытесняющая ось" на фоне общей кооперативной - это может быть.
Не всегда, правда - там, где разные указатели стеков для режимов юзер и прерывания, - не пойдет.
Но это не страшно - поскольку всё будет завязано на низкоуровневые операции, заботиться о переносимости контекстопереключателя на сабже нет смысла.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jan 19 2012, 09:00
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(_Pasha @ Jan 19 2012, 08:03) *
Для кооперативной - слишком шикарно выходит. Зачем там нужен полный контекст?
Чтобы передавать управление откуда-то из глубины вызова функций.
Для такой кооперативки стеков нужно практически как для вытеснялки.
У longjmp контекст таки немного меньше, чем полный контекст для вытеснялки, так что стеков и времени на переключение у такой коператвивки нужно меньше. Но несущественно на фоне использовани ястека самими процессами.
Поэтому я не сильно понимаю смысл таких кооперативок. Но они есть, именно на longjmp (надо таки найти в завалах у себя архив «мобильной реализации сопроцесов» из софтпанорамы года так 1993-95 — первое, что я на этом видел).



--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jan 19 2012, 12:16
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ReAl @ Jan 19 2012, 11:00) *
Для такой кооперативки стеков нужно практически как для вытеснялки.
У longjmp контекст таки немного меньше, чем полный контекст для вытеснялки, так что стеков и времени на переключение у такой коператвивки нужно меньше.


Что так много ОЗУ надо? и экономия невелика?

Цитата(ReAl @ Jan 19 2012, 11:00) *
Поэтому я не сильно понимаю смысл таких кооперативок.



Есть ещё какие-то ограничения?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jan 22 2012, 17:16
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Чтоб но плодить темы спрошу тут.
Какие есть кооперативные OS для АВР и поддержкой С++?
Go to the top of the page
 
+Quote Post
dxp
сообщение Jan 23 2012, 07:14
Сообщение #6


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (_Артём_ @ Jan 23 2012, 00:16) *
Чтоб но плодить темы спрошу тут.
Какие есть кооперативные OS для АВР и поддержкой С++?

Вы имели в виду кооперативные RTOS, реализованные на С++? Скорее всего таких нет. А поддержку С++ осуществляет не ОС, а рабочая среда (компилятор и остальное). Т.ч. ничего не мешает взять писанную на С кооперативу и писать свой код на плюсах. Если уж очень хочется, то можно и вокруг сервисов ОС понаделать плюсовых обёрток.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jan 23 2012, 11:07
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(dxp @ Jan 23 2012, 09:14) *
Вы имели в виду кооперативные RTOS, реализованные на С++? Скорее всего таких нет.

Не обязательно реализованные.

Цитата(dxp @ Jan 23 2012, 09:14) *
А поддержку С++ осуществляет не ОС, а рабочая среда (компилятор и остальное).

Да согласен

Цитата(dxp @ Jan 23 2012, 09:14) *
Т.ч. ничего не мешает взять писанную на С кооперативу и писать свой код на плюсах. Если уж очень хочется, то можно и вокруг сервисов ОС понаделать плюсовых обёрток.

Поподались только оси, где прямо говорилось: С++ не поддерживается (например OSA).
А хотелось чтобы просто компилированись и работали с С++ .


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Артём_   Функции setjmp/longjmp   Jan 18 2012, 22:28
- - Idle   гугли "cooperative multitasking longjump...   Jan 19 2012, 05:32
|- - _Pasha   Цитата(ReAl @ Jan 19 2012, 13:00) Чтобы п...   Jan 19 2012, 10:24
|- - dxp   QUOTE (_Артём_ @ Jan 23 2012, 18:07) Попо...   Jan 23 2012, 16:55
|- - _Артём_   Цитата(dxp @ Jan 23 2012, 18:55) Что меша...   Jan 23 2012, 17:41
|- - dxp   QUOTE (_Артём_ @ Jan 24 2012, 00:41) Боят...   Jan 24 2012, 03:30
|- - _Артём_   Цитата(dxp @ Jan 24 2012, 05:30) Во, как...   Jan 24 2012, 13:14
|- - dxp   QUOTE (_Артём_ @ Jan 24 2012, 20:14) Може...   Jan 24 2012, 15:02
|- - _Артём_   Цитата(dxp @ Jan 24 2012, 17:02) Единстве...   Jan 24 2012, 20:50
|- - dxp   QUOTE (_Артём_ @ Jan 25 2012, 03:50) Попы...   Jan 25 2012, 12:09
|- - _Артём_   Цитата(dxp @ Jan 25 2012, 14:09) Так это ...   Jan 25 2012, 13:20
|- - dxp   QUOTE (_Артём_ @ Jan 25 2012, 20:20) ...   Jan 26 2012, 04:04
|- - _Артём_   Цитата(dxp @ Jan 26 2012, 06:04) Ну, так ...   Jan 26 2012, 05:11
- - _Pasha   Посмотрел на ужас низкоуровневого подхода в портах...   Jan 24 2012, 13:24


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 17:46
Рейтинг@Mail.ru


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