2017-06-20 27 views
0

私は以下について混乱しています:組み込みシステムにおけるマルチスレッド

私は組み込みシステムの分野で仕事を得たいと考えています。しかし、私が持っていたすべてのインタビューは、Cのスレッドに関するスレッドとスレッドセーフなプログラミングを行う方法で終わっているようです。

私の質問はどのように組み込みシステムでマルチスレッドを学習するのですか?それらはPOSIXスレッドと同じですか?たとえば、FreeRTOSのタスク。彼らはpthreadsと同じものですか?

誰かに何をすればいいのか、どこから始めたらいいですか?

+0

ほとんどの組み込みシステムは、OSがまったくないか、RTOSです。スレッドがまれであることを意味します。ただし、スレッド内に存在するだけでなく、割り込み、デュアルコアまたはマルチプロセスプログラムを記述するときにも、リエントラントと競合条件の概念は重要ではありません。基本的に、新しいデータが入ったときに割り込みがメインプログラムを中断させる低レベルのマイクロコントローラプログラムを書く人は、高水準のマルチスレッドWindowsプログラムを書く人と同じ問題に直面しています。プログラム。 – Lundin

答えて

1

すべてのOSには、独自のスレッド/タスク/プロセスの特性があります。 違いはありますが、それらの間でデータを同期、ガード、および交換する方法はほぼ同じです。

あなたが特定のOSを知らないと知っている人は、インタビューに招待しました。あなたは一般的に答えて、OS固有ではないと思います。 POSIX(または他の)ツールセットの問題を念頭に置いて解決することができます。また、POSIX以外の環境へのソリューションのマイグレーションは、いくつかのマイナーチェンジでは同じロジックを維持します。

0

マルチスレッドの概念は、RTOSでもLinuxでもどこでも同じです。 違いは動作上の動作です。

私の質問は、組み込みの システムでマルチスレッドを学ぶにはどうすればいいですか?

私は、オンラインマテリアルを参考にしてマルチスレッドの概念を最初に習得し、理解することをお勧めします。

SemaphoreとMutexesを使用した同期メカニズムのようないくつかの高度なトピックについては、セマフォをいつ使用するのか、スレッド同期のためにmutexを使用するのかについての基本的な概念について学びます。

次に、いくつかの組み込みターゲットに移動し、uCOS-II/uCOS-IIIまたはFreeRTOSを使用していくつかのコードを試してみてください。

これらはPOSIXスレッドと同じですか?

いいえ、まったく同じではありません。POSIXスレッドライブラリは少し進歩しており、別のOSで移植性が高いです。例えば、 Linux上でpthreadを使用して書かれたマルチスレッドコードは、ほとんど変更を加えずにWindows上でコンパイルして実行することもできます。

一方、RTOSのスレッド実装は異なります。RTOSのスレッドはタスクとして扱われ、スケジューラを起動する呼び出しが行われたときにのみ実行を開始します。

+0

あなたの答えをありがとう。MutexesやSemaphores以外の学習が必要な他のメカニズムはありますか? –

+0

はい、LinuxとRTOSでのタスク間/プロセス間通信についても理解する必要があります。 – Gaurav

関連する問題