数式が読み込まれない場合は1回再読み込みしてみてください。まとめシリーズこんにちは、ももやまです。今回はの4つのメモリ領域とシステムコールの2つについてまとめていきたいと思います。システムコールと割り込み5.さいごに前回の計算機システムの記事(Part12)はこちら!www.momoyama-usagi.com1.4つのメモリ領域の種類メモリの領域は、実行するプログラムがどのように使われるかによっていくつかの領域にわけることができます。C言語で書かれたプログラムであればテキスト領域(プログラム領域)データ領域ヒープ領域スタック領域の4つに分けることができます。データ領域は変数が初期化されるかどうかで、データ領域(初期化あり)bss領域(初期化なし)の2つにさらに分割し、合計5つの領域として考えることもできます。念の為、C言語の様々な変数の復習をしてみましょう。復習にあたってサンプルプログラムを1つ用意しました。変数)静的変数とは、2回目以降同じ関数を実行した際に初期化されない変数を表します。実行された回数分の値、つまり5が出力されます。つけることで静的変数を宣言することができます。することで宣言できます。(大域変数・グローバル変数)広域変数とは、どの関数からも使うことができるような変数のことを表します。グローバル変数・大域変数と呼ばれることもあります。関数の外で宣言されていますよね。このように、関数の外で変数を宣言することで広域変数を宣言することができます。局所変数とは、1つの関数だけから使うことができるような変数を表します。中で宣言されていますよね。使用することができます。別の変数として扱われます。このように関数の中で宣言した変数は、宣言した関数内でしか効力を持ちません。3.メモリ領域の分け方まずはC言語ではどのように4つ(5つの)領域を使い分けているかを図で確認しましょう。※データ領域とbss領域を1つにまとめてデータ領域とすることもあります。この場合だとメモリ領域は4つに分けられます。実際に4つ、5つの領域について少し詳しく説明しましょう。テキスト領域(プログラム領域)テキスト領域には、プログラムの中で機械語の部分、つまりCPUの命令コードが格納されている領域です。テキスト領域は読み出し専用となので、プログラム上でテキスト領域に書き込もうとすると割り込みが発生します。データ領域プログラムの中で初期値をもつような変数に割り当てられる領域です。bss領域プログラムの中で初期値をもたない(指定しない)ような変数に割り当てられる領域です。データ領域・bss領域の2つを合わせてデータ領域として考えることも多くあります。この場合、データ領域は静的変数や広域変数に割り当てられる領域となります。動的にメモリ領域の確保や解放を行うのがヒープ領域です。演算子により確保されたメモリ領域がヒープ領域となります。動的にサイズが確保されるため、実行中にヒープ領域のサイズが変化します。ヒープ領域のアドレスは先に確保したものから小さい順に割り当てられます。関数内にある局所変数や、関数への引数、戻り値などに割り当てられるのがスタック領域です。変数でない局所変数、および関数への引数や戻り値に割り当てられます。ヒープ領域と異なり、実行中にスタック領域のサイズは変化しません。スタック領域のアドレスは、ヒープ領域とは逆で、先に確保したものから大きい順に割り当てられます。4.システムコール最後にシステムコールについて簡単にですが説明したいと思います。システムコールとはOSがプログラム(アプリケーション)に対して提供する機能を呼び出すことをシステムコールといいます。言い換えると、OS側が提供している関数(API)をプログラムを使うことをシステムコールと呼びます。システムコールの種類システムコールには、例えば以下のようなものがあります。システムコールを使う理由システムコールを使う2つの理由としてハードウェアを操作するためのシンプルなインターフェースを使えるOSのリソースの保護があります。理由その1ハードウェアを操作するためのシンプルなインターフェースを使えることで、プログラムを書く人はハードウェアの詳しい知識なしにシステムコールを使うことができます。理由その2ファイル操作やメモリ割り当てなどの操作は、失敗すると他のプロセス、さらにはOSまで影響が出てしまうことがあります。そこでシステムコールを使うことにより、ファイル操作やメモリ割り当てなどの操作を安全に(OSを保護しながら)実現することができます。システムコールと割り込みシステムコールでは、「ファイル操作」や「メモリ割り当て」などの特殊な命令を行うこともあるため、非特権モードではシステムコールが実行できません。そのため、割り込みを行い、非特権モードから特権モードに変更してからシステムコールが実行されます。5.さいごに今回は4つのメモリ領域とシステムコールについて簡単にですが説明しました。次回からはUnixのファイルシステムについて何回かにわけて説明していきたいと思います。システムオートマトンPrologCLOSEサイト内検索を行います。はてなブログPro数学と情報が得意な大学生です。累計:リアルタイム現在の閲覧者数:。