1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Process synchronisation..

Discussion in 'Operating System' started by habibussamahms, Jan 13, 2010.

  1. habibussamahms

    habibussamahms New Member

    Joined:
    Dec 2, 2009
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Hi brothers and sisters.. I am doing my IN IT.I am following Abraham Silberschatz "Operating System Concepts".. Please help me with regards to process synchronisation since I am not able to understand the logical progression but I am aware of some concepts
    Here it goes
    "
    A
    solution to the critical-section problem must satisfy the following three
    requirements:
    1. Mutual Exclusion: If process
    Pi is executing in its critical section, then no
    other processes can be executing in their critical sections.
    2. Progress: If no process is executing in its critical section and some processes
    wish to enter their critical sections, then only those processes that are
    not executing
    in their remainder section can participate in the decision
    on which will enter its critical section next, and this selection cannot be
    postponed indefinitely.

    3. ​
    Bounded Waiting: There exists a bound on the number of times that other
    processes are allowed to enter their critical sections after a process has made
    a request to enter its critical section and before that request is granted.
    We assume that each process is executing at a nonzero speed. However, we can
    make no assumption concerning the relative speed of the
    n processes.
    In Sections 7.2.1 and 7.2.2, we work up to solutions to the critical-section
    problem that satisfy these three requirements. The solutions do not rely on any
    assumptions concerning the hardware instructions or the number of processors
    that the hardware supports. We do, however, assume that the basic machinelanguage
    instructions (the primitive instructions such as load, store, and
    t e s t ) are executed atomically. That is, if two such instructions are executed
    concurrently, the result is equivalent to their sequential execution in some
    unknown order. Thus, if
    n load and a store are executed concurrently, the
    load will get either the old value or the new value, but not some combination
    of the two.
    When presenting an algorithm, we define only the variables used for synchronization
    purposes, and describe only a typical process
    Pi whose general
    structure is shown in Figure 7.1. The entry section and exit section are enclosed

    in boxes to highlight these important segments of code.

    do
    while(turn!=i)

    critical section;
    turn=j;
    remainder section
    }while(1)

    Figure 7.2 The structure of process Pi in algorithm 1.

    7.2.1 Two-Process Solutions​
    In this section, we restrict our attention to algorithms that are applicable to
    only two processes at a time. The processes are numbered
    Po and PI. For
    convenience, when presenting
    Pi, we use Pi to denote the other process; that
    is, j
    == 1 - i .

    7.2.1.1 Algorithm 1​
    Our first approach is to let the processes share a common integer variable turn
    initialized to ​
    0 (or 1). If turn == i, then process Pi is allowed to execute in its
    critical section. The structure of process
    Pi is shown in Figure 7.2.
    This solution ensures that only one process at a time can be in its critical
    section. However, it does not satisfy the progress requirement, since it requires
    strict alternation of processes in the execution of the critical section. For
    example, if turn
    == 0 and PI is ready to enter its critical section, PI cannot
    do so, even though
    Po may be in its remainder section.

    -End of quote

    I am able to understand all the three conditions..As the author explains that turn is a variable initialised to zero..If turn equals i,the process Pi executes but in the program the condition inside the while is turn!=i..How does this ensured that ensures that only one process at a time can be in its critical
    section? Why does it not satisfy the progress requirement..
    Thanks​
     

Share This Page