конечно лучше бы ты прочитал статью, там 80% материала это бекграунд.
в ruby 3 добавился scheduler для fiber и ractors, сами fiber и thread были и остались.
В статье как раз описывается что ruby mri живет в одном процессе. Но есть механизм, позволяющий IO и C-шному коду работать в бекграунде, на основе этого в puma(IO) и в pg(C-функции какие-то) как раз реализованы плюшки для нас. Там же есть картиночки, которые показывают, как это сейчас зачастую работает. Там так же описывается, почему добавились ractors и scheduler и какие у них плюсы и минусы.
Одну картиночку прикреплю -
http://live.julik.nl/assets/reductions/pthreads-many.png