title: Multi-threading on ARM cortex A9 dual core (Linux or VxWorks)
body: <p>I am working on how dual core (especially in embedded systems) could be beneficial. I would like to compare two targets: one with ARM -cortex-A9 (925 MHz) dual core, and the other with ARM cortex-A8 single core.
  I have some ideas (please see below), but I am not sure, I will use the dual core features:</p>
  
  <pre><code>   My questions are: 
  </code></pre>
  
  <p>1-how to execute several threads on different cores (without OpenMP, because it didn't work on my target, and it isn't compatible with VxWorks)</p>
  
  <p>2-How the kernel execute code on dual core with shared memory:  how it allocate stack, heap, memory for global variable and static ones?
  3-Is it possible to add C-flags in order to indicate number of CPU cores so we will be able to use dual core features.
  4-How the kernel handle program execution (with a lot of threads) on dual core.</p>
  
  <pre><code>  Some tests to compare two architecture regarding OS and Dual core / single core  
  
    Dual core VS single core:
  </code></pre>
  
  <p>create three threads  that execute some routines and depend on each results other (like matrix multiplication). Afterwards measure the time taken to on the dual core once and the on the single core (how is it possible without openMP) </p>
  
  <pre><code>   Ping pong:
  </code></pre>
  
  <p>One process sends a message to the other.two processes repeatedly pass a message back and forth. We should investigate how the time taken varies with the size of the message for each architecture.</p>
  
  <pre><code>   One to all: 
  </code></pre>
  
  <p>A process with rank 0 sends the same message to all other processes in the program and then receives a message of the same length from all other processes. How does the time taken varies with  the size of the messages and with the number of processes?</p>