• ベストアンサー

OSがプログラムをどのように実行させているか

現在、OSはどのようにプログラムを実行させるのかを調べています。Cプログラムを作り、そのCプログラムをコンパイルして生成されたexeファイルを実行させますが、この際に、OSはどのような事を行っているのでしょうか?概要でいいので、プログラムを実行させる際にOSの行っていることを教えてください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

同様の質問が参考になるかも。 No.751387 質問:EXEファイルって何ですか? http://oshiete1.goo.ne.jp/kotaeru.php3?q=751387 No.3さんのリンク先の記述がちと専門的ですが、正確だと思います。 @IT:インサイド .NET Framework [改訂版]第5回 アセンブリのロードとセキュリティ http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_05/idnfw11_05_01.html

参考URL:
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_05/idnfw11_05_01.html

その他の回答 (1)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

OSはプロセスを割り当てメモリーを割り当てます。 次にローダーに指示を出してプログラムをメモリーにロードします。 ロード完了するとプログラムにCPUを渡して実行を開始します。 実行途中でプログラムがI/Oなどの仕事でOSを必要とすると スーパーバイザーコールでOSに割り込みがかかります。 OSの処理が終わると又プログラムに戻ります。 エラーガ出た場合もOSにエラー割り込みがかかりエラー処理をして、 通常はプログラムを強制終了させます。 正常にプログラムが終了した場合にはメモリー、プロセスを解除します。

関連するQ&A

  • 他の実行ファイルを実行するプログラム

    他の実行ファイルを実行するプログラムを作りたいです。 わかりにくいと思うので例を書いて説明します。 まずhello.cというプログラムがあったとします。 中身は -hello.c----------------- #include <stdio.h> main(){ printf("Hello!\n"); } -------------------------- これをコンパイルしてできた実行ファイルを他のプログラムから呼び出す?実行したいんです。 説明が下手ですいません(>_<) たとえば新しくexe.cというプログラムを作ります。 このexeを実行するとhello.exeが呼び出されて 結果的にhello.cの中身が実行されるような exe.cを作りたいです。 初歩的な質問ですいません。 どなたかアドバイスいただけないでしょうか(>_<)

  • exe実行ファイルのみで運用したい

    C#をコンパイルしたときにexeとpdbが生成されますが、 exe実行ファイルのみで運用したいのですが、 ひとつのファイルにまとめることはできないのでしょうか?

  • プログラムが実行できません。

    http://allabout.co.jp/internet/java/closeup/CU20051204A/index3.htm メールのプログラムのなのですが、コンパイルできでも実行が出来ません。クラスファイルは生成されているのに、実行できないのはなぜでしょうか? DOSプロンプトでException in thread "main" va.lang.NoClassDefFoundError: が出てきてしまいます。

  • プログラムの実行

    プログラムの実行について (1) プログラムを実行させるためには、プログラムをメモリーにロードする必要があると思うが、ロードはどのプログラムがやっているのか、その流れ、仕組みを教えてください。 (2) メインメモリーのどの部分にロードされるのか。 (3) プログラムがメインメモリーにあるだけでは、プログラムは実行しないようにおもうが、実行する合図のようなものがあるのか。 (4) comファイル、exeファイル、basicの場合で違いがあるのか。 * osがwindows7またはxpとします。

  • Javaのプログラムでの悩み

    サイトなどにある、ゲームや様々なプログラムをひたすらコンパイル、実行しようと思っているのですが、サイトの文をコピペしてコンパイルし、CLASSファイルは生成されたのですが、実行できないというのは、何が考えられるでしょうか?

  • Borland C++ Builderで簡単なC言語プログラムの作成・実行

    Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか? DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。 一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。 Formオブジェクト(?)を作成しておくとコンパイルできます。 Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。 DOS窓でのコンパイル・実行はできます。 事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。 よろしくお願いします。

  • 分割コンパイルのリンク時のファイル名の指定法

     Visual Studioコマンドプロンプト(2010)で、分割コンパイルを試みています。自分で調べて、次のことまでは分かりました。 ソースファイル “1.c” “2.c” “3.c” がある。それぞれ、リンクはせずにコンパイルだけ行うには、 “cl /c 1.c”で、“1.obj”が生成する。 “cl /c 2.c”で、“2.obj”が生成する。 “cl /c 3.c”で、“3.obj”が生成する。 これらを、次のようにリンクすると、 “link 1.obj 2.obj 3.obj” ↓ “1.exe” が生成する。  この最後のリンクのところで、“1.exe”でも“2.exe”でも“3.exe”でもない別のファイル名(“program.exe”など)に、実行ファイルを指定したいのですが、 “link /?” を見てみると、どのオプションを指定すればいいか分かりません。どなたか、ご教授ください。お願い致します。

  • exeファイルを実行するとコマンドプロンプトがすぐに閉じる

    最近C言語でのプログラミングを始めたばかり なんですが、プログラムをコンパイルすると exeファイルができますよね。 そのexeファイルを実行したときに、 コマンドプロンプトが一瞬開いて結果が表示され すぐに閉じてしまうので、内容を確認することが できません。 どうしたら、すぐに閉じないようにできるでしょうか?

  • [C#]実行中プロセスのパスを調べる方法について

    いつもお世話になっております。 現在実行中のプロセスの中から、特定のアプリのexeファイルのpathを表示させる方法が分からず苦戦しております。 言語はC#になります。 以下のコードでテキストボックスに、C#でコンパイルしたプログラムのpathは分かったのですが、私が表示させたいのは、コンパイルしたプログラムのpathではなく、現在実行中のプロセスの中のあるアプリのexeファイルのpathになります。 string appPath= System.Windows.Forms.Application.ExecutablePath; textBox1.Text = appPath; 良いお知恵がございましたらお力添えいただきたく、宜しくお願いいたします。

  • exeファイルで実行できない

    VB6.0のexeファイルでのアプリ稼動ができません。プロジェクトファイルを開いて実行すれば稼動するのですが、生成したexeファイルを実行した場合は稼動しません。 いったいどういう原因なのでしょうか?リリースモードでコンパイル云々という話でしょうか? ただ他にもVBのアプリが存在するのですが、そちらはexeファイルの実行だけで問題なく稼動します。 OS Windows XP(SP1) 開発環境 VB6.0 (SP5) .NET Framework 1.0? 原因が分かる方、推測できる方いらっしゃったら、教えていただけないでしょうか?宜しくお願いします。