Семафор в Java / Операционные системы - PullRequest
0 голосов
/ 26 марта 2019

Я новичок в форуме и в программировании в целом. На данный момент я изучаю "Операционные системы" и Java.На этой неделе мы начали тему «Семафоры», и мне кажется, что это немного сбивает с толку.У меня есть это упражнение:

общая переменная numberofworks = 0


    EmployeeA 
    {
        while (True) {
            A_works_outside();
            A_works_inside();
            numberofworks =numberofworks + 1;
        }
    }

    EmployeeB
    {
        while (True) {
            B_works_outside();
            B_works_inside();
            numberofworks =numberofworks + 1;
        }
    }

ну, упражнение хочет использовать семафоры (P и V), поэтому

  1. В iповторение EmployeeA A_works_inside() выполняется только после завершения B_works_outside ()
  2. В i повторение EmployeeB Β_works_inside() выполняется только после завершения works_works_outside ()

  3. Переменная numberofworks должна быть суммой numberofworksA + numberofworksB

Я должен написать код на Java и в «операционной системе», прежде чем помочь мне в этом упражнении (если вы можетеконечно) Общие вопросы по семафорам: в чем принципиальное отличие мьютекса от семафора?и как мне понять, когда использовать мьютекс или нет?

1 Ответ

0 голосов
/ 26 марта 2019

Попытка использовать ресурс, защищенный мьютексом:

- Hi! Can I ?
*If free*
- Yup go on.
*Else*
- No, go away!

Попытка использовать ресурс, защищенный семафором:

- Hi! Can I ?
*If free*
- Yup go on.
*Else*
- No, wait in the queue!
...