Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Литература:
Основная:
1. Таненбаум Э. Современные операционные системы.- СПб.: Питер, 2003 г.– 992 с.
2. Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум: – СПб.: Питер, 2005 . – 284 с.
3. Дейтел Г., Введение в операционные системы. М."Мир",1987.
4. Кейлингерт П., Элементы операционных систем, М. "Мир", 1985.
5. Олифер В.Г., Олифер Н.А. Сетевые операционные системы. Учебник. - СПб.: -Питер, 2001.
6. Робачевский А.М. Операционная система UNIX. СПб.: BHV - Санкт-Петербург, 1997.
7. Эви Немет, Гарт Снайдер, Скотт Сибас, Трент Р.Хейн. Unix: Руководство системного администратора. BHV - Санкт-Петербург, 1999.
8. Дунаев С. Операционная система Unix System V Release 4.2. Изд-во МИФИ-Диалог, 1995.
Дополнительная:
1. Кейслер С., Проектирование операционных систем для малых ЭВМ, М. "Мир", 1986.
2. Кулаков Ю.А., Луцкий Г.М. Компьютерные сети. К.: Юниор, 1998.
3. Блэк Ю. Сети ЭВМ: протоколы, стандарты, интерфейсы. М.: Мир, 1990.
4. Корнеев В.В. Параллельные вычислительные системы. М.: "Нолидж", 1999.
5. Николаев Ю.И. Проектирование защищенных информационных технологий. СПб.: Изд-во СПбГТУ, 1997.
Электронные информационные источники
1. www.citforum.ru
2. www.intuit.ru
Краткое содержание лекций по теме:
Лекция 1
Операционные системы. Основные определения
Операционная система (ОС) - это программа, которая обеспечивает возможность рационального использования оборудования компьютера удобным для пользователя образом.
Структура вычислительной системы
Из чего состоит любая вычислительная система? В первую очередь, это hardware, или техническое обеспечение: процессор, память, монитор, дисковые устройства и т.д., обычно объединенные магистральным соединением, которое называется шиной
Во вторую очередь это программное обеспечение. Все программное обеспечение принято делить на две части: прикладное и системное.
К прикладному программному обеспечению, как правило, относятся разнообразные банковские и прочие business программы, игры, текстовые процессоры, и т.п.
Под системным программным обеспечением обычно понимают программы, способствующие функционированию и разработке прикладных программ.
Деление на прикладное и системное программное обеспечение является отчасти условным и зависит от того, кто осуществляет такое деление.
Так, обычный пользователь, неискушённый в программировании, может считать Microsoft Word системной программой, а с точки зрения программиста это приложение. Компилятор языка Си для обычного программиста это системная программа, а для системного прикладная. Несмотря на эту нечеткую грань, эту ситуацию можно отобразить в виде последовательности слоев:
Операционная система как виртуальная машина
Архитектура большинства компьютеров на уровне машинных команд очень неудобна для ее использования прикладными программами. Например, работа с диском предполагает знакомство с внутренним устройством его электронного компонента - контроллера для ввода команд вращения диска, поиска и форматирования дорожек, чтения и записи секторов и т.д. Ясно, что средний программист не в состоянии учитывать все особенности работы оборудования (в современной терминологии заниматься разработкой драйверов устройств), а должен иметь простую высокоуровневую абстракцию, скажем, представляя информационное пространство диска как набор файлов
Файл можно открывать для чтения или записи, использовать для получения или сброса информации, а потом закрывать. Это концептуально проще, чем заботиться о деталях перемещения головок дисков или организации работы мотора. Аналогичным образом, с помощью простых и ясных абстракций, скрываются от программиста все ненужные ему подробности организации прерываний, работы таймера, управления памятью и т.д. Более того, на современных вычислительных комплексах может быть создана иллюзия неограниченного размера операционной памяти и числа процессоров. Всем этим занимается операционная система. Таким образом, операционная система представляется пользователю виртуальной машиной, с которой проще иметь дело, чем непосредственно с оборудованием компьютера.
Операционная система как менеджер ресурсов
Операционная система предназначена для управления всеми частями весьма сложной архитектуры компьютера. Представим для примера, что случится, если несколько программ, работающих на одном компьютере, будут пытаться одновременно осуществлять вывод на принтер. Мы получили бы неупорядоченную смесь строчек и страниц, выведенных различными программами. Операционная система предотвращает хаос такого рода за счет буферизации информации, предназначенной для печати, на диске и организации очереди на печать. Для многопользовательских компьютеров, необходимость управления ресурсами и их защиты еще более очевидна.
Следовательно, операционная система как менеджер ресурсов, осуществляет упорядоченное и контролируемое распределение процессоров, памяти и других ресурсов между различными программами, их использующими.
Операционная система как защитник пользователей и программ
Если вычислительная система допускает совместную работу нескольких пользователей, то возникает проблема организации их безопасной деятельности. Необходимо обеспечить сохранность информации на диске, чтобы никто не мог удалить или повредить чужие файлы. Нельзя разрешить программам одних пользователей произвольно вмешиваться в работу программ других пользователей. Нужно пресекать попытки несанкционированного использования вычислительной системы. Всю эту деятельность осуществляет операционная система как организатор безопасной работы пользователей и их программ. С такой точки зрения операционная система выглядит системой безопасности в государстве, на которую возложены полицейские и контрразведывательные функции.
Операционная система как постоянно функционирующее ядро
Наконец, можно дать и такое определение: операционная система это программа, постоянно работающая на компьютере и взаимодействующая со всеми прикладными программами. Казалось бы, это абсолютно правильное определение, но во многих современных операционных системах постоянно работает на компьютере лишь часть операционной системы, которую принято называть ее ядром.
Краткая история эволюции вычислительных систем
• Первый период (1945 - 1955). Ламповые машины. Операционные систем отсутствовали.
• Второй период (1955 - Начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
• Третий период (Начало 60-х - 1980). Компьютеры на основе интегральных микросхем. Первые многозадачные ОС.
• Четвертый период (1980 – настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы.
Появление мультипрограммирования требует целой революции в строении вычислительной системы. Большую роль, здесь играет аппаратная поддержка, наиболее существенные особенности которой:
Реализация защитных механизмов. Программы не должны иметь самостоятельного доступа к распределению ресурсов, что приводит к появлению привилегированных и непривилегированных команд. Привилегированные команды, например команды ввода-вывода, могут исполняться только операционной системой. Говорят, что она работает в привилегированном режиме. Переход управления от прикладной программы к ОС сопровождается контролируемой сменой режима. Во-вторых, это защита памяти, позволяющая изолировать конкурирующие пользовательские программы друг от друга, а ОС от программ пользователей.
Наличие прерываний. Внешние прерывания оповещают ОС о том, что произошло асинхронное событие, например, завершилась операция ввода-вывода. Внутренние прерывания (сейчас их принято называть исключительными ситуациями) возникают, когда выполнение программы привело к ситуации, требующей вмешательства ОС, например, деление на ноль или попытка нарушения защиты.
Роль операционной системы в организации мультипрограммирования
Интерфейс между прикладной программой и ОС был организован при помощи набора системных вызовов.
Организация очереди из заданий в памяти и выделение процессора одному из заданий потребовали планирования заданий.
Для переключения процессора с одного задания на другое возникла потребность в сохранении содержимого регистров и структур данных, необходимых для выполнения задания, иначе говоря, контекста, для обеспечения правильного продолжения вычислений.
Поскольку память является ограниченным ресурсом, оказались нужны стратегии управления памятью, то есть потребовалось упорядочить процессы размещения, замещения и выборки информации из памяти.
Так как программы могут пожелать произвести санкционированный обмен данными, стало необходимо их обеспечить средствами коммуникации.
Для корректного обмена данными необходимо предусмотреть координацию программами своих действий, т.е. средства синхронизации.
Основные функции классических операционных:
• Планирование заданий и использования процессора.
• Обеспечение программ средствами коммуникации и синхронизации.
• Управление памятью.
• Управление файловой системой.
• Управление вводом-выводом.
• Обеспечение безопасности
Каждая из приведенных функций обычно реализована в виде подсистемы, являющейся структурным компонентом ОС. В каждой конкретной операционной системе эти функции, конечно, реализовывались по-своему, в различном объеме. Они не были придуманы как составные части деятельности операционных систем изначально, а появились в процессе развития, по мере того, как вычислительные системы становились удобнее, эффективнее и безопаснее.
Основные понятия ОС
• Системные вызовы
• Прерывания
• Исключительные ситуации
• Файлы
• Процессы, нити
• Системные вызовы
В любой операционной системе поддерживается некоторый механизм, который позволяет пользовательским программам обращаться за услугами ядра ОС. Эти средства общения с ядром часто назывались экстракодами или системными макрокомандами. В ОС UNIX такие средства называются системными вызовами.
Системные вызовы (system calls) интерфейс между операционной системой и пользовательской программой. Они создают, удаляют и используют различные объекты, главные из которых процессы и файлы. Пользовательская программа запрашивает сервис у операционной системы, осуществляя системный вызов. Имеются библиотеки процедур, которые загружают машинные регистры определенными параметрами и осуществляют прерывание процессора, после чего управление передается обработчику данного вызова, входящему в ядро операционной системы. Цель таких библиотек сделать системный вызов похожим на обычный вызов подпрограммы.
Основное отличие состоит в том, что при системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode). Поэтому системные вызовы иногда еще называют программными прерываниями в отличие от аппаратных прерываний, которые чаще называют просто прерываниями.
В этом режиме работает код ядра операционной системы, причем он исполняется в адресном пространстве и в контексте вызвавшей его задачи. Таким образом, ядро операционной системы имеет полный доступ к памяти пользовательской программы, и при системном вызове достаточно передать адреса одной или нескольких областей памяти с параметрами вызова и адреса одной или нескольких областей памяти для результатов вызова.
В большинстве операционных систем системный вызов осуществляется командой программного прерывания (INT). Таким образом, программное прерывание это синхронное событие.
Прерывания
Прерывание (hardware interrupt) событие, генерируемое внешним (по отношению к процессору) устройством. Посредством аппаратных прерываний аппаратура либо информирует центральный процессор о том, что возникло какое-либо событие, требующее немедленной реакции (например, пользователь нажал клавишу), либо сообщает о завершении асинхронной операции ввода-вывода (например, закончено чтение данных с диска в основную память).
Важный тип аппаратных прерываний - прерывания таймера, которые генерируются периодически через фиксированный промежуток времени. Прерывания таймера используются операционной системой при планировании процессов. Каждый тип аппаратных прерываний имеет собственный номер, однозначно определяющий источник прерывания.
Аппаратное прерывание это асинхронное событие, то есть оно возникает вне зависимости от того, какой код исполняется процессором в данный момент. Обработка аппаратного прерывания не должна учитывать, какой процесс является текущим.
Исключительные ситуации
Исключительная ситуация (exception) событие, возникающее в результате попытки выполнения программой недопустимой команды, доступа к ресурсу при отсутствии достаточных привилегий или обращения к отсутствующей странице памяти.
Исключительные ситуации так же, как и системные вызовы, являются синхронными событиями, возникающими в контексте текущей задачи. Исключительные ситуации можно разделить на исправимые и неисправимые. К исправимым относятся такие исключительные ситуации, как отсутствие нужной информации в оперативной памяти. После устранения причины исправимой исключительной ситуации программа может продолжить выполнение.
Возникновение в процессе работы операционной системы исправимых исключительных ситуаций является нормальным явлением. Неисправимые исключительные ситуации обычно возникают в результате ошибок в программах. Обычно операционная система реагирует на такие ситуации завершением программы, вызвавшей исключительную ситуацию.
Файлы
Файлы предназначены для хранения информации на внешних носителях, то есть, принято, что информация, лежащая, например, на диске, должна находиться внутри файла. Обычно под файлом понимают часть пространства на носителе информации, имеющую имя.
Главная задача файловой системы (file system) скрыть особенности ввода-вывода и дать программисту простую абстрактную модель файлов, независимых от устройств. Для чтения, создания, удаления, записи, открытия и закрытия файлов также имеется обширная категория системных вызовов (create, delete, open, close, read, write ).
Пользователям хорошо знакомы такие понятия, связанные с организацией файловой системы, как каталог, текущий каталог, корневой каталог, путь, для манипулирования которыми в операционной системе имеются системные вызовы.
Лекция 2
Архитектурные особенности ОС
Монолитное ядро
По сути дела, операционная система это обычная программа, поэтому было бы логичным и организовать его так же, как устроено большинство программ, то есть составить из процедур и функций. В этом случае компоненты операционной системы являются не самостоятельными модулями, а составными частями одной большой программы. Такая структура операционной системы называется монолитным ядром (monolithic kernel).
Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме. Таким образом, монолитное ядро это такая схема операционной системы, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой.
Во многих операционных системах с монолитным ядром сборка ядра, то есть его компиляция, осуществляется отдельно для каждого компьютера, на который устанавливается операционная система. При этом можно выбрать список оборудования и программных протоколов, поддержка которых будет включена в ядро. Так как ядро является единой программой, перекомпиляция это единственный способ добавить в него новые компоненты или исключить неиспользуемые. Следует отметить, что присутствие в ядре лишних компонентов крайне нежелательно, так как ядро всегда полностью располагается в оперативной памяти. Кроме того, исключение ненужных компонент повышает надежность операционной системы в целом.
Монолитное ядро старейший способ организации операционных систем.
Даже в монолитных системах можно выделить некоторую структуру. Как в бетонной глыбе можно различить вкрапления щебенки, так и в монолитном ядре выделяются вкрапления сервисных процедур, соответствующих системным вызовам.
Сервисные процедуры выполняются в привилегированном режиме, тогда как пользовательские программы в непривилегированном режиме. Для перехода с одного уровня привилегий на другой иногда может использоваться главная сервисная программа, определяющая, какой именно системный вызов был сделан, корректность входных данных для этого вызова, и передающая управление соответствующей сервисной процедуре с переходом в привилегированный режим работы.
Иногда выделяют также набор программных утилит, которые помогают выполнению сервисных процедур.
Слоеные системы (Layered systems)
Продолжая структуризацию, можно разбить всю вычислительную систему на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты из уровня N-1. Нижним уровнем в таких системах обычно является hardware, верхним уровнем интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой и его студентами в 1968 г.
Слоеные системы хорошо реализуются. При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно знать лишь, что они делают.
Слоеные системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки мы можем быть уверены, что она находится в тестируемом слое.
Слоеные системы хорошо модифицируются. При необходимости можно заменить лишь один слой, не трогая остальные. Но слоеные системы сложны для разработки: тяжело правильно определить порядок слоев, и что, к какому слою относится.
Слоеные системы менее эффективны, чем монолитные. Так, например, для выполнения операций ввода-вывода программе пользователя придется последовательно проходить все слои - от верхнего до нижнего.
Виртуальные машины
Операционная система как виртуальная машина - это когда пользователю нет необходимости знать детали внутреннего устройства компьютера. Он работает с файлами, а не с магнитными головками и двигателем; он работает с огромной виртуальной, а не ограниченной реальной оперативной памятью; его мало волнует, единственный он на машине пользователь или нет.
Рассмотрим несколько другой подход. Пусть операционная система реализует виртуальную машину для каждого пользователя, но, не упрощая ему жизнь, а, наоборот, усложняя. Каждая такая виртуальная машина предстает перед пользователем как абсолютно голое железо копия всего hardware в вычислительной системе, включая процессор, привилегированные и непривилегированные команды, устройства ввода-вывода, прерывания и т.д. И он один на один с этим железом. При попытке обратиться к этому виртуальному железу на уровне привилегированных команд, в действительности происходит системный вызов реальной операционной системы, которая и производит все необходимые действия. Такой подход позволяет каждому пользователю загрузить свою собственную операционную систему на виртуальную машину и делать с ней все, что душа пожелает.
Микроядерная архитектура
Современная тенденция в разработке операционных систем это перенесение значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Речь идет о подходе к построению ядра, называемом микроядерной архитектурой (microkernel architecture) операционной системы, когда большинство ее составляющих являются самостоятельными программами.
В этом случае взаимодействие между ними обеспечивает специальный модуль ядра, называемый микроядром. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью.
Остальные компоненты системы взаимодействуют друг с другом путем передачи сообщений через микроядро.
Основное достоинство микроядерной архитектуры высокая степень модульности ядра операционной системы. Это существенно упрощает добавление в него новых компонент. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д.
Существенно упрощается процесс отладки компонент ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. В то же время, микроядерная архитектура операционной системы вносит дополнительные накладные расходы, связанные с передачей сообщений, что существенно влияет на производительность.
Для того чтобы микроядерная операционная система по скорости не уступала операционным системам на базе монолитного ядра, требуется очень аккуратно проектировать разбиение системы на компоненты, стараясь минимизировать взаимодействие между ними. Таким образом, основная сложность при создании микроядерных операционных систем необходимость очень аккуратного проектирования.
Смешанные системы
Все рассмотренные подходы к построению операционных систем имеют свои преимущества и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов.
Примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Данный подход возник в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра.
Смешанные системы
Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядре Windows NT. Хотя Windows NT часто называют микроядерной операционной системой, это не совсем так. Микроядро NT слишком сложно и велико (более 1 Мб), чтобы носить приставку микро. Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерных операционных системах. В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Кроме того, в Windows NT существует разделение между режимом ядра и режимом пользователя еще одна черта монолитного ядра. Причина всего этого проста. По мнению Microsoft, причина проста: чисто микроядерный дизайн коммерчески непрактичен, так как слишком неэффективен.
Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой.
Классификация ОС
Существует несколько схем классификации операционных систем. Ниже приведена классификация по некоторым признакам с точки зрения пользователя:
• Реализация многозадачности
• Поддержка многопользовательского режима.
• Многопроцессорная обработка
• Системы реального времени
• Реализация многозадачности
По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
• многозадачные (Unix, OS/2, Windows).
• однозадачные (например, MS-DOS) и
Многозадачная ОС, решая проблемы распределения ресурсов и конкуренции, полностью реализует мультипрограммный режим(см.слайд 14)
Приблизительность классификации очевидна из приведенных примеров. Так в ОС MS-DOS можно организовать запуск дочерней задачи и одновременное сосуществование в памяти двух и более задач. Однако эта ОС традиционно считается однозадачной, главным образом из-за отсутствия защитных механизмов и коммуникационных возможностей
Поддержка многопользовательского режима
По числу одновременно работающих пользователей ОС можно разделить на:
• однопользовательские (MS-DOS, Windows 3.x);
• многопользовательские (Windows NT, Unix).
Наиболее существенно отличие заключается в наличии у многопользовательских систем механизмов защиты персональных данных каждого пользователя.
Многопроцессорная обработка
Многопроцессорные системы состоят из двух или более центральных процессоров, осуществляющих параллельное выполнение команд. Поддержка мультипроцессирования является важным свойством ОС и приводит к усложнению всех алгоритмов управления ресурсами. Многопроцессорная обработка реализована в таких ОС, как Linux, Solaris, Windows NT и в ряде других.
Многопроцессорные ОС разделяют на симметричные и асимметричные. В симметричных ОС на каждом процессоре функционирует одно и то же ядро и задача может быть выполнена на любом процессоре, то есть обработка полностью децентрализована.
В асимметричных ОС процессоры неравноправны. Обычно существует главный процессор (master) и подчиненные (slave), загрузку и характер работы которых определяет главный процессор.
Системы реального времени
В разряд многозадачных ОС, наряду с пакетными системами и системами разделения времени, включаются также системы реального времени, не упоминавшиеся до сих пор.
Они используются для управления различными техническими объектами или технологическими процессами. Такие системы характеризуются предельно допустимым временем реакции на внешнее событие, в течение которого должна быть выполнена программа, управляющая объектом. Система должна обрабатывать поступающие данные быстрее, чем те могут поступать, причем от нескольких источников одновременно.
Столь жесткие ограничения сказываются на архитектуре систем реального времени, например, в них может отсутствовать виртуальная память, поддержка которой дает непредсказуемые задержки в выполнении программ.
Приведенная классификация ОС не является исчерпывающей
Лекция 3
Определение процессов
В общем случае процесс – это некоторая деятельность, связанная с исполнением программы на процессоре.
При исполнении программ на центральном процессоре чаще всего различают следующие характерные отдельные состояния:
1. порождение — подготавливаются условия для первого исполнения на процессоре
2. активное состояние, или состояние “Счет” — программа исполняется на процессоре
3. ожидание — программа не исполняется на процессоре по причине занятости какого-либо требуемого ресурса
4. готовность — программа не исполняется, но для исполнения предоставлены все необходимые в текущий момент ресурсы, кроме центрального процессора
5. окончание — нормальное или аварийное окончание исполнения программы, после которого процессор и другие ресурсы ей не предоставляются
Процесс находится в каждом из своих допустимых состояний в течение некоторого времени, после чего переходит в какое-то другое допустимое состояние. Состав допустимых состояний, а также допустимые переходы из состояния в состояние обычно задают в форме графа существования процесса
Для ОС процесс в такой трактовке рассматривается как объект, в отношении которого требуется обеспечить реализацию каждого из допустимых состояний, а также допустимые переходы из состояния в состояние в ответ на события, которые могут явиться причиной таких переходов. Такие события могут инициироваться и самими процессами, которые способны затребовать процессор или какой-либо другой ресурс, необходимый для исполнения программы.
Свойства и классификация
Процессы определяются рядом временных характеристик. В некоторый момент времени процесс может быть порожден (образован), а через некоторое время закончен. Интервал между этими моментами называют интервалом существования процесса.
В момент порождения последовательность и длительность пребывания процесса в каждом из своих состояний (трасса процесса) в общем случае непредсказуемы. Следовательно, непредсказуема и длительность интервала существования. Однако отдельные виды процессов требуют такого планирования, чтобы гарантировать окончание процесса до наступления некоторого конкретного момента времени. Процессы такого класса называют процессами реального времени. В другой класс входят процессы, время существования которых должно быть не более интервала времени допустимой реакции ЭВМ на запросы пользователя. Процессы такого класса называют интерактивными. Процессы, не вошедшие в эти классы, называют пакетными.
В любой ОС по требованию существующего или существовавшего процесса проводится работа по порождению процессов. Процесс, задающий данное требование, называют порождающим, а создаваемый по требованию — порожденным. Если порожденный процесс на интервале своего существования в свою очередь выдает требование на порождение другого процесса, то он одновременно становится и порождающим.
При управлении процессами важно обеспечить воспроизводимость результатов работы каждого процесса, учитывать и управлять той ситуацией, которая складывалась при развитии процесса. Поэтому часто оказывается важен не только результат счета, но и каким образом этот результат достигается. С этих позиций ОС сравнивает процессы по динамическим свойствам, используя понятие "трасса" — порядок и длительность пребывания процесса в допустимых состояниях на интервале существования.
Два процесса, которые имеют одинаковый конечный результат обработки одних и тех же исходных данных по одной и той же или даже различным программам на одном и том же или на различных процессорах, называют эквивалентными. Трассы эквивалентных процессов в общем случае не совпадают. Если в каждом из эквивалентных процессов обработка данных происходит по одной и той же программе, но трассы при этом в общем случае не совпадают, то такие процессы называют тождественными. При совпадении трасс у тождественных процессов их называют равными. Во всех остальных случаях процессы всегда различны.
Проблематичность управления процессами заключается в том, что в момент порождения процессов их трассы неизвестны. Кроме того, требуется учитывать, каким образом соотносятся во времени интервалы существования процессов. Если интервалы двух процессов не пересекаются во времени, то такие два процесса называют последовательными друг относительно друга. Если на рассматриваемом интервале времени существуют одновременно два процесса, то они на этом интервале являются параллельными друг относительно друга. Если на рассматриваемом интервале найдется хотя бы одна точка, в которой существует один процесс, но не существует другой, и хотя бы одна точка, в которой оба процесса существуют одновременно, то такие два процесса называют комбинированными.
В операционной системе принято различать процессы не только по времени, но и по месту их развития, т. е. на каком из процессоров исполняется программа процесса. Точкой отсчета принято считать центральный процессор (процессоры), на котором развиваются процессы, называемые программными или внутренними. Такое название указывает на возможность существования в системе процессов, называемых внешними. Это процессы, развитие которых происходит под контролем или управлением ОС на процессорах, отличных от центрального. Ими могут быть, например, процессы ввода — вывода, развивающиеся в канале. Деятельность любого пользователя ЭВМ, который в том или ином виде вводит посредством ОС информацию, требуемую для исполнения одной или нескольких программ, можно также рассматривать как внешний процесс.
Программные процессы принято делить на системные и пользовательские. При развитии системного процесса исполняется программа из состава операционной системы. При развитии пользовательского процесса исполняется пользовательская (прикладная) программа.
Процессы независимо от их вида могут быть взаимосвязанными или изолированными друг от друга. Два процесса являются взаимосвязанными, если между ними поддерживаются с помощью системы управления процессами какого-либо рода связи: функциональные, пространственно-временные, управляющие, информационные и т. д. В противном случае они являются изолированными (точнее - процессами со слабыми связями, так как при отсутствии явных связей они могут быть связаны косвенно и определенным образом влиять на развитие друг друга).
При наличии между процессами управляющей связи устанавливается отношение вида "порождающий—порождаемый", рассмотренное выше. Если два взаимосвязанных процесса при развитии используют совместно некоторые ресурсы, но информационно между собой не связаны, т. е. не обмениваются информацией, то такие процессы называют информационно-независимыми. Связь между такими процессами может быть либо функциональная, либо пространственно-временная. При наличии информационных связей между двумя процессами их называют взаимодействующими, причем схемы, а следовательно, и механизмы установления таких связей могут быть различными.
Особенность, во-первых, обусловлена динамикой процессов (т. е. являются ли взаимодействующие процессы последовательными, параллельными или комбинированными); во-вторых, выбранным способом связи (явным, с помощью явного обмена сообщениями между процессами, или неявным, с помощью разделяемых структур данных). Когда необходимо подчеркнуть связь между взаимосвязанными процессами по ресурсам, их называют конкурирующими.
Управление взаимосвязанными процессами в составе ОС основано на контроле и удовлетворении определенных ограничений, которые накладываются на порядок выполнения таких процессов. Данные ограничения определяют виды отношений, которые допустимы между процессами, и составляют в совокупности синхронизирующие правила.
• Отношение предшествования. Для двух процессов это отношение означает, что первый процесс должен переходить в активное состояние всегда раньше второго.
• Отношение приоритетности. Процесс с приоритетом Р может быть переведен в активное состояние только при соблюдении двух условий: в состоянии готовности к рассматриваемому процессору нет процессов с большим приоритетом; процессор либо свободен, либо используется процессом с меньшим, чем Р, приоритетом.
• Отношение взаимного исключения. Здесь два процесса используют обобщенный ресурс. При этом совокупность действий над этим ресурсом в составе одного процесса называют критической областью. Критическая область одного процесса не должна выполняться одновременно с критической областью над этим же ресурсом в составе другого процесса.
Трудность в реализации синхронизирующих правил в составе системы управления процессами обусловлена динамикой процессов, неопределенностью и непредсказуемостью порядка и частотой перехода процессов из состояния в состояние по мере их развития. Причем в отношении каждой совокупности взаимосвязанных процессов приходится решать собственную задачу синхронизации, которая требует определенного порядка выполнения процессов с целью установления требуемого взаимодействия. Помимо рассмотренных в каждой из задач могут использоваться и другие, более сложные виды отношений. Например, отношения "производители—потребители", "читатели—писатели" и т. д., устанавливаемые между взаимодействующими процессами.
Результатом рассмотрения основных свойств процессов явилось упорядочение процессов в одну из возможных классификационных схем
Лекция 4
Уровни планирования
Рассматривая эволюцию компьютерных систем, говорят о существовании двух видов планирования в вычислительных системах: планировании заданий и планировании использования процессора.
Планирование заданий появилось в пакетных системах после того, как для хранения сформированных пакетов заданий начали использоваться магнитные диски. Магнитные диски, будучи устройствами прямого доступа, позволяют загружать задания в компьютер в произвольном порядке, а не только в том, в котором они были записаны на диск. Изменяя порядок загрузки заданий в вычислительную систему, можно повысить эффективность ее использования. Процедуру выбора очередного задания для загрузки в машину, т. е. для порождения соответствующего процесса, называют планированием заданий.
Планирование использования процессора впервые возникает в мультипрограммных вычислительных системах, где в состоянии готовность могут одновременно находиться несколько процессов. Именно для процедуры выбора из них одного процесса, который получит процессор в свое распоряжение, т.е. будет переведен в состояние исполнение, используют это словосочетание.
В вычислительных системах, оба этих вида планирования рассматриваются как различные уровни планирования процессов.
Планирование заданий
Планирование заданий выступает в качестве долгосрочного планирования процессов. Оно отвечает за порождение новых процессов в системе, определяя ее степень мультипрограммирования, т. е. количество процессов, одновременно находящихся в ней. Если степень мультипрограммирования системы поддерживается постоянной, т. е. среднее количество процессов в компьютере не меняется, то новые процессы могут появляться только после завершения ранее загруженных. Поэтому долгосрочное планирование осуществляется достаточно редко, между появлением новых процессов могут проходить минуты и даже десятки минут. Решение о выборе для запуска того или иного процесса оказывает влияние на функционирование вычислительной системы на протяжении достаточно длительного интервала времени. Отсюда и проистекает название этого уровня планирования - долгосрочное.
В некоторых операционных системах долгосрочное планирование сведено к минимуму или совсем отсутствует. Так, например, во многих интерактивных системах разделения времени порождение процесса происходит сразу после появления соответствующего запроса. Поддержание разумной степени мультипрограммирования осуществляется за счет ограничения количества пользователей, которые могут работать в системе, и человеческой психологии. Если между нажатием на клавишу и появлением символа на экране проходит 20-30 секунд, то многие пользователи предпочтут прекратить работу и продолжить ее, когда система будет менее загружена.
Планирование использования процессора
Планирование использования процессора выступает в качестве краткосроч-ного планирования процессов. Оно проводится, к примеру, при обращении исполняющегося процесса к устройствам ввода-вывода или просто по завершении определенного интервала времени. Поэтому краткосрочное планирование осуществляется весьма часто, как правило, не реже одного раза в 100 миллисекунд. Выбор нового процесса для исполнения оказывает влияние на функционирование системы до наступления очередного аналогичного события, т. е. в течение короткого промежутка времени, что и обусловило название этого уровня планирования - краткосрочное.
В некоторых вычислительных системах бывает выгодно для повышения их производительности временно удалить какой-либо частично выполнившийся процесс из оперативной памяти на диск, а позже вернуть его обратно для дальнейшего выполнения. Такая процедура в англоязычной литературе получила название swapping, что можно перевести на русский язык как перекачка, хотя в профессиональной литературе оно употребляется без перевода - свопинг. Когда и какой из процессов нужно перекачать на диск и вернуть обратно, решается дополнительным промежуточным уровнем планирования процессов - среднесрочным.
Критерии планирования и требования к алгоритмам
Для каждого уровня планирования процессов можно предложить много различных алгоритмов. Выбор конкретного алгоритма определяется классом задач, решаемых вычислительной системой, и целями, которых мы хотим достичь, используя планирование. К числу таких целей можно отнести:
• Справедливость: гарантировать каждому заданию или процессу определенную часть времени использования процессора в компьютерной системе, стараясь не допустить возникновения ситуации, когда процесс одного пользователя постоянно занимает процессор, в то время как процесс другого пользователя фактически не приступал к выполнению.
• Эффективность: постараться занять процессор на все 100% рабочего времени, не позволяя ему простаивать в ожидании процессов готовых к исполнению. В реальных вычислительных системах загрузка процессора колеблется от 40 до 90 процентов.
• Сокращение полного времени выполнения (turnaround time): обеспечить минимальное время между стартом процесса или постановкой задания в очередь для загрузки и его завершением.
• Сокращение времени ожидания (waiting time): минимизировать время, которое проводят процессы в состоянии готовность и задания в очереди для загрузки.
• Сокращение времени отклика (response time): минимизировать время, которое требуется процессу в интерактивных системах для ответа на запрос пользователя.
Независимо от поставленных целей планирования желательно также, чтобы алгоритмы обладали следующими свойствами:
• Были предсказуемыми. Одно и то же задание должно выполняться приблизительно за одно и то же время. Применение алгоритма планирования не должно приводить, к примеру, к извлечению корня квадратного из 4 за сотые доли секунды при одном запуске и за несколько суток при втором запуске.
• Имели минимальные накладные расходы, связанные с их работой. Если на каждые 100 миллисекунд, выделенных процессу для использования процессора, будет приходиться 200 миллисекунд на определение того, какой именно процесс получит процессор в свое распоряжение, и на переключение контекста, то такой алгоритм, очевидно, использовать не стоит.
• Равномерно загружали ресурсы вычислительной системы, отдавая предпочтение тем процессам, которые будут занимать малоиспользуемые ресурсы.
• Обладали масштабируемостью, т. е. не сразу теряли работоспособность при увеличении нагрузки. Например, рост количества процессов в системе в два раза не должен приводить к увеличению полного времени выполнения процессов на порядок.
Многие из приведенных выше целей и свойств являются противоречивыми. Улучшая работу алгоритма с точки зрения одного критерия, мы ухудшаем ее с точки зрения другого. Приспосабливая алгоритм под один класс задач, мы тем самым дискриминируем задачи другого класса.
Параметры планирования
Для осуществления поставленных целей разумные алгоритмы планирования должны опираться на какие-либо характеристики процессов в системе, заданий в очереди на загрузку, состояния самой вычислительной системы, иными словами, на параметры планирования. В этом разделе мы опишем ряд таких параметров, не претендуя на полноту изложения.
Все параметры планирования можно разбить на две большие группы: статические параметры и динамические параметры. Статические параметры не изменяются в ходе функционирования вычислительной системы, динамические же, напротив, подвержены постоянным изменениям.
К статическим параметрам вычислительной системы можно отнести предельные значения ее ресурсов (размер оперативной памяти, максимальное количество памяти на диске для осуществления свопинга, количество подключенных устройств ввода-вывода и т. п.). Динамические параметры системы описывают количество свободных ресурсов в текущий момент времени.
Параметры планирования (статические)
К статическим параметрам процессов относятся характеристики, как правило, присущие заданиям уже на этапе загрузки:
• Каким пользователем запущен процесс или сформировано задание.
• Насколько важной является поставленная задача, т. е. каков приоритет ее выполнения.
• Сколько процессорного времени запрошено пользователем для решения задачи.
• Каково соотношение процессорного времени и времени, необходимого для осуществления операций ввода-вывода.
• Какие ресурсы вычислительной системы (оперативная память, устройства ввода-вывода, специальные библиотеки и системные программы и т. д.) и в каком количестве необходимы заданию.
Параметры планирования (динамические)
Алгоритмы долгосрочного планирования используют в своей работе статические и динамические параметры вычислительной системы и статические параметры процессов (динамические параметры процессов на этапе загрузки заданий еще не известны). Алгоритмы краткосрочного и среднесрочного планирования дополнительно учитывают и динамические характеристики процессов.
Для среднесрочного планирования в качестве таких характеристик может выступать следующая информация:
• Сколько времени прошло со времени выгрузки процесса на диск или его загрузки в оперативную память.
• Сколько оперативной памяти занимает процесс.
• Сколько процессорного времени было уже предоставлено процессу
Для краткосрочного планирования необходимо ввести еще два динамических параметра.
Деятельность любого процесса можно представить как последовательность циклов использования процессора и ожидания завершения операций ввода-вывода. Промежуток времени непрерывного использования процессора носит на английском языке название CPU burst, а промежуток времени непрерывного ожидания ввода-вывода - I/O burst. На рисунке следующего слайда показан фрагмент деятельности некоторого процесса на псевдоязыке программирования с выделением указанных промежутков. Для краткости изложения мы будем использовать термины CPU burst и I/O burst без перевода. Значения продолжительности последних и очередных CPU burst и I/O burst являются важными динамическими параметрами процесса.
Вытесняющее и невытесняющее планирование
Процесс планирования осуществляется частью операционной системы, называемой планировщиком. Планировщик может принимать решения о выборе для исполнения нового процесса, из числа находящихся в состоянии готовность, в следующих четырех случаях:
1. Когда процесс переводится из состояния исполнение в состояние завершение.
2. Когда процесс переводится из состояния исполнение в состояние ожидание.
3. Когда процесс переводится из состояния исполнение в состояние готовность (например, после прерывания от таймера).
4. Когда процесс переводится из состояния ожидание в состояние готовность (завершилась операция ввода-вывода или произошло другое событие).
В случаях 1 и 2 процесс, находившийся в состоянии исполнение, не может дальше исполняться, и для выполнения всегда необходимо выбрать новый процесс.
В случаях 3 и 4 планирование может не проводиться, процесс, который исполнялся до прерывания, может продолжать свое выполнение после обработки прерывания.
Если планирование осуществляется только в случаях 1 и 2, говорят, что имеет место невытесняющее (nonpreemptive) планирование. В противном случае говорят о вытесняющем (preemptive) планировании.
Термин "вытесняющее планирование' возник потому, что исполняющийся процесс помимо своей воли может быть вытеснен из состояния исполнение другим процессом.
Невытесняющее планирование используется, например, в MS Windows 3.1 и ОС Apple Macintosh. При таком режиме планирования процесс занимает столько процессорного времени, сколько ему необходимо. При этом переключение процессов возникает только при желании самого исполняющегося процесса передать управление (для ожидания завершения операции ввода-вывода или по окончании работы).
Этот метод планирования относительно просто реализуем и достаточно эффективен, так как позволяет использовать большую часть процессорного времени на работу самих процессов и до минимума сократить затраты на переключение контекста. Однако при невытесняющем планировании возникает проблема возможности полного захвата процессора одним процессом, который вследствие каких-либо причин (например, из-за ошибки в программе) зацикливается и не может передать управление другому процессу. В такой ситуации спасает только перезагрузка всей вычислительной системы.
Вытесняющее планирование обычно используется в системах разделения времени. В этом режиме планирования процесс может быть приостановлен в любой момент своего исполнения. Операционная система устанавливает специальный таймер для генерации сигнала прерывания по истечении некоторого интервала времени - кванта. После прерывания процессор передается в распоряжение следующего процесса. Временные прерывания помогают гарантировать приемлемые времена отклика процессов для пользователей, работающих в диалоговом режиме, и предотвращают "зависание" компьютерной системы из-за зацикливания какой-либо программы.
Лекция 5
Алгоритмы планирования
Существует достаточно большой набор разнообразных алгоритмов планирования, которые предназначены для достижения различных целей и эффективны для разных классов задач. Многие из них могут быть использованы на нескольких уровнях планирования.
Рассмотрим некоторые наиболее употребительные алгоритмы применительно к процессу кратковременного планирования.
First-Come, First-Served (FCFS)
Простейшим алгоритмом планирования является алгоритм, который принято обозначать аббревиатурой FCFS по первым буквам его английского названия - First Come, First Served (первым пришел, первым обслужен). Представим себе, что процессы, находящиеся в состоянии готовность, организованы в очередь. Когда процесс переходит в состояние готовность, он, а точнее ссылка на его PCB, помещается в конец этой очереди. Выбор нового процесса для исполнения осуществляется из начала очереди с удалением оттуда ссылки на его PCB. Очередь подобного типа имеет в программировании специальное наименование FIFO - сокращение от First In, First Out (первым вошел, первым вышел).
Такой алгоритм выбора процесса осуществляет невытесняющее планирование. Процесс, получивший в свое распоряжение процессор, занимает его до истечения своего текущего CPU burst. После этого для выполнения выбирается новый процесс из начала очереди.
Преимуществом алгоритма FCFS является легкость его реализации, в то же время он имеет и много недостатков.
Среднее время ожидания и среднее полное время выполнения для этого алгоритма существенно зависят от порядка расположения процессов в очереди. Если у нас есть процесс с длительным CPU burst, то короткие процессы, перешедшие в состояние готовность после длительного процесса, будут очень долго ждать начала своего выполнения. Поэтому алгоритм FCFS практически неприменим для систем разделения времени. Слишком большим получается среднее время отклика в интерактивных процессах.
Round Robin (RR)
Модификацией алгоритма FCFS является алгоритм, получивший название Round Robin (Round Robin - это вид детской карусели в США) или сокращенно RR. По сути дела это тот же самый алгоритм, только реализованный в режиме вытесняющего планирования. Можно представить себе все множество готовых процессов организованным циклически - процессы сидят на карусели. Карусель вращается так, что каждый процесс находится около процессора небольшой фиксированный квант времени, обычно 10 - 100 миллисекунд. Пока процесс находится рядом с процессором, он получает процессор в свое распоряжение и может исполняться.
Реализуется такой алгоритм так же, как и предыдущий, с помощью организации процессов, находящихся в состоянии готовность, в очередь FIFO. Планировщик выбирает для очередного исполнения процесс, расположенный в начале очереди, и устанавливает таймер для генерации прерывания по истечении определенного кванта времени. При выполнении процесса возможны два варианта:
Время непрерывного использования процессора, требующееся процессу, (остаток текущего CPU burst) меньше или равно продолжительности кванта времени. Тогда процесс по своей воле освобождает процессор до истечения кванта времени, на исполнение выбирается новый процесс из начала очереди и таймер начинает отсчет кванта заново.
Продолжительность остатка текущего CPU burst процесса больше, чем квант времени. Тогда по истечении этого кванта процесс прерывается таймером и помещается в конец очереди процессов готовых к исполнению, а процессор выделяется для использования процессу, находящемуся в ее начале.
При порядке процессов p0, p1, p2 и величиной кванта времени равной 4 получается:
При порядке процессов p0, p1, p2 для величины кванта времени равной 1 получается:
При очень больших величинах кванта времени, когда каждый процесс успевает завершить свой CPU burst до возникновения прерывания по времени, алгоритм RR вырождается в алгоритм FCFS. При очень малых величинах создается иллюзия того, что каждый из n процессов работает на своем собственном виртуальном процессоре с производительностью ~ 1/n от производительности реального процессора. Правда, это справедливо лишь при теоретическом анализе при условии пренебрежения временами переключения контекста процессов. В реальных условиях при слишком малой величине кванта времени и, соответственно, слишком частом переключении контекста, накладные расходы на переключение резко снижают производительность системы.
Shortest-Job-First (SJF)
При рассмотрении алгоритмов FCFS и RR видно, насколько существенным для них является порядок расположения процессов в очереди процессов готовых к исполнению. Если короткие задачи расположены в очереди ближе к ее началу, то общая производительность этих алгоритмов значительно возрастает. Если бы мы знали время следующих CPU burst для процессов, находящихся в состоянии готовность, то могли бы выбрать для исполнения не процесс из начала очереди, а процесс с минимальной длительностью CPU burst. Если же таких процессов два или больше, то для выбора одного из них можно использовать уже известный нам алгоритм FCFS. Квантование времени при этом не применяется. Описанный алгоритм получил название "кратчайшая работа первой" или Shortest Job First (SJF).
SJF алгоритм краткосрочного планирования может быть как вытесняющим, так и невытесняющим. При невытесняющем SJF планировании процессор предоставляется избранному процессу на все требующееся ему время, независимо от событий происходящих в вычислительной системе. При вытесняющем SJF планировании учитывается появление новых процессов в очереди готовых к исполнению (из числа вновь родившихся или разблокированных) во время работы выбранного процесса. Если CPU burst нового процесса меньше, чем остаток CPU burst у исполняющегося, то исполняющийся процесс вытесняется новым.
Гарантированное планирование
При интерактивной работе N пользователей в вычислительной системе можно применить алгоритм планирования, который гарантирует, что каждый из пользователей будет иметь в своем распоряжении ~ 1/N часть процессорного времени. Пронумеруем всех пользователей от 1 до N. Для каждого пользователя с номером i введем две величины: Ti - время нахождения пользователя в системе, или, другими словами длительность сеанса его общения с машиной, и ti - суммарное процессорное время уже выделенное всем его процессам в течение сеанса. Справедливым для пользователя было бы получение Ti/N процессорного времени. Если
ti << Ti/N,
то i - й пользователь несправедливо обделен процессорным временем. Если же
ti > Ti/N
то система явно благоволит к пользователю с номером i.
Вычислим для каждого пользовательского процесса
значение коэффициента справедливости = ti * N / Ti
и будем предоставлять очередной квант времени процессу с наименьшей величиной этого отношения. Предложенный алгоритм называют алгоритмом гарантированного планирования. К недостаткам этого алгоритма можно отнести невозможность предугадать поведение пользователей. Если некоторый пользователь отправится на пару часов пообедать и поспать, не прерывая сеанса работы, то по возвращении его процессы будут получать неоправданно много процессорного времени.
Приоритетное планирование
Алгоритмы SJF и гарантированного планирования представляют собой частные случаи приоритетного планирования. При приоритетном планировании каждому процессу присваивается определенное числовое значение - приоритет, в соответствии с которым ему выделяется процессор. Процессы с одинаковыми приоритетами планируются в порядке FCFS. Для алгоритма SJF в качестве такого приоритета выступает оценка продолжительности следующего CPU burst. Чем меньше значение этой оценки, тем более высокий приоритет имеет процесс. Для алгоритма гарантированного планирования приоритетом служит вычисленный коэффициент справедливости. Чем он меньше, тем больше приоритет у процесса.
Принципы назначения приоритетов могут опираться как на внутренние критерии вычислительной системы, так и на внешние по отношению к ней. Внутренние используют различные количественные и качественные характеристики процесса для вычисления его приоритета. Это могут быть, например, определенные ограничения по времени использования процессора, требования к размеру памяти, число открытых файлов и используемых устройств ввода-вывода, отношение средних продолжительностей I/O burst к CPU burst и т. д. Внешние критерии исходят из таких параметров, как важность процесса для достижения каких-либо целей, стоимость оплаченного процессорного времени и других политических факторов.
Планирование с использованием приоритетов может быть как вытесняющим, так и невытесняющим. При вытесняющем планировании процесс с более высоким приоритетом, появившийся в очереди готовых процессов, вытесняет исполняющийся процесс с более низким приоритетом. В случае невытесняющего планирования он просто становится в начало очереди готовых процессов.
Многоуровневые очереди (Multilevel Queue)
Для систем, в которых процессы могут быть легко рассортированы на разные группы, был разработан другой класс алгоритмов планирования. Для каждой группы процессов создается своя очередь процессов, находящихся в состоянии готовность (см. рисунок 3.5). Этим очередям приписываются фиксированные приоритеты. Например, приоритет очереди системных процессов устанавливается больше, чем приоритет очередей пользовательских процессов. А приоритет очереди процессов, запущенных студентами, - ниже, чем для очереди процессов, запущенных преподавателями. Это значит, что ни один пользовательский процесс не будет выбран для исполнения, пока есть хоть один готовый системный процесс, и ни один студенческий процесс не получит в свое распоряжение процессор, если есть процессы преподавателей, готовые к исполнению.
Внутри этих очередей для планирования могут применяться самые разные алгоритмы. Так, например, для больших счетных процессов, не требующих взаимодействия с пользователем (фоновых процессов), может использоваться алгоритм FCFS, а для интерактивных процессов - алгоритм RR. Подобный подход, получивший название многоуровневых очередей, повышает гибкость планирования: для процессов с различными характеристиками применяется наиболее подходящий им алгоритм.
Многоуровневые очереди с обратной связью (Multilevel Feedback Queue)
Дальнейшим развитием алгоритма многоуровневых очередей является добавление к нему механизма обратной связи. Здесь процесс не постоянно приписан к определенной очереди, а может мигрировать из очереди в очередь, в зависимости от своего поведения.
Многоуровневые очереди с обратной связью представляют собой наиболее общий подход к планированию процессов из числа подходов, рассмотренных нами. Они наиболее трудоемки в реализации, но в то же время они обладают наибольшей гибкостью. Понятно, что существует много других разновидностей такого способа планирования помимо варианта, приведенного выше. Для полного описания их конкретного воплощения необходимо указать:
• Количество очередей для процессов, находящихся в состоянии готовность.
• Алгоритм планирования, действующий между очередями.
• Алгоритмы планирования, действующие внутри очередей.
• Правила помещения родившегося процесса в одну из очередей.
• Правила перевода процессов из одной очереди в другую.
Изменяя какой-либо из перечисленных пунктов, мы можем существенно менять поведение вычислительной системы.
Таким образом, одним из наиболее ограниченных ресурсов вычислительной системы является процессорное время. Для его распределения между многочисленными процессами в системе приходится применять процедуру планирования процессов. По степени длительности влияния планирования на поведение вычислительной системы различают краткосрочное, среднесрочное и долгосрочное планирование процессов. Конкретные алгоритмы планирования процессов зависят от поставленных целей, класса решаемых задач и опираются на статические и динамические параметры процессов и компьютерных систем. Различают вытесняющий и невытесняющий режимы планирования. При невытесняющем планировании исполняющийся процесс уступает процессор другому процессу только по своему собственному желанию, при вытесняющем планировании исполняющийся процесс может быть вытеснен из состояния исполнения помимо собственной воли.
Простейшим алгоритмом планирования является невытесняющий алгоритм FCFS, который, однако, может существенно задерживать короткие процессы, не вовремя перешедшие в состояние готовность. В системах разделения времени широкое распространение получила вытесняющего версия этого алгоритма - RR.
Среди всех невытесняющих алгоритмов оптимальным с точки зрения среднего времени ожидания процессов является алгоритм SJF. Существует и вытесняющий вариант этого алгоритма. В интерактивных системах часто используется алгоритм гарантированного планирования, обеспечивающий пользователям равные части процессорного времени.
Алгоритм SJF и алгоритм гарантированного планирования являются частными случаями планирования с использованием приоритетов. В более общих методах приоритетного планирования применяются многоуровневые очереди процессов готовых к исполнению и многоуровневые очереди с обратной связью. Будучи наиболее сложными в реализации, эти способы планирования обеспечивают гибкое поведение вычислительных систем и их адаптивность к решению задач разных классов.
Лекция 6
Кооперация процессов и основные аспекты ее логической организации
Жизнь процессов в вычислительной системе напоминает жизнь соседей в коммунальной квартире. Постоянное ожидание в очереди к местам общего пользования (к процессору?) и постоянная борьба за другие ресурсы (кто опять занял все конфорки на плите?). Для нормального функционирования процессов операционная система старается максимально обособить их друг от друга. Каждый процесс имеет свое собственное адресное пространство (каждая семья должна жить в отдельной комнате), нарушение которого, как правило, приводит к аварийной остановке процесса (вызов милиции). Каждому процессу, по возможности, предоставляются свои собственные дополнительные ресурсы (у каждой семьи желателен свой собственный холодильник). Тем не менее, для решения некоторых задач (приготовление праздничного стола на всю квартиру) процессы могут объединять свои усилия. Настоящая глава описывает причины, по которым взаимодействуют процессы, способы их взаимодействия и возникающие при этом проблемы (попытайтесь отремонтировать общую квартиру так, чтобы не переругались все проживающие в ней семьи).
Взаимодействующие процессы
Для достижения поставленной цели различные процессы (возможно, даже принадлежащие разным пользователям) могут исполняться псевдопараллельно на одной вычислительной системе или параллельно на разных вычислительных системах, взаимодействуя между собой.
Для чего процессам нужно заниматься совместной деятельностью? Какие существуют причины для их кооперации?
Одной из причин является повышение скорости работы. Когда один процесс ожидает наступления некоторого события (например, окончания операции ввода-вывода), другие в это время могут заниматься полезной работой, направленной на решение общей задачи. В многопроцессорных вычислительных системах программа разделяется на отдельные кусочки, каждый из которых будет исполняться на своем процессоре.
Второй причиной является совместное использование данных. Различные процессы могут, к примеру, работать с одной и той же динамической базой данных или с разделяемым файлом, совместно изменяя их содержимое.
Третьей причиной является модульная конструкция какой-либо системы. Типичным примером может служить микроядерный способ построения операционной системы, когда ее различные части представляют собой отдельные процессы, общающиеся путем передачи сообщений через микроядро.
Наконец, это может быть необходимо просто для удобства работы пользователя, желающего, например, редактировать и отлаживать программу одновременно. В этой ситуации процессы редактора и отладчика должны уметь взаимодействовать друг с другом.
Процессы не могут взаимодействовать не общаясь. Общение процессов обычно приводит к изменению их поведения в зависимости от полученной информации. Если деятельность процессов остается неизменной при любой принятой ими информации, то это означает, что они на самом деле не нуждаются во взаимном общении. Процессы, которые влияют на поведение друг друга путем обмена информацией, принято называть кооперативными или взаимодействующими процессами, в отличие от независимых процессов, не оказывающих друг на друга никакого воздействия и ничего не знающих о взаимном сосуществовании в вычислительной системе.
Различные процессы в вычислительной системе изначально представляют собой обособленные сущности. Работа одного процесса не должна приводить к нарушению работы другого процесса. Для этого, в частности, разделены их адресные пространства и системные ресурсы, и для обеспечения корректного взаимодействия процессов требуются специальные средства и действия операционной системы. Нельзя просто поместить значение, вычисленное в одном процессе, в область памяти, соответствующую переменной в другом процессе, не предприняв каких-либо дополнительных организационных усилий. Давайте рассмотрим основные аспекты организации совместной работы процессов.
Категории средств обмена информацией
Процессы могут взаимодействовать друг с другом только обмениваясь информацией. По объему передаваемой информации и степени возможного воздействия на поведение другого процесса все средства такого обмена можно разделить на три категории:
Сигнальные. Передается минимальное количество информации - один бит, "да" или "нет". Используются, как правило, для извещения процесса о наступлении какого-либо события. Степень воздействия на поведение процесса, получившего информацию, минимальна. Все зависит от того, знает ли он, что означает полученный сигнал, надо ли на него реагировать и каким образом. Неправильная реакция на сигнал или его игнорирование могут привести к трагическим последствиям. Вспомним профессора Плейшнера из кинофильма"Семнадцать мгновений весны". Сигнал тревоги - цветочный горшок на подоконнике - был ему передан, но проигнорирован. И к чему это привело?
Канальные. Общение процессов происходит через линии связи, предоставленные операционной системой, и напоминает общение людей по телефону, с помощью записок, писем или объявлений. Объем передаваемой информации в единицу времени ограничен пропускной способностью линий связи. С увеличением количества информации увеличивается и возможность влияния на поведение другого процесса.
Разделяемая память. Два или более процессов могут совместно использовать некоторую область адресного пространства. Созданием разделяемой памяти занимается операционная система (если, конечно, ее об этом попросят). Общение процессов напоминает совместное проживание студентов в одной комнате общежития. Возможность обмена информацией максимальна, как, впрочем, и влияние на поведение другого процесса, но требует повышенной осторожности (если вы переложили с места на место все вещи вашего соседа по комнате, а часть из них еще и выбросили, то представляете, как он отреагирует?). Использование разделяемой памяти для передачи/получения информации осуществляется с помощью средств обычных языков программирования, в то время как сигнальным и канальным средствам коммуникации для этого необходимы специальные системные вызовы. Разделяемая память представляет собой наиболее быстрый способ взаимодействия процессов в одной вычислительной системе.
Логическая организация механизма передачи информации
При рассмотрении любого из средств коммуникации нас с вами будет интересовать не их физическая реализация (общая шина данных, прерывания, аппаратно разделяемая память и т. д. - мало ли чего придумает человечество), а логическая, определяющая, в конечном счете, механизм их использования. Некоторые важные аспекты логической реализации являются общими для всех категорий средств связи, некоторые относятся к отдельным категориям. Давайте кратко охарактеризуем основные вопросы, требующие освещения при изучении того или иного способа обмена информацией
Как устанавливается связь?
Могу ли я использовать средство связи непосредственно для обмена информацией сразу после создания процесса или первоначально необходимо предпринять некоторые действия по инициализации обмена? Так, например, для использования общей памяти различными процессами потребуется специальное обращение к операционной системе, которая выделит требуемую область адресного пространства. Но для передачи сигнала от одного процесса к другому никакая инициализация не нужна. В то же время, передача информации по линиям связи может потребовать первоначального резервирования такой линии для процессов, желающих обменяться информацией.
К этому же вопросу тесно примыкает вопрос о способе адресации при использовании средства связи. Если я передаю некоторую информацию, то я должен указать, куда я ее передаю. Если я желаю получить некоторую информацию, то мне нужно знать, откуда я могу ее получить.
Различают два способа адресации: прямую и непрямую. В случае прямой адресации взаимодействующие процессы непосредственно общаются друг с другом, при каждой операции обмена данными явно указывая имя или номер процесса, которому информация предназначена или от которого она должна быть получена. Если и процесс, от которого данные исходят, и процесс, принимающий данные, оба указывают имена своих партнеров по взаимодействию, то такая схема адресации называется симметричной прямой адресацией. Ни один другой процесс не может вмешаться в процедуру симметричного прямого общения двух процессов, перехватить посланные или подменить ожидаемые данные. Если только один из взаимодействующих процессов, например передающий, указывает имя своего партнера по кооперации, а второй процесс в качестве возможного партнера рассматривает любой процесс в системе, например, ожидает получения информации от произвольного источника, то такая схема адресации называется асимметричной прямой адресацией.
При непрямой адресации данные помещаются передающим процессом в некоторый промежуточный объект для хранения данных, имеющий свой адрес, из которого они могут быть затем изъяты каким-либо другим процессом. Примером такого объекта в повседневной жизни может служить обычная доска объявлений или рекламная газета. При этом передающий процесс не знает, как именно идентифицируется процесс, который получит информацию, а принимающий процесс не имеет представления об идентификаторе процесса, от которого он должен ее получить.
Естественно, что при использовании прямой адресации связь между процессами в классической операционной системе устанавливается автоматически, без дополнительных инициализирующих действий. Единственное, что нужно для использования средства связи, - это знать, как идентифицируются процессы, участвующие в обмене данными.
При использовании непрямой адресации инициализация средства связи может как требоваться, так и не требоваться. Информация, которой должен обладать процесс для взаимодействия с другими процессами, - это некий идентификатор промежуточного объекта для хранения данных, если он, конечно, не является единственным и неповторимым в вычислительной системе для всех процессов.
Информационная валентность процессов и средств связи
Следующий важный вопрос - это вопрос об информационной валентности связи. Слово валентность здесь использовано по аналогии с химией. Сколько процессов может быть одновременно ассоциировано с конкретным средством связи? Сколько таких средств связи может быть задействовано между двумя процессами?
Понятно, что при прямой адресации только одно данное средство связи может быть задействовано для обмена данными между двумя процессами, и только эти два процесса могут быть ассоциированы с ним. При непрямой адресации может существовать более двух процессов, использующих один и тот же объект для данных, и более одного объекта может быть использовано двумя процессами.
К этой же группе вопросов следует отнести и вопрос о направленности связи. Является ли связь однонаправленной или двунаправленной? Под однонаправленной связью мы будем понимать связь, при которой каждый процесс, ассоциированный с ней, может использовать средство связи либо только для приема информации, либо только для ее передачи. При двунаправленной связи, каждый процесс, участвующий в общении, может использовать связь и для приема, и для передачи данных. В коммуникационных системах принято называть однонаправленную связь симплексной, двунаправленную связь с поочередной передачей информации в разных направлениях - полудуплексной, а двунаправленную связь с возможностью одновременной передачи информации в разных направлениях - дуплексной. Прямая и непрямая адресация не имеют непосредственного отношения к направленности связи.
Особенности передачи информации с помощью линий связи
Как мы говорили выше, передача информации между процессами посредством линий связи является достаточно безопасной по сравнению с использованием разделяемой памяти и достаточно информативной по сравнению с сигнальными средствами коммуникации. Кроме того, разделяемая память не может быть использована для связи процессов, функционирующих на различных вычислительных системах. Возможно, именно поэтому каналы связи получили наибольшее распространение среди других средств коммуникации процессов. Коснемся некоторых вопросов, связанных с логической реализацией канальных средств коммуникации.
Буферизация
Может ли линия связи сохранять информацию, переданную одним процессом, до ее получения другим процессом или помещения в промежуточный объект? Каков объем этой информации? Иными словами, речь идет о том, обладает ли канал связи буфером и каков объем этого буфера. Здесь можно выделить три принципиальных варианта:
Буфер нулевой емкости или отсутствует. Никакая информация не может сохраняться на линии связи. В этом случае процесс, посылающий информацию, должен ожидать, пока процесс, принимающий информацию, не соблаговолит ее получить, прежде чем заниматься своими дальнейшими делами.
Буфер ограниченной емкости. Размер буфера равен n, то есть линия связи не может хранить до момента получения более чем n единиц информации. Если в момент передачи данных в буфере хватает места, то передающий процесс не должен ничего ожидать. Информация просто копируется в буфер. Если же в момент передачи данных буфер заполнен или места не достаточно, то необходимо задержать работу процесса отправителя до появления в буфере свободного пространства.
Буфер неограниченной емкости. Теоретически это возможно, но практически вряд ли реализуемо. Процесс, посылающий информацию, никогда не ждет окончания ее передачи и приема другим процессом.
При использовании канального средства связи с непрямой адресацией под емкостью буфера обычно понимается количество информации, которое может быть помещено в промежуточный объект для хранения данных.
Поток ввода/вывода и сообщения
Существует две модели передачи данных по каналам связи - поток ввода-вывода и сообщения. При передаче данных с помощью потоковой модели, операции передачи/приема информации вообще не интересуются содержимым данных. Процесс, прочитавший 100 байт из линии связи, не знает и не может знать, были ли они переданы одновременно, т. е. одним куском, или порциями по 20 байт, пришли они от одного процесса или от разных процессов. Данные представляют собой простой поток байт, без какой-либо их интерпретации со стороны системы. Примерами потоковых каналов связи могут служить pipe и FIFO, описанные ниже.
Одним из наиболее простых способов передачи информации между процессами по линиям связи является передача данных через pipe (канал, трубу или, как его еще называют в литературе, конвейер). Представим себе, что у вас есть некоторая труба в вычислительной системе, в один из концов которой процессы могут сливать информацию, а из другого конца принимать полученный поток. Естественно, что такой способ реализует потоковую модель ввода/вывода. Информацией о расположении трубы в операционной системе обладает только процесс, создавший ее. Этой информацией он может поделиться исключительно со своими наследниками - процессами-детьми и их потомками. Поэтому использовать pipe для связи между собой могут только родственные процессы, имеющие общего предка, создавшего этот канал связи.
Если разрешить процессу, создавшему трубу, сообщать об ее точном расположении в системе другим процессам, сделав вход и выход трубы каким-либо образом видимыми для всех остальных, например, зарегистрировав ее в операционной системе под определенным именем, мы получим объект, который принято называть FIFO или именованный pipe. Именованный pipe может использоваться для связи между любыми процессами в системе.
В модели сообщений процессы налагают на передаваемые данные некоторую структуру. Весь поток информации они разделяют на отдельные сообщения, вводя между данными, по крайней мере, границы сообщений. Примером границ сообщений являются точки между предложениями в сплошном тексте или границы абзаца. Кроме того, к передаваемой информации может быть присоединены указания на то, кем конкретное сообщение было послано и для кого оно предназначено. Примером указания отправителя могут служить подписи под эпиграфами в книге. Все сообщения могут иметь одинаковый фиксированный размер или могут быть переменной длины. В вычислительных системах используются разнообразные средства связи для передачи сообщений: очереди сообщений, sockets (гнезда) и т.д.
И потоковые линии связи, и каналы сообщений могут иметь или не иметь буфер. Когда мы будем говорить о емкости буфера для потоков данных, мы будем измерять ее в байтах. Когда мы будем говорить о емкости буфера для сообщений, мы будем измерять ее в сообщениях.
Надежность средств связи
Одним из существенных вопросов при рассмотрении всех категорий средств связи является вопрос об их надежности. Из житейского опыта мы знаем, как тяжело расслышать собеседника по вечно трещащему телефону. Некоторые полученные телеграммы вызывают чувство глубокого недоумения: "Прибду пыездом в вонедельник 33 июня в 25.34. Пама", а некоторые вообще не доставляются.
Мы будем называть способ коммуникации надежным, если при обмене данными выполняются следующие четыре условия:
• Не происходит потери информации.
• Не происходит повреждения информации.
• Не появляется лишней информации.
• Не нарушается порядок данных в процессе обмена.
Очевидно, что передача данных через разделяемую память является надежным способом связи. То, что мы сохранили в разделяемой памяти, будет считано другими процессами в первозданном виде, если, конечно, не произойдет сбоя в питании компьютера. Для других средств коммуникации, как видно из приведенных выше примеров, это не всегда верно.
Каким образом в вычислительных системах пытаются бороться с ненадежностью коммуникаций? Давайте рассмотрим возможные варианты на примере обмена данными через линию связи с помощью сообщений.
Для обнаружения повреждения информации будем снабжать каждое передаваемое сообщение некоторой контрольной суммой, вычисленной по посланной информации. При приеме сообщения контрольную сумму будем вычислять заново и проверять ее соответствие пришедшему значению. Если данные не повреждены (контрольные суммы совпадают), то подтвердим правильность их получения. Если данные повреждены (контрольные суммы не совпадают), то сделаем вид, что сообщение к нам не поступило. Вместо контрольной суммы можно использовать специальное кодирование передавамых данных с помощью кодов, исправляющих ошибки. Такое кодирование позволяет при числе искажений информации, не превышающем некоторого значения, восстановить начальные неискаженные данные. Если по прошествии некоторого интервала времени подтверждение о правильности полученной информации не придет на передающий конец линии связи, то информацию будем считать утерянной, и пошлем ее повторно. Для того чтобы избежать двойного получения одной и той же информации, на приемном конце линии связи должен производиться соответствующий контроль. Для гарантии правильного порядка получения сообщений будем их нумеровать. При приеме сообщения с номером, не соответствующим ожидаемому, поступаем с ним как с утерянным и ждем сообщения с правильным номером
Подобные действия могут быть возложены:
• на операционную систему;
• на процессы, обменивающиеся данными;
• совместно на систему и процессы, разделяя их ответственность. Операционная система может обнаруживать ошибки при передаче данных и извещать об этом взаимодействующие процессы для принятия ими решения о дальнейшем поведении.
Как завершается связь?
Наконец, важным вопросом при изучении средств обмена данными является вопрос прекращения обмена. Здесь нужно выделить два аспекта: требуются ли от процесса какие-либо специальные действия по прекращению использования средства коммуникации, и влияет ли такое прекращение на поведение других процессов. Для способов связи, которые не подразумевали никаких инициализирующих действий, обычно ничего специального для окончания взаимодействия предпринимать не надо. Если же установление связи требовало некоторой инициализации, то, как правило, при ее завершении необходимо выполнение ряда операций, например, сообщения операционной системе об освобождении выделенного связного ресурса.
Если кооперативные процессы прекращают взаимодействие согласовано, то такое прекращение не влияет на их дальнейшее поведение. Иная картина наблюдается при несогласованном окончании связи одним из процессов. Если какой-либо из взаимодействующих процессов, не завершивших общение, находится в этот момент в состоянии ожидания получения данных, либо попадает в такое состояние позже, то операционная система обязана предпринять некоторые действия для того, чтобы исключить вечное блокирование этого процесса. Обычно это либо прекращение работы ожидающего процесса, либо его извещение о том, что связи больше нет (например, с помощью передачи заранее определенного сигнала).
Нити исполнения
Рассмотренные выше аспекты логической реализации относятся к средствам связи, ориентированным на организацию взаимодействия различных процессов. Однако усилия, направленные на ускорение решения задач в рамках классических операционных систем, привели к появлению совершенно иных механизмов, к изменению самого понятия "процесс".
В свое время внедрение идеи мультипрограммирования позволило повысить пропускную способность компьютерных систем, т.е. уменьшить среднее время ожидания результатов работы процессов. Но любой отдельно взятый процесс в мультипрограммной системе никогда не может быть выполнен быстрее, чем при выполнении в однопрограммном режиме на том же вычислительном комплексе. Тем не менее, если алгоритм решения задачи обладает определенным внутренним параллелизмом, мы могли бы ускорить его работу, организовав взаимодействие нескольких процессов.
Для того, чтобы реализовать нашу идею, введем новую абстракцию внутри понятия "процесс" - нить исполнения или просто нить (в англоязычной литературе используется термин thread). Нити процесса разделяют его программный код, глобальные переменные и системные ресурсы, но каждая нить имеет свой собственный программный счетчик, свое содержимое регистров и свой собственный стек. Теперь процесс представляется как совокупность взаимодействующих нитей и выделенных ему ресурсов. Процесс, содержащий всего одну нить исполнения, идентичен процессу в том смысле, который мы употребляли ранее. Для таких процессов мы в дальнейшем будем использовать термин "традиционный процесс". Иногда нити называют облегченными процессами или мини-процессами, так как во многих отношениях они подобны традиционным процессам. Нити, как и процессы, могут порождать нити-потомки, правда, только внутри своего процесса, и переходить из состояния в состояние.
Состояния нитей аналогичны состояниям традиционных процессов. Из состояния рождение процесс приходит содержащим всего одну нить исполнения. Другие нити процесса будут являться потомками этой нити прародительницы. Мы можем считать, что процесс находится в состоянии готовность, если хотя бы одна из его нитей находится в состоянии готовность и ни одна из нитей не находится в состоянии исполнение. Мы можем считать, что процесс находится в состоянии исполнение, если одна из его нитей находится в состоянии исполнение. Процесс будет находиться в состоянии ожидание, если все его нити находятся в состоянии ожидание. Наконец, процесс находится в состоянии завершил исполнение, если все его нити находятся в состоянии завершили исполнение. Пока одна нить процесса заблокирована, другая нить того же процесса может выполняться. Нити разделяют процессор так же, как это делали традиционные процессы, в соответствии с рассмотренными алгоритмами планирования.
Поскольку нити одного процесса разделяют существенно больше ресурсов, чем различные процессы, то операции создания новой нити и переключения контекста между нитями одного процесса занимают существенно меньше времени, чем аналогичные операции для процессов в целом.
Различают операционные системы, поддерживающие нити на уровне ядра и на уровне библиотек. Все выше сказанное справедливо для операционных систем, поддерживающих нити на уровне ядра. В них планирование использования процессора происходит в терминах нитей, а управление памятью и другими системными ресурсами остается в терминах процессов. В операционных системах, поддерживающих нити на уровне библиотек пользователей, и планирование процессора, и управление системными ресурсами осуществляется в терминах процессов. Распределение использования процессора по нитям в рамках выделенного процессу временного интервала осуществляется средствами библиотеки. В таких системах блокирование одной нити приводит к блокированию всего процесса, ибо ядро операционной системы ничего не знает о существовании нитей. По сути дела, в таких вычислительных системах просто имитируется наличие нитей исполнения.
Таким образом, для достижения поставленной цели различные процессы могут исполняться псевдопараллельно на одной вычислительной системе или параллельно на разных вычислительных системах, взаимодействуя между собой. Причинами для совместной деятельности процессов обычно являются: необходимость ускорения решения задачи, совместное использование обновляемых данных, удобство работы или модульный принцип построения программных комплексов. Процессы, которые влияют на поведение друг друга путем обмена информацией, называют кооперативными или взаимодействующими процессами, в отличие от независимых процессов, не оказывающих друг на друга никакого воздействия и ничего не знающих о взаимном сосуществовании в вычислительной системе.
Для обеспечения корректного обмена информацией операционная система должна предоставить процессам специальные средства связи. По объему передаваемой информации и степени возможного воздействия на поведение процесса, получившего информацию, их можно разделить на три категории: сигнальные, канальные и разделяемую память. Через канальные средства коммуникации информация может передаваться в виде потока данных или в виде сообщений и накапливаться в буфере определенного размера. Для инициализации общения процессов и его прекращения могут потребоваться специальные действия со стороны операционной системы. Процессы, связываясь друг с другом, могут использовать непрямую, прямую симметричную и прямую асимметричную схемы адресации. Существуют одно- и двунаправленные средства передачи информации. Средства коммуникации обеспечивают надежную связь, если при общении процессов не происходит потери информации, не происходит повреждения информации, не появляется лишней информации, не нарушается порядок данных.
Усилия, направленные на ускорение решения задач в рамках классических операционных систем, привели к появлению новой абстракции внутри понятия "процесс"- нити исполнения или просто нити. Нити процесса разделяют его программный код, глобальные переменные и системные ресурсы, но каждая нить имеет свой собственный программный счетчик, свое содержимое регистров и свой собственный стек. Теперь процесс представляется как совокупность взаимодействующих нитей и выделенных ему ресурсов. Нити могут порождать новые нити внутри своего процесса, они имеют состояния, аналогичные состояниям процесса, и могут переводиться операционной системой из одного состояния в другое. В системах, поддерживающих нити на уровне ядра, планирование использования процессора осуществляется в терминах нитей исполнения, а управление остальными системными ресурсами в терминах процессов. Накладные расходы на создание новой нити и на переключение контекста между нитями одного процесса существенно меньше, чем на те же самые действия для процессов, что позволяет на однопроцессорной вычислительной системе ускорять решение задач с помощью организации работы нескольких взаимодействующих нитей.
Модуль №: _4_ Семейства операционных систем
Тема лекционных занятий: Семейства операционных систем и их управление .
Лекция 7
Основные характеристики Windows
1. Х-разрядная архитектура означает, что операции над Х-разрядным данными выполняются, поскольку в них требуется программная реализация над Х-разрядными данными.
2. Многозадачность - способность "одновременно" (параллельно) выполнять несколько программ. На самом деле процессор может выполнять инструкции только одной программы. ОС настолько оперативно реагирует на потребности той или иной программы, что создается впечатление одновременности их работы.
Многозадачность может быть кооперативной и вытесняющей. При кооперативной многозадачности (cooperative multitasking) операционная система не занимается решением проблемы распределения процессорного времени. Распределяют его сами программы.
При вытесняющей многозадачности распределением процессорного времени между программами занимается операционная система. Она выделяет каждой задаче фиксированный квант времени процессора. По истечении кванта времени система вновь получает управление, чтобы выбрать другую задачу для ее активизации. Если задача обращается к операционной системе до истечения ее кванта времени, то это также служит причиной переключения задач.
3. Многопоточность операционной системы означает, что работающие программы (процессы) могут разделяться на несколько частей, самостоятельно претендующих на процессорное время. Это обеспечивает одновременное выполнение программой нескольких не связанных друг с другом операций. Например, в текстовом процессоре могут одновременно выполняться автоматическая проверка орфографии и редактирование документа.
4. Графический пользовательский интерфейс обеспечивает удобства в запуске и переключении приложений (программ Windows). Основными компонентами пользовательского интерфейса являются рабочий стол и панель задач (обеспечивает запуск и переключение приложений). На рабочем столе размещены графические объекты, соответствующие приложениям, документам, сетевым устройствам. Каждый графический объект имеет поименованный ярлычок. С помощью мыши, ярлычков, главного меню и панели задач пользователь может легко запускать, переключать и управлять приложениями (программами).
5. Подключение новых периферийных устройств по технологии Plug and Play. Система самостоятельно создает и изменяет файлы конфигурации, распознает конкретное техническое устройство, производит его автонастройку. Подобная технология получила название Plug and Play - "включай и работай", т. е. эта технология ориентирована на поддержку любого типа устройств, включая мониторы, видеоплаты, принтеры, звуковые карты, модемы, приводы CD, контроллеры магнитных дисков. При ее использовании обеспечиваются следующие вспомогательные функции: распознавание устройств для установки и настройки, динамическое изменение состояния системы, интеграция драйверов устройств, системных компонентов и пользовательского интерфейса.
6. Пользование виртуальной памяти. Виртуальная память - расширение адресного пространства задачи, полученное за счет использования части внешней памяти.
В оперативной памяти всегда находится часть виртуального пространства, выделяемого для решения задачи, остальная его часть располагается на дисковой памяти. Если оперативной памяти не хватает для обеспечения работы текущего (активного) приложения, то приложение или его часть, которые не используют в данный момент микропроцессор, выгружаются (вытесняются) из оперативной памяти на диск. На их место в оперативную память загружается (подкачивается) необходимый фрагмент активного приложения. Когда одному из выгруженных приложений передается управление, оно вновь загружается в оперативную память, что может привести к выгрузке на диск другого, пассивного в данный момент приложения. Таким образом, программы циркулируют между диском и оперативной памятью.
Поддержка виртуальной памяти позволяет открыть большое количество приложений одновременно, но выгрузка на диск и загрузка с диска снижают производительность компьютера. Используемая для этой цели часть внешней памяти называется файлом подкачки. Процесс подкачки известен под названием свопинг. Объем файла подкачки может в несколько раз превышать объем оперативной памяти.
Файл подкачки - файл на жестком диске, используемый для организации виртуальной памяти.
7. Совместимость с ранее созданным программным обеспечением. Под совместимостью с программным обеспечением понимают способность операционной системы исполнять программные продукты, созданные в другой oперационной системе.
8. Наличие коммуникационных программных средств. Важнейшим направлением развития Windows является включение в ее структуру используемых и специальных программных средств для поддержи различных коммуникаций и компьютерных сетей.
Сетевые средства операционной системы Windows позволяют:
• обеспечить передачу данных между двумя соединенными кабелями;
• организовать электронную почту в локальной и глобальной сети;
• выполнить факсимильную передачу;
• обменяться файлами с удаленным компьютером и подключиться к глобальной сети.
9. Наличие средств мультимедиа. Система Windows обеспечивает интерактивную работу с видео и аудио программами при помощи специальных аппаратных и программных средств. Атрибутом мультимедиа-компьютера являются звуковая плата, которая обеспечивает преобразование звука в компьютерную форму и обратно, и видеоплата, которая преобразует видеоинформацию в компьютерную форму и обратно. К звуковой плате подключаются различные акустические системы.
10. Интеграция с глобальной сетью Интернет. Операционная система Windows содержит прикладную программу (броузер), позволяющую получать из Internet различные документы, просматривать и редактировать их содержимое
11. Надежность и качества управления.
12. Поддержка длинных имен файлов. В Windows имена файлов могут иметь длину до 255 символов.
Базовая архитектура системы
Системная виртуальная машина представляет собой операционную среду, поддерживающую работу всех приложений Windows и подсистема, обеспечивающих интерфейс прикладного программирования.
Приложения Win32 представляют 32-разрядные приложения Windows, использующие 32-разрядную модель процессоров 80386 и выше и подмножество интерфейса прикладного программирования. Каждое приложение Win32 имеет свое адресное пространство, недоступное другим приложениям.
Оболочка ОС есть 32-разрядное приложение Windows, обеспечивающее взаимодействие пользователя с системой.
Приложения Win16 представляет собой старые 16-разрядные приложения Windows. Эти приложения делят между собой единое адресное пространство и не могут употребляться в соответствии с принципом многозадачности.
Подсистема системного сервиса уровня API (Application Program Interface) - интерфейса прикладного программирования - обеспечивает совместимость с API с ОС Windows младших версий, а также поддержку 32-разрядного интерфейса прикладного программирования.
Kernel - модуль Windows, который поддерживает низкоуровневые функции по работе с файлами и управлению памятью и процессами. Этот модуль обеспечивает сервис для 16- и 32-разрядных приложений.
GDI (Graphics Device Interface) - модуль Windows, обеспечивающий реализацию графических функций по работе с цветом, шрифтами и графическими примитивами для монитора и принтеров.
User - модуль Windows, который является диспетчером окон и занимается созданием и управлением отображаемыми на экране окнами, диалоговыми окнами, кнопками и другими элементами пользовательского интерфейса.
Виртуальные машины MS DOS обеспечивают выполнение программ MS DOS под управлением Windows. Пользователь может запустить несколько виртуальных машин MS DOS.
Базовая система включает в свой состав ряд важнейших подсистем:
• Подсистема управления файлами способна поддерживать различные файловые системы, доступ к которым может осуществлять одновременно. Работает в 32-разрядном режиме, при этом допускает использование драйверов устройства MS DOS, которые могут потребоваться для поддержки конкретных аппаратных устройств.
• Сетевая подсистема представляет собой средство поддержки сети. Система осуществляет доступ к удаленным файлам при помощи файловой подсистемы Windows.
• Сервис операционной системы включает в свой состав подсистему поддержки самонастраивающейся аппаратуры Plug and Play, а также набор различных прикладных функций, например выдачи текущих даты и времени.
• Подсистема управления виртуальной машины реализует все действия по управлению задачами, управлению памятью, загрузкой и завершением программ, а также обслуживанием виртуальных драйверов устройств.
• Драйверы устройств могут быть самыми разнообразными, в том числе драйверами реального режима или виртуальными драйверами внешних устройств. Драйверы внешних устройств позволяют нескольким приложениям одновременно использовать одно устройство, например экран монитора.
В операционную систему Windows входит ограниченный набор прикладных и служебных программ, с помощью которых можно решать некоторые простейшие повседневные задачи, пока на компьютере не установлены более мощные программы средства. Такие программы, входящие в поставку Windows, называются стандартные приложения. Стандартные приложения - это комплекс простых программ, поставляемых вместе с ОС Windows. К прикладным программам относятся простой текстовый редактор "Блокнот", графический редактор Paint, простой текстовый процессор WordPad.
Блокнот это простейший текстовый редактор. Который можно использовать в качестве удобного средства просмотра текстовых файлов (формат .txt). Запускается по схеме Пуск/Программы/Стандартные/Блокнот.
Paint - простейший графический редактор. Файлы, созданные в этом графическом редакторе имеют расширение .bmp. Загрузить Paint можно следующим способом: Пуск/Программы/Стандартные/Paint.
WordPad - простой текстовый процессор. В отличие от Блокнота предоставляет возможность форматирования документа. Запускается по схеме Пуск/Программы/Стандартные/ WordPad.
Служебные программы предназначены для обслуживания персонального компьютера и самой операционной системы. Они позволяют находить и устранять дефекты файловой системы, оптимизировать настройки программного и аппаратного обеспечения, а также автоматизировать некоторые рутинные операции, связанные с обслуживанием компьютера. Сосредоточены они в Главном меню (Пуск/Программы/Стандартные/Служебные). Перечислим служебные программы ОС.
Архивация данных (Microsoft BackUp) - предназначена для автоматизации регулярного резервного копирования наиболее ценных данных на внешние носители.
Буфер обмена предназначен для просмотра текущего содержания буфера обмена Windows. С его помощью можно выполнить сохранение содержимого буфера обмена в виде файла специального формата (.CLP) или его загрузку.
Дефрагментация диска - служебное приложение, предназначенное для повышения эффективности работы жесткого диска путем устранения фрагментированности файловой структуры. Программа дефрагментации выполняет перекомпоновку файлов таким образом, что длинные файлы собираются из коротких.
Индикатор системных ресурсов. После запуска этого приложения на панели индикации устанавливается небольшой значок, посредством которого можно получить сведения о состоянии системных ресурсов (модулей памяти, предназначенные для обслуживания многозадачного режима работы).
Преобразование в FAT32 - это мастер-программ, которая позволяет автоматически преобразовать формат файловой системы из FAT16 в FAT32, если жестки диск имеет размер более 512Mбайт. Эту операцию можно производить на жестких дисках, уже заполненных информацией. Как правило, при этом высвобождается дополнительно 100-200 Мбайт рабочего пространства на каждый гигабайт емкости жесткого диска. Обратное преобразование в рамках той же программы невозможно. Следует также иметь в виду, что если тот же жесткий диск используется для работы других операционных систем, то его не следует преобразовывать в новый формат.
Проверка диска - выявляет логические ошибки в файловой системе и физические ошибки, связанные с дефектами поверхности жесткого диска.
Сведения о системе. Эта программа предназначена для повышения плотности записи данных на жесткий диск. В ее основе лежит принцип устранения избыточности информации.
Агент сжатия предназначена для дополнительного уплотнения файла сжатого тома.
Системный монитор - программа, предназначенная для визуального или протокольного наблюдения за функционированием компьютера и операционной системы. Она позволяет контролировать загрузку процессора, распределение оперативной памяти, обмен данными между дисками и другие параметры вычислительной системы.
Таблица символов. Программа выводит окно со специальными символьными наборами.
Кроме, прикладных и служебных программ ОС Windows содержит стандартные средства мультимедиа (Пуск/Программы/Стандартные/ Стандартным средствам мультимедиа относятся:
- регулятор громкости;
- лазерный проигрыватель;
- универсальный проигрыватель;
- программа звукозаписи.
Сравнительная характеристика операционных систем семейства Windows
Сравним ОС Windows98 с Windows3+. Принципиальная новизна операционной системы Windows98 состоит именно в том, что концепция объектно-ориентированного подхода реализована в ней наиболее полно, т.е Windows98 - объектно-ориентированная ОС.
В основе объектно-ориентированно подхода лежит понятие объекта, а суть его выражается формулой "объект=данные+процедуры".
Объектно-ориентированный подход реализуется через модель рабочего стола. Windows98 обходится без привычного в Windows3+ диспетчера программ. Пользователь работает с задачами и приложениями так же, как с документами на своем письменном столе.
Итак, одно из главных отличий Windows98 от Windows3+ (и от подавляющего большинства других операционных систем) состоит в том, что основной упор в ней делается на документ, а программа, задача, приложение или программный код вообще рассматриваются только как инструмент для работы с документом.
Другая принципиальная особенность Windows98 состоит в том, что она, в отличие от Windows3+, является "настоящей" операционной системой (а не операционной оболочкой, выполняемой под управлением MS-DOS). Под словом "настоящая" подразумевается то, что при включении машины сразу выполняется загрузка Windows98.
Подход к аппаратному обеспечению также кардинальным образом изменился. Теперь система использует стандарт Plug & Play, что облегчает и максимально автоматизирует процесс добавления новых периферийных устройств. Стандарт Plug & Play - это совместная разработка фирм Intel и Microsoft.
Windows98 - 32-разрядная ОС защищенного режима.
В версиях Windows3.1 часть кода была 16-разрядной, а часть - 32-разрядной. Windows98 является 32-разрядной операционной системой, которая работает только в защищенном режиме процессора. Ядро, включающее управление памятью и диспетчеризацию процессов, содержит только 32-разрядный код. Это уменьшает издержки и ускоряет работу.
Windows98 поддерживает многопоточность - технологию, которая позволяет соответствующим образом осуществлять многозадачное выполнение своих собственных процессов.
Средства удаленного доступа Windows98, в отличие от большинства операционных систем для персональных компьютеров, с самого начала создавалась для работы в сети, благодаря чему возможность совместного использования файлов и устройств полностью интегрирована в интерфейс пользователя Windows 98.
В Windows98 можно получить доступ к сети без установки сетевого адаптера. Его заменят модем. В этом случае скорость работы ограничена скоростью вашего модема. Система предоставляет развитые программные средства для доступа к сетям Internet, Microsoft Network, America Online и другим аналогичным службам.
Возможности работы с мультимедиа. Современную операционную систему сложно представить себе без средств мультимедиа. Для работы с аудио- и видеофайлами различных форматов в составе Windows98 имеется набор кодеков - эффективных программных средств сжатия и распаковки этих файлов и преобразования их форматов для вывода на различные устройства мультимедиа (слово "кодек" является сокращением слов "кодер-декодер", так же, как "модем" - сокращение от слов "модулятор-демодулятор"). При воспроизведении файла система запускает тот кодер, с помощью которого файл был создан. Драйверы звуковых карт используют 32-разрядный код, но в тех случаях, когда система не может распознать карту, применяется 16-разрядный драйвер реального режима, который поставляется вместе с картой. При работе 32-разрядного драйвера защищенного режима драйвер реального режима автоматически отключается.
При установке компакт-диска в устройство считывания система пытается распознать его формат и запустить соответствующее приложение для его воспроизведения.
Операционные системы WindowsNT/2000 разработаны на платформе NT-технологий и кроме выше перечисленных преимуществ перед младшими версиями ОС Windows содержат еще ряд достоинств.
На данный момент мировая компьютерная индустрия развивается очень стремительно. Производительность систем возрастает, а следовательно возрастают возможности обработки больших объёмов данных.
Операционные системы класса MS-DOS и младшие версии ОС Windows уже не справляются с таким потоком данных и не могут целиком использовать ресурсы современных компьютеров. Поэтому в последнее время происходит переход на более мощные и наиболее совершенные операционные системы класса, примером которых и является Windows NT, выпущенная корпорацией Microsoft.
На данный момент мировая компьютерная индустрия развивается очень стремительно. Производительность систем возрастает, а следовательно возрастают возможности обработки больших объёмов данных.
Операционные системы класса MS-DOS уже не справляются с таким потоком данных и не могут целиком использовать ресурсы современных компьютеров .Поэтому в последнее время происходит переход на более мощные и наиболее совершенные операционные системы класса UNIX , примером которых и является Windows NT , выпущенная корпорацией Microsoft .
Система Windows NT не является дальнейшим развитием ранее существовавших продуктов. Её архитектура создавалась с нуля с учётом предъявляемых к современной операционной системе требований. Особенности новой системы, разработанной на основе этих требований, перечислены ниже.
- Стремясь обеспечить совместимость (compatible) новой операционной системы, разработчики Windows NT сохранили привычный интерфеис Windows и реализовали поддержку существующих файловых систем (таких ,как FAT ) и различных приложений (написанных для MS - Dos ,OS/2 1.x ,Windows 3.x и POSIX ). Разработчики также включили в состав Windows NT средства работы с различными сетевыми средствами;
- Достигнута переносимость (portability) системы, которая может теперь работать как на CISC, так и на RISC - процессорах. К CISC относятся Intel -совместимые процессоры 80386 и выше; RISC представлены системами с процессорами MIPS R4000 Digital Alpha AXP и Pentium серии P54 и выше.
- Масштабируемость (scalability) означает, что Windows NT не привязана к однопроцессорной архитектуре компьютеров, а способна полностью использовать возможности, предоставляемые симметричными мультипроцессорными системами. В настоящее время Windows NT может функционировать на компьютерах с числом процессоров от 1 до 32 и более.
Кроме того, в случае усложнения стоящих перед пользователями задач и расширения предъявляемых к компьютерной среде требований, Windows NT позволяет легко добавлять более мощные и производительные серверы и рабочии станции к корпоративной сети. Дополнительные преимущества даёт использование единой среды разработки и для серверов, и для рабочих станций.
Windows NT имеет однородную систему безопасности (security) удовлетворяющую спецификациям правительства США и соответствующую стандарту безопастности В2. В корпоративной среде критическим приложениям обеспечивается полностью изолированное окружение.
- Распределённая обработка ( distributed processing ) означает, что Windows NT имеет встроенные в систему сетевые возможности. Windows NT также позволяет обеспечить связь с различными типами хост - компьютеров благодаря поддержке разнообразных транспортных протоколов и использованию средств "клиент-сервер" высокого уровня ,включая именованные каналы, вызовы удалённых процедур (RPC - remote procedure call ) и Windows - сокеты .
- Надёжность и отказоустойчивость (reliability and robustness) обеспечивают архитектурными особенностями ,которые защищают прикладные программы от повреждения друг другом и операционной системой. Windows NT использует отказоустойчивую структурированную обработку особых ситуаций на всех архитектурных уровнях, которая включает восстанавливаемую файловую систему NTFS и обеспечивает защиту с помощью встроенной системы безопасности и усовершенствованных методов управления памятью.
- Возможности локализации ( allocation) представляют средства для работы во многих странах мира на национальных языках ,что достигается применением стандарта ISO Unicod (разработан международной организацией постандартизации ).
- Благодаря модульному построению системы обеспечивается расширяемость (insibility) Windows NT, что, как будет показано в следующем разделе, позволяет гибко осуществлять добавление новых модулей на различные уровни операционной системы .
Задачами, поставленными при создании Windows NT не являются в дальнейшим развитие ранее существовавших продуктов. Её архитектура создавалась с нуля с учётом предъявляемых к современной операционной системе требований. Особенности новой системы, разработанной на основе этих требований, перечислены ниже.
Стремясь обеспечить совместимость (compatible) новой операционной системы, разработчики Windows NT сохранили привычный интерфейс Windows и реализовали поддержку существующих файловых систем (таких как FAT) и различных приложений (написанных для MS - Dos, OS/2, Windows).Разработчики также включили в состав Windows NT средства работы с различными сетевыми средствами.
Масштабируемость (scalability) означает, что Windows NT не привязана к однопроцессорной архитектуре компьютеров, а способна полностью использовать возможности, предоставляемые симметричными мультипроцессорными системами. В настоящее время Windows NT может функционировать на компьютерах с числом процессоров от 1 до 32. Кроме того, в случае усложнения стоящих перед пользователями задач и расширения, предъявляемых к компьютерной среде требований, Windows NT позволяет легко добавлять более мощные и производительные серверы и рабочие станции к корпоративной сети. Дополнительные преимущества даёт использование единой среды разработки и для серверов, и для рабочих станций.
Распределённая обработка( distributed processing ) означает,что Windows NT имеет встроенные в систему сетевые возможности.
Надёжность и отказоустойчивость (reliability and robustness) обеспечиваются архитектурными особенностями, которые защищают прикладные программы от повреждения друг другом и операционной системой. Windows NT использует отказоустойчивую структурированную обработку особых ситуаций на всех архитектурных уровнях, которая включает восстанавливаемую файловую систему NTFS и обеспечивает защиту с помощью встроенной системы безопасности и усовершенствованных методов управления памятью.
Возможности локализации ( allocation) представляют средства для работы во многих странах мира на национальных языках, что достигается применением стандарта ISO Unicod (разработан международной организацией по стандартизации ).
Благодаря модульному построению системы обеспечивается расширяемость (insibility) Windows NT, что как будет показано в следующем разделе, позволяет гибко осуществлять добавление новых модулей на различные уровни операционной системы.
Операционная система Windows XP изобилует новыми возможностями, усовершенствованными программами и инструментальными средствами, а также средствами связи.
Windows Vista вышла на рынок больше, чем через пять лет после появления Windows XP, поэтому XP можно назвать самой долгоживущей операционной системой Microsoft. Windows Vista нацелена на то, чтобы сделать Windows более безопасной, поскольку предыдущая версия была подвержена атакам вирусов и другого вредоносного программного обеспечения. Microsoft добавила к Vista несколько уровней защиты, включая улучшенный встроенный центр безопасности и брандмауэр, а также утилиту для запрета выполнения нежелательных программ.
Новая операционная система "весит" немало: она содержит более 37 800 файлов и занимает до 10 Гбайт места.
Оптимальные аппаратные требования ОС Windows Vista 2 Гбайт памяти или больше, современная видеокарта и двуядерный процессор.
"Сердцем" новой Vista является интерфейс Windows Aero - полностью переработанный пользовательский интерфейс с полупрозрачными окнами в стиле "молочного стекла".
Интерфейс с большим количеством подсказок и в целом более дружелюбный к неопытному пользователю этому способствует.
Главными преимуществами Windows Vista являются улучшенная доступность и лёгкость использования.
Операционная система Windows Vista выпущена в пяти версиях:
1. Windows Vista Home Basic;
2. Windows Vista Home Premium;
3. Windows Vista Business;
4. Windows Vista Ultimate;
5. Windows Vista Enterprise (может быть приобретена только по Microsoft Software Assurance Enterprise License).
То есть две версии для дома, стартовая версия, бизнес-версия и корпоративная версия. Все они различаются по функциям, но все несут приятные, хотя и несколько запоздавшие, улучшения.
Лекция 8
Операционная система Linux
На сегодняшний день наиболее известной операционной системой для компьютеров является не только ОС Microsoft Windows, но и ОС семейства UNIX.
Операционная система UNIX была разработана группой сотрудников Bell Labs под руководством Дениса Ричи, Кена Томпсона и Брайана Кернигана в 1969 году. Говоря об операционной системе UNIX, чаще всего имеют в виду не конкретную ОС, а скорее целое семейство UNIX-подобных операционных систем. Cамо же слово UNIX (заглавными буквами) стало регистрироваться торговой маркой корпорации AT&T.
В конце 70-х годов прошлого века сотрудники Калифорнийского университета в Беркли внесли ряд усовершенствований в исходные коды UNIX, включая работу с протоколами семейства TCP/IP. Их разработка стала известна под именем BSD ("Berkley Systems Distribution"). Она распространялась под лицензией, которая позволяла дорабатывать и усовершенствовать продукт, и передавать результат третьим лицам (с исходными кодами или без них) при условии, что буде указано, какая часть кода разработана в Беркли. Операционные системы типа UNIX, в том числе и BSD, изначально разрабатывались для работы на больших многопользовательских компьютерах.
В начале 90-х годов студент Хельсинского университета Линус Торвальдс приступил к разработке UNIX-подобной операционной системы для IBM-совместных персональных компьютеров.
Файлы первого варианта Lunix (версия 0.01) были опубликованы в Интернете 17 сентября 1991 года.
Как было описано выше, в любой операционной системе можно выделить 4 основных части: ядро, файловую структуру, интерпретатор команд пользователя и утилиты. Ядро ОС - это основная, определяющая часть ОС, которая управляет аппаратными средствами и выполнением программ. Файловая структура - это система хранения файлов на запоминающих устройствах. Интерпретатор команд (оболочка) - это программа, организующая взаимодействие пользователя с компьютером. Утилиты - это отдельные программы, которые выполняют служебные функции.
Если быть точным, то слово "Linux" обозначает только ядро. Поэтому, когда идет речь об операционной системе, правильнее было бы говорить "операционная система, основанная на ядре Linux". Ядро ОС Linux разрабатывается под общим руководством Линуса Торвальдса и распространятся свободно на основе лицензии GPL (General Public License). Суть лицензии GPL состоит в том, что программное обеспечение, распространяемой под этой лицензией, можно как угодно дорабатывать, модифицировать, передавать другим лицам. Одним следствием свободного распространения программного обеспечения для Linux является то, что большое число разных фирм и компаний, а также просто независимых групп разработчиков стали выпускать называемые дистрибутивы Linux.
Дистрибутив - это набор программного обеспечения, включающий все основные 4 составные части ОС (ядро, файловую систему, оболочку и совокупность утилит), а также некоторую совокупность прикладных программ.
В силу того, что исходные коды Linux распространяются свободно и общедоступны, к развитию системы с самого начала подключилось большое число независимых разработчиков. Благодаря этому на сегодняшний день Linux - самая современная, устойчивая и быстроразвивающая система, почти мгновенно вбирающая в себя самые последние технологические новшества. Она обладает всеми возможностями, которые присущи современным полнофункциональным операционным системам типа UNIX. Приведем краткий список этих возможностей.
Реальная многозадачность. Все процессы независимы; ни один из них не должен мешать выполнению других задач. Для этого ядро осуществляет режим разделения времени центрального процессора, поочередно выделяя каждому процессу интервалы времени для выполнения. Это существенно отличается от режима "вытесняющей многозадачности", реализованной в Windows, когда процесс должен сам "уступить" процессор другим процессам (и может сильно задержать их выполнение).
Многопользовательский доступ. Linux - не только многозадачная ОС, она поддерживает возможность одновременной работы многих пользователей. При этом Linux может предоставлять все системные ресурсы пользователям, работающих с хостом через различные удаленные терминалы.
Страничная организация памяти. Системная память Linux организована в виде страниц объемом 4 Кбайт. Если оперативная память полностью исчерпана, ОС будет искать давно не использующие страницы памяти для их перемещения из памяти на жесткий диск. Если какие-либо из этих страниц становятся нужны, Linux восстанавливает их с диска.
Загрузка выполняемых модулей "по требованию". Ядро Linux поддерживает выделение страниц памяти по требованию, при котором только необходимая часть кода исполняемой программы находится в оперативной памяти, а не используемые в данный момент части остаются на диске.
Совместное использование исполняемых программ. Если необходимо запустить одновременно несколько копий какого-либо приложения (либо один пользователь запускает несколько идентичных задач, либо разные пользователи запускают одну и ту же задачу), то в память загружается только одна копия исполняемого кода этого приложения, которая используется всеми одновременно исполняющимися идентичными задачами.
Динамическое кэширование диска. Кэширование диска - это использование части оперативной памяти для хранения часто используемых данных с диска, что существенно ускоряет доступ к часто используемым программам и задачам. Linux использует более динамичную систему кэширования: память, зарезервированная под кэш, увеличивается, когда память не используется, и уменьшается, если системе или процессу пользователя требуется больше памяти.
Сетевые возможности. Linux можно интегрировать в любую локальную сеть.
Работа на разных аппаратных платформах. Хотя ОС Linux первоначально была разработана для ПК на базе Intel 386/486, сейчас она может работать на всех версиях микропроцессоров от Intel, начиная с 386 и кончая многопроцессорными системами на Pentium III (с Pentium IV возникли определенные трудности, но, судя по сообщениям в Интернете, они были вызваны ошибками в реализации процессора). Так же успешно Linux работает на различных клонах Intel от других производителей; в Интернете встречаются сообщения о том, что на процессорах Athlon и Duron от AMD Linux работает даже лучше, чем на Intel. Кроме того, разработаны версии для других типов процессоров.
Лекция 9
Различные семейства операционных систем
Семейство UNIX
Группа операционных систем, имеющих общего предка и традиционно носящих название UNIX. Фирмы производители — AT&T, DEC, Sun, Hewlett-Packard, IBM, SCO и многие другие. Несмотря на то что первая версия UNIX была выпущена еще тридцать лет назад, UNIX до сих пор считается наиболее современной, надежной и динамично развивающиеся операционной системой. Большой вклад в успех UNIX внесли специалисты AT&T, студенты и преподаватели университета Беркли.
На сегодняшний день UNIX той или иной фирмы-производителя установлен практически на каждом сервере уровня предприятия, больших кластерах и мультипроцессорных системах, а также на многих рабочих и графических станциях. Многоплатформенная, мультизадачная, многопользовательская операционная система. Поддерживает кластеризацию, мультипроцессорные системы, распределенные вычислительные среды, массивы накопителей огромной емкости и многое другое.
На сегодняшний день трудно найти компьютер, на котором не смогла бы работать одна из версий UNIX. Как правило, UNIX, выпускаемая фирмами, — платная, с закрытым исходным кодом. Тем не менее, существует достаточно много (например, семейство BSD, Linux) бесплатных, с открытым исходным кодом UNIX-совместимых операционных систем. Благодаря стандарту POSIX практически любое приложение можно перенести из одного представителя семейства UNIX в другой. Благодаря этому для UNIX имеется огромное количество как бесплатных, так и коммерческих программ.
Как правило, для каждой разновидности UNIX разработана своя файловая система, но все разновидности UNIX могут работать с распространенными файловыми системами. В том числе существуют и т. н. журналируемые файловые системы. В журналируемых файловых системах для решения проблемы повреждения структуры файловой системы или хранения данных применяют транзакции, используемые практически в любой базе данных.
Транзакция (англ. transaction) — в информатике, группа последовательных операций, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена целиком либо успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще и тогда она не должна произвести никакого эффекта. Транзакции обрабатываются транзакционными системами, в процессе работы которых создаётся история транзакций.
Транзакция считается незавершенной до тех пор, пока все изменения не сохранены на диске. А чтобы сбои, происходящие до завершения всех операций, входящих в транзакцию, не приводили к необратимым последствиям, все действия и все изменяемые данные протоколируются. В том случае, если все-таки сбой произойдет, по протоколу можно вернуть систему в рабочее состояние. Требования к аппаратной платформе — самые разнообразные. Как уже упоминалось выше — трудно найти компьютер, на котором не смогла бы работать одна из версий UNIX.
Семейство Linux
POSIX-совместимая UNIX-подобная операционная система. На сегодняшний день — самая распространенная бесплатная операционная система с открытым исходным кодом. При ее разработке из мира семейства UNIX старались взять все лучшее. Благодаря участию десятков тысяч разработчиков программного обеспечения и координации их действий через Интернет Linux и программное обеспечение для нее развивается очень динамично, ошибки и различные проблемы в программном обеспечении, как правило, исправляются в считанные часы после их обнаружения. Большую помощь в развитии и распространении Linux и сопутствующего, ему программного обеспечения оказали фонд Свободного программного обеспечения (Free Software Foundation, USA) и лицензия GNU (The GNU General Public License, Универсальная общественная лицензия GNU) для программного обеспечения. На сегодняшний день существует одно ядро Linux, разработку которого координируют его создатели Линус Торвальдс и Алан Кокс, и множество дистрибутивов (не менее 2-3 десятков), отличающихся как функциональным назначением, так и составом программного обеспечения, входящим в дистрибутив. Существуют дистрибутивы, занимающие десяток компакт-дисков, и дистрибутивы, умещающиеся на одной-двух дискетах. Все, что справедливо для семейства UNIX — справедливо и для Linux. Широчайшая поддержка аппаратных платформ, малая требовательность к аппа-ратным ресурсам (процессор 486, 8 Мбайт оперативной памяти, винчестер120 Мбайт). Масштабируемость, поддержка мультипроцессорных систем, кластеризация, поддержка распределенных вычислений, десятки графических оболочек — и это далеко не все.
Поддерживаются десятки файловых систем, родная файловая система Ext2. И при всей мощи — достаточно дружественная операционная система, способная работать как на мощнейшем сервере, так и на стареньком "пентиуме" где-нибудь в офисе.
Mac OS
Производитель — Apple. Операционная система для Macintosh и его пользователей, многозадачная, однопользовательская, графическая. Первая версия была выпущена более 15 лет назад. С выходом Mac OS X считается окончательно устаревшей и постепенно сходит со сцены. Великолепная система для пользователя по эргономичности, дружественности и простоте освоения. За свою историю накопила достаточно большое количество устаревших концепций, оставленных для совместимости. Последние версии Mac OS были рассчитаны на компьютеры Apple, базирующиеся на процессоре Motorola 68040 и PowerPC с не менее 16 Мбайт оперативной памяти.
Новая операционная система для компьютеров Macintosh, базирующихся на процессоре PowerPC, называется Mac OS X. UNIX-подобная, POSIX-совместимая, многозадачная операционная система с графическим интерфейсом. Способна выступать как в качестве сервера, так и в качестве клиентской операционной системы. Платная, закрытый исходный код. Фирма Apple заявила о скором переносе Mac OS X на платформу Intel. Поддерживает сетевую файловую систему NFS (Network File System). Mac OS X пред-назначена для работы на компьютерах Power Macintosh с процессором G3. Требования — не менее 128 Мбайт оперативной памяти. Рекомендуемый объем жесткого диска — 5 Гбайт.
Novell NetWare
NetWare — это сетевая операционная система и набор сетевых протоколов, которые используются в этой системе для взаимодействия с компьютерами-клиентами, подключёнными к сети. Операционная система NetWare создана компанией Novell. NetWare является закрытой операционной системой, использующей совместную многозадачность для выполнения различных служб на компьютерах с архитектурой Intel x86. В основе сетевых протоколов системы лежит стек протоколов Xerox XNS. В настоящее время NetWare поддерживает протоколы TCP/IP и IPX/SPX. NetWare является одним из семейств XNS-систем. К таким семействам, например, относятся Banyan VINES и Ungerman-Bass Net/One. В отличие от этих продуктов и XNS, система NetWare заняла существенную долю рынка в начале 1990-х и выдержала конкуренцию с Microsoft Windows NT, после выпуска которой прекратили своё существование другие конкурирующие с ней системы.
В основу NetWare была положена очень простая идея: один или несколько выделенных серверов подключаются к сети и предоставляют для совместного использование своё дисковое пространство в виде «томов». На компьютерах-клиентах с операционной системой MS-DOS запускается несколько специальных резидентных программ, которые позволяют «назначать» буквы дисков на тома. Пользователям необходимо зарегистрироваться в сети, чтобы получить доступ к томам и иметь возможность назначать буквы дисков. Доступ к сетевым ресурсам определяется именем регистрации.
Пользователи могут также подключаться к совместно используемым принтерам на выделенном сервере и выполнять печать на сетевых принтерах так же, как и на локальных.
Несмотря на то, что в ранних версиях NetWare все модули системы считались ненадёжными (любой неправильно работающий модуль мог нарушить работу всей системы), она была очень стабильной системой. Нередки случаи, когда серверы NetWare работают без вмешательства человека годами.
С выпуском в октябре 2001 года NetWare 6, изменения были продолжены: была добавлена улучшенная поддержка симметричной многопроцессорной обработки (SMP — улучшенная поддержка нескольких процессоров в одном сервере), iFolder (компонент, позволяющий выполнять автоматическую интеллектуальную синхронизацию файлов указанной локальной папки iFolder с сервером iFolder для последующего предоставления защищённого универсального доступа к этим файлам в локальной сети и через Интернет), iManager (веб-утилита администрирования NetWare и других продуктов), Native File Access Pack (NFAP — компонент, предоставляющих доступ к ресурсам сервера NetWare клиентам Windows, Macintosh и UNIX-подобных систем по протоколам соответствующих сетей), NetDrive (утилита, позволяющая назначать буквы дисков на HTTP- и FTP-ресурсы, а также на серверы iFolder), а также веб-сервер по умолчанию был заменён с Netscape Enterprise Server на Apache. Также база данных Btrieve (используемая с предыдущих версиях NetWare) была заменена на Pervasive SQL.
После версии NetWare 6.5 компания Novell выпустила в 2003 году операционную систему Open Enterprise Server (OES), в которой пользователи могут выбирать ядро операционной системы — NetWare или Linux. Эта интеграция была выполнена вскоре после приобретения компанией Novell компаний Ximian и немецкого поставщика GNU/Linux компании SuSE. Считается, что Novell смещает своё внимание с NetWare и портирует приложения на GNU/Linux. Хотя официально компания Novell это отрицает и заявляет, что она будет вести разработку и NetWare, и Linux.
Система NetWare доминировала на рынке сетевых операционных систем с середины 80-х годов до конца 90-х благодаря чрезвычайно высокой производительности по сравнению с другими сетевыми операционными системами. Большинство сравнительных тестов в то время указывали на преимущество в производительности в соотношении от 5:1 до 10:1 по сравнению с продуктами Майкрософт, Banyan и других компаний. Результаты одного сравнительного теста были особенно интересны: система NetWare 3.x со службами NFS, работающими по протоколам TCP/IP (не по разработанному для NetWare протоколу IPX), сравнивалась с дорогостоящим выделенным сервером Auspex NFS и с сервером SCO Unix с запущенными службами NFS. Производительность NetWare NFS превысила производительность обоих систем NFS, являющихся частью соответствующих операционных систем, и превысила в два раза производительность SCO Unix NFS на одинаковом оборудовании. Было несколько причин такой производительности NetWare.
Menuet OS
В настоящее время MeOS является вполне современной 32-битной многозадачной операционной системой с простым и удобным оконным интерфейсом, использующей низкоуровневый API и опирающейся на таблицу размещения файлов FAT32.
Подобный подход со всех точек зрения весьма удобен, поскольку он не вынуждает пользователя выполнять переразметку дисковых разделов и позволяет обращаться к файлам и папкам жесткого диска на компьютере, работающем обычно под управлением Microsoft Windows, без использования каких-либо специализированных утилит.
Для запуска MeOS необходим компьютер с процессором не ниже Intel 80386, рекомендуется наличие 32 Мбайт оперативной памяти (нижний предел — 4 Мбайта), также необходима любая EGA, VGA или SVGA видеокарта. В случае использования SVGA-адаптера рекомендуется плата, оснащенная минимум 1 Мбайт видеопамяти и поддерживающая стандарт VESA 1.2, VESA 2.0, или VESA 3, что принципиально позволяет получить на экране изображение разрешением 1280x1024 точки с цветопередачей в 16,7 миллионов оттенков. Menuet OS «умеет» работать с жесткими дисками, использующими протокол LBA, распознает любую модель мыши, совместимой с Microsoft или Logitech Mouse, и подключаемой к COM-порту, либо порту PS/2 (с поддержкой аппаратуры, использующей интерфейс USB, в MeOS пока еще наблюдаются определенные сложности).
Данная операционная система прекрасно работает с Sound Blaster 16-совместимыми звуковыми картами, (в случае использования такого саундбластера возможен вывод стереозвука с битрейтом до 44,1 кГц), и даже позволяет подключить сетевую плату, но пока еще одного-единственного типа: Realtech 8029 PCI Ethernet Adapter. Но, наверное, главным достоинством Menuet OS является то, что сам дистрибутив этой операционной системы вместе с оконным интерфейсом и базовым набором прикладных программ занимает всего-навсего 1,44 Мбайта, и, будучи установлен на дискету 3,5 дюйма, он позволяет загружать MeOS непосредственно с дисковода, что автоматически исключает какую бы то ни было необходимость инсталлировать систему на жесткий диск с сопутствующим созданием для нее собственного раздела и настройкой многовариантной загрузки.