0
私はioctl
で遊んでいましたが、この質問は私に起こりました。なぜシステムコールの数が非常に限られていますか?
背景
- Iは、システムコールの主な動機は許さ割り込みハンドラの数は非常に限られているということであると言われました。多くのOSは1つの割り込み番号(Linuxの場合は
0x80
)を占有するシステムコール(a.k.a.トラップ)の抽象化を実装しますが、必要に応じて異なる機能を提供するために余分な引数を受け入れます。 - this threadは、システムコールの数が実際には非常に限られていることを示唆しているため、上記と同じ理由が再度適用されて
ioctl
となります。
私の質問です。なぜOSは単に十分なシステムコールを提供してioctl
を取り除かないのですか? (または単にスケーラビリティを向上させるための階層構造を作成するだけですか?)
あなたの答えは前述の投稿よりも意味があると思います。システムコールは、OSがCPUと対話するためのカスタマイズ可能なハンドラのようなものですが、OS内の 'ioctl'は、ユーザスペースアプリケーションとカーネルとのやりとりのためのカスタマイズ可能なハンドラですか? – wlnirvana
システムコールハンドラは、usermodeとkernelmodeの間の通信メカニズムとしてOSカーネルによって定義されています(CPUは、ユーザとカーネルモードの切り替えをより簡単で安価なものにする特別な命令を提供することで役に立ちます)。個々のシステムコールを実装するルーチンの固定配列として)。 'ioctl'やいくつかの他のシステムコールに代わって生成されたリクエストは、通常、ioctlターゲットを担当するドライバに送られるので、開発者は' ioctl'をある程度(カスタマイズして)カスタマイズすることができます。 –