<aname="l1"></a><spanclass=cF0>ZealOS does master-slave multicore instead of SMP. </span><spanclass=cF2>Core0</span><spanclass=cF0> is the master. The master core's applications explicitly assign
<aname="l2"></a>computational jobs to other cores and the ZealOS scheduler does not move tasks between cores.
<aname="l3"></a>
<aname="l4"></a>There are multicore safe locks for file access and heap allocations, however, so ZealOS is symmetrical in some sense. See </span><spanclass=cF4>
<aname="l9"></a>Each core has an </span><ahref="https://zeal-operating-system.github.io/ZealOS/Doc/Glossary.DD.html#l161"><spanclass=cF4>Executive Task</span></a><spanclass=cF0> which is the father of all tasks on that core. </span><ahref="https://zeal-operating-system.github.io/ZealOS/Doc/Glossary.DD.html#l154"><spanclass=cF4>System</span></a><spanclass=cF0> is the </span><ahref="https://zeal-operating-system.github.io/ZealOS/Doc/Glossary.DD.html#l161"><spanclass=cF4>Executive Task</span></a><spanclass=cF0> on </span><spanclass=cF2>Core0</span><spanclass=cF0>.
<aname="l11"></a>You give a job to an </span><ahref="https://zeal-operating-system.github.io/ZealOS/Doc/Glossary.DD.html#l161"><spanclass=cF4>Executive Task</span></a><spanclass=cF0> with </span><ahref="https://zeal-operating-system.github.io/ZealOS/Kernel/MultiProc.CC.html#l224"><spanclass=cF4>JobQueue</span></a><spanclass=cF0>() and get the result with </span><ahref="https://zeal-operating-system.github.io/ZealOS/Kernel/Job.CC.html#l242"><spanclass=cF4>JobResGet</span></a><spanclass=cF0>(). You spawn a task on any core with </span><spanclass=cF4>
<aname="l14"></a>Note: You must use the </span><spanclass=cF2>LOCK</span><spanclass=cF0> asm prefix when changing shared structures in a multicore environment. The </span><ahref="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelB.HH.html#l17"><spanclass=cF4>LBts</span></a><spanclass=cF0>(), </span><ahref="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelB.HH.html#l16"><spanclass=cF4>LBtr</span></a><spanclass=cF0>() and </span><spanclass=cF4>
<aname="l15"></a></span><ahref="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelB.HH.html#l15"><spanclass=cF4>LBtc</span></a><spanclass=cF0>() insts have </span><spanclass=cF2>LOCK</span><spanclass=cF0> prefixes. The compiler has a </span><spanclass=cF2>lock{}</span><spanclass=cF0> feature but it doesn't work well. See </span><spanclass=cF4>