Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
05_Konspkt_lektsy_OS / Лекции_ОС_08.doc
Скачиваний:
67
Добавлен:
02.04.2015
Размер:
181.25 Кб
Скачать

3 Аналогичная проблема—бесконечное откладывание

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

Бесконечное откладывание процесса может происходить из-за «дискриминационной» политики планировщика ресурсов системы. Когда ресурсы распределяются по приоритетному принципу, может случиться, что данный процесс будет бесконечно долго ожидать вы­деления нужного ему ресурса, поскольку будут постоянно при­ходить процессы с более высокими приоритетами. Ожидание — непременный факт нашей жизни и безусловно важный аспект внут­ренней работы вычислительных машин. При разработке опера­ционных систем необходимо предусматривать справедливое, а также эффективное управление процессами, находящимися в состоянии ожидания. В некоторых системах бесконечное откладывание предот­вращается благодаря тому, что приоритет процесса увеличивается по мере того, как он ожидает выделения нужного ему ресурса. Это называется старением процесса. В конце концов, ожидающий про­цесс получит более высокое значение приоритета, чем у всех при­ходящих процессов, и будет обслужен.

4 Концепции ресурсов

Операционная система выполняет по преимуществу функции администратора ресурсов. Она отвечает за распределение обширных наборов ресурсов различных типов. Отчасти именно благодаря та­кому разнообразию типов ресурсов разработка операционных систем является столь интересной темой. Рассмотрим ресурсы, которые яв­ляются «оперативно перераспределяемыми», такие, как централь­ный процессор и основная память; программа, занимающая в дан­ный момент некоторую область основной памяти, может быть вытеснена или передана другой программе. Программа пользова­теля, которая выдала запрос на ввод-вывод, практически не может работать с основной памятью в течение длительного периода ожи­дания завершения данной операции ввода-вывода. В вычислитель­ной машине самым динамичным ресурсом является, по-видимому, центральный процессор. Центральный процессор должен работать в режиме быстрого переключения (мультиплексирования), обслу­живая большое число конкурирующих процессов, чтобы все эти процессы могли продвигаться с приемлемой скоростью. Если кон­кретный процесс достигает точки, когда он не может эффективно использовать центральный процессор (как это бывает в течение дли­тельного периода ожидания завершения операций ввода-вывода), право управления центральным процессором отбирается у этого процесса и предоставляется другому процессу. Таким образом, организация динамического переключения ресурсов является исклю­чительно важным фактором для обеспечения эффективной работы мультипрограммных вычислительных систем.

Определенные виды ресурсов являются оперативно неперерас­пределяемыми в том смысле, что их нельзя произвольно отбирать у процессов, за которыми они закреплены. Например, лентопро­тяжные устройства, как правило, выделяются конкретным процес­сам на периоды от нескольких минут до нескольких часов. Ленто­протяжный механизм, закрепленный за одним процессом, нельзя просто отобрать у этого процесса и передать другому.

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

Данные и программы — это также ресурсы, которые требуют соответствующей организации управления и распределения. Так, в мультипрограммных системах многим пользователям может од­новременно понадобиться прибегнуть к услугам программы-ре­дактора. Однако иметь собственную копию редактора в основной памяти для каждого пользователя было бы неэкономично. Поэто­му в память записывается одна копия кода подобной программы и несколько копий соответствующих данных, по одной для каждого пользователя. Поскольку с таким кодом могут одновременно рабо­тать многие пользователи, он не должен изменяться. Код програм­мы, который не может изменяться во время выполнения, называ­ется реентерабельным, или многократно входимым. Код, который может изменяться, но предусматривает повторную инициализацию при каждом выполнении, называется кодом последовательного (многократного) использования. С реентерабельным кодом могут коллективно работать несколько процессов одновременно, а с кодом последовательного использования — только один процесс в каждый конкретный момент времени.

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

Соседние файлы в папке 05_Konspkt_lektsy_OS