Regarding brk and sbrk

Discussion in 'C Programming' started by venkat, Oct 17, 2007.

  1. venkat

    venkat Guest

    Hi folks,

    Can some help in understanding brk and sbrk. how does these are
    implemeted(means how the memeory will be allocated). How malloc will
    call these brk and sbrk. Please also give any example C program, where
    brk and sbrk are used to allocate memory.

    Appreciate your help in this regard,


    Thanks,
    Vikas.
     
    venkat, Oct 17, 2007
    #1
    1. Advertising

  2. venkat

    Guest

    On Oct 17, 1:24 pm, venkat <> wrote:
    > Can some help in understanding brk and sbrk. how does these are
    > implemeted(means how the memeory will be allocated). How malloc will
    > call these brk and sbrk. Please also give any example C program, where
    > brk and sbrk are used to allocate memory.


    brk() and sbrk() are not defined in the C Standard and are
    deliberately
    excluded from the POSIX.1 standard (see paragraphs B.1.1.1.3 and B.
    8.3.3).
     
    , Oct 17, 2007
    #2
    1. Advertising

  3. venkat

    cr88192 Guest

    "venkat" <> wrote in message
    news:...
    > Hi folks,
    >
    > Can some help in understanding brk and sbrk. how does these are
    > implemeted(means how the memeory will be allocated). How malloc will
    > call these brk and sbrk. Please also give any example C program, where
    > brk and sbrk are used to allocate memory.
    >


    as noted, these are not standard.
    following this, they are not even a good idea...

    now, for general info:
    malloc implementations tend to grab chunks of memory from the OS, and brk
    and sbrk were one such method (they worked by sliding a pointer, and
    generally mapping in pages as needed and so on).

    another, generally better, method, is the use of mmap (on linux and
    friends).

    on windows, a general way to grab raw memory is through VirtualAlloc.

    however, all this is a generally non-portable issue, and so, the exact
    answers will depend highly on the target OS...

    or such...


    > Appreciate your help in this regard,
    >
    >
    > Thanks,
    > Vikas.
    >
     
    cr88192, Oct 17, 2007
    #3
  4. venkat

    CBFalconer Guest

    venkat wrote:
    >
    > Can some help in understanding brk and sbrk. how does these are
    > implemeted(means how the memeory will be allocated). How malloc
    > will call these brk and sbrk. Please also give any example C
    > program, where brk and sbrk are used to allocate memory.


    This is off-topic. These calls normally appear in some Unix-like
    OS, and are used to expand (or possibly contract) the memory
    available to a process.

    You can see one example in nmalloc, a malloc/free/realloc system
    for DJGPP using sbrk, available at:

    <http://cbfalconer.home.att.net/download/>

    Since such calls are system dependent, try a news group that deals
    with your system if more data is needed.

    --
    Chuck F (cbfalconer at maineline dot net)
    Available for consulting/temporary embedded and systems.
    <http://cbfalconer.home.att.net>



    --
    Posted via a free Usenet account from http://www.teranews.com
     
    CBFalconer, Oct 17, 2007
    #4
  5. venkat

    user923005 Guest

    On Oct 17, 3:24 am, venkat <> wrote:
    > Hi folks,
    >
    > Can some help in understanding brk and sbrk. how does these are
    > implemeted(means how the memeory will be allocated). How malloc will
    > call these brk and sbrk. Please also give any example C program, where
    > brk and sbrk are used to allocate memory.


    Try over on news:comp.unix.programmer, where they will promptly tell
    you not to use those functions.
     
    user923005, Oct 17, 2007
    #5
  6. venkat

    pete Guest

    venkat wrote:
    >
    > Hi folks,
    >
    > Can some help in understanding brk and sbrk. how does these are
    > implemeted(means how the memeory will be allocated). How malloc will
    > call these brk and sbrk. Please also give any example C program, where
    > brk and sbrk are used to allocate memory.


    In chapter 8 of The C Programming Language, there is
    an example of a general purpose storage allocator function.

    The general purpose storage allocator function,
    calls a function named morecore.

    The definition of morecore, shows a call to sbrk.

    --
    pete
     
    pete, Oct 18, 2007
    #6
  7. On Oct 17, 3:24 pm, venkat <> wrote:
    > Hi folks,
    >
    > Can some help in understanding brk and sbrk. how does these are
    > implemeted(means how the memeory will be allocated). How malloc will
    > call these brk and sbrk. Please also give any example C program, where
    > brk and sbrk are used to allocate memory.
    >
    > Appreciate your help in this regard,
    >
    > Thanks,
    > Vikas.



    brk, sbrk - you need unistd.h
    They change the amount of space allocated for the
    calling process's data segment. They change data segment
    size .

    int brk(void *end_data_segment);
    void *sbrk(ptrdiff_t increment);

    brk sets the end of the data segment to the value specified by
    end_data_segment, when that value is reasonable, the system does have
    enough memory and the process does not exceed its max data size (see
    setrlimit(2)).

    sbrk increments the program's data space by increment bytes. sbrk
    isn't a system call, it is just a C library wrapper. Calling sbrk with
    an increment of 0 can be used to find the current location of the
    program break.

    On success, brk returns zero, and sbrk returns a pointer to the start
    of the new area. On error, -1 is returned, and errno is set to
    ENOMEM.

    The amount of allocated space increases as the break value
    increases. Newly allocated
    space is set to zero. If, how-ever, the same memory space is
    reallocated to the same pro-
    cess its contents are undefined.

    When a program begins execution using execve() the break is set at
    the highest location
    defined by the program and data storage areas.

    getrlimit and setrlimit get and set resource limits respectively. Each
    resource has an associated soft and hard limit, as defined by the
    rlimit structure (the rlim argument to both getrlimit() and
    setrlimit()):

    struct rlimit {
    rlim_t rlim_cur; /* Soft limit */
    rlim_t rlim_max; /* Hard limit (ceiling
    for rlim_cur) */
    };


    The soft limit is the value that the kernel enforces for the
    corresponding resource. The hard limit acts as a ceiling for the soft
    limit: an unprivileged process may only set its soft limit to a value
    in the range from 0 up to the hard limit, and (irreversibly) lower its
    hard limit. A privileged process may make arbitrary changes to either
    limit value.

    Have a look at these links ->
    1) http://linux.about.com/library/cmd/blcmdl2_brk.htm
    2) http://www.minix3.org/manpages/man2/brk.2.html

    Karthik Balaguru
     
    karthikbalaguru, Oct 19, 2007
    #7
  8. karthikbalaguru <> writes:
    > On Oct 17, 3:24 pm, venkat <> wrote:
    >> Can some help in understanding brk and sbrk. how does these are
    >> implemeted(means how the memeory will be allocated). How malloc will
    >> call these brk and sbrk. Please also give any example C program, where
    >> brk and sbrk are used to allocate memory.

    >
    > brk, sbrk - you need unistd.h

    [...]

    And therefore topical in comp.unix.programmer, not here.

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Oct 19, 2007
    #8
  9. On Wed, 17 Oct 2007 10:24:53 -0000, venkat <>
    wrote:

    >Hi folks,
    >
    >Can some help in understanding brk and sbrk. how does these are
    >implemeted(means how the memeory will be allocated). How malloc will
    >call these brk and sbrk. Please also give any example C program, where
    >brk and sbrk are used to allocate memory.
    >
    >Appreciate your help in this regard,


    Since neither is a standard C function, you might have better luck
    asking in a newsgroup related to whatever system they are defined on.


    Remove del for email
     
    Barry Schwarz, Oct 19, 2007
    #9
  10. venkat

    Tor Rustad Guest

    venkat wrote:
    > Hi folks,
    >
    > Can some help in understanding brk and sbrk.


    man man

    > how does these are
    > implemeted(means how the memeory will be allocated).


    There are a number of open sources UNIX'es, why not take a look?

    > How malloc will
    > call these brk and sbrk. Please also give any example C program, where
    > brk and sbrk are used to allocate memory.


    GNU provide an open source C library, why not take a look?

    http://g.oswego.edu/dl/html/malloc.html

    --
    Tor <torust [at] online [dot] no>

    "I have stopped reading Stephen King novels. Now I just read C code instead"
     
    Tor Rustad, Oct 20, 2007
    #10
  11. On Oct 17, 3:24 pm, venkat <> wrote:
    > Hi folks,
    >
    > Can some help in understanding brk and sbrk. how does these are
    > implemeted(means how the memeory will be allocated). How malloc will
    > call these brk and sbrk. Please also give any example C program, where
    > brk and sbrk are used to allocate memory.
    >
    > Appreciate your help in this regard,
    >


    The data region corresponds to the data-bss sections(initialized and
    uninitialized data, Static
    variables) of the executable file.

    Its size can be changed with the brk(2) system call.

    If the expansion of the bss data or the user stack exhausts available
    memory,
    the process is blocked and is rescheduled to run again with a larger
    memory
    space. New memory is added between the data and stack segments.

    Karthik Balaguru
     
    karthikbalaguru, Oct 24, 2007
    #11
  12. In article <>,
    karthikbalaguru <> wrote:
    >The data region corresponds to the data-bss sections(initialized and
    >uninitialized data, Static
    >variables) of the executable file.


    >Its size can be changed with the brk(2) system call.


    >If the expansion of the bss data or the user stack exhausts available
    >memory,
    >the process is blocked and is rescheduled to run again with a larger
    >memory
    >space. New memory is added between the data and stack segments.


    I don't know what system you are describing, but
    A) It isn't defined by C; and
    B) Matters are handled in *completely* different ways on some systems; and
    C) The part about blocking isn't even the way things get handled
    on the Unix systems I've used.
    --
    "Is there any thing whereof it may be said, See, this is new? It hath
    been already of old time, which was before us." -- Ecclesiastes
     
    Walter Roberson, Oct 24, 2007
    #12
  13. venkat

    CBFalconer Guest

    karthikbalaguru wrote:
    > venkat <> wrote:
    >
    >> Can some help in understanding brk and sbrk. how does these are
    >> implemeted (means how the memeory will be allocated). How malloc
    >> will call these brk and sbrk. Please also give any example C
    >> program, where brk and sbrk are used to allocate memory.

    >
    > The data region corresponds to the data-bss sections (initialized
    > and uninitialized data, Static variables) of the executable file.
    >
    > Its size can be changed with the brk(2) system call.
    >
    > If the expansion of the bss data or the user stack exhausts
    > available memory, the process is blocked and is rescheduled to
    > run again with a larger memory space. New memory is added
    > between the data and stack segments.


    This only applies to some specific operating systems, and is
    off-topic for c.l.c. Please don't give off-topic info here - it is
    better to refer the asker to some other newsgroup where answers
    will be properly vetted.

    --
    Chuck F (cbfalconer at maineline dot net)
    Available for consulting/temporary embedded and systems.
    <http://cbfalconer.home.att.net>



    --
    Posted via a free Usenet account from http://www.teranews.com
     
    CBFalconer, Oct 25, 2007
    #13
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    7
    Views:
    438
  2. maadhuu
    Replies:
    3
    Views:
    378
    maadhuu
    Jul 29, 2005
  3. Replies:
    8
    Views:
    458
  4. Malloc & sbrk

    , Mar 5, 2006, in forum: C Programming
    Replies:
    6
    Views:
    1,038
    Keith Thompson
    Mar 6, 2006
  5. J de Boyne Pollard

    need help wit sbrk

    J de Boyne Pollard, Sep 12, 2007, in forum: C++
    Replies:
    0
    Views:
    568
    J de Boyne Pollard
    Sep 12, 2007
Loading...

Share This Page