ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I believe my answer/comment in #q350495 may have given you the wrong impression: ROS does not deal with process scheduling, disk access, file permissions, memory management nor low-level hardware interfacing.

It makes use of the services of the underlying operating system on which it is installed.

So on Windows, the behaviour will be determined by Windows.

On Linux, the Linux kernel + userland code will determine how these things work.

On OSX/macOS, it's going to be largely identical to how OSX manages these things.

On QNX, it's going to be the QNX schedular, memory manager etc which determine how things are run.

On VxWorks, .. you get the idea.

So to answer your question: this is all managed by the OS, Ubuntu in your question. As ROS nodes are (in the end) regular Linux processes, which are run as all other regular Linux processes, it's the Linux kernel + userland which determines how things are scheduled and run.

But, inside ROS nodes, the way threading is used can be influenced, especially when dealing with events (such as incoming messages and timers). For more information about this, I'd refer you to wiki/roscpp/Overview/Callbacks and Spinning.

But again remember: it's all on-top of whatever the underlying OS provides/decides.