[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:20389] Re: OS-Versionとプログラムの互換性
-
From:KOJIMA Mitsuhiro
-
Date:Mon, 25 Aug 2003 19:10:23 +0900 (JST)
- Subject: [plamo:20389] Re: OS-Versionとプログラムの互換性
- From: KOJIMA Mitsuhiro <kojima@xxxxxxxxxxx>
- Date: Mon, 25 Aug 2003 19:10:25 +0900 (JST)
こじま@ちょっと言葉が足らなかったようなので,,
From: KOJIMA Mitsuhiro <kojima@linet.gr.jp>
Subject: [plamo:20385] Re: OS-Versionとプログラムの互換性
Date: Mon, 25 Aug 2003 17:06:21 +0900 (JST)
> > 残った疑問(1)は,
> > libcのLinuxシステムにおける階層的な位置付けです。
> > 一般的な階層を,
> > [1] [(layer) user space: application program]
> > [2] [(layer) kernel space: kernel, kernel_module] (irq processを含む)
> > [3] [(layer) hardware ]
> > としたときに Libcは,[1],と[2] のどちらに位置付けられるのでしょうか?
>
> [1] でせう.UNIX 系 OS の場合,カーネルスペース(カーネルモード)はカー
> ネルにしか許されていない領域で,libc 自身も含めて libc 等を経由したユー
> ザプロセス(shell も含む)には触れることはできません.
もちろん,ユーザプロセスからもメモリの割り当てやファイルの入出力のよう
なカーネルが管轄している機能を使う必要が発生しますが,そのような場合は
カーネルが提供しているシステムコールやデバイスファイルを経由してカーネ
ルにリクエストを送って必要な処理をしてもらうことになります.
libc が提供している各種ライブラリ関数は,atoi() のように libc の内部で
閉じているものもありますが,fopen() や calloc() のように最終的にはカー
ネルの提供しているシステムコール(open,brk)を使うものの,アプリケーショ
ンに対してより使い易く,移植性が高いインターフェイスを提供しているので,
そちらを使えば直接システムコールを叩くよりは簡単にプログラムが組めるで
せう.
# システムコールを直接叩くようなプログラムは Linux でしか動かないけど,
# libc のライブラリ関数を使うプログラムは Linux 以外の UNIX 系 OS でも
# 動く可能性が高い.
> # 厳密に言うと ioperm() みたいなシステムコールがあるので,ちょっと微妙
> # なところもあるが > Linux
ちゃんと調べたわけではないけど,あらかじめ用意されているシステムコール
では足りない場合,カーネルモジュールを使ってカーネルに必要な機能を追加
することになるんでしょうね.
--------
こじま
- References
-
- [plamo:20251] Re: OS-Versionとプログラムの互換性, KOJIMA Mitsuhiro
- [plamo:20383] Re: OS-Versionとプログラムの互換性, H.Shiozaki
- [plamo:20385] Re: OS-Versionとプログラムの互換性, KOJIMA Mitsuhiro
[検索ページ]
[メール一覧]
Plamo ML 公開システム