A Message-Passing, Thread-Migrating Operating System for a Non-Cache-Coherent Many-Core Architecture