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 SolutionsIn 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 1Our 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