sbrk() and brk() semantics

Michel Tombroff tom at opera.chorus.fr
Sun Dec 16 00:21:54 AEST 1990


Here is a question related to the "semantics" of the brk()/sbrk()
UNIX system calls. If this has already been discussed on the NewsNet,
can somebody just send me pointers. Thanks.

sbrk(incr) : incr more bytes are added to the program's data
             and a pointer to the start of the new area is returned.

In all the implementation of sbrk() I have seen, the data area
of a process is a region that grows towards increasing virtual addresses.
This means that successive calls to sbrk() with positive increments
will return increasing addresses.

My questions are the following:

    1/ is this feature part of the "semantics" of the sbrk() system
       call, or is it a property of most actual UNIX implementations
       to have bss segments growing upward?

    2/ would it make sense to implement a bss into a region growing towards
       lower addresses. Suppose for instance my bss is a region whose
       most positive virtual address is fixed, and trying to extend its
       size would make it extend towards a smaller address:

            before                      after  sbrk(SIZE);

        _____________               _____________
        |           |               |           |  <-- high virtual addr
        |           |               |           |
        |           |               |           |
        |           |               |           |
        |   BSS     |               |   BSS     |
        |           |               |           |
        |           |               |           |
        |           |               |           |
        |           |               |           |
        -------------               |           |
                                    |           |
                                    |           |
                                    |           |
                        SIZE bytes  |           |
                        added       |           |
                                    |           |
                                    |           |
                                    -------------  <-- low virtual addr

       Note: we suppose here that there are no problems of overlapping, ...
             with the text/stack regions.

    3/ in the case this makes sense, what is the amount of UNIX
       code ( I mean commands, programs, utilities, X servers ) that would
       have to be rewritten. In other words, how much of UNIX programs
       make the assumption of "growing upward" memory regions.



Thanks,

-tom



________________________________________________________________________
Michel Tombroff                                 Tel: +33 (1) 30 64 82 77
Chorus Systemes                                 Fax: +33 (1) 30 57 00 66
6 Av. Gustave Eiffel                            Email: tom at chorus.fr
78182 Saint-Quentin-En-Yvelines
France



More information about the Comp.unix.internals mailing list