Ãëàâíàÿ > Îïåðàöèîííûå ñèñòåìû > UNIX
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.
Ãëàâíàÿ > Îïåðàöèîííûå ñèñòåìû > UNIX
|