1

を実装しようとした後System Call、Linuxについて完全に混乱しました:D

Linux Kernel APISystem CallsSystem Interfacesとはどう違いGNU C Libraryますか?

各項目について、次のリンクを見つけました。

Linux カーネル API

https://www.kernel.org/doc/htmldocs/kernel-api.html

Linux システム コール

http://syscalls.kernelgrok.com/

http://lxr.free-electrons.com/source/arch/x86/syscalls/syscall_32.tbl

システム インターフェイス

http://pubs.opengroup.org/onlinepubs/9699919799/idx/functions.html

GNU C ライブラリ

http://www.gnu.org/software/libc/manual/html_node/index.html

これらの機能について混乱しました。

たとえばsprintfに存在しますLinux Kernel APIが、System Interfaces関数リストにはこの関数も含まれています。一部の関数は、カーネル モードで使用しないでください (例: printf)。多くの関数は同じタスクを別の名前で実行します (例:sys_openopen)、など...

私の質問は:

Linux Kernel APISystem CallsSystem Interfacesとはどう違いGNU C Libraryますか? 使えばいい機能、使えない機能は?

おー!を忘れましたC standard library:)

4

1 に答える 1

10
  • C ライブラリは、C 言語標準を実装しています。これは、標準出力への書き込みなど、オペレーティング固有の関数を呼び出すことによって行われます。C ライブラリは、Linux、Windows、DOS、さまざまなマイクロ コントローラなど、非常に多くのシステムに実装できます。

    「GNU C ライブラリー」という用語は、C ライブラリーの特定の実装、おそらく GNU コンパイラー・コレクションに同梱されているものを指していると思われます。

  • オペレーティング システムは、Linux ではシステム コールを介して行われる標準インターフェイスを公開します。たとえば、標準出力への書き込みは、writeシステム コールを呼び出すことによって行われます。Linux (より一般的には Posix) は、システム コールを使いやすくするために C ライブラリを提供しています。

    このシステム インターフェイスを使用すると、C ライブラリを実装できます。たとえば、C ライブラリからは、 file descriptor へのシステム コールを使用putcして実装できます。write1

    MS Windows は、Windows API と呼ばれる類似のシステム API を提供しています。これも C ライブラリの実装に使用できます。

  • カーネル API は、カーネル内でプログラミングするためのものです。たとえば、ドライバーを作成したり、新しいシステム コールを提供したりするためのものです。

于 2013-06-20T17:25:00.633 に答える