Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
main.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
20 Мб
Скачать
☆

21. Семафоры. Общие и бинарные семафоры. Решение задачи о критической секции с помощью семафоров.

Семафор – вид разделяемой переменной, над которой выполняется 2 неделимые операции.

P операция над семафором атомарно(неделимо) уменьшает значение семафора на 1, но только в том случае, если текущее значение семафора отлично от нуля. Иначе вычитания не происходит, а поток задерживается во входной очереди семафора.

22. Решение задачи о производителях и потребителях с помощью семафоров.

Есть некоторое количество потоков, которые производят порции информации и помещают ее в буфер(это производители), есть другая группа потоков, которые забирают информацию из буфера, но только в том случае, если там есть информация(это потребители). Задача заключается в таком обеспечении взаимодействия, чтобы все, что положили в буфер производители было забрано потребителями и ничего из того, что положили производители не было бы взято потребителями более одного раза.

PROGRAM потребитель_производитель;

  VAR искл_доступ:SEMAPHORE;

      буфер_полон: SEMAPHORE;

      буфер_пуст:  SEMAPHORE;

   PROCEDURE производитель;

         ...

    BEGIN

     WHILE истина DO

      BEGIN

         ...

        P(буфер_пуст);

        P(искл_доступ);

        <Поместить сообщение в буфер>

        V(искл-доступ);

        V(буфер-полон);

         ...

      END

    END;

   PROCEDURE потребитель;

        ...

     BEGIN

      WHILE истина DO

       BEGIN

         ...

        P(буфер_полон);

        P(искл_доступ);

        <Взять сообщение из буфера>

        V(искл_доступ);

       V(буфер_пуст);

         ...

       END

     END;

   BEGIN

       искл_доступ:=1;

       буфер_полон:=0;

       буфер_пуст:=N;

       PARBEGIN

         производитель;

         потребитель;

       PAREND

   END.

23. Задача об обедающих философах и ее решение с помощью семафоров.

В центре стола – большое блюдо, а на столе лежат пять вилок – каждая между двумя соседними тарелками. 5 философов проводят свое время в 1 из 2 состояний. Они какое-то время с помощью 2 вилок едят блюдо. После того, как закончили, они кладут вилки по одной назад. В другое время они думают, пока не проголодаются.

Задача состоит в том, чтобы организовать время так, чтобы философы не умерли с голоду.

Для того, чтобы они не умерли с голоду, надо, чтобы все философы вначале брали одну вилку кроме одного философа.

PROGRAM обедающие_философы;

  VAR вилка[5]: ARRAY OF SEMAPHORE;

      K:INTEGER;

   PROCEDURE философ(i:INTEGER);

     VAR левая,правая:1..5;

     BEGIN

      левая:=(i+1) mod 5;

      правая:=i mod 5;

      WHILE истина DO

       BEGIN

        <размышления>;

        P(вилка[левая];вилка[правая]);

        <еда>;

        V(вилка[левая];вилка[правая]);

       END

     END;

   BEGIN

    (* инициализация массива семафоров *)

    K:=5;

    REPEAT вилка[K]:=1; K:=K-1 UNTIL K=0;

     PARBEGIN

       философ(1);

       ...

       философ(5);

     PAREND

   END.

24. Мониторы

25. Реализация взаимных исключений в мониторах.

26. Условная синхронизация в мониторах.

27. Реализация мониторов в Java.

28. Статические классы в Java.

29. Опишите процедуры создания проекта, класса, интерфейса в Eclipse

30. Спецификаторы видимости в Java.

31. Массивы, их описание и использование в Java.

32. Циклы и операторы условного перехода в Java.

33. Объектно-ориентированное программирование в Java. Конструкторы.

34. Конструкторы по умолчанию в Java.

35. Объектно-ориентированное программирование в Java. Наследование.

36. Объектно-ориентированное программирование в Java. Полиморфизм.

37. Объектно-ориентированное программирование в Java. Статические поля и методы.

38. Объектно-ориентированное программирование в Java. Интерфейсы.

39. Создание графических интерфейсов в Java. Общие сведения о Swing и AWT. Модель MVC.

40. Обработка событий в Swing.

41. Создание потоков в Java.

42. Условная синхронизация в мониторах Java.

43. Потоки-демоны в Java.

44. Диаграмма состояний потока в Java.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]