In begin, no matter nucleous number.
You must think on MP even any number on machine nucleus. You will take advantage over machine waits. Y you want a isolates processes, you must use fork. If you only want a background processes, best use threads.
Why?.
Because the threads shares memory on the process, all is more easy. Mutexes use are more simple to implement that SYS V IPC, and much less expensive. (I not says cheaper, well ..)
Ex.: If you want submit a process and free the process terminal ( simple daemon), best use a simple fork and end the caller. The children continues execution until they ends.
--
If you want share data on a simple way, or do simple sincro, best use threads & mutexes. Use of mutexes are easy than the use of semafore, and very rich.
--
If you want a complex system of daemons that shared memory between and executes isolatelly, you must use fork, threads in each process, a mix of IPC & mutexes. You can evaluate the use of mutexes on SHARED MEMORY instead semafores. Any way, be sure that you need at least a semafore to control the first SHR MERM access. (yes, you can use SHRMEM as a place to build mutexes dinamically - the number of SYS V semafores is not large -).
Rule: Be KISS.
Best Regards.