Il segmento bss (indicato come .bss o bss) è una porzione di un programma che contiene variabili statiche che sono dichiarate ma non esplicitamente inizializzate. In alcuni sistemi operativi tale sezione viene inizializzata a zero quando il programma viene caricato in memoria.
Il nome della sezione è un acronimo di "block started by symbol" e deriva da un opcode presente nell'assembler per IBM 704.[1]
Alcune architetture presentano il segmento tbss che ha scopi analoghi per la programmazione a thread.[2]
Origini
modifica
Storicamente, BSS (da Block Started by Symbol) è una pseudo-operazione dell'assemblerUA-SAP (United Aircraft Symbolic Assembly Program), sviluppato a metà degli anni '50 per l'IBM 704 da Roy Nutt, Walter Ramshaw ed altri collaboratori presso la United Aircraft Corporation.
La parola chiave BSS è stata successivamente incorporata nel FORTRAN Assembly Program[3] (FAP) e nel Macro Assembly Program[4] (MAP), gli assembler standard di IBM per i suoi computer 709 e 7090/94 . BSS definiva un'etichetta e riservava un blocco di spazio non inizializzato per un dato numero di parole.[5] In questo caso .BSS fungeva da scorciatoia dal riservare un numero di allocazioni più piccole separate. Alcuni assembler supportano una direttiva complementare o alternativa BES (da Block Ended by Symbol) in cui il simbolo specificato corrisponde alla fine del blocco riservato. [6]
Note
modifica- ^ (EN) Unix - Frequently Asked Questions (1/7), su faqs.org.«Actually the acronym (in the sense we took it up; it may have other credible etymologies) is "Block Started by Symbol." It was a pseudo-op in FAP (Fortran Assembly [-er?] Program), an assembler for the IBM 704-709-7090-7094 machines.»
- ^ (EN) Special Sections, su Linux Standard Base PDA Specification, refspecs.linuxbase.org.
- ^ FORTRAN ASSEMBLY PROGRAM (FAP) for the IBM 709/7090 (PDF), IBM, 1961, p. 30.
- ^ IBM 7090/7094 IBSYS Operating System Version 13 Macro Assembly Program (MAP) Language (PDF), IBM, 1963.
- ^ Timar, Unix - Frequently Asked Questions (1/7), su faqs.org, 1996.
- ^ Free Software Foundation, Inc., 38.9. Directives, su linux.web.cern.ch. URL consultato il 6 febbraio 2026 (archiviato dall'url originale il 19 marzo 2014).
Bibliografia
modifica- Robert Love, Memory Management, in Linux System Programming, O'Reilly, 2007, p. 245, ISBN 978-0-596-00958-8.
- Marshall Kirk McKusick, George V. Neville-Neil e Robert N.M. Watson, Glossary, in The Design and Implementation of the FreeBSD Operating System, Addison-Wesley, 2015, p. 931, ISBN 978-0-321-96897-5.
- Douglas Comer, Basic Memory Management, in Operating System Design, CRC Press, 2012, p. 142, ISBN 978-1-4398-8111-8.