あえて言うならプロセスだと思いますが、OSが違い、システムコールやAPIで用語の意味合いが少しずつ異なる以上、厳密に当てはめることは無理があるでしょう。
vxWorksにおけるtaskSpawn
関数はメモリ中で現在実行中のプログラムから、構造体データを介して関数へのポインターやスタックサイズ、引数を指定して実行するようです。それを考えに含めるとtaskSpawn
を呼び出すユーザープログラムからは一般的にイメージするスレッドのようにも見えないこともないです。
linuxにおけるスレッドは、clone
と言うシステムコールを使ってほぼ子プロセスと同じようなものを生成して実現します。
Man page of CLONE
昔のlinuxを含むunix系OSにはスレッドと言うものはありませんでした。マルチプロセスではあっても、マルチスレッドでは無かった。後発の現代的なunix系OSでネイティブなスレッド機構が実装され、pthreadの出現などによって追加で整備が進められてきた機能です。尚、32ビットで始まるWindows(NT)OSは最初からマルチプロセス、マルチスレッドで、CreateThread
と言うネイティブのAPIがありました。
「タスク」と言う単語はlinuxのカーネルによるプロセス管理機構にも出てきて、それぞれのプロセスを識別するtask_struct
構造体と言うものもあります。これらのことを併せて考えると「taskSpawn
で起動するタスク/実行単位はlinuxにおけるプロセスなのか?スレッドなのか?」を区別するのは難しいということが分かると思います。
組み込み系のOS視点で見ると、vxWorksのtaskSpawn
はITRON(アイトロン) OSのcre_tsk
(タスク生成)や act_tsk
(タスク始動)のシステムコール仕様に似てないことも無いです。コンテキストスイッチを伴うタスク管理は、基本的にはどんなOSも大体同じようなメカニズムになるということだと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/08 03:04