SBRK(3)
XENIX System V (21 èþíÿ 1987)

ÍÀÇÂÀÍÈÅ
sbrk, brk - pacïpeäeëÿeò ïaìÿòü â ceãìeíòe äaííûx

ÑÈÍÒÀÊÑÈÑ


          char *sbrk (incr)

          int incr;



          int brk (addr)

          char *addr;

ÎÏÈÑÀÍÈÅ
Sbrk è brk ècïoëüçyþòcÿ äëÿ äèíaìè÷ecêoão èçìeíeíèÿ paçìepa ceãìeíòa äaííûx òeêyùeão ïpoöecca; cì. exec(3). Èçìeíeíèe paçìepa äeëaeòcÿ ïyòeì ycòaíoâêè äëÿ òeêyùeão ïpoöecca ãpaíèöû ceãìeíòa äaííûx, ò.e. aäpeca ïepâoé ÿ÷eéêè ïaìÿòè, íaxoäÿùeécÿ ça êoíöoì ceãìeíòa äaííûx ïpoöecca. Paçìep ceãìeíòa yâeëè÷èâaeòcÿ, ecëè ãpaíèöa âoçpacòaeò.

Sbrk äoáaâëÿeò incr áaéòoâ ê çía÷eíèþ ãpaíèöû ceãìeíòa è cooòâeòcòâyþùèì oápaçoì èçìeíÿeò âûäeëeííoe ceãìeíòy ìecòo. Incr ìoæeò áûòü oòpèöaòeëeí, ÷òo yìeíüøaeò çía÷eíèe ãpaíèöû è paçìep ceãìeíòa.

B cëy÷ae áoëüøoé ìoäeëè ïaìÿòè äëÿ 286 ïpoöeccopa, ecëè incr áoëüøe ÷ècëa áaéòoâ, ocòaâøèxcÿ äo êoíöa ceãìeíòa, sbrk aâòoìaòè÷ecêè paçìeùaeò òpeáyeìûe áaéòû â íoâoì ceãìeíòe äaííûx. Teì caìûì ãapaíòèpyeòcÿ ïpèíaäëeæíocòü çaïpoøeííûx áaéòoâ oäíoìy ceãìeíòy. Ecëè incr oòpèöaòeëeí è eão aácoëþòíoe çía÷eíèe paâío äëèíe òeêyùeão ceãìeíòa äaííûx, ceãìeíò aâòoìaòè÷ecêè ocâoáoæäaeòcÿ. Ecëè incr oòpèöaòeëeí è eão aácoëþòíoe çía÷eíèe áoëüøe äëèíû òeêyùeão ceãìeíòa, ceãìeíò ocâoáoæäaeòcÿ è äoïoëíèòeëüíûe áaéòû yäaëÿþòcÿ èç ïpeäûäyùeão ceãìeíòa äaííûx. Ïpeäûäyùèì ÿâëÿeòcÿ ceãìeíò, coäepæaùèé äaííûe, âûäeëeííûe ïocëeäíèì âûçoâoì sbrk, íe oòíocÿùèìcÿ ê äaííoìy ceãìeíòy.

Sbrk aâapèéío çaâepøaeòcÿ è paçìep ceãìeíòa íe èçìeíÿeòcÿ, ecëè âûïoëíÿeòcÿ xoòÿ áû oäío èç cëeäyþùèx ycëoâèé:

[ENOMEM]
Çaïpoøeío áoëüøe ïaìÿòè, ÷eì äoïycêaeò cècòeìa (cì. ulimit(3)).

Ïoïûòêa ocâoáoäèòü ïaìÿòè áoëüøe, ÷eì ee áûëo y ïpoöecca.

Ïoïûòêa ycòaíoâèòü ãpaíèöy ceãìeíòa ìeíüøe ïepâoía÷aëüíoé. Ïepâoía÷aëüíaÿ ãpaíèöa ýòo ãpaíèöa â ìoìeíò còapòa ïpoöecca ïëþc äëèía paçäeëÿeìûx äaííûx, êoòopûe áûëè âûäeëeíû ïocëe ýòoão.

Brk ycòaíaâëèâaeò ãpaíèöy ceãìeíòa paâíoé çía÷eíèþ addr è cooòâeòcòâyþùèì oápaçoì èçìeíÿeò âûäeëeííoe ceãìeíòy ìecòo. Brk çaâepøaeòcÿ c oøèáêoé, ecëè yêaçaííûé aäpec çaäaeò íecyùecòâyþùèé ceãìeíò èëè ïpeâûøaeò äoïycòèìûé cècòeìoé ïpeäeë.

BOÇÂPAÙAEÌOE ÇÍA×EÍÈE
B cëy÷ae ycïeøíoão çaâepøeíèÿ sbrk âoçâpaùaeò yêaçaòeëü ía ía÷aëo âûäeëeííoão ìecòa, a brk âoçâpaùaeò 0. Èía÷e âoçâpaùaeòcÿ çía÷eíèe -1 è â errno çaíocèòcÿ êoä oøèáêè. B cëy÷ae áoëüøoé ìoäeëè ïaìÿòè sbrk coçäaeò íoâûé ceãìeíò äaííûx è âoçâpaùaeò eão còapòoâûé aäpec.

ÑÌ. ÒÀÊÆÅ
exec(3)

ÇAÌE×AÍÈß
B cëy÷ae áoëüøoé ìoäeëè ïaìÿòè äëÿ 286 ïpoöeccopa âûçoâ "sbrk(0)" íe oáÿçaòeëüío âoçâpaùaeò còapòoâûé aäpec cëeäyþùeão âûçoâa sbrk. B ÷acòíocòè, òaê áyäeò, ecëè cëeäyþùèé âûçoâ coçäaeò íoâûé ceãìeíò äaííûx. Boçâpaùaeìoe âûçoâoì "sbrk(0)" çía÷eíèe cëeäyeò ècïoëüçoâaòü äëÿ oïpeäeëíèÿ ècxoäíoé ãpaíèöû ceãìeíòa äaííûx.