ОС_лекция7.ppt
- Количество слайдов: 21
ОПЕРАЦИОННЫЕ СИСТЕМЫ Лекция 7 материал подобран Румянцевой Галиной Николаевной (доцент кафедры ВСИ) Основной источник лекции: Таненбаум, Э. Современные операционные системы : пер. с англ. / Э. Таненбаум. – 3 -е изд. – СПб. : Питер, 2010. – 1120 с. 1
Д. /з. (ЧАСТЬ 1): 1). Самостоятельно прочитать материал со стр. 63 -72 из источника: Таненбаум, Э. Современные операционные системы : пер. с англ. / Э. Таненбаум. – 3 -е изд. – СПб. : Питер, 2010. – 1120 с. 2). Добавить к теме 2. Основные понятия ОС. следующие параграфы: . § 2. 9. Адресные пространства (материал из Таненбаума стр. 65 ) § 2. 10. Файлы (стр. 66) § 2. 11. Ввод-вывод данных(стр. 70) § 2. 12. Безопасность(стр. 70) § 2. 13. Оболочка(стр. 70) 2
Тема 3. Процессы и потоки. § 3. 1 Понятие процесса. Модель процесса. Основным понятием в любой операционной системе является процесс, абстракция, описывающая выполняющуюся программу. Процессы — это одна из самых старых и наиболее важных абстракций, присущих операционной системе. Они поддерживают возможность осуществления (псевдо) параллельных операций даже при наличии всего одного центрального процессора. Они превращают один центральный процессор в несколько виртуальных. . Без абстракции процессов современные вычисления просто не могут существовать. При запуске системы запускается множество процессов, о которых пользователь зачастую даже и не подозревает. Например, может быть запущен процесс, ожидающий входящей электронной почты. Другой запущенный процесс может принадлежать антивирусной программе и предназначаться для периодической проверки доступности определений каких-нибудь новых вирусов. В дополнение к этому могут быть запущены процессы, инициированные пользователем в явном виде, — печать файлов или запись данных на компакт-диск, и все они работают одновременно с браузером, с помощью которого пользователь просматривает Интернет. Всей этой работой нужно управлять, и здесь нам очень пригодится многозадачная система, поддерживающая работу нескольких процессов. В любой многозадачной системе центральный процессор быстро переключается между процессами, предоставляя каждому из них десятки или сотни миллисекунд. При этом хотя в каждый конкретный момент времени центральный процессор работает только с одним процессом, в течение 1 секунды он может успеть поработать с несколькими из них, создавая иллюзию параллельной работы. Иногда в этом случае говорят о псевдопараллелизме в отличие от настоящего аппаратного параллелизма в многопроцессорных системах (у которых имеется не менее двух центральных процессоров, 3 использующих одну и ту же физическую память).
Понятие процесса. Модель процесса. Людям довольно трудно отслеживать несколько действий, происходящих параллельно. Поэтому разработчики операционных систем за прошедшие годы создали концептуальную модель последовательных процессов, упрощающую работу с параллельными вычислениями. Модель процесса В этой модели все выполняемое на компьютере программное обеспечение, . иногда включая операционную систему, сведено к ряду последовательных процессов, или, для краткости, просто процессов. Процесс — это просто экземпляр выполняемой программы, включая текущие значения счетчика команд, регистров и переменных. Концептуально у каждого процесса есть свой, виртуальный, центральный процессор. Разумеется, на самом деле настоящий центральный процессор постоянно переключается между процессами, но чтобы понять систему, куда проще думать о наборе процессов, запущенных в (псевдо) параллельном режиме, чем пытаться отслеживать, как центральный процессор переключается между программами. Это постоянное переключение между процессами называется мультипрограммированием, или многозадачным режимом работы. 4
Понятие процесса. Модель процесса. На рис. 1, а показан компьютер, работающий в многозадачном режиме и имеющий в памяти четыре программы. На рис. 1, б показаны четыре процесса, каждый со своим собственным алгоритмом управления (то есть со своим собственным логическим счетчиком команд), и каждый из этих процессов работает независимо от всех остальных. Понятно, что на самом деле имеется только один физический счетчик команд, поэтому при запуске каждого процесса его логический счетчик команд загружается в реальный счетчик. Когда работа с процессом будет на некоторое время прекращена, значение физического счетчика команд сохраняется в логическом счетчике команд, размещаемом процессом в. памяти. На рис. 1, в показано, что за достаточно длительный период наблюдения продвинулись вперед все процессы, но в каждый отдельно взятый момент времени реально работает только один процесс. Рис. 1. Четыре программы, работающие в многозадачном режиме (а). Концептуальная модель четырех независимых друг от друга последовательных процессов (б). В отдельно взятый момент времени активна только одна программа (в) 5
Понятие процесса. Модель процесса. В этой теме мы будем исходить из того, что в нашем распоряжении имеется лишь один центральный процессор. Хотя все чаще такие предположения противоречат истине, поскольку новые кристаллы зачастую являются многоядерными, имеющими два, четыре и более ЦП. Многоядерным кристаллам и мультипроцессорам будет в основном посвящена глава 8 Таненбаум, Э. Современные операционные системы : пер. с англ. / Э. Таненбаум. – 3 -е изд. – СПб. : . Питер, 2010. , но сейчас нам проще будет думать, что в конкретный момент времени работает только один центральный процессор. Поэтому когда мы говорим, что центральный процессор в действительности способен в конкретный момент времени работать только с одним процессом, то если он обладает двумя ядрами (или ЦП), на каждом из них в конкретный момент времени может запускаться только один процесс. Поскольку центральный процессор переключается между процессами, скорость, с которой процесс выполняет свои вычисления, не будет одинаковой и, скорее всего, не сможет быть вновь показана, если тот же процесс будет запущен еще раз. Поэтому процессы не должны программироваться с использованием каких-либо жестко заданных предположений относительно времени их выполнения. 6
Понятие процесса. Модель процесса. Рассмотрим, к примеру, процесс ввода-вывода, запускающий ленту стримера для восстановления файлов из ранее сделанных резервных копий. Стри мер (от англ. streamer), также ле нточный накопи тель — запоминающее устройство на принципе магнитной записи на. ленточном носителе, с последовательным доступом к данным, по принципу действия аналогичен бытовому магнитофону. Основное назначение: запись и воспроизведение информации, архивация и резервное копирование данных. Стример выполняет холостой цикл 10 000 раз, чтобы лентопротяжный механизм набрал скорость, а затем выдает команду на чтение первой записи. Если центральный процессор решит переключиться на другой процесс во время холостого цикла, может случиться так, что процесс работы с лентой возобновится только тогда, когда первая запись уже минует считывающую головку. Когда у процесса есть подобные критичные для его работы требования, касающиеся реального масштаба времени, то через определенное количество миллисекунд должны происходить конкретные события, и для того, чтобы они произошли, должны быть предприняты специальные меры. Но, как правило, на большинство процессов не влияют ни установленный режим многозадачности центрального процессора, ни относительные скорости выполнения различных процессов. 7
Понятие процесса. Модель процесса. Разница между процессом и программой довольно тонкая, но существенная. Здесь нам, наверное, поможет какая-нибудь аналогия. Поэтому рассмотрим пример. Представим себе программиста, решившего заняться кулинарией и испечь пирог на день рождения дочери. У него есть рецепт пирога, а на кухне есть все ингредиенты: мука, яйца, сахар, ванильный экстракт и т. д. В данной аналогии рецепт — это программа (то есть алгоритм, выраженный в некой удобной форме записи), программист — это процессор (ЦП), а ингредиенты пирога — это входные данные. Процесс — это действия, состоящие из чтения рецепта. нашим кулинаром, выбора ингредиентов и выпечки пирога. Теперь представим, что на кухню вбегает сын программиста и кричит, что его ужалила пчела. Программист записывает, на каком месте рецепта он остановился (сохраняется состояние текущего процесса), достает книгу советов по оказанию первой помощи и приступает к выполнению изложенных в ней инструкций. Перед нами процессор, переключенный с одного процесса (выпечки) на другой процесс, имеющий более высокую степень приоритета (оказание медицинской помощи), и у каждого из процессов есть своя программа (рецепт против справочника по оказанию первой помощи). После извлечения пчелиного жала программист возвращается к своему пирогу, продолжая свои действия с того места, на котором остановился. Ключевая идея здесь в том, что процесс — это своего рода действия. У него есть программа, входные, выходные данные и состояние. Один процессор может совместно использоваться несколькими процессами в соответствии с неким алгоритмом планирования, который используется для определения, когда остановить один процесс и обслужить другой. Стоит отметить, что если программа запущена дважды, то считается, что ею заняты два процесса. Например, зачастую возможно дважды запустить текстовый процессор или одновременно распечатать два файла, если одновременно доступны два принтера. Тот факт, что два работающих процесса запущены от одной и той же программы, во внимание не принимается, поскольку это два разных процесса. Операционная система может позволить им использовать общий код, поэтому в памяти будет 8 присутствовать только одна копия этого кода, но это чисто техническая деталь, не меняющая концептуальную ситуацию, касающуюся двух работающих процессов.
§ 3. 2. Создание процесса. Операционным системам необходим какой-нибудь способ для создания процессов. В самых простых системах, или в системах, сконструированных для запуска только одного приложения (например, в контроллере микроволновой печи), появляется возможность присутствия абсолютно всех необходимых процессов при вводе системы в действие. Но в универсальных системах нужны определенные способы создания и прекращения процессов по мере необходимости. Существуют четыре основных события, приводящие к созданию процессов: 1. Инициализация. системы. 2. Выполнение работающим процессом системного вызова, предназначенного для создания процесса. 3. Запрос пользователя на создание нового процесса. 4. Инициация пакетного задания. При запуске операционной системы создаются, как правило, несколько процессов. Некоторые из них представляют собой высокоприоритетные процессы, то есть процессы, взаимодействующие с пользователями и выполняющие для них определенную работу. Остальные являются фоновыми процессами, не связанными с конкретными пользователями, но выполняющими ряд специфических функций. Например, фоновый процесс, который может быть создан для приема входящих сообщений электронной почты, основную часть времени проводит в спящем режиме, активизируясь только по мере появления писем. Другой фоновый процесс, который может быть создан для приема входящих запросов на веб-страницы, размещенные на машине, просыпается при поступлении запроса с целью его обслуживания. Фоновые процессы, предназначенные для обработки какой-либо активной деятельности, связанной, например, с электронной почтой, веб-страницами, новостями, выводом информации на печать и т. д. , называются демонами. Обычно у больших систем насчитываются десятки демонов. В UNIX для отображения списка запущенных процессов может быть 9 использована программа ps. В Windows для этой цели может быть использован диспетчер задач.
Создание процесса Вдобавок к процессам, созданным во время загрузки, новые процессы могут быть также созданы и после нее. Часто бывает так, что работающий процесс осуществляет системный вызов для создания одного или более новых вспомогательных процессов. Создание новых процессов особенно полезно, когда выполняемая работа может быть легко выражена в понятиях нескольких связанных друг с другом, но в остальном независимых друг от друга взаимодействующих процессов. Например, если для последующей обработки из сети выбирается большой объем данных, . наверное, будет удобно создать один процесс для выборки данных и помещения их в общий буфер, чтобы в то же самое время второй процесс забирал элементы данных и проводил их обработку. Также можно ускорить выполнение работы, если на многопроцессорной системе разрешить каждому процессу работать на разных центральных процессорах. В интерактивных системах пользователи могут запустить программу вводом команды или щелчком (двойным щелчком) на значке. Любое из этих действий дает начало новому процессу и запускает в нем выбранную программу. В основанных на применении команд UNIX-системах с работающей Х-оболочкой новый процесс получает окно, в котором он был запущен. При запуске в Microsoft Windows процесс не имеет окна, но он может создать одно или несколько окон, и в большинстве случаев так и происходит. В обеих системах пользователи могут иметь одновременно открытыми несколько окон, в каждом из которых запущен какой-нибудь процесс. Используя мышь, пользователь может выбрать окно и взаимодействовать с процессом: например, если потребуется, вводить данные. Последнее событие(Инициация пакетного задания), приводящее к созданию процесса, применимо только к системам пакетной обработки данных, имеющимся на больших универсальных машинах. Здесь пользователи могут отправлять системе пакетные задания (возможно, с помощью удаленного доступа). Когда операционная система решает, что у нее достаточно ресурсов для запуска еще одного задания, она создает новый процесс и запускает новое задание из имеющейся у нее очереди входящих 10 заданий.
Создание процесса С технической точки зрения во всех этих случаях новый процесс создается за счет уже существующего процесса, который выполняет системный вызов, предназначенный для создания процесса. Этим процессом может быть работающий пользовательский процесс, системный процесс, вызванный событиями клавиатуры или мыши, или процесс управления пакетными заданиями. Этот процесс осуществляет системный вызов для создания нового процесса. Этот системный вызов предписывает операционной системе создание нового процесса и прямо или косвенно указывает, какую программу в нем запустить. . В UNIX существует только один системный вызов для создания нового процесса — fork. Этот вызов создает точную копию вызывающего процесса. После выполнения системного вызова fork два процесса, родительский и дочерний, имеют единый образ памяти, единые строки описания конфигурации и одни и те же открытые файлы. И больше ничего. Обычно после этого дочерний процесс изменяет образ памяти и запускает новую программу, выполняя системный вызов execve или ему подобный. Например, когда пользователь набирает в оболочке команду sort, оболочка создает ответвляющийся дочерний процесс, в котором и выполняется команда sort. Смысл этого двухступенчатого процесса заключается в том, чтобы позволить дочернему процессу управлять его файловыми дескрипторами после разветвления, но перед выполнением execve с целью выполнения перенаправления стандартного ввода, стандартного вывода и стандартного вывода сообщений об ошибках. В Windows все происходит иначе: одним вызовом функции Win 32 Create. Process создается процесс, и в него загружается нужная программа. У этого вызова имеется 10 параметров, включая выполняемую программу, параметры командной строки для этой программы, различные параметры безопасности, биты, управляющие наследованием открытых файлов, информацию о приоритетах, спецификацию окна, создаваемого для процесса (если оно используется), и указатель на структуру, в которой вызывающей программе будет возвращена информация о только что созданном процессе. В дополнение к функции Create. Process в Win 32 имеется около 100 других функций для управления процессами и их синхронизации, а также 11 всем, что с этим связано.
Создание процесса. Завершение процесса В обеих системах, и в UNIX и в Windows, после создания процесса родительский и дочерний процессы обладают своими собственными, отдельными адресными пространствами. Если какой-нибудь процесс изменяет слово в своем адресном пространстве, другим процессам эти изменения не видны. В UNIX первоначальное состояние адресного пространства дочернего процесса является копией адресного пространства родительского процесса, но это абсолютно разные адресные пространства — у них нет общей памяти, доступной для записи данных (некоторые реализации UNIX. делят между процессами текст программы без возможности его модификации). Тем не менее вновь созданный процесс может делить со своим создателем часть других ресурсов, например открытые файлы. В Windows адресные пространства родительского и дочернего процессов отличаются с самого начала. § 3. 3. Завершение процесса. После создания процесс начинает работать и выполняет свою задачу. Но ничто не длится вечно, даже процессы. Рано или поздно новые процессы будут завершены, обычно в силу следующих обстоятельств: 1) обычного выхода (добровольно); . 2) выхода при возникновении ошибки (добровольно); 3) возникновения фатальной ошибки (принудительно); 4) уничтожения другим процессом (принудительно). Большинство процессов завершаются по окончании своей работы. Когда компилятор откомпилирует заданную ему программу, он осуществляет системный вызов, сообщающий операционной системе о завершении своей работы. Этим вызовом в UNIX является exit, а в 12 Windows — Exit. Process.
Завершение процесса Программы, работающие с экраном, также поддерживают добровольное завершение. Текстовые процессоры, интернет-браузеры и аналогичные программы всегда содержат значок или пункт меню, на котором пользователь может щелкнуть, чтобы приказать процессу удалить все временные файлы, которые им были открыты, и завершить свою работу. Вторая причина завершения — обнаружение процессом фатальной ошибки. Например, если пользователь наберет команду ее foo. c с целью компиляции программы foo. c, а файла с таким именем не будет, то произойдет простой выход из компилятора. Выхода из интерактивных, использующих экран процессов при задании им неверных параметров обычно не происходит. Вместо этого появляется диалоговое окно с просьбой о повторной попытке ввода параметров. Третья причина завершения — ошибка, вызванная самим процессом, чаще всего связанная с ошибкой в программе. В качестве примеров можно привести неверную инструкцию, ссылку на несуществующий адрес памяти или деление на нуль. В некоторых системах (например, UNIX) процесс может сообщить операционной системе о своем намерении обработать конкретные ошибки самостоятельно, в таком случае, когда встречается одна из таких ошибок, процесс получает сигнал (прерывается), а не завершается. Четвертая причина, из-за которой процесс может быть завершен, — это выполнение процессом системного вызова, приказывающего операционной системе завершить некоторые другие процессы. В UNIX этот вызов называется kill. Соответствующая функция Win 32 называется Terminate. Process. В обоих случаях у процесса, вызывающего завершение, должны быть на это соответствующие полномочия. В некоторых системах при добровольном или принудительном завершении процесса тут же завершаются и все созданные им 13 процессы. Но ни UNIX, ни Windows так не делают.
§ 3. 4. Иерархии процессов. В некоторых системах, когда процесс порождает другой процесс, родительский и дочерний процессы продолжают быть определенным образом связанными друг с другом. Дочерний процесс может и сам создать какие-нибудь процессы, формируя иерархию процессов. Следует заметить, что в отличие от растений и животных, использующих половую репродукцию, у процесса есть только один родитель (но нуль, один, два или более детей). В UNIX процесс, все его дочерние процессы и более отдаленные потомки образуют группу процессов. Когда пользователь отправляет сигнал с клавиатуры, тот достигает всех участников этой группы. процессов, связанных на тот момент времени с клавиатурой (обычно это все действующие процессы, которые были созданы в текущем окне). Каждый процесс по отдельности может захватить сигнал, игнорировать его или совершить действие по умолчанию, которое должно быть уничтожено сигналом. В качестве другого примера, поясняющего ту роль, которую играет иерархия процессов, давайте рассмотрим, как UNIX инициализирует саму себя при запуске. В загрузочном образе присутствует специальный процесс, называемый init. В начале своей работы он считывает файл, сообщающий о количестве терминалов. Затем он разветвляется, порождая по одному процессу на каждый терминал. Эти процессы ждут, пока кто-нибудь не зарегистрируется в системе. Если регистрация проходит успешно, процесс регистрации порождает оболочку для приема команд. Эти команды могут породить другие процессы, и т. д. Таким образом, все процессы во всей системе принадлежат единому дереву, в корне которого находится процесс init. В отличие от этого в Windows не существует понятия иерархии процессов, и все процессы являются равнозначными. Единственным намеком на иерархию процессов можно считать присвоение родительскому процессу, создающему новый процесс, специального маркера (называемого дескриптором), который может им использоваться для управления дочерним процессом. Но он может свободно передавать этот маркер какому-нибудь другому процессу, нарушая тем самым иерархию. 14 А в UNIX процессы не могут лишаться наследственной связи со своими дочерними процессами.
§ 3. 5. Состояния процессов Несмотря на самостоятельность каждого процесса, наличие собственного счетчика команд и внутреннего состояния, процессам зачастую необходимо взаимодействовать с другими процессами. Один процесс может генерировать выходную информацию, используемую другими процессами в качестве входной информации. В команде оболочки cat chapterl chapter 2 chapter 3 | grep tree первый процесс, запускающий программу cat, объединяет и выдает на выходе. содержимое трех файлов. Второй процесс, запускающий программу grep, выбирает все строки, в которых содержится слово «tree» . В зависимости от относительной скорости этих двух процессов (которая зависит от двух факторов: относительной сложности программ и количества выделяемого каждому из них времени работы центрального процессора) может получиться так, что программа grep готова к работе, но ожидающие ее входные данные отсутствуют. Тогда она должна блокироваться до поступления входных данных. Процесс блокируется из-за того, что, по логике, он не может продолжаться, как правило потому, что он ожидает недоступных на данный момент входных данных. Может случиться и так, что останавливается тот процесс, который в принципе готов к работе и может быть запущен, а причина кроется в том, что операционная система решила на некоторое время выделить центральный процессор другому процессу. Эти два условия полностью отличаются друг от друга. В первом случае приостановка порождена какой-нибудь проблемой (вы не можете обработать пользовательскую командную строку, пока она не будет введена). Во втором случае на первый план выступает техническая сторона вопроса (не хватает центральных процессоров, чтобы каждому процессу выделить свой собственный процессор). 15
Состояния процессов На рис. 2 показана диаграмма, отображающая три состояния, в которых может находиться процесс: 1) выполняемый (использующий в данный момент центральный процессор); 2) готовый (работоспособный, но временно приостановленный, чтобы дать возможность выполнения другому процессу); 3) заблокированный (неспособный выполняться, пока не возникнет какое-нибудь внешнее событие). Логически первые два состояния похожи друг на друга. В обоих случаях процесс желает выполняться, но во втором состоянии временно отсутствует доступный для этого процессор. Третье состояние отличается от первых двух тем, что процесс не может выполняться, даже если процессору кроме него больше нечем заняться. Рис. 2. Процесс может быть в выполняемом, заблокированном или готовом состоянии. Стрелками показаны переходы между этими состояниями Как показано на рисунке, между этими тремя состояниями могут быть четыре перехода. Переход 1 происходит в том случае, если операционная система определит, что процесс в данный момент выполняться не может. В некоторых системах для перехода в заблокированное состояние процесс может осуществить такой системный вызов, как pause. В других системах, включая UNIX, когда процесс осуществляет чтение из канала или специального файла (например, с терминала) и доступные входные 16 данные отсутствуют, процесс блокируется автоматически.
Состояния процессов Рис. 2. Процесс может быть в выполняемом, заблокированном или готовом состоянии. . Стрелками показаны переходы между этими состояниями Переходы 2 и 3 вызываются планировщиком процессов, который является частью операционной системы, без какого-либо оповещения самого процесса. Переход 2 происходит в том случае, когда планировщик решит, что выполняемый процесс продвинулся достаточно далеко и настало время позволить другому процессу получить долю рабочего времени центрального процессора. Переход 3 происходит в том случае, когда все другие процессы получили причитающуюся им долю времени и настал момент получить центральный процессор первому процессу для возобновления его выполнения. Вопрос планирования, то есть решение, какой именно процесс, когда и сколько времени должен выполняться, играет весьма важную роль и будет рассмотрен в этой главе чуть позже. В попытках сбалансировать конкурирующие требования соблюдения эффективности системы в целом и справедливого отношения к отдельному процессу было изобретено множество алгоритмов. Некоторые из них еще будут рассмотрены в этой главе. Переход 4 осуществляется в том случае, если происходит внешнее событие, ожидавшееся процессом (к примеру, поступление входных данных). Если к этому моменту нет других выполняемых процессов, будет вызван переход 3 и процесс возобновится. В противном случае ему придется немного подождать в состоянии готовности, пока не станет доступен центральный процессор и придет его очередь. 17
§ 3. 6. Моделирование режима многозадачности Режим многозадачности позволяет использовать центральный процессор более рационально. При грубой прикидке, если для среднестатистического процесса вычисления занимают лишь 20% времени его пребывания в памяти, то при пяти одновременно находящихся в памяти процессах центральный процессор будет загружен постоянно. Но в этой модели заложен абсолютно нереальный оптимизм, . поскольку в ней заведомо предполагается, что все пять процессов никогда не будут одновременно находиться в ожидании окончания какого-нибудь процесса ввода-вывода. Лучше выстраивать модель на основе вероятностного взгляда на использование центрального процессора. Предположим, что процесс проводит часть своего времени р в ожидании завершения операций ввода -вывода. При одновременном присутствии в памяти п процессов вероятность того, что все п процессов ожидают завершения ввода-вывода (в случае чего процессор простаивает), равна рn. Тогда время задействования процессора вычисляется по формуле: Время задействования ЦП = 1 - рn. 18
Моделирование режима многозадачности На рис. показано время задействования центрального процессора в виде функции от аргумента n, который называется степенью многозадачности. Судя по рисунку, если процесс тратит 80% своего времени на ожидание завершения ввода-вывода, то для снижения простоя процессора до уровня не более 10% в памяти могут. одновременно находиться по крайней мере 10 процессов. Когда вы поймете, что к ожиданию ввода-вывода относится и ожидание интерактивного процесса пользовательского ввода с терминала, станет понятно, что время ожидания завершения ввода-вывода, составляющее 80% и более, не такая Рис. 3. Время задействования ЦП в виде функции от количества процессов, и редкость. уж присутствующих в памяти Но даже на серверах процессы, осуществляющие множество операций ввода-вывода, зачастую имеют такой же или даже больший процент простоя. Справедливости ради следует заметить, что рассмотренная нами вероятностная модель носит весьма приблизительный характер. В ней безусловно предполагается, что все n процессов являются независимыми друг от друга, а значит, в системе 20% ожидания вводавывода с пятью процессами в памяти вполне допустимо иметь три выполняемых и два ожидающих процесса. Но имея один центральный процессор, мы не может иметь сразу три выполняемых процесса, поэтому процесс, который становится готовым к работе при занятом 19 центральном процессоре, вынужден ожидать своей очереди.
Моделирование режима многозадачности Поэтому процессы не обладают независимостью. Более точная модель может быть выстроена с использованием теории очередей, но сделанный нами акцент на многозадачность, позволяющую загружать процессор во избежание его простоя, попрежнему сохраняется, даже если реальные кривые немного отличаются от тех, что показаны на рис. 3. Несмотря на упрощенность модели, представленной на рис. 2. 4, тем не менее она может быть использована для специфических, хотя и весьма приблизительных. предсказаний, касающихся производительности центрального процессора. Предположим, к примеру, что память компьютера составляет 512 Мбайт, операционная система занимает 128 Мбайт, а каждая пользовательская программа также занимает до 128 Мбайт. Этот объем позволяет одновременно разместить в памяти три пользовательские программы. При среднем ожидании ввода-вывода в 80% мы имеем загруженность центрального процессора (если игнорировать издержки на работу операционной системы), равную 1 - 0, 83, или около 49%. Увеличение объема памяти еще на 512 Мбайт позволит системе перейти от трехкратной многозадачности к семикратной, что повысит загруженность центрального процессора до 79%. Иными словами, дополнительные 512 Мбайт памяти увеличат его производительность на 30%. Увеличение памяти еще на 512 Мбайт поднимет уровень производительности всего лишь с 79 до 91%, то есть дополнительный прирост производительности составит только 12%. Используя эту модель, владельцы компьютеров могут прийти к выводу, что первое наращивание объема памяти станет, в отличие от второго, неплохим вкладом в повышение производительности процессора. 20
Д. /з. (ЧАСТЬ 2): 1). Самостоятельно прочитать материал со стр. 112 -124 из источника: Таненбаум, Э. Современные операционные системы : пер. с англ. / Э. Таненбаум. – 3 -е изд. – СПб. : Питер, 2010. – 1120 с. 2). Добавить к теме 3. Процессы и потоки. параграф: § 3. 7. Реализация процессов (материал со стр. 121 -123 из Таненбаума). 3). 22 октября тест2 по лекциям 1, 3 -6(6+) включительно. 4). 29 октября коллоквиум по темам лекций с 1 -8(включительно) Примечание: часть материала из учебника Таненбаума может перекликаться с материалом из книги Гордеева, они являются взаимодополняющими. Напоминаю, основные книги для работы по курсу ОС: 1. Гордеев, А. В. Операционные системы : Учебник для вузов. 2 -е изд. / А. В. Гордеев. – СПб. : Питер, 2009. – 416 с. 2. Таненбаум, Э. Современные операционные системы : пер. с англ. / Э. Таненбаум. – 3 -е изд. – СПб. : Питер, 2010. – 1120 с. 21
ОС_лекция7.ppt