Categories: 未分類

sbrk

Sbrk

brkおよびsbrkは、プロセスのデータセグメントに割り当てられるメモリの量を制御するためにUnixおよびUnixライクなオペレーティングシステムで使用される基本的なメモリ管理システムコールです。これらの関数は通常、 mallocなどの高レベルのメモリ管理ライブラリ関数から呼び出され
ます。元のUnixシステムで
は、アプリケーションが追加のデータスペースを取得できる唯一の方法はbrkと
sbrkでした。それ以降のバージョンでは、 mmap呼び出しを使用してこれを実行することもできました コンテンツ
1 説明
2 関数のシグネチャと動作
3 エラーコード
4 も参照してください
5 参考文献

説明
brkおよびsbrk呼び出しは、呼び出しプロセスのデータセグメントに割り当てられたスペースの量を動的に変更します。変更は、プロセスのプログラムブレークをリセットすることによって行われます。これにより、割り当てることができる最大スペースが決まります。プログラムブレークは、データ領域の現在の端を超えた最初の場所のアドレスです。ブレーク値が増加すると、使用可能なスペースの量が増加します。使用可能なスペースは、ブレークを下げてから増やしない限り、ゼロの値に初期化されます。これは、同じページを不特定の方法で再利用する可能性があるためです。ブレーク値は、メモリ管理アーキテクチャに適したサイズに自動的に切り上げることができます。 sbrkと brkは、1997年の標準(Single UNIX Specification v2またはPOSIX.1-1998)でもレガシーと見なされていました。それらはPOSIX.1-2001で削除されました。

関数のシグネチャと動作
#include int brk (void * end_data_segment ); void * sbrk (intptr_tインクリメント);
sbrkは、場合によっては負のサイズを追加することによってプログラムのブレーク値を調整するために
使用され、brkは、ブレーク値をポインターの値に設定するために使用されます。プログラムブレークの現在の値をフェッチするには、インクリメントパラメータをゼロに設定します。
正常に完了すると、
brkサブルーチンは値0を返し、
sbrkサブルーチンはプログラムブレークの前の値を返します(使用可能なスペースが増えると、この前の値も新しい領域の開始を示します)。いずれかのサブルーチンが失敗した場合、値-1が返さ
れ、エラーを示すためにerrnoグローバル変数が設定されます。
すべてのUnixライクなシステムが、ユーザーにデータセグメントを制御させるという概念を楽しんでいるわけではありません。Mac OS Xの実装
sbrkのはエミュレーションであり、4メガバイトの最大割り当てを有します。最初の呼び出しでは、シミュレートされたセグメントを保持するために、まさにこの大きな領域が割り当てられます。この制限に達すると、-1が返され、
errnoがENOMEMに設定され brkは常にエラーです。

エラーコード
次の1つ以上が当てはまる場合、エラー
ENOMEMが設定され、割り当てられたスペースは変更されません。
要求された変更は、システムが課す最大値で許可されるよりも多くのスペースを割り当てます。
要求された変更により、ブレーク値が、接続されている共有メモリセグメントの開始アドレス以上の値に設定されます。

も参照してください
実行(コンピューティング)
アプリケーションプログラミングのメモリアドレス#アドレス空間

参考文献
^ 「プロセスメモリの概念」。フリーソフトウェアファウンデーション。
^ 「OpenBSD用の新しいmalloc(3)」(PDF)。
^ 「POSIXメモリ管理」。blog.pr4tt.com。
^ X / Open CAE仕様、システムインターフェイスおよびヘッダー(PDF)(2版)。X / Open Company Ltd.、英国、1994年9月。p。64 。
^ “brk、sbrk-スペース割り当ての変更(LEGACY)”。SingleUNIX®Specification、バージョン2。1997 。
^ brk(2)  –  Linuxプログラマーマニュアル–システムコール ^ 「BRK.c」。

admin

Share
Published by
admin

Recent Posts

SerıkqaliBrekeşev

Ser%C4%B1kqali_…

1か月 ago

セル・ヒラン(アルバム)

Ser%C3%BA_Gir%C…

1か月 ago

セル・ヒラン

Ser%C3%BA_Gir%C…

1か月 ago

セロン・デ・ナギマ

Ser%C3%B3n_de_N…

1か月 ago

セロン

Ser%C3%B3n セロンは…

1か月 ago

セロ

Ser%C3%B3 SEROは…

1か月 ago