Linuxのmain()は誰が実行しますか?

Linuxのmain()は誰が実行しますか?

Linux 0.11では、main.cとmain()があることがわかります。

私が理解したのは、ターゲットコードを実行するためにオペレーティングシステムが必要です。

つまり、Linux 0.11はオペレーティングシステムなので、以前は誰が実行していましたか? DOS?

ベストアンサー1

名前は単におなじみと審美的な理由で選ばれました。ユーザー空間プログラムから呼び出すことができるmain()Cランタイムはありません。main()これを説明するコメントもありますinit/main.c

void main(void)         /* This really IS void, no error here. */

関数main()は次から呼び出されますboot/head.s

after_page_tables:
        pushl $0                # These are the parameters to main :-)
        pushl $0
        pushl $0
        pushl $L6               # return address for main, if it decides to.
        pushl $_main
        jmp setup_paging
L6:
        jmp L6                  # main should never return here, but
                                # just in case, we know what happens

のアドレスがスタックmainにプッシュされる方法と using の代わりにsetup_pagingcall を使用する方法に注意してください。つまり、最後にあるアドレスがの先頭から続くことを意味します。jmpcallretmain()

おすすめ記事