- ベストアンサー
システムコールって何でしょうか?
システムコールってなんでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- システムコールについて教えてください!
私は機械工学を専攻しているのですが、大学の授業で情報学科のOSの授業に興味があり受講してみたものの、やはり知識不足で困っております。 つまったところは、「どのようなシステムコールがあるか」という問題です。 システムコールとは、ユーザがハードウェアを直接制御すること??なのでしょうか? 問題が「どのようなシステムコールがあるか?」ということなので、簡単な例をだして頂いて教えて頂ければ幸いです。よろしくお願い致します。
- ベストアンサー
- Windows系OS
- システムコールについて
最近システムコールについて学んでいるのですが、C言語でprintfを実行するために必要なシステムコールを特定するにはどのようなさぎょうをすればよいでしょうか? はじめに適当なプログラムを作ってあるのですが、そのプログラムを工夫することによって特定するやり方でお願いします。
- ベストアンサー
- Linux系OS
- Windowsのシステムコール呼び出し
アセンブラでシステムコールを呼び出したいのですが、 Linuxとかだとシステムコールの一覧みたいのが載ってるのですが、 Windowsのシステムコールの一覧みたいのが見つかりません。 一覧が載っているようなサイトってありませんか?? とりあえずLinuxの11番(C言語で言うexecv関数)みたいのが使いたいのですが。。。
- ベストアンサー
- その他(プログラミング・開発)
- ライブラリ・システムコールとは?
ライブラリコール、システムコールについて要約して教えてもらえませんか?別に要約じゃなくてもいいですが(^_^.) あと、相違点などについても教えて下さい。 調べてもイマイチ分からないので。 宜しくお願いします。
- ベストアンサー
- Windows系OS
- システムコールについて。
アセンブリ言語で、int $0x80はシステムコールと言われていますが、Linuxを知らないとわかりません。システムコールはアプリとカーネルのインターフェースです。 x86 Linux 32bitのシステムコールの呼び出しは int 0x80です。 システムコールはEAXに格納されている数値でいろいろな処理ができます。 https://www.mztn.org/lxasm64/x86_x64_table.html を見ていただくとWRITEのsyscall#は4です。 mov $0x4,%eax でeaxに4を入れているので画面に出力したいのだとわかります。 WRITEの第2引数は画面に出力したい文字列が格納されているアドレスでECXに格納します。 mov %esp,%ecx とスタックポインターのアドレスをecxに入れています。 ESPは push eax でEAXに格納されている$0x616b6157(Waka)がスタックに退避しています。 WRITEの第3引数は文字数です。文字数はEDXに格納します。 mov $0x4,%edx と4が入っているので文字数は4です。 このプログラムを実行させると画面にWakaと表示して元の画面に戻ります。そのためのRETです。 C言語で書けばたった1行。 write(1,"Waka",4) これについて詳しく教えていただけないでしょうか?すみません。
- 締切済み
- その他([技術者向] コンピューター)
- システムコールと標準ライブラリの正しい使い方を教えて下さい
システムコールって何でしょうか。 C言語初心者なので、変な質問だったら、すみません。 システムコールと標準ライブラリにおける、関数の違いを教えて頂けませんでしょうか。 例えばファイル入出力で用いる openとfopenは何が違うのでしょうか? 私はそもそも、システムコールというものが判っていない状態です。 いつも標準ライブラリを参考にしていたものですから・・。 更に似た使い方をすると思いますが、使える範囲等どちらが広いのでしょうか。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- Ubuntuの端末におけるシステムコールの数え方
こんばんは。 課題でcとJavaのコードを実行してstraceコマンドでその実行時のシステムコールを読み取るという課題をやっています。 Ubuntuの端末でcとJavaのコードをコンパイルし、straceコマンドを実行するとtracefileというのがでてきてそこにずらずらシステムコール(おそらく)が書いてあります。 ↓ こんな感じ。 3232 execve("./Noop", ["./Noop"], [/* 39 vars */]) = 0 3232 brk(0) = 0x98c6000 まずこれがシステムコールであっていますか?execveとかがそうですか? これが6000行くらいあります。 質問はこの中からresumedと書かれたラインを抜かした行数を数え(システムコールの数を数える)、さらにシステムコールの種類の数を数えたいのですがいい方法はありますでしょうか? 便利なコマンドとかあったら使い方とともに教えていただきたいです。 もし何か検討違いなことを言っていたら教えてください。 よろしくお願いします。
- ベストアンサー
- Linux系OS
- Linux/Windowsのシステムコール
CentOS 5.5 + Eclipse CDT で C++ のプログラミングを始めたばかりです。 プログラムを作成するにあたって、今後 Windows へ移植したときに移植しやすいプログラムを作成したいと考えています。 (現段階ではまだ標準出力に何か表示するお粗末なものですが) 素人考えでは、システムコールを使用すると他プラットフォームへ移植したときに同等のシステムコールがないと実装を大きく変更しなければならなくなるので、あらかじめどれが固有のシステムコールかを判断したいと思っています。 例えば Linux では待ち行列を実現するのに mkfifo システムコールが使えるけど、Windows では使えないから待ち行列をあらかじめロジックで実現しよう、という感じです。 (あくまで例なので、Windows の FIFO の API を使えばいいじゃん、というのはナシで) なので、Linux および Windows でシステムコール一覧を参照する方法を教えて頂きたいです。 まあ、STLでもプラットフォームが変われば動く保証はないみたいなので、Javaみたいなクロスプラットフォームのようにはいかないと思いますが。。。 よろしくお願いします。
- 締切済み
- C・C++・C#
お礼
ありがとうございます。大変分かり易いです。