← All posts tagged l4

dk

Наверняка многие читали про L4 fast IPC design(http://l4ka.org/publications/1993/improving-ipc.pdf), который позволил объективно говорить о том, что microkernel approach с клиент-серверной архитектурой не только имеет право на жизнь, но и не так уж сильно проигрывает по performance монолиту, ибо message passing стал не многим медленнее системного вызова. Но тем не менее с клиент-серверной архитектурой в микроядре связан набор труднорешаемых проблем. Одна из них заключается в том, что сервер, принявший сообщение от клиента, начинает работать, тратя свой тайм-слайс, используя свой приоритет(что приводит к потенциальному priority inversion) и тратя свои ресурсы(например память). Одним из решений этой проблемы является так называемый thread-migrating IPC design. Идея проста: при посылке сообщения от клиента серверу, помимо самого сообщения серверу кидается тред клиента, который просыпается на сервере(со своим(клиентским) приоритетом, лимитами, тайм-слайсом), выгребает сообщение и начинает исполнять серверный код. Просто и гениально. На эту тему есть очень неплохая статья: "Vulnerabilities in Synchronous IPC Designs"(http://www.eros-os.org/papers/IPC-Assurance.ps).