У програмуванні, термін .bss або bss використовується в багатьох компіляторах і лінкерах (англ. linkers) як назва для розділу об'єктного файлу або виконуваного файлу, що містить статичні змінні які не були явно ініціалізовані до певного значення. Ця область часто називається "bss секцією" або "bss сегментом".
Як правило в об'єктному файлі зберігається лише довжина bss секції, і не зберігається жодних даних. [en] виділяє пам'ять для bss секції під час завантаження програми. На деяких платформах, частина або вся bss секція ініціалізується нулями. UNIX-подібні операційні системи і Windows ініціалізує bss секцію нулями, таким чином всі статично алоковані змінні в C і , які ініціалізуються такими значеннями, що всі їх біти будуть заповнені нулями, будуть розміщені у bss сегменті. Операційні системи можуть використовувати техніку, яка називається заповненням нулями за потребою (англ. zero-fill-on-demand) аби ефективно реалізувати bss сегмент. У вбудованому програмному забезпеченні, bss сегмент вказує на пам'ять, яка буде ініціалізована нулями [en] C перед тим як буде виконано вхід у main()
. Деякі середовища виконання C можуть дозволяти, щоб частина bss сегменту не була ініціалізована; змінні C повинні розміщуватися у даній частині bss сегменту явним чином.
BSS в C
В C, статично-алоковані об'єкти без явного ініціалізатора значення будуть ініціалізовані нулями (для арифметичних типів) або нульовим вказівником (для вказівних типів). В реалізації C, як правило, нульові значення і вказівники у бітовому представленні складаються лише із бітів з нульовими значеннями (хоча це не вимагається стандартом C). Таким чином, сегмент BSS як правило містить всі неініціалізовані об'єкти (змінні і константи), що оголошені в області видимості файлу (тобто, за межами будь-якої функції) а також не ініціалізовані локальні статичні змінні (локальні змінні оголошені із ключовим словом ); статичні локальні константи повинні ініціалізуватися в оголошенні, оскільки вони не мають окремого оголошення, вони як правило не розміщуються у BSS секції, хоча вони можуть явним чи неявним чином ініціалізувати в нульове значення.
[en], автор мови C і програміст, говорить, "Деякі люди люблять запам'ятовувати цей сегмент, як 'Краще залишити місце'" ("Some people like to remember it as 'Better Save Space'). Оскільки BSS сегмент містить змінні, які ще не мають будь-якого значення, не потрібно зберігати представлення цих змінних. В об'єктний файл записується розмір BSS сегмента, але BSS (на відміну від сегмента даних) не займає ніякого фактичного місця в об'єктному файлі."
Примітки
- ; (1986). (PDF). University of California, Berkeley. с. 3. CiteSeerX 10.1.1.368.432. Архів оригіналу (PDF) за 11 грудня 2018. Процитовано 14 жовтня 2019.
- . AVR Libc Home page. Архів оригіналу за 19 жовтня 2019. Процитовано 14 жовтня 2019.
- Peter van der Linden, Expert C Programming: Deep C Secrets [ 27 січня 2022 у Wayback Machine.], Prentice Hall 1994, p. 141
Посилання
- (1992). Advanced Programming in the Unix Environment. Addison–Wesley. Section 7.6. ISBN .
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U programuvanni termin bss abo bss vikoristovuyetsya v bagatoh kompilyatorah i linkerah angl linkers yak nazva dlya rozdilu ob yektnogo fajlu abo vikonuvanogo fajlu sho mistit statichni zminni yaki ne buli yavno inicializovani do pevnogo znachennya Cya oblast chasto nazivayetsya bss sekciyeyu abo bss segmentom Diagrama pokazuye tipovu strukturu pam yati tipovoyi komp yuternoyi programi iz sekciyami vidvedenimi pid tekst riznomanitni dani stek i kupu Cya stattya pro programuvannya Pro pidsistemi bazovih stancij Basic Service Set BSS div BSS Yak pravilo v ob yektnomu fajli zberigayetsya lishe dovzhina bss sekciyi i ne zberigayetsya zhodnih danih en vidilyaye pam yat dlya bss sekciyi pid chas zavantazhennya programi Na deyakih platformah chastina abo vsya bss sekciya inicializuyetsya nulyami UNIX podibni operacijni sistemi i Windows inicializuye bss sekciyu nulyami takim chinom vsi statichno alokovani zminni v C i C yaki inicializuyutsya takimi znachennyami sho vsi yih biti budut zapovneni nulyami budut rozmisheni u bss segmenti Operacijni sistemi mozhut vikoristovuvati tehniku yaka nazivayetsya zapovnennyam nulyami za potreboyu angl zero fill on demand abi efektivno realizuvati bss segment U vbudovanomu programnomu zabezpechenni bss segment vkazuye na pam yat yaka bude inicializovana nulyami en C pered tim yak bude vikonano vhid u main Deyaki seredovisha vikonannya C mozhut dozvolyati shob chastina bss segmentu ne bula inicializovana zminni C povinni rozmishuvatisya u danij chastini bss segmentu yavnim chinom BSS v CV C statichno alokovani ob yekti bez yavnogo inicializatora znachennya budut inicializovani nulyami dlya arifmetichnih tipiv abo nulovim vkazivnikom dlya vkazivnih tipiv V realizaciyi C yak pravilo nulovi znachennya i vkazivniki u bitovomu predstavlenni skladayutsya lishe iz bitiv z nulovimi znachennyami hocha ce ne vimagayetsya standartom C Takim chinom segment BSS yak pravilo mistit vsi neinicializovani ob yekti zminni i konstanti sho ogolosheni v oblasti vidimosti fajlu tobto za mezhami bud yakoyi funkciyi a takozh ne inicializovani lokalni statichni zminni lokalni zminni ogolosheni iz klyuchovim slovom statichni lokalni konstanti povinni inicializuvatisya v ogoloshenni oskilki voni ne mayut okremogo ogoloshennya voni yak pravilo ne rozmishuyutsya u BSS sekciyi hocha voni mozhut yavnim chi neyavnim chinom inicializuvati v nulove znachennya en avtor movi C i programist govorit Deyaki lyudi lyublyat zapam yatovuvati cej segment yak Krashe zalishiti misce Some people like to remember it as Better Save Space Oskilki BSS segment mistit zminni yaki she ne mayut bud yakogo znachennya ne potribno zberigati predstavlennya cih zminnih V ob yektnij fajl zapisuyetsya rozmir BSS segmenta ale BSS na vidminu vid segmenta danih ne zajmaye niyakogo faktichnogo miscya v ob yektnomu fajli Primitki 1986 PDF University of California Berkeley s 3 CiteSeerX 10 1 1 368 432 Arhiv originalu PDF za 11 grudnya 2018 Procitovano 14 zhovtnya 2019 AVR Libc Home page Arhiv originalu za 19 zhovtnya 2019 Procitovano 14 zhovtnya 2019 Peter van der Linden Expert C Programming Deep C Secrets 27 sichnya 2022 u Wayback Machine Prentice Hall 1994 p 141Posilannya 1992 Advanced Programming in the Unix Environment Addison Wesley Section 7 6 ISBN 0 201 56317 7