|
Функции setjmp/longjmp |
|
|
|
 |
Ответов
|
Jan 19 2012, 06:03
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(_Артём_ @ Jan 19 2012, 01:28)  Подумалось вдруг: а нельзя ли с помощью этих функций сделать нечто вреде кооперативной ОС? Для кооперативной - слишком шикарно выходит. Зачем там нужен полный контекст? Вот для примочек а-ля "вытесняющая ось" на фоне общей кооперативной - это может быть. Не всегда, правда - там, где разные указатели стеков для режимов юзер и прерывания, - не пойдет. Но это не страшно - поскольку всё будет завязано на низкоуровневые операции, заботиться о переносимости контекстопереключателя на сабже нет смысла.
|
|
|
|
|
Jan 19 2012, 09:00
|

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

|
Цитата(_Pasha @ Jan 19 2012, 08:03)  Для кооперативной - слишком шикарно выходит. Зачем там нужен полный контекст? Чтобы передавать управление откуда-то из глубины вызова функций. Для такой кооперативки стеков нужно практически как для вытеснялки. У longjmp контекст таки немного меньше, чем полный контекст для вытеснялки, так что стеков и времени на переключение у такой коператвивки нужно меньше. Но несущественно на фоне использовани ястека самими процессами. Поэтому я не сильно понимаю смысл таких кооперативок. Но они есть, именно на longjmp (надо таки найти в завалах у себя архив «мобильной реализации сопроцесов» из софтпанорамы года так 1993-95 — первое, что я на этом видел).
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Jan 19 2012, 12:16
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(ReAl @ Jan 19 2012, 11:00)  Для такой кооперативки стеков нужно практически как для вытеснялки. У longjmp контекст таки немного меньше, чем полный контекст для вытеснялки, так что стеков и времени на переключение у такой коператвивки нужно меньше. Что так много ОЗУ надо? и экономия невелика? Цитата(ReAl @ Jan 19 2012, 11:00)  Поэтому я не сильно понимаю смысл таких кооперативок. Есть ещё какие-то ограничения?
|
|
|
|
|
Jan 23 2012, 11:07
|
Гуру
     
Группа: Свой
Сообщений: 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). А хотелось чтобы просто компилированись и работали с С++ .
|
|
|
|
Сообщений в этой теме
_Артём_ Функции 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|