ここから本文です

Linuxにおいて最初のユーザーモードタスクはどのように生成されるんですか?

アバター

ID非公開さん

2020/6/2714:17:47

Linuxにおいて最初のユーザーモードタスクはどのように生成されるんですか?

どんなタスクも大抵fork⇒execの流れですよね。

一番最初に生成されるのは

カーネルスレッドだと思いますが
カーネルスレッドでforkを使いクローンを作っても
カーネルモードのタスクが生成されてしまうから
ユーザーモードのタスクを作ることができませんよね?

補足カーネルスレッドは
カーネルスレッド関数を呼び出すことにより
execのようにカレントタスクの中身が再初期化
されることなく生成できる。

閲覧数:
21
回答数:
1

違反報告

回答

1〜1件/1件中

dot********さん

2020/6/2715:53:14

最初に生成されるプロセスは init です。これはカーネルが直接生成します。
どのようにというか、カーネルは fork で出来ることは当然出来るので、必要なリソースを割り当てて initプロセスを作ります。
init 以降のすべてのプロセスは、init またはその子プロセスから fork で作られます。
カーネルスレッドは、この話とは関係ないです。

  • アバター

    質問者

    ID非公開さん

    2020/6/2716:12:31

    回答ありがとうございます。

    initタスクはkernel_thread関数で生成されるようです。
    Linuxにおけるswapper(?),initタスクは
    カーネルスレッドではないのでしょうか?

    まぁとりあえずinitが生成されたとして。。。

    initというのはカーネルモードで動いているタスクですよね。
    (wikiではLinuxのinitタスクはページングを担当しているとか書かれていた)

    そこからユーザーモードのタスクを生成する方法はないんじゃないでしょうか?

    forkというのはforkを読んだタスクのコピーを作るシステムコールですよね。
    もちろん、特権も親から引き継ぐものだと思いますが

    カーネルモードで動いているタスクからforkで
    ユーザーモードで動くタスクを生成するって無理なんじゃないでしょうか?

  • その他の返信を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo!知恵袋カテゴリ

一覧を見る

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる