Что почитать по real-time multithreading для покрасноглазить?

Посоветуйте, пожалуйста, хорошие книги по real-time multithreading (ессно под linux). Осилил «Programming with Posix Threads» by Butenhof, осиливаю «Unix Systems Programming» by Robbins — нравится до писка. На что ещё хорошего положить свой глаз?:)

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Мурзик Васильевич, я, честно говоря, не совсем понял что именно интересует? Real-time scheduling или multithreading в Linux вообще? То, что предложили (особенно Stevens) — хорошо для понимания IPC вообще и для UNIX/Linux MT в часности, но то всё userspace. Как работают шедулеры в ядре можно почитать в ядре:) или в «O’Reilly — Understanding the Linux Kernel 3rd edition» или, например, на LWN: lwn.net/...rticles/224865 lwn.net/...rticles/230574 и т.д.
Теперь о Real-time — он Вам действительно нужен? Т.е. у Вас действительно RT задачи стоят? Если да — то Linux, наверное, далеко не самый лучший выбор. Смотрите, rt.wiki.kernel.org или на www.rtlinuxfree.com

Но для RT я бы QNX взял:)

P.S. Если ULK нужен — могу поделиться

Интересует multithreading в Linux и real-time scheduling в частности. Не как устроено и как работает на уровне ядра, а именно как правильно использовать в userspace, т.е. стать гуру в real-time multithreading programming (в userspace).

На счёт real-time. Думаю тут возникло недопонимание. Я говорю о real-time не как о фиксированном быстром отклике на внешние события, а о real-time scheduling. Т.е. хочется изучить ньюансы scheduling policies and priorities, contention scope and allocation domain и всевозможные грабли (а их в этой области достаточно).

Возможно позже понадобится и RT Linux kernel, но это уже скорее всего для обработки видео на DSP и реакции на события от датчиков.

Мне очень нравится “Unix Internals” by Uresh Vahalia

Если под линукс, то посикс вообще читать не надо, надо исходники ядра читать.

Ну Cтивенса тоже почитать надо, да, тем более в последнем издании network programming повыкидывали много ненужного типа TLI. В любых книжках все, что про STREAMS можно пропустить, если конечно не собираешься какие-то драйвера под HPUX или Solaris делать.

Насчет исходников — их конечно много, но: исключаешь драйвера — сразу −90%. В остальном коде все более менее структурировано по подсистемам. Ну, а весь ’core’ — в каталоге ’kernel’ ~170, 000 строчек — не потеряться в этом вполне посильно, от корки до корки ж читать незачем. Чем сейчас и занимаюсь.

Какое отношение код ядра Linux имеет к multithreading программированию под Linux в userspace? Кроме знаний драйверов и внутренней структуры ядра надо ещё и приложения писать, иначе это будет хорошо отлаженное и совершенно бесполезное ядро.

Ну в целом, конечно на автомобиле ездить можно (и правильно), не открывая капота, но хотя бы поинтересоваться внутренностями имхо надо. Чтобы хотя бы знать сколько там ремней и где они, хоть куда жидкость омывателя заливать, и где уровень масла проверять.

Как бы это сказать... Не Вы первый кто ковыряется под капотом в ремнях и жидкостях, но размахивать этим флагом желания нет.:) Ядро и rootfs на железяке за пару месяцев готово и стабилизированно. После копота и т.д. перехожу к следующей фазе — изучению advanced вождение. По сути топика (по вождению) есть что сказать?:)

Со Стивенсом я согласился выше. Не очень помню, что там про реалтайм, к сожалению. Как словите priority inversion или starvation на потоке, поинтересуетесь и scheduler’ом, который у вас в ядре.

Вот для того, чтобы не ловить priority inversion и т.д. надо читать умные книжки _до_ того как писать программы. Тогда будете знать и о FIFO/RR/Other scheduling policies, и о scheduling inheritance, и о priority ceiling / priority inheritance mutexes. А чтение исходников ядра не откроет Вам ньюансы использования conditional variables и thread-specific data, как лучше применять semaphores и чего избегать при использовании signals.

C этим соглашусь, пожалуй (блин, как тут квотить?!)

«А чтение исходников ядра не откроет Вам ньюансы использования conditional variables и thread-specific data, как лучше применять semaphores и чего избегать при использовании signals.»

Но вы сами заявили про линукс в начале топика. И таки оно все сильно далеко от posix, а sched.c — хоть и запутанный кусок кода, но таки проливает свет на то, как оно работает. Да хотя бы тот же futex, на котором все эти мьютексы и cond variables построены. О нем-то придется знать, вы его будете в отладчике, strace, и в корках видеть.

1) Какие темы были бы интересны? — concurrency and concurrent algorithms

2) Кого из докладчиков вы хотели бы услышать? — no matter (should be just good qualified)

Извините, не в том топике ответил.

Почему именно эта книга (судя по отзывам на амазоне — так себе)?

Следующей жертвой выбрал (+ за компанию первый том):

www.amazon.com/...s/dp/0130810819

Это ты прaвильно выбрал. Ричард Стивенс один из лучших в этой области (был к сожалению).

Подписаться на комментарии