システムコールって何?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004マジレスさん
NGNGOSで、あらかじめ用意されている関数たちだぁ〜ねぇ〜
移植性に乏しいから、あんまし使わない方が良いけど、痒い所に手が届くから便利。
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGあのさー、その手のネタ思いついてうれしいんだろうけどさ、
得意げに発言しないでくれる?はげしく既出だし。
0008デフォルトの名無しさん
NGNGならアリなんだけどね。
0009デフォルトの名無しさん
NGNGWindowsだと直接呼ぶのは禁止じゃない?
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG細かい定義だと違うと思いますよ。Windowsの場合、
システムコールとライブラリコールの区別がないので。
Windowsでは、カーネルモードに直接スイッチする形で
システムコールの呼び出しはできないという意味です。
一般的なUNIXでもCライブラリが割り込み命令をラップ
したライブラリ中にある関数として実装されてますが、
ほとんどの場合、それ以上のことはしません。
0014デフォルトの名無しさん
NGNGラッピングされているのかな?
やっぱりそうだよね?>13
0015デフォルトの名無しさん
NGNG「CreatXXX」って、なんかUNIXっぽい名前だな
0016デフォルトの名無しさん
NGNGトウェア割り込み int 2E が使われています。NTDLL.DLL, GDI32.DLL,
KERNEL32.DLL, USER32.DLL を逆アセンブルして int 2E で検索する
と、だいたい分かります。
いずれにせよ Native API (UNIX のシステムコールに相当、カーネル
モードへのエントリポイント)は基本的に undocumented で、一般の
アプリケーションから呼ぶことは推奨されていません。
0017デフォルトの名無しさん
NGNGそれってさ、シェルスクリプト=バッチファイルだろ
って言っているみたいでかっこわるいぞ
知らん人に説明するとにに…みたいな物って言い方ならいいけど
0018デフォルトの名無しさん
NGNG>UNIXならwrite、fork、socket、他多数。
>Windowsだと直接呼ぶのは禁止じゃない?
禁止じゃないよ
あんまり呼ばないでねみたいなことMSは言ってるけど
forkはwinにないから使わないけど他のやつは移植考えたら
つかっちゃうなー
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGん、なんか微妙に話がずれてる気が。
Win32 だと _write() はライブラリ関数として実装されています。
MSVCRT.DLL の _write() は、内部で Win32 API の WriteFile()
を呼んでる。
この手の「UNIX だとシステムコールだが、Win32 だとライブラリ関
数」というのは、別にアプリケーションから呼んでも問題ないです。
まずいのは Win32 のカーネルへのエントリポイントを直接呼び出す
こと。たとえば Win32 API の OpenMutex() をスキップして、直接
Native API の NtOpenMutant() を呼び出す、とかね。
>>20
POSIX サブシステムに入ってる fork() のこと?
0022デフォルトの名無しさん
NGNGOSとおんなじCPUの特権レベルで動くってのがミソ。
IO、プロセス管理、メモリ管理に関係するような関数。
0023デフォルトの名無しさん
NGNG主にCPUに、割り込みを掛け、OS(DOS)を通さずに、
直接I/O(システムorハードetc)とデータをやり取りする事。
x86系のCPUだと、「INT xxh」命令を使う事によって実現。
かなり、かゆいところまで、手が届き、
システム(ハード)の性能を、かなり発揮できるが、その反面、
システムが変わると、関わっているコードを全て作り直す必要あり。
ファンクションコール(DOSのみの言い方?)
システムコールの1部?
主に、CPUに割り込みをかけ、OSを通して、I/Oとデータをやり取りする。
M$-DOSだと、「INT 21h」命令を使う事によって実現。
OSを通すため、システムに依存する事なく、システムが変わっても、
同じコードを書き直す事なく使う事が出来る。(出来ない場合もある)
速度的にも、ほとんどシステムコールと変わらないが、
かゆいところに、手が届かない事が、しばしばある。
DOSの役割
ファンクションコールをサポートし、多くのコードの環境依存を少なくする事。
OSの役割
それ(DOS)に加え、人間が、それを直感的、かつ、扱い易くする事。
使っても良いと言われているシステムコールは、
OSレベルでサポートしてない、もしくは、それでは遅すぎる場合等に、
DOSレベル(人間にあまり優しくない命令の(ファンクションコール))を使って、
データをやり取りする関数で、使っては駄目と言われているのは、
システムに依存している(システムコール)を使っている関数です。
って、分かり辛いかな…。(^^;
0024デフォルトの名無しさん
NGNGなんで今更DOSの話持ち出すかなぁ(^^;
0026デフォルトの名無しさん
NGNGDOSとOSを分けてることが意味不明
DOSで言うのなら、INT21hがシステムコールだし。
0027デフォルトの名無しさん
NGNGネタじゃなければ尊敬する
0028デフォルトの名無しさん
NGNGUNIXというよりX窓的なのでわ…
UNIX勢は大文字嫌いだとか聞いたけど(笑)
>>21
Winにおいてfork()って、やっぱりそれを使うと
窓アプリのインスタンスがいきなり2つに分身
したりするんでしょうか?(笑)
>>22
特権レベルっすか。今更だけど古典MacOSは
たしかアプリも全部同じレベルで動く
(のでメモリ保護とかがスカ)とか聞いた記憶が。
特権云々は、OSの機能の一環として保護機能を提供
してるようなOSについて言える話なのでは?
>>23
その説明って、SHELLの役割の説明と被ってる。
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGVC++ だったら、コンパイル時に cl に /link /SUBSYSTEM:POSIX オ
プションを渡せば良い。エントリポイントが __PosixProcessStartup
になるので注意。
あと NT の POSIX サブシステムは機能が不足しすぎていて、実用には
なりません。POSIX サブシステムを使うを Win32 サブシステムの機能
は全く使えないし。
0031デフォルトの名無しさん
NGNG痛いところまで手が届くんで
用心しとけ。
0032デフォルトの名無しさん
NGNG>>15 のUNIXっぽいってのは、CreateじゃなくてCreatなところに
突っ込んでいるんだと思います。
■ このスレッドは過去ログ倉庫に格納されています