Threads Vs Forks in Embedded Environment

Sep 06, 2006 4 Replies

Hi group,



i am doing a project at motorola. i have to clone the client side mobile phone software update engine.what is better suited for an embedded environment......threads or forks:



Threads:



Threads require support libraries, so extra space is required in flash memory.



Updation of libraries may also be required so this may increase the installation time.



Though threads share resources, in our case the sharing is not substantial.



Forks:



Forks may have increased RAM requirement but it depends upon number of forks . Each fork has its own copy of all the segments of the update engine.



Can anyone provide me with a comparison of advantages and disadvantages of threads and forks for embedded environment.



OS is embedded Linux. The platform is based on a dual core architecture having an ARM11 core (Application Processor, AP) that handles all the application level functionalities and a Star Core DSP processor ( Base band Processor, BP), which handles all the modem functions. OTASU supports Jffs2, cramfs file system. other products supports MCU (MCORE) also

I suppose by "threads" you mean using the "Posix thread library" and by "fork" you mean using standard processes ?

Another alternative is using clone(), or another api call

In Linux, threads are processes. fork() creates processes.

So they are essential the same.

Threads share a common data space. This is not significant in your application, so where is the difference?

Not much. Have you measured?

If you have a MMU, the memory consumption of a process maybe lower than you think because of the copy-on-write semantics.

regards Wolfgang

Not true. (1) Kernel 2.6 does have a kernel representation of user land threads and (2) AFAIK, there are thread libraries that don't use the OS at all to create the threads but do it completely in user land. Here the Kernel does not know about the threads. (I suppose this is what the OP had in mind.)

-Michael

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required