تبلیغات
کامپیوتر 88 - مسئله ی آرایشگر خواب آلود در سیستم عامل
تبادل اطلا عات بین دانشجویان

مسئله ی آرایشگر خواب آلود در سیستم عامل

نویسنده :رسول
تاریخ:سه شنبه 23 خرداد 1391-11:07 ب.ظ

 

جواب مسئله ی آرایشگر خواب آلود در سیستم عامل :  دانلود

# These three are mutexes (only 0
or 1 possible)

Semaphore custReady = 0        
# if 1, at least one customer is
ready

Semaphore barberReady =
0
Semaphore
accessWRSeats = 1       # if 1, the # of seats in the waiting room can be incremented or
decremented

int numberOfFreeWRSeats = N     # total number of seats in the waiting
room


def Barber():
  while
true:                  
# Run in an infinite
loop.

    wait(custReady)            
# Try to acquire a customer - if
none is available, go to sleep.

   
wait(accessWRSeats)         # Awake - try to get access to modify # of
available seats, otherwise sleep.

   
numberOfFreeWRSeats+=  1    # One waiting room chair becomes
free.

    signal(barberReady)         # I am ready to
cut.

    signal(accessWRSeats)       # Don't need the lock on the chairs
anymore.

    # (Cut hair here.)

def
Customer():
  while
true:                  
# Run in an infinite
loop.

    wait(accessWRSeats)         # Try to get access to the waiting room
chairs.

    if numberOfFreeWRSeats > 0: #
If there are any free
seats:

     
numberOfFreeWRSeats-=
1   #   sit down in a
chair

      signal(custReady)         #   notify the barber, who's waiting until
there is a customer

      signal(accessWRSeats)     #
  don't need to lock the chairs
anymore

      wait(barberReady)         #   wait until the barber is
ready

      # (Have hair cut
here.)

    else:                      
# otherwise, there are no free
seats; tough luck --

      signal(accessWRSeats)     #
  but don't forget to release the lock on the
seats!

      # (Leave without a
haircut.)



نوع مطلب : آموزشی