Вопросы 1.

На рис. 2.2 показаны три состояния процессов. Теоретически при трех состояниях может быть шесть переходов, по два из каждого состояния. Но показаны только четыре перехода. Возможны ли такие обстоятельства, при которых осуществимы один или оба из пропущенных переходов?

2.

Предположим, вам нужно разработать новую компьютерную архитектуру, которая вместо использования прерываний осуществляет аппаратное переключение процессов. Какие сведения необходимы центральному процессору? Опишите возможное устройство аппаратного переключения процессов.

3. На всех ныне существующих компьютерах хотя бы часть обработчиков прерываний написана на ассемблере. Почему?

4. Когда в результате прерывания или системного вызова управление передается операционной системе, используется, как правило, область стека ядра, отделенная от стека прерываемого процесса. Почему?

5. У компьютерной системы достаточно места, чтобы хранить в основной памяти пять программ. Половину своего времени эти программы простаивают в ожидании ввода-вывода. Какая доля процессорного времени при этом тратится впустую?

6. У компьютера имеется 4 Гбайт оперативной памяти, 512 Мбайт из которых занимает операционная система. Все процессы, имеющие (для простоты) одинаковые характеристики, занимают еще 256 Мбайт. Каким будет допустимое время ожидания ввода-вывода, если цель заключается в задействовании времени центрального процессора на 99 %?

7. Несколько заданий могут быть запущены параллельно и смогут завершить работу быстрее, чем при последовательном запуске. Предположим, что два задания, на каждое из которых требуется 10 мин процессорного времени, запускаются одновременно. Сколько времени пройдет до завершения второго из них, если они будут запущены последовательно? А сколько времени пройдет, если они запущены параллельно? При этом предположим, что на ожидание завершения операций ввода-вывода затрачивается 50 % времени.

8. Представьте себе мультипрограммную систему со степенью 6 (то есть имеющую в памяти одновременно шесть программ). Предположим, что каждый процесс проводит 40 % своего времени в ожидании ввода-вывода. Каким будет процент использования времени центрального процессора?

9. Представьте, что вы пытаетесь загрузить из Интернета файл размером 2 Гбайт. Файл доступен из набора зеркальных серверов, каждый из которых может отдать поднабор файловых байтов; предположим, что заданный запрос определяет стартовые и финишные байты файла. Объясните, как можно воспользоваться потоками, чтобы уменьшить время загрузки.

10. В тексте главы утверждалось, что модель на рис. 2.8, а не подходит для файлового сервера, использующего кэш в оперативной памяти. Почему? Может ли каждый процесс иметь собственный кэш?

11. При разветвлении многопоточного процесса возникает проблема при копировании в дочерний процесс всех потоков родительского процесса. Предположим, что один из исходных потоков находится в состоянии ожидания ввода с клавиатуры. Теперь клавиатурного ввода будут ожидать два потока, по одному в каждом процессе. Может ли подобная проблема когда-либо возникнуть в однопоточных процессах?

12. На рис. 2.6 показан многопоточный веб-сервер. Если единственным способом прочитать данные из файла является обычный блокирующий системный вызов read, то какие потоки были использованы для веб-сервера — реализованные на уровне пользователя или реализованные на уровне ядра? Почему?

13. В тексте главы мы описали многопоточный веб-сервер, показывая, почему он лучше, чем однопоточный сервер и сервер на машине с конечным числом состояний. Существуют ли какие-нибудь обстоятельства, при которых предпочтение может быть отдано однопоточному серверу? Приведите пример.

14. В табл. 2.4 набор регистров упомянут в качестве элемента, присущего каждому потоку, а не каждому процессу. Почему? Ведь у машины, в конечном счете, только один набор регистров.

15. Зачем потоку добровольно отказываться от центрального процессора, вызывая процедуру thread_yield? Ведь в отсутствие периодических таймерных прерываний он может вообще никогда не вернуть себе центральный процессор.

16. Может ли поток быть приостановлен таймерным прерыванием? Если да, то при каких обстоятельствах, а если нет, то почему?

17. Нужно сравнить чтение файла с использованием однопоточного и многопоточного файловых серверов. Если данные находятся в поблочном кэше, то на получение запроса, его диспетчеризацию и всю остальную обработку затрачивается 15 мс. Если необходимо выполнить операцию чтения с диска, что происходит в каждом третьем случае, то на все это требуется потратить дополнительные 75 мс, в течение которых поток приостанавливается. Сколько запросов в секунду способен обработать сервер, если он работает в однопоточном режиме? Сколько таких же запросов он может обработать в многопоточном режиме?

18. В чем заключается самое большое преимущество от реализации потоков в пользовательском пространстве? А в чем заключается самый серьезный недостаток?

19. В листинге 2.1 создание потоков и сообщения, выводимые потоками, чередуются в произвольном порядке. Существует ли способ задать строгий порядок: создан поток 1, поток 1 выводит сообщение о существовании потока 1, создан поток 2, поток 2 выводит сообщение о существовании потока 2 и т. д.? Если существует, то как он реализуется? А если нет, то почему?

20. Рассматривая использование в потоках глобальных переменных, мы применили процедуру create global для выделения участка памяти не под значение самой переменной, а под хранение указателя на эту переменную. Является ли это действие необходимым и могут ли процедуры так же успешно работать с самими значениями переменных?

21. Рассмотрим систему, в которой потоки реализованы целиком в пользовательском пространстве, а система поддержки исполнения программ 1 раз в секунду получает таймерное прерывание. Предположим, таймерное прерывание происходит в тот самый момент, когда какой-то поток выполняется в системе поддержки исполнения программ. К возникновению какой проблемы это может привести? Можете ли вы предложить способ разрешения этой проблемы?

22. Предположим, что у операционной системы отсутствуют средства, подобные системному вызову select, чтобы узнать заранее, приведет ли к блокировке считывание информации из файла, канала или устройства, но она допускает установку аварийного таймера, прерывающего заблокировавшиеся системные вызовы. Можно ли в таких условиях реализовать набор потоков в пользовательском пространстве? Обоснуйте.

23. Будет ли решение активного ожидания, использующее переменную turn (см.

рис. 2.17), работать, когда два процесса запущены на мультипроцессорной системе с общей памятью, то есть на системе, где два центральных процессора совместно используют общую память?

24. Будет ли показанное в листинге 2.2 решение Петерсона, позволяющее добиться взаимного исключения, работать при приоритетном планировании процессов? А каков будет ответ при неприоритетном планировании?

25. Может ли проблема инверсии приоритетов, рассмотренная в разделе «Приостановка и активизация», проявиться в потоках, реализованных на уровне пользователя? Почему да или почему нет?

26. В разделе «Приостановка и активизация» была описана ситуация, возникающая с процессом H, имеющим высокий приоритет, и процессом L, имеющим низкий приоритет, которая приводит к бесконечному зацикливанию процесса H. Возникает ли такая же проблема, если вместо приоритетного используется циклическое планирование? Обоснуйте.

27. Какие стеки существуют в системе, имеющей потоки, реализованные на пользовательском уровне: по одному стеку на поток или по одному стеку на процесс? Ответьте на тот же вопрос при условии, что потоки реализованы на уровне ядра. Обоснуйте ответ.

28. Обычно в процессе разработки компьютера его работа сначала моделируется программой, которая запускает строго по одной команде. Таким сугубо последовательным способом моделируются даже многопроцессорные компьютеры. Может ли при отсутствии одновременных событий, как в данном случае, возникнуть состязательная ситуация?

29. Задача производителя и потребителя может быть расширена для использования на системах с несколькими производителями и потребителями, которые записывают данные в общий буфер (или считывают их из него). Предположим, что каждый производитель и потребитель запущен в собственном потоке. Будет ли решение, представленное в листинге 2.6, работать на таких системах?

30. Рассмотрите следующее решение задачи взаимного исключения, затрагивающей два процесса, P0 и P1. Предположим, что переменная turn имеет исходное значение 0. Код процесса P0 показан далее:

/* Другой код */

while (turn != 0) { } /* Do nothing and wait. */

Critical Section /* . . . */ turn = 0;

/* Другой код */

31. Для процесса P1 замените в показанном выше коде значение 0 значением 1. Определите, отвечает ли решение всем требуемым условиям для решения задачи взаимного исключения.

32. Как в операционной системе, способной отключать прерывания, можно реализовать семафоры?

33. Дайте краткое описание того, как могут быть реализованы семафоры в операционной системе, способной блокировать прерывания.

34. Если в системе имеется только два процесса, есть ли смысл в использовании барьера для их синхронизации? Почему да или почему нет?

35. Могут ли два потока, принадлежащие одному и тому же процессу, быть синхронизированы с помощью семафора, реализованного в ядре, если эти потоки реализованы на уровне ядра? Ответьте на тот же вопрос применительно к потокам, реализованным на уровне пользователя. Предполагается, что к семафору не имеют доступа никакие другие потоки любых других процессов. Обоснуйте свой ответ.

36. При синхронизации внутри мониторов используются условные переменные и две специальные операции — wait и signal. Более общая форма синхронизации предполагает использование одного примитива — waituntil, который в качестве параметра использует произвольный булев предикат. Можно, например, составить следующее выражение:

waituntil x < 0 or y + z < n

Теперь примитив signal больше не нужен. Эта схема, несомненно, является более универсальной, чем схема Хоара и Бринча Хансена, но тем не менее она не используется. Почему?

Подсказка: подумайте о ее реализации.

37. В ресторанах быстрого обслуживания есть четыре категории обслуживающего персонала:

• работники, принимающие заказы клиентов;

• повара, готовящие еду;

• работники, упаковывающие еду;

• кассиры, выдающие упаковку с едой клиентам и принимающие от них деньги.

Каждого работника можно рассматривать в качестве взаимодействующего последовательного процесса. Какую форму взаимодействия процессов они используют? Свяжите эту модель с процессами в UNIX.

38. Предположим, что у нас есть система передачи сообщений, использующая почтовые ящики. При отправке сообщения в переполненный ящик или при попытке извлечь сообщение из пустого ящика процесс не блокируется. Вместо этого ему возвращается код ошибки. Процесс реагирует на код ошибки повторной попыткой, предпринимаемой до тех пор, пока не будет достигнут успех. Приведет ли такая схема к состязательной ситуации?

39. Компьютеры CDC 6600 могут обрабатывать до 10 процессов ввода-вывода одновременно, используя интересную форму циклического планирования, называемую распределением процессора. Переключение процессов происходит после каждой команды, поэтому команда 1 приходит от процесса 1, команда 2 — от процесса 2 и т. д. Переключение процесса осуществляется специальным оборудованием, и издержки равны нулю. Если в отсутствие состязательной ситуации процессу для завершения работы требуется T секунд, то сколько времени ему понадобится, если распределение процессора было использовано в отношении n процессов?

40. Рассмотрите следующий код на языке C:

void main( ) { fork( ); fork( ); exit( );

}

Сколько дочерних процессов создается во время исполнения этой программы?

41. При циклическом планировании обычно ведется список всех запущенных процессов, и каждый процесс фигурирует в нем только один раз. Что произойдет, если процесс встретится в списке дважды? Можете ли вы придумать любую причину, по которой это может произойти?

42. Можно ли путем анализа исходного кода определить, к какой категории относится процесс: к процессам, ограниченным скоростью вычислений, или к процессам, ограниченным скоростью работы устройств ввода-вывода? Как это может быть определено в процессе выполнения программы?

43. Объясните, как значение кванта времени и время переключения контекста влияют друг на друга в алгоритме циклического планирования.

44. Измерения, проведенные в конкретной системе, показали, что время работы среднестатистического процесса до того, как он будет заблокирован на операции ввода-вывода, равно Т. На переключение процессов уходит время 5, которое теряется впустую. Напишите формулу расчета эффективности использования центрального процессора для циклического планирования с квантом времени

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Вопросы 1.:

  1. Основные ошибки при задавании вопросов. Слишком открытые вопросы.
  2. ВОПРОС О РЕЛИГИИ - ЭТО ВОПРОС О ВЛАСТИ Молитва Господня и семейные порядки
  3. Вопросы без альтернатив, или открытые вопросы
  4. 2.6. Умеем ли мы задавать вопросы? Классификация типов вопросов
  5. § 9 Критика гражданской формы брака. – Вопрос о введении ее в русское законодательство. – Браки у раскольников и вопрос о законности сих браков.
  6. Вопрошающее наблюдение: вопрос без вопроса
  7. 7.1. СКРЫТЫЕ ВОПРОСЫ
  8. 3.3.1. Неструктурированные вопросы
  9. Вопросы
  10. Вопросы
  11. Ключевой вопрос
  12. Наводящие вопросы.
  13. Закрытые вопросы.
  14. Подготовительные вопросы.
  15. Табличные вопросы
  16. Контрольные вопросы
  17. Контрольные вопросы