Всё для Учёбы — студенческий файлообменник
1 монета
doc

Лекции по Операционным системам (Иванько А. Ф.)

Этапы развития операционных систем компьютеров

Эволюция операционных систем происходила в несколько временных периодах.

1 период – 1945-1955 г.

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

Электронно-вычислительная машина ENIAC

________________________________________

1946 - первая большая универсальная электронная

цифровая машина.

Название: ENIAC (Electronic Numerical Integrator

and Computer).

Разработчики: Джон Мочли (John Mauchly) и

Дж. Преспер Эккерт (J. Prosper Eckert).

Приблизительный период разработки:

1943-1946.

2 период – 1955-1965 гг.

Этот период характеризуется тем, что появляется новая элементная база вычислительной техники, а именно полупроводниковые элементы. Компьютеры второго поколения становятся более надежными. Они уже могут работать достаточно долго, и на них появилась возможность решать задачи, связанные с непрерывным режимом работы. Появляются первые алгоритмические языки (Fortran, algol, assembler). С появлением первых алгоритмических языков появляются первые компиляторы, трансляторы. Возрастает стоимость системного времени. Эта проблема требует уменьшения времени между запусками прикладных программ. Появляются первые системы пакетной обработки, которые позволяют автоматизировать запуск одной программы за другой. Благодаря этому увеличивается коэффициент загрузки процессора. В свою очередь система пакетной обработки явилась прообразом современных операционных систем. Они стали первыми системными программами, предназначенными для управления вычислительным прочесом.

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

Совокупность нескольких заданий, которая выглядела, как правило, в виде колоды перфокарт, получает название пакета заданий.

3 период: 1965-1980 гг.

Этот период характеризуется развитием новой элементной базы: от отдельных полупроводниковых элементов типа транзисторов происходит переход к интегральным микросхемам, которые приводят к появлению нового поколения компьютеров.

Для этого периода характерно создание семейств программно-совместимых машин. В это время появляется американская машина IBM-360, для которой характерно решение многих задач, связанных с решением программной совместимости ЭВМ.

Программная совместимость ЭВМ требует совместимости и их операционных систем. Перед разработчиками операционных систем возникает проблема их совместимости с большими и малыми ЭВМ. Несмотря на недостатки первых ОС, они удовлетворяли большинству предъявляемых требований. Важнейшим достижением явилось реализация мультипрограммирования.

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

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

4 период: 1980 - …

Этот этап связан с появлением микропроцессоров, микропроцессорных секций и больших интегральных схем высокой степени интеграции.

В этот период появились персональные компьютеры (ПК), которые стали доступны широкому кругу подготовленных и неподготовленных специалистов.

Доступность ЭВМ потребовала разработки дружественного программного интерфейса. На рынке ОС появляются две доминирующие ОС: MS DOS и UNIX.

ОС MS DOS представляет собой однопрограммную однопользовательскую ОС, которая широко используется для компьютеров, построенных на базе микропроцессоров Intel 8086, 8088, 80286, 80386, 80486.

Мультипрограммная многопользовательская ОС Unix доминирует в среде не Intel’овских компьютеров.

Начиная с конца 80х годов, стали активно развиваться разнообразные компьютерные сети, которые функционировали под управлением сетевых или распределенных ОС.

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

Сетевая ОС обязательно содержит программную поддержку для сетевых интерфейсных устройств, а также средства для удаленного входа в другие компьютеры сети, а также средства доступа к удаленным файлам.

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

Рис.1.1. Развитие концепций и возможностей ОС

Особенности алгоритмов управления ресурсами ЭВМ

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

Определения операционной системы.

Операционная система (operating system) – базовое системное программное обеспечение, управляющее работой компьютера и являющееся посредником между аппаратурой (hardware) и прикладным программным обеспечением, а также пользователем компьютера

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

Операционная система в настоящее время определяет облик всей конкретной вычислительной системы.

Как правило, современные операционные системы выполняют две основные функции:

Создание программисту максимальных удобств по средствам предоставления виртуальной ЭВМ.

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

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

Задачей современной операционной системы является освобождение программиста от всех реальных особенностей аппаратуры и предоставление возможностей удобного просмотра различных файлов и удобное обслуживание различных периферийных устройств.

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

Задачей операционной системы является предоставление пользователю виртуальной ЭВМ свободной от технических реалий аппаратуры.

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

Критериями эффективности операционной системы может быть её пропускная способность или реактивность системы. Управление ресурсами включает решение двух общих задач:

Планирование ресурса, то есть определение кому, когда и в каком количестве необходимо выделить тот или иной ресурс вычислительной системы.

Отслеживание состояния ресурса, то есть определение состояния того или иного ресурса в любой текущий момент времени (например, процессорное время, объем оперативной памяти, и т.д.)

Для решения общих задач управления ресурсами, различные операционные системы используют разные алгоритмы, что и определяет в целом облик операционной системы. Алгоритм управления процессором определяет, к какому классу относится операционная система, а именно – системам пакетной обработки, системам разделения времени, системам реального времени.

Особенности алгоритмов управления ресурсами ЭВМ

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

Обеспечение аппаратной поддержки двух режимов исполнения:

1. Пользовательский режим (User mode) – для исполнения пользовательских программ

2. Системный режим (Monitor mode, kernel mode, system mode) – для исполнения модулей ОС

Бит режима (Mode bit) – индикатор режима исполнения: monitor (0); user (1).

При прерывании или сбое аппаратура переключается в системный режим

Привилегированные команды могут исполняться только в системном режиме

1. Дайте определение ОС.

2. Каковы особенности алгоритмов управления ресурсами ЭВМ?

3. Назовите критерии эффективности ОС.

4. Перечислите этапы развития ОС компьютеров. Охарактеризуйте каждый из них.

5. Что такое привилегированный программный модуль? Почему нельзя создать мультипрограммную ОС, в которой бы не было привилегированных программных модулей?

6. Какие основные функции выполняют современные ОС?

Мультипрограммирование – это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько различных программ.

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

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

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

Рис. 2.1. Время выполнения двух задач: в однопрограммной системе (а), в мультипрограммной системе (б)

Особенности ОС, поддерживающих мультипрограммирование:

Программы ввода-вывода, поддерживаемые операционной системой

Управление памятью – система должна распределять память для нескольких заданий

Планирование загрузки процессора (CPU scheduling) –система должна сделать выбор, какое из нескольких загруженных заданий запустить

Управление устройствами; spooling (буферизация устройств ввода-вывода, например, принтера)

1. Дайте определение мультипрограммирования.

2. Каковы возможности мультипрограммирования?

3. Перечислите особенности ОС, поддерживающих мультипрограммирование?

По числу одновременно выполняемых задач ОС подразделяются на однозадачные и многозадачные. Однозадачные ОС выполняют функции предоставления пользователю виртуальной машины, делая процесс взаимодействия между пользователем и компьютером комфортным для решения разнообразных задач. Однозадачные ОС (например, MS-DOS) включают в себя

средства управления периферийными устройствами;

средства управления файлами;

средства общения с пользователем.

Многозадачные ОС (Unix, Windows 95 и старше, Linux) включают:

средства управления периферийными устройствами и оборудованием;

средства управления файлами;

обеспечивают интерфейс пользователя;

управляют совместным использованием ресурсов таких, как процессорное время, оперативная память;

средства управления внешними устройствами.

По числу одновременно работающих пользователей ОС делятся на однопользовательские (MS-DOS, Windows ранние версии, OS2) и многопользовательские (Unix, Windows NT, Linux). Основным отличием многопользовательских ОС от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. Многозадачные ОС необязательно должны быть многопользовательскими. Однопользовательские ОС могут быть многозадачными. Важнейшим ресурсом, которым управляет ОС, является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами или нитями во многом определяет специфику ОС. Среди различных вариантов реализации многозадачности, как правило, можно выделить две группы алгоритмов:

невытесняющая многозадачность

вытесняющая многозадачность.

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

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

Особенности аппаратных платформ. Классификация ОС

На свойства ОС непосредственное влияние оказывают аппаратные средства, на которые она ориентированна. По типу аппаратуры различают

ОС персональных компьютеров;

ОС мини-ЭВМ; ОС Mainframe’ов;

ОС кластеров и сетей ЭВМ.

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

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

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

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

Одной из первых разработок в области кластерных технологий были решения компании Digital Equipment Corporation (DEC) на базе компьютеров Vax.

Несмотря на зависимость ОС от аппаратных платформ существуют ОС, разработанные таким образом, что они могут быть легко перенесены с компьютера одного типа на компьютер другого типа. Такие ОС называются мобильными. Наиболее ярким представителем таких систем является ОС UNIX. В этих системах аппаратно-зависимые места тщательно локализуют таким образом, что при переносе системы на новую аппаратную платформу. Переписываются только эти локализованные модули. Многозадачные ОС подразделяются на 3 типа в соответствии с использованными при их разработке критериями эффективности:

системы пакетной обработки (ОС Mainframe’ов);

системы разделения времени (UNIX);

системы реального времени.

Системы пакетной обработки предназначены для решения задач в основном вычислительного характера, не требующих немедленного получения результата. Главной целью и критерием эффективности систем пакетной обработки является максимальная пропускная способность, т.е. решение максимального числа задач в единицу времени. Для достижения этой цели в программах пакетной обработки используется следующая схема функционирования. В начале работы формируется пакет заданий, при этом в каждом задании содержатся требования к системным ресурсам. Из этого пакета заданий формируется мульти программная смесь, т.е. множество одновременно выполняемых задач. Для одновременного выполнения выбираются такие задачи, которые предъявляют различные требования к ресурсам. Таким образом, чтобы обеспечивалась сбалансированная нагрузка всех устройств вычислительной техники. Например, желательно, чтобы в мульти.. содержались вычислительные задачи, а также задачи, связанные с устройством ввода-вывода информации. Таким образом, выбор нового задания из пакета зависит от внутренней ситуации, складывающейся в системе, и таким образом выбирается выгодное задание. Таким образом, ОС с пакетной обработкой невозможно гарантировать выполнение того или иного задания в течении определенного времени. В системах пакетной обработки переключение процессора с выполнения одной задачи на выполнение другой происходит только в том случае, если сама активная задача отказывается от процессора в связи с необходимостью выполнить операцию ввода-вывода. Поэтому одна задача может надолго занять процессор, что делает невозможным выполнение интерактивных задач. Таким образом, взаимодействие пользователя с вычислительной машиной, на которой установлена ОС пакетной обработки, сводится к тому, что он приносит задание, сдает его оператору и только через какое-то время, после выполнения всего пакета заданий, он получает результат.

ОС разделения времени признаны исправить такой недостаток систем пакетной обработки, как изоляция программиста от выполнения его от выполнения конкретных задач. Каждому пользователю системы разделения времени представляется терминал, с которого он может вести диалог со своей программой. В системах разделения времени каждой задаче выделяется только квант процессорного времени, при этом ни одна из задач не занимает процессор надолго и время ответа от вычислительной системы становится приемлемым. Если выбрать квант времени небольшим (доли секунды), то у всех пользователей, работающих на одной и той же машине, создается впечатление, что каждый из них единолично использует машину. Системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, т.к. последовательно выполняются все задачи, а не только те, которые выгодны системе. Недостатком является наличие "накладных" потерь времени, необходимых на частое переключение процессора с решения одной задачи на другую.

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

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

По режиму обработки задач:

Однопрограммный.

Мультипрограммный.

По организации работы с вычислительной системой:

Однопользовательские (однотерминальные).

Многопользовательские (мультитерминальные).В мультитерминальных ОС с одной вычислительной системой одновременно могут работать несколько пользователей, каждый со своего терминала. При этом у пользователей возникает иллюзия , что у каждого из них имеется своя собственная вычислительная система.

По основному архитектурному принципу:

Микроядерные.(OCPB QNX)

Монолитные.(Windows 95/98, Linux)

1. На что подразделяются ОС по числу одновременно выполняемых задач?

2. Какие средства управления включают в себя многозадачные и однозадачные ОС?

3. Каковы основные различия между вытесняющими и не вытесняющими алгоритмами многозадачности?

4. Дайте определение кластера? Какие требования предъявляются к ОС кластеров?

5. На какие типы в соответствии с использованными при их разработке критериями эффективности подразделяются многозадачные ОС? Дайте краткую характеристику каждого типа.

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

Особенности методов построения

При описании операционной системы часто указываются особенности ее структурной организации и основные концепции, положенные в ее основу.

К таким базовым концепциям относятся:

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

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

Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС. Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы.

Распределенная организация операционной системы позволяет упростить работу пользователей и программистов в сетевых средах. В распределенной ОС реализованы механизмы, которые дают возможность пользователю представлять и воспринимать сеть в виде традиционного однопроцессорного компьютера. Характерными признаками распределенной организации ОС являются: наличие единой справочной службы разделяемых ресурсов, единой службы времени, использование механизма вызова удаленных процедур (RPC) для прозрачного распределения программных процедур по машинам, многонитевой обработки, позволяющей распараллеливать вычисления в рамках одной задачи и выполнять эту задачу сразу на нескольких компьютерах сети, а также наличие других распределенных служб.

Операционная система в настоящее время определяет облик всей конкретной вычислительной системы.

Как правило, современные операционные системы выполняют две основные функции:

Создание программисту максимальных удобств по средствам предоставления виртуальной ЭВМ.

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

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

Задачей современной операционной системы является освобождение программиста от всех реальных особенностей аппаратуры и предоставление возможностей удобного просмотра различных файлов и удобное обслуживание различных периферийных устройств.

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

Задачей операционной системы является предоставление пользователю виртуальной ЭВМ свободной от технических реалий аппаратуры.

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

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

Т.е. ресурсом называется всякий объект, который может распределяться внутри системы.

При разработке первых систем ресурсами считались процессорное время, память, каналы ввода/вывода и периферийные устройства. Однако очень скоро понятие ресурса стало гораздо более универсальным и общим. Различного рода программные и информационные ресурсы также могут быть определены для системы как объекты, которые могут разделяться и распределяться, и доступ к которым необходимо соответствующим образом контролировать. В настоящее время понятие ресурса превратилось в абстрактную структуру с целым рядом атрибутов, характеризующих способы доступа к этой структуре и её физическое представление в системе. Более того, помимо системных ресурсов, о которых мы сейчас говорили, как ресурс стали толковать и такие объекты, как сообщение и синхросигналы, которыми обмениваются задачи.

Классификация ресурсов:

Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно(в один и тот же момент времени) или параллельно(в течение некоторого интервала времени процессы используют ресурс попеременно), а могут быть и неделимыми.

Рис.4.1. Классификация ресурсов

1. Перечислите основные принципы построения ОС и дайте их краткую характеристику.

2. Перечислите требования, предъявляемые к современным ОС.

3. Каковы тенденции развития ОС на современном этапе?

4. Дайте определение понятию ресурс?

5. Как классифицируются ресурсы?

Понятие “вычислительный процесс” (или просто - “процесс”) является одним из основных при рассмотрении ОС. Как понятие, процесс является определенным видом абстракции.

Последовательный процесс (иногда называемый “задачей”) – это выполнение отдельной программы с её данными на последовательном процессоре.

В концепции, которая получила наибольшее распространение в 70-е годы, задача(task) – это совокупность связанных между собой и образующих единое целое программных модулей и данных, требующие ресурсов вычислительной системы для своей реализации. В последующие годы задачей стали называть единицу работы, для выполнения которой предоставляется центральный процессор. Вычислительный процесс может включать в себя несколько задач.

Необходимо различать системные управляющие процессы, представляющие работу супервизора ОС и занимающиеся распределением и управлением ресурсов, от всех других процессов: в системных обрабатывающих процессов, которые не входят в ядро ОС, и процессов пользователя. Для системных управляющих процессов в большинстве ОС ресурсы распределяются изначально и однозначно. Эти процессы управляют ресурсами системы, за использование которых существует конкуренция между всеми остальными процессами.

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

В качестве примеров можно назвать следующие процессы:

выполнение прикладных программ пользователей

выполнение утилит и других системных обрабатывающих программ

Процессами могут быть редактирование какого-либо текста, трансляция исходной программы, её компоновка, исполнение. Причём трансляция какой-нибудь исходной программы является одним процессом, а трансляция следующей исходной программы – другим процессом, т.к. хотя транслятор как объединение программных модулей здесь выступает как одна и та же программа, но данные, которые он обрабатывает, являются разными.

Процесс имеет несколько состояний:

В активном состоянии процесс может участвовать в конкуренции за использование ресурсов вычислительной системы, а в пассивном – он только известен системе , но в конкуренции не участвует(хотя его существование в системе и сопряжено с предоставлением ему оперативной и/или внешней памяти). В свою очередь, активный процесс может быть в одном из следующих состояний:

- выполнения – все затребованные процессом ресурсы выделены. В этом состоянии в каждый момент времени может находиться только один процесс, если речь идет об однопроцессорной вычислительной системе;

- готовности к выполнению – ресурсы могут быть предоставлены, тогда процесс перейдёт в состояние выполнения;

- блокирование или ожидания – затребованные ресурсы не могут быть предоставлены, или не завершена операция ввода/вывода.

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

Рис.5.1. Граф состояний процесса

Виды процессов:

Подчиненный – зависит от процесса-родителя; уничтожается при его уничтожении; процесс-родитель должен ожидать завершения всех подчиненных процессов

Независимый – не зависит от процесса-родителя; исполняется независимо от него (например, процесс-демон: cron, smbd и др.)

Сопроцесс (co-process, co-routine) – хранит свое текущее локальное управление (program counter); взаимодействует с другим сопроцессом Q с помощью операций resume (Q). Операция detach переводит сопроцесс в пассивное состояние (SIMULA-67). Пример: взаимодействие итератора с циклом

Взаимодействующие (cooperating) процессы:

Независимый процесс – не может влиять на исполнение других процессов и испытывать их влияние.

Взаимодействующий (совместный) процесс – может влиять на исполнение других процессов или испытывать их влияние

Преимущества взаимодействующих процессов

Совместное использование данных

Ускорение вычислений

Модульность Удобство

Рис.5.2. Однопоточные и многопоточные процессы

Взаимодействие процессов:

Механизм для коммуникации процессов и синхронизации их действий.

Система сообщений – процессы взаимодействуют между собой без обращений к общим переменным.

Средство взаимодействия между процессами (IPC facility) обеспечивает две операции:

send (message) – размер сообщения постоянный или переменный

Receive (message)

Если P и Q требуется взаимодействовать между собой, им необходимо:

Установить связь (communication link) друг с другом

Обменяться сообщениями вида send/receive

Реализация связи

Физическая (общая память, аппаратная шина)

Логическая (например, логические свойства)

Прямая связь

(direct communication):

Процессы именуют друг друга явно:

Send (P, message) – послать сообщение процессу P

Receive (Q, message) – получить сообщение от процесса Q

Свойства линии связи

Связь устанавливается автоматически.

Связь ассоциируется только с одной парой взаимодействующих процессов.

Между каждой парой процессов всегда только одна связь.

Связь может быть ненаправленной, но, как правило, она двунаправленная.

Косвенная связь (indirect communication):

Сообщения направляются и получаются через почтовые ящики (порты) – mailboxes; ports

Каждый почтовый ящик имеет уникальный идентификатор.

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

Свойства линии связи

Связь устанавливается, только если процессы имеют общий почтовый ящик

Связь может быть установлена со многими процессами.

Каждая пара процессов может иметь несколько линий связи.

Связь может быть ненаправленной или двунаправленной.

Косвенная связь

Операции

Создать новый почтовый ящик

Отправить (принять) сообщение через почтовый ящик

Удалить почтовый ящик

Основные операции:

Send (A, message) – послать сообщение в почтовый ящик A

Receive (A, message) – получить сообщение из почтового ящика A

Использование общего почтового ящика

P1, P2, и P3 используют почтовый ящик A.

P1, посылает сообщение; P2 и P3 принимают.

Кто получает сообщение?

Решения Ограничить связь только двумя процессами.

Разрешить только одному процессу в каждый момент исполнять операцию получения

Разрешить системе произвольным образом определить получателя

Отправитель нотифицируется, кто является получателем.

Синхронизация при косвенной связи:

Передача сообщений может выполняться с блокировкой или без блокировки

Передача с блокировкой - синхронная

Передача без блокировки - асинхронная

Основные операции send и receive могут быть с блокировкой или без блокировки

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

В том случае, если ОС поддерживает выполнение потоков, то для реализации мультипрограммирования она должна выполнять функции планирования и диспетчеризации потоков.

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

Диспетчеризация заключается в реализации найденного в результате планирования решения, то есть переключение процессора с одного потока на другой.

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

Динамический планировщик может реализовывать различные алгоритмы планирования, которые делятся на следующие классы:

вытесняющие и невытесняющие алгоритмы;

алгоритмы квантования и приоритетные алгоритмы.

Рис.5.3. Потоки.

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

Сущность “поток” была введена для того, чтобы именно с помощью этих единиц распределять процессорное время между возможными работами.

Пользовательские потоки (user threads)- это потоки, управление которыми реализовано через библиотеку потоков пользовательского уровня.

Примеры:

- POSIX Pthreads

- Mac C-threads

- Solaris threads

Рис.5.4. Потоки в Solaris 2

Рассмотрим реализацию потоков в разных ОС:

Потоки в Windows 2000

Каждый поток содержит

- идентификатор потока (thread id)

- набор регистров

- отдельные стеки для пользовательских и системных процедур

- область памяти для локальных данных потока (TLS – thread-local storage)

Потоки в Linux

В Linux потоки называются tasks (задачами), а не threads.

Поток создается системным вызовом clone().

clone() позволяет дочерней задаче использовать общее адресное пространство с родительской задачей (процессом)

Потоки в Java

Потоки в Java могут быть созданы следующими способами:

Как расширения класса Thread

Как классы, реализующие интерфейс Runnable

Потоки в Java управляются JVM

Возможно создание групп потоков и иерархии таких групп

Рис.5.5. Состояния потоков в Java

1. Дайте определение понятий “вычислительный процесс” и “последовательный процесс”.

2. Сколько состояний имеет процесс, дайте их краткую характеристику?

3. Назовите виды процессов и охарактеризуйте их.

4. Опишите отношения между взаимосвязными процессами.

5. Дайте определение понятию поток.

6. Какими двумя способами может выполняться планирование?

7. Чем отличаются однопоточные процессы от многопоточных процессов?

8. Как ОС распределяет процессорное время между такими единицами работы как потоки?

9. Расскажите о реализации потоков в различных ОС.

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

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

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

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

Важнейшей частью ОС, непосредственно влияющей на функционирование вычислительной системы, является подсистема управления процессами. Для каждого вновь создаваемого процесса ОС генерирует системные информационные структуры, которые содержат данные о потребностях процесса в ресурсах вычислительной системы, а также о фактически выделенных ресурсах для конкретного процесса. В этой связи процесс можно определить также как некоторую заявку на потребление системных ресурсов. Чтобы процесс мог быть выполнен, ОС должна назначить ему область оперативной памяти, в которой размещается данные и кода процесса, а также предоставить ему необходимое количество процессорного времени, обеспечивающего выполнение основных задач процесса. Кроме этого процессу может понадобиться доступ к таким ресурсам, как файловая система и различные устройства ввода-вывода информации.

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

В мультипрограммных ОС одновременно может существовать несколько процессов. Часть процессов порождается по инициативе пользователей и тех приложений, с которыми они работают, поэтому такие процессы называют пользовательскими. Другие процессы, которые инициализируются самой ОС для выполнения своих функций, называются системными.

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

Важной задачей ОС является защита ресурсов, выделенных данному процессу от остальных процессов. Наиболее тщательная защита должна быть обеспечена для той области оперативной памяти, в которой хранятся данные и коды процессов.

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

Современные ОС позволяют организовать совместное использование ресурсов, то есть может быть организовано одновременное предоставление доступа к системным ресурсам нескольким процессам. На протяжении всего существования процесса, его выполнение может быть неоднократно прервано, а затем продолжено. Для того, чтобы восстановить выполнение процесса, необходимо восстановить состояние его операционной среды. Состояние операционной среды идентифицируется состоянием регистров и программного счетчика, режимом работы процессора, указателем на состояние файлов, информации о незавершенных операциях ввода-вывода, кодами ошибок выполняемых данным процессом системных вызовов. Эта информация называется контекстом процесса. При смене процесса происходит переключение контекстов. ОС берет на себя функции синхронизации процессов, которые позволяют процессу приостанавливать свое выполнение до наступления какого-либо события в системе (например, для завершения операции ввода-вывода). В ОС нет однозначного соответствия между процессами и программой.

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

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

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

Важной задачей при мультипрограммной обработке информации современными ОС является распределение ресурсов между процессами и потоками.

В современных ОС существуют такие базовые единицы работы, как процессы и потоки. В этом случае процесс рассматривается ОС как заявки на потребление всех видов ресурсов, за исключением одного – процессорного времени.

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

В том случае, если ОС поддерживает выполнение потоков, то для реализации мультипрограммирования она должна выполнять функции планирования и диспетчеризации потоков.

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

Диспетчеризация заключается в реализации найденного в результате планирования решения, то есть переключение процессора с одного потока на другой.

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

Динамический планировщик может реализовывать различные алгоритмы планирования, которые делятся на следующие классы:

вытесняющие и невытесняющие алгоритмы;

алгоритмы квантования и приоритетные алгоритмы.

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

Управление процессами

Процесс (process) - это программа при ее исполнении. Для процесса требуется ряд ресурсов, включая время процессора, память, файлы, устройства ввода-вывода, сетевые устройства и др.

Обычно при создании процесса для него создается новое пространство виртуальной памяти (но: для lightweight process – создается только стек)

ОС отвечает за следующие действия, связанные с управлением процессами:

Создание и удаление процессов.

Приостановка и возобновление процессов.

Обеспечение механизмов для:

Синхронизации процессов (семафоры, мониторы и др.)

Взаимодействия процессов (условные переменные, события, рандеву и др.)

Память является таким же ресурсом, как и процессор, так как процесс может выполняться процессором только в том случае, если его коды и данные находятся в оперативной памяти.

Управление памятью включает распределение имеющейся физической памяти между всеми существующими в системе в данный момент процессами, загрузку кода и данных процессов, отведенные им области памяти, настройку адресно-зависимых частей кодов процесса на физические адреса выделенной памяти, а также защиту областей памяти каждого процесса. Существуют различные алгоритмы распределения памяти вычислительной системы. Алгоритмы могут отличаться количеством выделяемых процессу областей памяти, например, память, может быть выделена процессу в виде непрерывной области или в виде нескольких несмежных областей. Может изменяться степень свободы границы областей памяти, то есть она может быть жестко зафиксированы, либо она может динамически перемещаться при выделении процессу дополнительной памяти.

В некоторых системах распределение памяти осуществляется страницами фиксированного размера, а в других – сегментами переменной длины.

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

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

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

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

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

отслеживание свободной и занятой памяти, выделение памяти процессом и освобождение памяти при завершении процессов;

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

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

Память распределяется, как между модулями прикладных программ, так и между модулями ОС.

На разных этапах жизненного цикла программ для предоставления переменных и кодов требуются 3 типа адресов:

символьные (например, адреса переменных, используемые программистом);

виртуальные (условные числа, которые создаются компилятором);

физические (адреса ячеек памяти, в которых физически размещаются данные и информация).

Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Диапазон возможных адресов виртуального пространства у всех процессов является одним и тем же.

Виртуальное адресное пространство может быть:

плоским, линейным,

структурированным.

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

Виртуальное адресное пространство процесса делится на 2 непрерывные части:

системную; пользовательскую.

Системная часть является общей для всех процессов, в ней размещаются коды и данные операционной системы. В современных ОС наиболее эффективным управлением памятью является именно виртуальная память, которая в настоящее время вытеснила методы распределения памяти фиксированными динамическими или перемещаемыми разделами.

Виртуальная память использует дисковую память для временного хранения непомещающихся в оперативную память данных и кодов выполняемых процессов.

Организация программного обеспечения ввода-вывода

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

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

Очень близкой к идее независимости от устройств является идея единообразного именования, то есть для именования устройств должны быть приняты единые правила.

Другим важным вопросом для программного обеспечения ввода-вывода является обработка ошибок. Вообще говоря, ошибки следует обрабатывать как можно ближе к аппаратуре. Если контроллер обнаруживает ошибку чтения, то он должен попытаться ее скорректировать. Если же это ему не удается, то исправлением ошибок должен заняться драйвер устройства.

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

Еще один ключевой вопрос - это использование блокирующих (синхронных) и неблокирующих (асинхронных) передач. Большинство операций физического ввода-вывода выполняется асинхронно - процессор начинает передачу и переходит на другую работу, пока не наступает прерывание. Пользовательские программы намного легче писать, если операции ввода-вывода блокирующие - после команды READ программа автоматически приостанавливается до тех пор, пока данные не попадут в буфер программы. ОС выполняет операции ввода-вывода асинхронно, но представляет их для пользовательских программ в синхронной форме.

Рис.6.1. Типичная структура блока управления файлом

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

Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя:

Обработка прерываний,

Драйверы устройств,

Независимый от устройств слой операционной системы,

Пользовательский слой программного обеспечения.

Файлы, отображаемые в память

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

Первоначально файл читается с использованием запроса страниц по требованию. Часть файла размером с одну страницу читается из файла в физическую страницу (фрейм). Последующие чтения из файла и записи в файл трактуются как обычные обращения к памяти.

Это упрощает доступ к файлу, по сравнению с системными вызовами read() и write().

Это позволяет также нескольким процессам отображать в память один и тот же файл, по тому же принципу, как они совместно используют страницы.

Рис.6.2. Файлы, отображаемые в память

Защита данных и администрирование

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

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

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

Поддержка отказоустойчивости реализуется операционной системой, как правило, на основе резервирования. Чаще всего в функции ОС входит поддержание нескольких копий данных на разных дисках или разных дисковых накопителях. Резервируются также принтеры и другие устройства ввода-вывода. При отказе одного из избыточных устройств операционная система должна быстро и прозрачным для пользователя образом произвести реконфигурацию системы и продолжить работу с резервным устройством. Особым случаем обеспечения отказоустойчивости является использование нескольких процессоров, то есть мультипроцессирование, когда система продолжает работу при отказе одного из процессоров, хотя и с меньшей производительностью. (Необходимо отметить, что многие ОС использует мультипроцессорную конфигурацию компьютера только для ускорения работы и при отказе одного из процессоров прекращают работу.)

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

Различают API (Application program interface) на следующие направления:

API как интерфейс высокого уровня, принадлежащий к библиотекам RTL;

API прикладных и системных программ, входящих в поставку ОС;

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

API представляет собой набор функций, предоставляемых системой программирования разработчику прикладной программы и ориентированных на организацию взаимодействия результирующей прикладной программы с целевой вычислительной системой. Целевая вычислительная система представляет собой совокупность программных и аппаратных средств, в окружении которых выполняется результирующая программы. Сама результирующая программа порождается системой программирования на основании кода исходной программы, созданного разработчиком, а также объектных модулей и библиотек, входящих в состав системы программирования.

В принципе API используются не только прикладными, но и многими системными программами, как в составе ОС, так и в составе системы программирования. Для системной программы существуют некоторые дополнительные ограничения на возможные реализации API.

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

Программный интерфейс API включает в себя не только сами функции, но и соглашения об их использовании, которые регламентируются ОС, архитектурой целевой вычислительной системы и системы программирования.

Существует несколько вариантов реализации API:

Реализация на уровне ОС;

Реализация на уровне системы программирования;

Реализация на уровне внешней библиотеки процедур и функций.

Возможности API можно оценивать со следующих позиций:

Эффективность выполнения функций API – включает в себя скорость выполнения функций и объем вычислительных ресурсов, потребных для их выполнения;

Широта предоставляемых возможностей;

Зависимость прикладной программы от архитектуры целевой вычислительной системы.

Графический интерфейс пользователя (ГИП, . graphical user interface, GUI) в вычислительной технике — система средств для взаимодействия пользователя с компьютером, основанная на представлении всех доступных пользователю системных объектов и функций в виде графических компонентов экрана (окон, значков, меню, кнопок, списков и т. п.). При этом, в отличие от интерфейса командной строки, пользователь имеет произвольный доступ (с помощью клавиатуры или устройства координатного ввода — вроде мыши) ко всем видимым экранным объектам.

Впервые концепция ГИП была предложена учеными из исследовательской лаборатории Xerox PARC в 1970-х, но получила коммерческое воплощение лишь в продуктах корпорации Apple Computer. В операционной системе AmigaOS ГИП с многозадачностью был использован в 1985 г. В настоящее время ГИП является стандартной составляющей большинства доступных на рынке операционных систем и приложений.

Примеры систем, использующих ГИП: Mac OS, Mac OS X, Microsoft Windows, NEXTSTEP, X Window System.

Рис. 6.3. Пример графического интерфейса пользователя — интерфейс Aero в Windows Vista

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

Интерфейс пользователя компьютерного приложения включает:

• средства отображения информации, отображаемую информацию, форматы и коды;

• командные режимы, язык «пользователь — интерфейс»;

• устройства и технологии ввода данных;

• диалоги, взаимодействие и транзакции между пользователем и компьютером, обратную связь с пользователем;

• поддержку принятия решений в конкретной предметной области;

• порядок использования программы и документацию на неё.

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

Хоть наиболее естественным для оконного интерфейса является графический режим, основные его элементы применимы и в текстовом режиме, где он применяется в равной степени.

Процедуры поддержки оконного интерфейса призваны отрисовывать экран c располагающимися «поверх него» окнами и разделять ввод пользователя между ними (при существовании нескольких равноправных окон ввод пользователя осуществляется в то, которое из них в данный момент является активным).

Окно обычно имеет прямоугольную форму, с обрамлением и/или цветом фона, отличным от цвета основного экрана. При необходимости окно имеет заголовком (с пояснением функции) и органами управления. Иногда используются различные эффекты для придания ощущения объемности интерфейса, в том числе:

• «тени» — затемнение под окном со сдвигом (как правило, вправо-вниз, предполагая наличие света слева-сверху). В графическом режиме тени также могут отбрасывать другие элементы интерфейса, например курсор мыши;

• создание иллюзии выпуклых и вдавленных структур - линий, надписей, пониженных или повышенных областей (например, кнопок), рамок и т. п. линиями повышенной и пониженной яркости и полутоновыми переходами (для имитации криволинейных поверхностей).

• полная или частичная (полу -)прозрачность окна — просвечивание сквозь «подложки» или других окон (применимо только в графическом режиме)

Оконный интерфейс очень быстро завоевал популярность и в настоящее время (отчасти — благодаря операционным системам с графическими оконными оболочками) является самым популярным видом программного интерфейса.

Разновидности

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

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

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

Оконный интерфейс реализуется как в графическом, так и в текстовом режиме. Наиболее известной (неполной) реализацией оконного интерфейса в текстовом режиме является программа-оболочка Питера Нортона «Norton Commander» и ее многочисленные римейки.

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

В зависимости от источника прерывания делятся на три класса:

внешние, связанные с сигналами от внешних периферийных устройств;

внутренние, возникающие от ошибок в вычислительном процессе;

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

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

В настоящее время используются два способа выполнения прерываний:

векторный, характеризуется тем, что в момент передачи в процессор выдается номер вызываемой процедуры, в соответствии с которым осуществляется обработка прерываний;

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

Для нормализации процесса обработки прерываний все источники прерываний распределяют по нескольким приоритетным уровням, а роль арбитра выполняет диспетчер прерываний ОС.

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

Для синхронизации процессов и потоков, решающих общие задачи и совместно использующих ресурсы в ОС используют специальные средства:

критические секции;

семафоры;

мьютексы;

таймеры и события.

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

Основные функции прерываний:

Прерывание передает управление подпрограмме обработке прерываний, как правило, через вектор прерываний (interrupt vector), который содержит адреса всех программ обработки прерываний.

В архитектуре обработки прерываний должно быть предусмотрено сохранение адреса прерванной команды (instruction).

Входящие прерывания задерживаются (disabled), если в данный момент обрабатывается другое прерывание, для предотвращения потери прерываний (lost interrupt).

Ловушка (trap) - программно сгенерированное прерывание, либо вызванное ошибкой, либо по запросу пользователя

ОС управляется прерываниями (interrupt driven).

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

В настоящее время используются два способа выполнения прерываний:

векторный, характеризуется тем, что в момент передачи в процессор выдается номер вызываемой процедуры, в соответствии с которым осуществляется обработка прерываний;

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

Обработка прерываний

ОС сохраняет состояние процессора (CPU) – регистры и счетчик команд (program counter – PC)

ОС определяет, какого типа прерывание произошло:

Опрос устройств - polling

Векторная система прерываний

По содержимому сегмента кода ОС определяет, какого рода действия следует предпринять для соответствующего типа прерывания

1. Какие подсистемы ОС вы знаете, чем они отличаются друг от друга? Их основные функции.

2. Дайте краткую характеристику подсистемы управления процессами.

3. Сколько процессов одновременно может существовать в мультипрограммных ОС?

4. Дайте определение понятию процесс.

5. Дайте краткую характеристику подсистемы управления памятью.

6. Какие три типа адресов требуется на разных этапах жизненного цикла программ для предоставления переменных и кодов?

7. Каким может быть виртуальное адресное пространство и на какие две непрерывные части оно делится?

8. Дайте краткую характеристику подсистемы управления файлами и устройствами ввода- вывода.

9. Какие средства защиты данных и администрирования вы знаете?

10. На какие направления различают API(Application program interface) и сколько существует вариантов их реализации?

11. Перечислите основные функции прерываний.

12. Что такое графический интерфейс пользователя (ГИП, . graphical user interface, GUI) в вычислительной технике?

13. Чем поддерживаются механизмы прерываний? Какие способы выполнения прерываний вы знаете?

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

При одновременном возникновении запросов прерываний различных типов процессор Pentium разрешает коллизию с помощью приоритетов. Немаскируемые прерывания имеют более высокий приоритет, чем маскируемые. Приоритетность внутри маскируемых прерываний устанавливается не процессором, а контроллером прерываний (процессор не может этого сделать, так как для него все маскируемые запросы представлены одним сигналом INTR). Проверка некорректных ситуаций, порождающих исключения (в том числе и при выполнении одной команды), выполняется в процессоре в соответствии с определенной последователь-ностью.

Таблица прерываний в реальном режиме состоит из 256 элементов, каждый из которых имеет длину в 4 байта и представляет собой дальний адрес (CS:IP) процедуры обработки прерываний. Таблица прерываний реального режима всегда находится в фиксированном месте физической памяти — с начального адреса 00000 по адрес 003FF.

В защищенном режиме таблица прерываний носит название IDT (Interrupt Descriptor Table) и может располагаться в любом месте физической памяти. Ее начало (32-разрядный физический адрес) и размер (16 бит) можно найти в регистре системных адресов IDTR. Каждый из 256 элементов таблицы прерываний представляет собой 8-байтный дескриптор. В таблице прерываний могут находиться только дескрипторы определенного типа — дескрипторы шлюзов прерываний, шлюзов ловушек и шлюзов задач.

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

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

Итак, процессор Pentium предоставляет операционной системе широкий диапазон возможностей для организации обработки прерываний различного типа.

Виртуализация

Сегодня перед отраслью стоит задача продолжить создание все более компактных, тонких и быстрых компьютерных систем, а также найти лучшие способы избавления от сложностей компьютерных технологий. Большие усилия направлены на решение проблем безопасности и управления информацией и устройствами, для того чтобы сделать компьютеры более гибкими и расширить их распространение, а также добиться, чтобы компьютерные системы всегда и везде были доступны пользователям. Так, концепция виртуализации платформ способна обеспечить путь в будущее для мощных, автономных и надежных компьютерных систем. Для работы микропроцессоров будущего потребуется несколько уровней виртуализации. Например, виртуализация необходима для того, чтобы скрыть сложную структуру аппаратного обеспечения от соответствующего ПО. Сама ОС, ее ядро и ПО не должны "задумываться" о "хитром" устройстве платформы - о множестве ядер, специализированном аппаратном обеспечении, о множестве модулей кэш-памяти, средствах реконфигурирования и т. п. Наоборот, они должны "видеть" процессор как набор унифицированных виртуальных машин с глобальными интерфейсами. Необходимый уровень абстракции должна предоставить именно виртуализация.

Виртуализацию платформ можно определить как создание логически разделенных вычислительных систем, которые работают на реальных платформах. Если применить виртуализацию к дисковой памяти и серверам, концепция виртуализации платформ идет глубже и включает все уровни системы - от прикладных программ и ОС до компонентов платформы, процессоров и средств связи (рис. 4). Виртуальные платформы легко воспринимаются пользователями и работают так же, как обычные компьютеры. Благодаря тому, что они абстрактны и отделены от физических платформ и друг от друга, виртуальные платформы обеспечивают простую переносимость и в высшей степени интеллектуальное функционирование и способны скрывать от пользователя свою сложность, в то же время повышая надежность системы. Виртуализация позволяет создавать менее сложные системы, превращая компьютеры в более управляемые объекты. Кроме того, такое разделение на части обеспечивает больший уровень безопасности систем, сетей и приложений благодаря изоляции потенциально опасных подсистем от системных ресурсов низкого уровня и от других виртуальных платформ.

Рис. 7.1. Виртуализация используется на каждом уровне платформы

С появлением технологии виртуализации многие ИТ-организации получили новые способы для развертывания своих систем и приложений и для управления ими. Например, виртуализация серверов обеспечивает гибкую и защищенную консолидацию множества ОС и приложений на единой платформе. Это помогает предотвратить быстрое разрастание серверного парка, повысить степень полезного использования ресурсов, упростить ИТ-инфраструктуру, снизить расходы на управление. В сочетании с инструментами для быстрого развертывания ПО виртуализация также позволяет организовать быстрое и динамичное управление аппаратными ресурсами, чтобы оперативно реагировать на изменения рабочей нагрузки. Эти возможности могут принести существенную выгоду многим компаниям, и в течение ближайших нескольких лет ожидается их широкое распространение. Так, согласно прогнозу IDC, если в 2003 г. 8% проданных серверов были оснащены средствами для развертывания и виртуализации, то к 2007 г. их доля вырастет до 40%.

Типичная ИТ-организация тратит 70-80% своего бюджета только на управление системами и приложениями. Одна из причин этих расходов кроется в типичном центре обработки данных - большое количество серверов с низкой степенью использования. В прошлом в ИТ-организациях существовала тенденция, когда на каждом сервере работало только одно приложение. Благодаря доступности серверов стандартной архитектуры эта стратегия была экономически оправданной, упрощала развертывание и позволяла избежать возможных конфликтов ПО. Однако, по ряду оценок, за последние 10 лет количество серверов возросло примерно в 150 раз, соответственно, увеличились и расходы на их сопровождение. Средняя производительность серверов также выросла, сегодня они стали гораздо мощнее, чем 10 лет назад. Виртуализация поможет получить преимущества от этой дополнительной мощности за счет консолидации множества приложений и ОС на единой платформе. Это повысит степень полезного применения серверов, а также упростит сопровождение и снизит расходы на электропитание и охлаждение.

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

Технология Intel Virtualization, ранее известная как Vanderpool, предоставляет аппаратную поддержку, назначение которой - повысить эффективность сегодняшних решений для виртуализации, реализованных программно.

Это расширение архитектуры Intel поможет компаниям:

• сократить расходы и риски при внедрении серверных решений для виртуализации;

• повысить надежность, работоспособность и защищенность приложений, работающих в виртуальных разделах;

• улучшить взаимодействие с имеющимся ПО.

Технология Intel Virtualization также упростит разработку ПО для виртуализации, что будет способствовать скорейшему внедрению инноваций. В настоящее время Intel сотрудничает с ведущими производителями, чтобы ускорить выпуск ПО для виртуализации нового поколения, которое обеспечит эффективное использование этих новых расширений архитектуры. Виртуализация - развивающаяся технология, и корпорация берет на себя обязательства включать самые передовые возможности виртуализации в архитектуру Intel. Эти возможности будут дополнять ряд других инноваций для платформ Intel, нацеленных на решение некоторых наиболее важных сегодня ИТ-задач.

Многоядерная архитектура платформ Intel в сочетании с Virtualization Technology позволит создавать виртуальные независимые разделы ПО с обработкой на отдельных ядрах процессора. Таким образом, пользователи смогут создавать уникальную программно-аппаратную конфигурацию в рамках одного сервера и/или ПК для решения любых специализированных задач.

Преимущества виртуализации

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

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

Виртуальные разделы можно настроить так, чтобы обеспечить автоматическую обработку отказов для одного или нескольких приложений. Благодаря средствам поддержки высокой степени работоспособности, заложенным сейчас в платформы на базе процессоров Itanium 2 и Xeon MP, требуемый уровень услуг часто можно обеспечить, предусмотрев аварийный раздел на той же платформе, где работает основное приложение. Если требуется еще более высокий уровень работоспособности, аварийный раздел можно разместить на отдельной платформе.

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

Важнейшее преимущество виртуализации заключается еще и в том, что она упрощает миграцию приложений на новые платформы. Вместо миграции приложения на новую ОС его вместе с имеющейся ОС можно разместить в виртуальном разделе новой платформы, что не требует изменений в ПО. Эта стратегия обычно используется для того, чтобы продлить срок службы существующих приложений с относительно небольшими расходами и с меньшими рисками. Похожие преимущества предоставляет виртуализация и для сред разработки и тестирования ПО. Различные этапы цикла создания ПО, включая формирование рабочей версии, можно выполнять в разных виртуальных разделах одной и той же платформы. Это повышает степень полезного применения аппаратного обеспечения и упрощает управление жизненным циклом. Во многих случаях ИТ-организации получат возможность тестировать новые и модернизированные решения на имеющихся рабочих платформах, не прерывая производственный процесс. Это не только упрощает миграцию, но позволяет также сократить расходы, устранив дублирование вычислительной среды. Гораздо проще создать новый виртуальный раздел или изменить его параметры, чем закупить и подготовить к работе новую аппаратную платформу. Сегодняшние решения автоматизации развертывания создают дополнительные преимущества и позволяют существенно улучшить способность ИТ к реагированию. Компании будут разворачивать меньше платформ, и использовать их более гибко для удовлетворения меняющихся потребностей.

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

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

На уровне долгосрочного планирования объектами управления являются не отдельные процессы, а некоторые их объединения, рассматриваемые как единое целое, объединенное единым функциональным назначением. Такие объекты в различных ОС называют по разному, например - задание, задача, работа, и т.п. Задача планировщика при этом - предоставить работе (задаче, заданию) некоторую виртуальную машину, имеющую в своем составе необходимые для выполнения работы компоненты (процессор, оперативную и внешнюю память, и т.п.).

На уровне краткосрочного планирования объектом управления являются процессы, которые выступают как потребители либо центрального процессора, если речь идет о внутренних процессах, либо других процессоров для внешних процессов. Необходимо отметить два важнейших свойства выполнения работ ОС на уровне краткосрочного планирования. Во-первых, причины, обусловливающие порождение и окончание процессов и отрабатываемые на этом уровне, являются внутренними. Другими словами, заявки или требования на порождение и уничтожение процессов поступают либо от процессов, управляемых на данном уровне, либо с уровня долгосрочного планирования. Во-вторых, особенностью стратегии распределения процессора на данном уровне, которую часто называют диспетчеризацией, является необходимость многократного распределения единственного процессора (за исключением многопроцессорных вычислительных систем) для каждого из планируемых процессов на интервалах их существования для достижения необходимого эффекта мультипрограммирования. Именно поэтому планирование распределения времени процессора в отношении каждого процесса называют краткосрочным.

Задачи синхронизации.

Процессы могут выполняться параллельно до тех пор, пока не возникнет потребность в общении между ними. Для обеспечения такого рода взаимодействия необходимо специальным образом планировать и управлять ими в составе любой ОС. Специальные средства ОС устанавливают определенные ограничения на последовательность (очередность) выполнения взаимосвязанных параллельных процессов, обеспечения тем самым их синхронизацию и общение. В каждом конкретном случае синхронизация задается с помощью синхронизирующих правил, которые устанавливаются системой между процессами и определяют порядок их выполнения с целью обеспечения должного взаимодействия. Ранее нами были определены основные отношения типа: отношение предшествования, отношение приоритетности, отношение взаимного исключения. Эти отношения и определяют существо синхронизирующих правил. Реализация синхронизирующих правил осуществляется с помощью механизмов (средств) синхронизации. Такие механизмы весьма многочисленны по способам реализации, отличаются степенью эффективности и областями использования в различных ОС и будут рассмотрены в последующих разделах.

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

Сформулируем в общем виде постановку типовых задач синхронизации, не претендуя на формальный способ их постановки.

Задача взаимного исключения. Это фундаментальная по своему назначению задача. Любая ОС, управляющая параллельными процессами, должна обеспечить тот или иной вариант реализации ее решения.

Необходимо согласовать работу n>1 параллельных процессов при использовании некоторого критического ресурса таким образом, чтобы удовлетворить следующим требованиям:

• одновременно внутри критической области должно находиться не более одного процесса

• критические области не должны иметь приоритеты в отношении друг друга

• остановка какого-либо процесса вне его критической области не должна влиять на дальнейшую работу процессов по использованию критического ресурса

• решение о вхождении процессов в их критические области при одинаковом времени поступления запросов на такое вхождение и равноприоритетности процессов не откладывается на неопределенный срок, а является конечным во времени

• относительные скорости развития процессов неизвестны и произвольны

• любой процесс может переходить в любое состояние, отличное от активного, вне пределов своей критической области

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

Задача "Производитель-потребитель". Имеется большое число вариантов постановки и решения такой задачи в рамках конкретных ОС. Наиболее простой случай, когда взаимодействуют два процесса с жестко распределенными между ними функциями. Один процесс вырабатывает сообщения, предназначенные для восприятия и обработки другим процессом. Процесс, вырабатывающий сообщения, называют производителем, а воспринимающий сообщения — потребителем. Процессы взаимодействуют через некоторую обобщенную область памяти, которая по смыслу является критическим ресурсом. В эту область процесс-производитель должен помещать очередное сообщение (в простейшем случае предполагается, что область способна хранить только одно сообщение и сообщения фиксированной длины), а процесс-потребитель должен считывать очередное сообщение. Необходимо согласовать работы двух процессов при одностороннем (в простейшем случае) обмене сообщениями по мере развития процессов таким образом, чтобы удовлетворить следующим требованиям:

• выполнять требования задачи взаимного исключения по отношению к критическому ресурсу — обобщенной памяти для хранения сообщения

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

Попытка процесса-производителя поместить очередное сообщение в область, из которой не было считано предыдущее сообщение процессом-потребителем, должна быть блокирована. Процесс-производитель должен быть либо оповещен о невозможности помещения сообщения, либо переведен в состояние ожидания возможности поместить очередное сообщение через некоторое время в область памяти, по мере ее освобождения. Аналогично должна быть блокирована попытка процесса-потребителя считать сообщение из области в ситуации, когда процесс-производитель не поместил туда очередного сообщения. Возможны также несколько вариантов реакции на данную ситуацию — сообщение о невозможности считывания либо перевод процесса-потребителя в состояние ожидания поступления очередного сообщения. Если используется вариант с ожиданиями изменения состояния обобщенной области для хранения сообщения, необходимо обеспечить перевод ожидающих процессов в состояние готовности всякий раз, когда изменится состояние области. Либо процесс-производитель поместит очередное сообщение в область. Оно теперь может быть считано ожидающим процессом-потребителем. Либо процесс-потребитель считал очередное сообщение из области и обеспечил возможность ожидающему процессу-производителю послать очередное сообщение.

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

Задача "Читатели-писатели". Эта задача также имеет много вариантов. Наиболее характерная область использования этой задачи — при построении файловых систем ОС. В отношении некоторой области памяти, являющейся по смыслу критическим ресурсом для параллельных процессов, работающих с ней, выделяется два типа процессов.

Первый тип — процессы-читатели. Они считывают одновременно информацию из области, если это допускается при работе с конкретным устройством памяти.

Второй тип — процессы-писатели. Они записывают информацию в область и могут делать это, только исключая как друг друга, так и процессы-читатели, т. е. запись должна удовлетворяться на основе решения задачи взаимного исключения. Имеются различные варианты взаимодействия между процессами-писателями и процессами-читателями. Наиболее широко распространены следующие. Устанавливается приоритетность в использовании критического ресурса процессам-читателям. Если хотя бы один процесс-читатель пользуется ресурсом, то он закрыт для использования всем процессам-писателям и доступен для использования всем процессам-читателям. Во втором варианте, наоборот, больший приоритет у процессов-писателей. При появлении запроса от процесса-писателя необходимо закрыть ресурс для использования всем процессам-читателям, которые выдадут запрос позже него.

Задача "Обедающие философы". Хотя и название, и формулировка задачи носят некоторый абстрактный характер, такая задача синхронизации также имеет место при построении систем распределения ресурсов в составе ОС. В рамках этой задачи формулируются требования на синхронизацию работы процессов, которые совместно используют пересекающиеся группы ресурсов.

Пример. Пусть имеются три параллельных процесса X, Y, Z и три ресурса: Р1—устройство ввода с перфокарт; Р2—печатающее устройство, РЗ — накопитель на МД. Особенность развития процессов такова, что для пребывания процесса Х в активном состоянии ему требуется выделить одновременно ресурсы ?1 и ?2, для пребывания процесса Y в активном состоянии ему требуется выделить одновременно ресурсы ?2 и РЗ, для пребывания процесса Z в активном состоянии ему требуется выделить одновременно ресурсы РЗ и ?1. Скорости развития процессов произвольны. Переходы из активного в другие состояния происходят в непредсказуемые моменты. Необходимо обеспечить максимально параллельное и правильное развитие процессов. Синхронизация в данном случае заключается в определенном упорядочении действий процессов по захвату ресурсов во избежание возможных блокировок одними процессами других. В данном случае возможны две опасности: возникновение тупиковой ситуации при распределении ресурсов и возникновение ситуации “голодания” в отношении некоторого процесса при распределении ресурса. Для пояснения обратимся к формулировке задачи, изложенной в терминологии, предложенной впервые Э.Дейкстрой.

За круглым столом расставлены стулья, каждый из которых занимает определенный философ (в первой формулировке Э. Дейкстры число философов равнялось пяти). В центре стола—большое блюдо спагетти, а на столе лежат пять вилок — каждая между двумя соседними тарелками. Каждый философ находится только в двух состояниях — либо он размышляет, либо ест спагетти. Начать думать после еды философу ничто не мешает. Но чтобы начать есть, необходимо выполнить ряд условий. Предполагается, что любой философ, прежде чем начать есть, должен положить из общего блюда спагетти себе в тарелку. Для этого он одновременно должен держать в левой и правой руках по вилке, набрать спагетти в тарелку с их помощью и, не выпуская вилок из рук, начать есть (для простоты здесь вопросы гигиены не рассматриваются). Закончив еду, философ кладет вилки слева и справа от своей тарелки и опять начинает размышлять до тех пор, пока снова проголодается.

Нетрудно заметить, что вилки в данной “столовой ситуации” выступают в качестве пересекающихся ресурсов. Неприятная ситуация может возникнуть в случае, когда философы одновременно проголодаются и одновременно попытаются взять, например, свою левую вилку. В данном случае возникает тупиковая ситуация, так как никто из них не может по условию начать есть, не имея второй вилки. Однако вторая вилка может появиться для любого философа только от соседа справа, который в свою очередь ждет появления для себя вилки от своего соседа справа и одновременно не хочет положить свою левую вилку на стол и т. д. Вторая неприятная ситуация (голодание) может возникнуть уже в отношении не всех, а только одного процесса. В обществе философов такая ситуация возникает в случае заговора двух соседей слева и справа против философа, в отношении которого строятся козни. Каждый раз, когда последний желает утолить голод, заговорщики, опережая его, поочередно забирают вилки то слева, то справа от него. Такие согласованные действия злоумышленников приводят жертву к вынужденному голоданию, так как он никогда не может воспользоваться обеими вилками.

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

Множественность задач синхронизации объясняет большой набор средств синхронизации, с помощью которых эти задачи решаются.

1. Что такое программные прерывания? Как они реализуются?

2. Что вы знаете о шлюзах прерываний? Для чего они используются?

3. Что такое виртуализация? Что дало ИТ-организациям её появление?

4. Расскажите о технология Intel Virtualization.

5. В чем заключается важнейшее преимущество виртуализации?

6. Перечислите основные задачи синхронизации.

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

• дисциплины формирования очередей на ресурсы или совокупность правил, определяющих размещение процессов в очереди

• дисциплины обслуживания очереди или совокупность правил извлечения одного из процессов очереди с последующим представлением выбранному процессу ресурса для использования

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

Дисциплины формирования очередей разделяются на два класса:

1. статический, где приоритеты назначаются до выполнения пакета заданий

2. динамический, при котором приоритеты определяются в процессе выполнения пакета

Оба класса широко используются в практике организации вычислительного процесса в ЭВМ.

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

Дисциплина обслуживания в порядке поступления. Первый пришел — первый обслуживается. В литературе эта дисциплина обозначается как FIFO (First in—First out). Самая простая и широко используемая на практике. Условная схема этой дисциплины показана на рис. 8.1., а.

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

Дисциплина обслуживания в порядке, обратном порядку поступления. Последняя пришла — первая обслуживается. Обозначается LIFO (Last in—First out). Так же, как и FIFO, проста в реализации и широко используется на практике. Условное обозначение дисциплин на рис. 8.1, б. Данная дисциплина является основой построения стековой памяти.

Общим для названных дисциплин является простота их реализации и определенная "справедливость" в обслуживании всего потока запросов, поступающих в систему. Среднее время ожидания запросов в очереди при некотором установившемся темпе обслуживания и темпе поступления является одинаковым независимо от характеристик процессов-пользователей. Например, если некоторые процессы предполагают длительное использование ресурсов (отрабатываются "длинные" запросы), а другие, наоборот,— непродолжительное (отрабатываются "короткие" запросы), то и "длинные" и "короткие" запросы будут ожидать в очереди в среднем одинаково. Дисциплина FIFO помимо функционального отличия обеспечивает минимизацию дисперсии времени ожидания.

Круговой циклический алгоритм. В основе данной дисциплины лежит дисциплина FIFO. Но время обслуживания каждого процесса ограничено и определяется так называемым квантом времени tk. Если запрос на использование ресурса из начала очереди обслуживается до конца за время tk (например, программа процесса за время tk полностью выполнена на процессоре), то он покидает очередь. Если этот запрос не успевает обслужиться до конца, то его обслуживание прерывается, и он поступает в конец очереди. Схема дисциплины приведена на рис., в. Дисциплина широко используется на практике, в частности при реализации режима разделения времени.

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

Все рассмотренные дисциплины являются одноочередными. В ЭВМ, в операционных системах широко используются многоочередные дисциплины. Схема одной из таких дисциплин приведена на рис. 8.1. Здесь организуется N очередей. Все новые запросы поступают в конец первой очереди. Первый запрос из очереди i поступает на обслуживание лишь тогда, когда все очереди от 1 до (i—1)-й пустые. На обслуживание выделяется квант времени tk. Если за это время обслуживание запроса завершается полностью, то он покидает систему. В противном случае недообслуженный запрос поступает в конец очереди с номером i+l.

Рис.8.1 Схема многоочередной дисциплины обслуживания

После обслуживания из очереди i система выбирает для обслуживания запрос из непустой очереди с самым младшим номером. Таким запросом может быть следующий запрос из очереди i или из очереди i+l (при условии, что после обслуживания запроса из очереди i последняя оказалась пустой). Новый запрос поступает в первую очередь (i = l). В такой ситуации после окончания времени tk, выделенного для обслуживания запроса из очереди i, будет начато обслуживание запроса 1-й очереди.

Если система выходит на обслуживание заявок из очереди N, то они обслуживаются либо по дисциплине FIFO (каждая заявка обслуживается до конца), либо по круговому циклическому алгоритму.

Данная система наиболее быстро обслуживает все короткие по времени обслуживания запросы. Недостаток системы заключается в непроизводительных затратах времени на перемещение запросов из одной очереди в другую.

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

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

Рис. 8.2. Схема приоритетной многоочередной дисциплины

Управление ресурсами включает решение 2 общих задач:

планирование ресурса, то есть определение, кому, когда и в каком количестве необходимо выделить тот или иной ресурс вычислительной системы;

отслеживание состояния ресурса, то есть определение состояния того или иного ресурса в любой текущий момент времени (например, процессорное время, объем оперативной памяти и т.д.).

Рис.8.3. Граф распределения ресурсов

Управление ресурсами включает в себя их мультиплексирование (распределение) двумя способами:

во времени Когда ресурс распределяется во времени, различные пользователи и программы используют его по очереди. Сначала один из них получает доступ к использованию ресурса, потом другой и т. д.

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

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

в пространстве

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

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

Тупики Приведенный выше пример позволяет также проиллюстрировать еще одну проблему синхронизации — взаимные блокировки, называемые также дедлоками (deadlocks), клинчами (clinch), или тупиками. Покажем, что если переставить местами операции Р(е) и Р(b) в потоке-писателе, то при некотором стечении обстоятельств эти два потока могут взаимно блокировать друг друга, Итак, пусть поток-писатель начинает свою работу с проверки доступности критической секции — операции Р(b), и пусть он первым войдет в критическую секцию. Выполняя операцию Р(е), он может обнаружить отсутствие свободных буферов и перейти в состояние ожидания. Как уже было показано, из этого состояния его может вывести только поток-читатель, который возьмет очередную запись из буфера. Но поток-читатель не сможет этого сделать, так как для этого ему потребуется войти в критическую секцию, вход в которую заблокирован потоком-писателем. Таким образом, ни один из этих потоков не может завершить начатую работу и возникнет тупиковая ситуация, которая не может разрешиться без внешнего воздействия.

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

На рис. 8.4, а показаны фрагменты соответствующих программ. Поток А запрашивает сначала принтер; а затем порт, а поток В запрашивает устройства в обратном порядке. Предположим, что после того, как ОС назначила принтер потоку А и установила связанную с этим ресурсом блокирующую переменную, поток А был прерван. Управление получил поток В, который сначала выполнил запрос на получение СОМ- порта, затем при выполнении следующей команды был заблокирован, так как принтер оказался уже занятым потоком А. Управление снова получил поток А, который в соответствии со своей программой сделал попытку занять порт и был заблокирован, поскольку порт уже выделен потоку В. В таком положении потоки А и В могут находиться сколь угодно долго.

В зависимости от Соотношения скоростей потоков они могут либо взаимно блокировать друг друга (рис. 8.4, б), либо образовывать очереди к разделяемым ресурсам (рис. 8.4, в), либо совершенно независимо использовать разделяемые ресурсы (рис. 8.4, г).

Рис. 8.4. Возникновение взаимных блокировок при выполнении программы

ПРИМЕЧАНИЕ Тупиковые ситуации надо отличать от простых очередей* хотя те и другие возникают при совместном использовании ресурсов и внешне выглядят похоже: поте* приостанавливается и ждет освобождения ресурса. Однако очередь — это нормальное явление, неотъемлемый признак высокого коэффициента использования ресурсов при случайном поступлении запросов. Очередь появляется тогда, когда ресурс недоступен в данный момент, но освободится через некоторое время, позволив потоку продолжить выполнение. Тупик же, что видно из его названия, является в некотором роде неразрешимой ситуацией. Необходимым условием возникновения тупика является потребность потока сразу в нескольких ресурсах.

В рассмотренных примерах тупик был образован двумя потоками, но взаимно блокировать друг друга может и большее число потоков. На рис. 8.5 показано такое распределение ресурсов Ri между несколькими потоками Tj, которое привело к возникновению взаимных блокировок. Стрелки обозначают потребность потока в ресурсах. Сплошная стрелка означает, что соответствующий ресурс был выделен потоку, а пунктирная стрелка соединяет поток с тем ресурсом, который необходим, но не может быть пока выделен, поскольку занят другим потоком. Например, потоку Т1 для выполнения работы необходимы ресурсы R1 и R2, из которых выделен только один — R1, а ресурс R2 удерживается потоком Т2. Ни один из четырех показанных на рисунке потоков не может продолжить свою работу, так как не имеет всех необходимых для этого ресурсов.

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

Рис. 8.5. Взаимная блокировка нескольких потоков

Тупики могут быть предотвращены на стадии написания программ, то есть программы должны быть написаны таким образом, чтобы тупик не мог возникнуть при любом соотношении взаимных скоростей потоков. Так, если бы в примере, показанном на рис. 8.5, поток А и поток В запрашивали ресурсы в одинаковой последовательности, то тупик был бы>в принципе невозможен. Другой, более гибкий подход к предотвращению тупиков заключается в том, что ОС каждый раз при запуске задач анализирует их потребности в ресурсах и определяет, может ли в данной мультипрограммной смеси возникнуть тупик. Если да, то запуск новой задачи временно откладывается. ОС может также использовать определенные правила при назначении ресурсов потокам, например, ресурсы могут выделяться операционной системой в определенной последовательности, общей для всех потоков.

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

Если же тупиковая ситуация возникла, то не обязательно снимать с выполнения все заблокированные потоки/Можно снять только часть из них, освободив ресурсы, ожидаемые остальными потоками, можно вернуть некоторые потоки в область подкачки, можно совершить -«откат» некоторых потоков до так называемой контрольной точки, в которой запоминается вся информация, необходимая для восстановления выполнения программы с данного места. Контрольные точки расставляются в программе в тех местах, после которых возможно возникновение тупика.

Различают интерфейсы пользователя графический (взаимодействие с компьютером организуется с помощью пиктограмм, меню, диалоговых окон и пр.) и интеллектуальный интерфейс (средства взаимодействия пользователя с компьютером на естественном языке пользователя).

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

1. На какие классы делятся дисциплины формирования очередей?

2. Решение, каких общих задач включает в себя управление ресурсами?

3. Что такое планирование ресурса?

4. Перечислите способы мультиплексирования.

5. Какие проблемы возникают при распределении ресурсов?

6. Дайте понятие тупика.

7. Чем отличаются тупиковые ситуации от простых очередей?

8. Способы предотвращения тупиков.

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

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

ОС может разделяться на модули, имеющие законченное функциональное значение с четко оговоренными правилами взаимодействия. Каждый модуль имеет свою законченную структуру и позволяет существенно упростить работу по модификации и развитию ОС. Если сложная структура не имеет законченной архитектуры, то такую систему сложно модернизировать и сложно переносить на новые аппаратные платформы. Функциональная сложность ОС приводит к сложности и разветвленности её архитектуры, под которой понимают структурную организацию ОС на основе различных программных модулей. В состав ОС, как правило, входят исполняемые и объектные модули стандартных форматов, библиотеки различных типов, модули исходного текста программ, программные модули специального формата, такие как загрузчик, драйверы ввода-вывода, файлы конфигурации ОС, файлы документации, а также модули справочной системы.

Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые аппаратные платформы. Единой архитектурой для современный ОС не существует. Однако существуют универсальные подходы к структурированию ОС.

Основные компоненты ОС:

Управление процессами

Управление основной памятью

Управление файлами

Управление системой ввода-вывода

Управление внешней памятью

Поддержка сетей (networking)

Система защиты (protection)

Система поддержки командного интерпретатора (Windows: MS DOS Prompt; UNIX: shells – sh, csh, ksh, bash, etc.)

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

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

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

Рис.9.1. Ядро и привилегированный и непривилегированный режимы.

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

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

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

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

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

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

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

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

Архитектура ОС, основанная на привилегированном ядре, является классической, ее используют такие ОС как Unix, OS2, Windows NT и т.д.

В ряде случаев разработчики ОС отступают от классической архитектуры и организуют работу ядра и приложений в одном и том же режиме (ОС NetWare компании Novell). Эта ОС использует привилегированный режим работы микропроцессоров Intel (Pentium) как для работы ядра, так и для работы специфических приложений. Однако у этой ОС отсутствует надежная аппаратная защита памяти от работы некорректных приложений. А преимущество такой ОС – повышение скорости обработки информации за счет отсутствия переключений с одного режима работы на другой.

ОС MS DOS, на базе которой построена ранняя версия ОС Windows, состояла из двух модулей msdos.sis и io.sis, составляющих ядро системы, к которым с системными вызовами обращается командный процессор, а также системные утилиты и приложения.

Вычислительную систему, работающую под управлением ОС, построенной на основе ядра, можно рассматривать как систему, состоящую из трех иерархически расположенных слоев. Нижний слой представляет собой аппаратуру компьютера, промежуточный слой – ядро, работающее в привилегированном режиме, верхний слой – утилиты, обрабатывающие программы и приложения.

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

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

Ядро ОС может состоять из следующих слоев:

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

– средства поддержки привилегированного режима;

– система прерываний;

– средства переключения контекстов процессов;

– средства защиты областей памяти и т.д.

Машинно-зависимые компоненты ОС. Этот слой образует программные модули, в которых отражается специфика аппаратной платформы компьютера. В идеале этот слой должен защитить все остальные слои ядра ОС от особенностей аппаратуры конкретного компьютера. Этот подход позволяет разрабатывать вышележащие слои ОС на основе машинно-независимых модулей, существующих в единственном универсальном виде для всех типов аппаратных платформ, использующих данную ОС.

Базовые механизмы ядра. Этот слой выполняет наиболее примитивные операции ядра ОС, такие как:

– программное переключение контекстов процессов;

– диспетчеризация прерываний;

– перемещение страниц из оперативной памяти на диск и обратно и т.д.

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

Менеджеры ресурсов. Этот слой состоит из функциональных модулей, реализующих основные задачи по управлению основными ресурсами вычислительной системы. Как правило, на данном слое работают:

– менеджеры (диспетчеры) процессов;

– менеджеры ввода-вывода;

– менеджеры файловой системы и управления памятью.

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

Интерфейс системных вызовов. Этот слой является, как правило, верхним слоем иерархии ядра, он взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс конкретной ОС. Функции прикладного программного интерфейса (API) предоставляют доступ к ресурсам системы в удобной и компактной форме без указания деталей и их физического расположения. Для осуществления таких комплексных действий системные вызовы обычно обращаются к функциям слоя менеджеров ресурсов, причем для выполнения одного системного вызова может понадобиться несколько обращений.

Разбиение ядра ОС на слои является условным. В реальных ОС количество слоев и распределение функций между ними может быть иным. В ОС, предназначенных для аппаратных платформ одного типа, слой машинно-зависимых модулей может сливаться со слоем базовых механизмов ядра. Возможна и другая архитектура, при которой ядро может состоять из большего количества слоев. Например, слой менеджера ресурсов может обладать многослойной структурой.

1. Перечислите основные компоненты ОС.

2. Сколько режимов работы должна поддерживать аппаратура компьютера (как минимум)?

3. Что такое привилегированный режим работы ОС?

4. Какие функции выполняет ядро?

5. Назовите главное отличие пользовательского режима от привилегированного режима.

6. Из каких слоёв может состоять ядро ОС:

7. Что такое менеджер ресурсов?

Ядро и вспомогательные модули ОС

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:

• ядро — модули, выполняющие основные функции ОС;

• модули, выполняющие вспомогательные функции ОС.

Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью, устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы, без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.

В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка станиц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования — API.

Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями операционной системы, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.

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

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

ПРИМЕЧАНИЕ

Термин «ядро» в разных ОС трактуется по-разному. Одним из определяющих свойств ядра является работа в привилегированном режиме Этот вопрос будет рассмотрен в следующем разделе.

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

Поскольку некоторые компоненты ОС оформлены как обычные приложения, то есть в виде исполняемых модулей стандартного для данной ОС формата, то часто бывает очень сложно провести четкую грань между операционной системой и приложениями (рис. 10.1).

Решение о том, является ли какая-либо программа частью ОС или нет, принимает производитель ОС. Среди многих факторов, способных повлиять на это решение, немаловажными являются перспективы того, будет ли программа иметь массовый спрос у потенциальных пользователей данной ОС.

Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС, или наоборот. Ярким примером такого изменения статуса программы является Web-браузер компании Microsoft, который сначала поставлялся как отдельное приложение, затем стал частью операционных систем Windows NT 4.0 и Windows 95/98, а сегодня существует большая вероятность того, что по решению суда этот браузер снова превратится в самостоятельное приложение.

Рис. 10.1. Нечеткость границы между ОС и приложениями

Вспомогательные модули ОС обычно подразделяются на следующие группы:

• • утилиты — программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;

• • системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;

• • программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор и даже игры;

• • библиотеки процедур различного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.

Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие программы и библиотеки ОС, обращаются к функциям ядра посредством системных вызовов (рис. 3.2).

Разделение операционной системы на ядро и модули-приложения обеспечивает легкую расширяемость ОС. Чтобы добавить новую высокоуровневую функцию, достаточно разработать новое приложение, и при этом не требуется модифицировать ответственные функции, образующие ядро системы. Однако внесение изменений в функции ядра может оказаться гораздо сложнее, и сложность эта зависит от структурной организации самого ядра. В некоторых случаях каждое исправление ядра может потребовать его полной перекомпиляции.

Рис. 10.2. Взаимодействие между ядром и вспомогательными модулями ОС

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

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

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

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

□ средства поддержки привилегированного режима

□ средства трансляции адресов;

□ средства переключения процессов;

□ система прерываний;

□ системный таймер;

□ средства защиты областей памяти.

Средства поддержки привилегированного режима обычно основаны на системном регистре процессора, часто называемом «словом состояния» машины или процессора. Этот регистр содержит некоторые признаки, определяющие режимы работы процессора, в том числе и признак текущего режима привилегий. Смена . режима привилегий выполняется за счет изменения слова состояния машины в результате прерывания или выполнения привилегированной команды. Число градаций привилегированности может быть разным у разных типов процессо-ров, наиболее часто используются два уровня (ядро-пользователь) или четыре (например, ядро, супервизор-выполнение-пользователь у платформы VAX или 0-1-2-3 у процессоров Intel x86/Pentium). В обязанности средств поддержки привилегированного режима входит выполнение проверки допустимости выполнения активной программой инструкций процессора при текущем уровне привилегированности.

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

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

Переключение контекста выполняется по определенным командам процессора, например по команде перехода на новую задачу. Такая команда вызывает автоматическую загрузку данных из сохраненного контекста в регистры процессора, после чего процесс продолжается с прерванного ранее места.

Система прерываний позволяет компьютеру реагировать на внешние события, синхронизировать выполнение процессов и работу устройств ввода-вывода, быстро переходить с одной программы на другую. Механизм прерываний нужен для того, чтобы оповестить процессор о возникновении в вычислительной системе некоторого непредсказуемого события или события, которое не синхронизировано с циклом работы процессора. Примерами таких событий могут служить завершение операции ввода-вывода внешним устройством (например, запись блока данных контроллером диска), некорректное завершение арифметической операции (например, переполнение регистра), истечение интервала астрономического времени. При возникновении условий прерывания его источник (контроллер внешнего устройства, таймер, арифметический блок процессора и т. п.) выставляет определенный электрический сигнал. Этот сигнал прерывает выполнение процессором последовательности команд, задаваемой исполняемым кодом, и вызывает автоматический переход на заранее определенную процедуру, называемую процедурой обработки прерываний. В большинстве моделей процессоров отрабатываемый аппаратурой переход на процедуру обработки прерываний со-провождается заменой слова состояния машины (или даже всего контекста процесса), что позволяет одновременно с переходом по нужному адресу выполнить переход в привилегированный режим. После завершения обработки прерывания обычно происходит возврат к исполнению прерванного кода.

Прерывания играют важнейшую роль в работе любой операционной системы, являясь ее движущей силой. Действительно, большая часть действий ОС инициируется прерываниями различного типа. Даже системные вызовы от приложений выполняются на многих аппаратных платформах с помощью специальной инструкции прерывания, вызывающей переход к выполнению соответствующих процедур ядра (например, инструкция int в процессорах Intel или SVC в мэйнфреймах IBM).

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

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

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

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

Объем машинно-зависимых компонентов ОС зависит от того, насколько велики отличия в аппаратных платформах, для которых разрабатывается ОС. Например, ОС, построенная на 32-битовых адресах, для переноса на машину с 16-битовыми адресами должна быть практически переписана заново. Одно из наиболее очевидных отличий — несовпадение системы команд процессоров — преодолевается достаточно просто. Операционная система программируется на языке высокого уровня, а затем соответствующим компилятором вырабатывается код для конкретного типа процессора. Однако во многих случаях различия в организации аппаратуры компьютера лежат гораздо глубже и преодолеть их таким образом не удается. Например, однопроцессорный и двухпроцессорный компьютеры требуют применения в ОС совершенно разных алгоритмов распределения процессорного времени. Аналогично отсутствие аппаратной поддержки виртуальной памяти приводит к принципиальному различию в реализации подсистемы управления памятью. В таких случаях не обойтись без внесения в код операци-онной системы специфики аппаратной платформы, для которой эта ОС предназначается.

Для уменьшения количества машинно-зависимых модулей производители операционных систем обычно ограничивают универсальность машинно-независимых модулей. Это означает, что их независимость носит условный характер и распространяется только на несколько типов процессоров и созданных на основе этих процессоров аппаратных платформ. По этому пути пошли, например, разработчики ОС Windows NT, ограничив количество типов процессоров для своей системы четырьмя и поставляя различные варианты кодов ядра для однопроцес-сорных и многопроцессорных компьютеров.

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

Для компьютеров на основе процессоров Intel x86/Pentium разработка экранирующего машинно-зависимого слоя ОС несколько упрощается за счет встроенной в постоянную память компьютера базовой системы ввода-вывода — BIOS. BIOS содержит драйверы для всех устройств, входящих в базовую конфигурацию компьютера: жестких и гибких дисков, клавиатуры, дисплея и т. д. Эти драйверы выполняют весьма примитивные операции с управляемыми устройствами, например чтение группы секторов данных с определенной дорожки диска, но за счет этих операций экранируются различия аппаратных платформ персо-нальных компьютеров и серверов на процессорах Intel разных производителей. Разработчики операционной системы могут пользоваться слоем драйверов BIOS как частью машинно-зависимого слоя ОС, а могут и заменить все или ^асть драйверов BIOS компонентами ОС.

Рис.10.3.Перенос ОС на разные аппаратные платформы

Переносимость операционной системы

Если код операционной системы может быть сравнительно легко перенесен с процессора одного типа на процессор другого типа и с аппаратной платформы одного типа на аппаратную платформу другого типа, то такую ОС называют переносимой (portable) или мобильной.

Хотя ОС часто описываются либо как переносимые, либо как непереносимые,

мобильность — это не бинарное состояние, а понятие степени. Вопрос не в том,

может ли быть система перенесена, а в том, насколько легко можно это сделать.

Для того чтобы обеспечить свойство мобильности ОС, разработчики должны следовать следующим правилам:

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

Объем машинно-зависимых частей кода, которые непосредственно взаимодействуют с аппаратными средствами, должен быть по возможности минимизирован. Так, например, следует всячески избегать прямого манипулирования регистрами и другими аппаратными средствами процессора. Для уменьшения аппаратной зависимости разработчики ОС должны также исключить возможность использования по умолчанию стандартных конфигураций аппаратуры или их характеристик, аппаратно-зависимые параметры можно «спрятать» в программно-задаваемые данные абстрактного типа. Для осуществления всех необходимых действий по управлению аппаратурой, представленной этими параметрами, должен быть написан набор аппаратно-зависимых функций. Каждый раз, когда какому-либо модулю ОС требуется выполнить некоторое действие, связанное с аппаратурой, он манипулирует абстрактными данными, используя соответствующую функцию из имеющегося набора. Когда ОС переносится, то изменяются только эти данные и функции, которые ими манипулируют. Например, в ОС Windows NT диспетчер прерываний преобразует аппаратные уровни прерываний конкретного типа процессора в стандартный набор уровней прерываний IRQL, с которыми работают остальные модули операционной системы. Поэтому при переносе Windows NT *ia новую платформу нужно переписать, в частности, те коды диспетчера прерываний, которые занимаются отображением уровней прерывания на абстрактные уровни IRQL, а те модули ОС, которые пользуются этими абстрактными уровнями, изменений не потребуют.

Аппаратно-зависимый код должен быть надежно изолирован в нескольких модулях, а не быть распределен по всей системе. Изоляции подлежат все части ОС, которые отражают специфику как процессора, так и аппаратной платформы в целом. Низкоуровневые компоненты ОС, имеющие доступ к процессорно-зависимым структурам данных и регистрам, должны быть оформлены в виде компактных модулей, которые могут быть заменены аналогичными модулями для других процессоров. Для снятия платформенной зависимости, возникающей из-за различий между компьютерами разных производителей, построенными на одном и том же процессоре (например, MIPS R4000), должен быть введен хорошо локализованный программный слой машинно-зависимых функций.

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

1. На какие группы делятся модули ОС?

2. Какие функции выполняют модули ядра?

3. Дайте понятие API.

4. На какие группы подразделяются вспомогательные модули ядра?

5. Какие модули называются транзитными?

6. Перечислите типовые средства аппаратной поддержки ОС.

7. Расскажите про механизм работы системы прерываний.

8. Какую ОС называют переносимой?

9. Назовите основные правила для обеспечения свойства мобильности ОС.

Преимущества и недостатки микроядерной архитектуры

Операционные системы, основанные на концепции микроядра, в высокой степени удовлетворяют большинству требований, предъявляемых к современным ОС, обладая переносимостью, расширяемостью, надежностью и создавая хорошие предпосылки для поддержки распределенных приложений. За эти достоинства

приходится платить снижением производительности, и это является основным недостатком микроядерной архитектуры.

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

Расширяемость присуща микроядерной ОС в очень высокой степени. В традиционных системах даже при наличии многослойной структуры нелегко удалить один слой и поменять его на другой по причине множественности и размытости интерфейсов между слоями. Добавление новых функций и изменение существующих требует хорошего знания операционной системы и больших затрат времени. В то же время ограниченный набор четко определенных интерфейсов микроядра открывает путь к упорядоченному росту и эволюции ОС. Добавление новой подсистемы требует разработки нового приложения, что никак не затрагивает целостность микроядра. Микроядерная структура позволяет не только добавлять, но и сокращать число компонентов операционной системы, что также бывает очень полезно. Например, не всем пользователям нужны средства безопасности или поддержки распределенных вычислений, а удаление их из традиционного ядра чаще всего невозможно. Обычно традиционные операционные системы позволяют динамически добавлять в ядро или удалять из ядра только драйверы внешних устройств — ввиду частых изменений в конфигурации подключенных к компьютеру внешних устройств подсистема ввода-вывода ядра допускает загрузку и выгрузку драйверов «на ходу», но для этого она разрабатывается особым образом (Например, среда STREAMS в UNIX или менеджер ввода-вывода в Windows NT). При микроядерном подходе конфигурируемость ОС не вызывает никаких проблем и не требует особых мер — достаточно изменить файл с настройками начальной конфигурации системы или же остановить не нужные больше серверы в ходе работы обычными для остановки приложений средствами.

Использование микроядерной модели повышает надежность ОС. Каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти и таким образом защищен от других серверов операционной системы, что не наблюдается в традиционной ОС, где все модули ядра могут влиять друг на друга. И если отдельный сервер терпит крах, то он может быть перезапущен без остановок или повреждения остальных серверов ОС. Более того, поскольку серверы выполняются в пользовательском режиме, они не имеют непосредственного доступа к аппаратуре и не могут модифицировать память, в которой хранится и работает микроядро. Другим потенциальным источником повышения надежности ОС является уменьшенный объем, кода микроядра по сравнению с традиционным ядром — это снижает вероятность появления ошибок программирования.

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

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

Рис.11.1. Смена режимов при выполнении системного вызова.

Серьезность этого недостатка хорошо иллюстрирует история развития Windows NT. В версиях 3.1 и 3.5 диспетчер окон, графическая библиотека и высокоуровневые драйверы графических устройств входили в состав сервера пользовательского режима, и вызов функций этих модулей осуществлялся в соответствии с микроядерной схемой. Однако очень скоро разработчики Windows NT поняли, что такой механизм обращений к часто используемым функциям графического интерфейса существенно замедляет работу приложений и делает данную операционную систему уязвимой в условиях острой конкуренции. В результате в версию Windows NT 4.0 были внесены существенные изменения — все перечисленные выше модули были перенесены в ядро, что отдалило эту ОС от идеальной микроядерной архитектуры, но зато резко повысило ее производительность.

Этот пример иллюстрирует главную проблему, с которой сталкиваются разработчики операционной системы, решившие применить микроядерный подход, — что включать в микроядро, а что выносить в пользовательское пространство. В идеальном случае микроядро может состоять только из средств передачи сообщений, средств взаимодействия с аппаратурой, в том числе средств доступа к механизмам привилегированной защиты. Однако многие разработчики не всегда жестко придерживаются принципа минимизации функций ядра, часто жертвуя этим ради повышения производительности. В результате реализации ОС образуют некоторый спектр, на одном краю которого находятся системы с минимально возможным микроядром, а на другом — системы, подобные Windows NT, в которых микроядро выполняет достаточно большой объем функций.

Одним из аспектов совместимости является способность ОС выполнять программы, написанные для других ОС или для более ранних версий данной ОС, а также для другой аппаратной платформы.

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

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

Одним из средств обеспечения совместимости программных и пользовательских интерфейсов является соответствие стандартам POSIX. Использование этого стандарта позволяет создавать программы в стилеUNIX, которые в последствии могут легко переноситься из одной системы в другую.

Трансляция библиотек

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

Эффективность этого подхода связана с тем, что большинство сегодняшних программ работают под управлением GUI (графических интерфейсов пользователя) типа Windows, Mac или UNIX Motif, при этом приложения тратят большую часть времени, производя некоторые хорошо предсказуемые действия. Они непрерывно выполняют вызовы библиотек GUI для манипулирования окнами и для других связанных с GUI действий. Сегодня в типичных программах 60-80 % времени тратится на выполнение функций GUI и других библиотечных вызовов ОС. Именно это свойство приложений позволяет прикладным средам компенсировать большие затраты времени, потраченные на покомандное эмулирование программы. Тщательно спроектированная программная прикладная среда имеет в своем составе библиотеки, имитирующие внутренние библиотеки GUI, но написанные на «родном» коде. Таким образом достигается существенное ускорение выполнения программ с API другой операционной системы. Иногда такой подход называют трансляцией для того, чтобы отличать его от более медленного процесса эмулирования кода по одной команде за раз.

Например, для Windows-программы, работающей на Macintosh, при интерпретации команд процессора Intel 80x86 производительность может быть очень низкой. Но когда производится вызов функции GUI открытия окна, модуль ОС, реализующий прикладную среду Windows, может перехватить этот вызов и перенаправить его на перекомпилированную для процессора Motorola 680x0 подпрограмму открытия окна. В результате на таких участках кода скорость работы программы может достичь (а возможно, и превзойти) скорость работы на своем «родном» процессоре.

Чтобы программа, написанная для одной ОС, могла быть выполнена в рамках другой ОС, недостаточно лишь обеспечить совместимость API. Концепции, положенные в основу разных ОС, могут входить в противоречие друг с другом. Например, в одной операционной системе приложению может быть разрешено непосредственно управлять устройствами ввода-вывода, в другой — эти действия являются прерогативой ОС. Каждая операционная система имеет свои собственные механизмы защиты ресурсов, свои алгоритмы обработки ошибок и исключи-' тельных ситуаций, особую структуру процесса и схему управления памятью, свою семантику доступа к файлам и графический пользовательский интерфейс. Для обеспечения совместимости необходимо организовать бесконфликтное сосуществование в рамках одной ОС нескольких способов управления ресурсами компьютера.

Способы реализации прикладных программных сред

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

Во многих версиях ОС UNIX транслятор прикладных сред реализуется в виде обычного приложения. В операционных системах, построенных с использованием микроядерной концепции, таких как, например, Windows NT или Workplace или С:\>. Это означает, что DOS готова к приему команд. Приглашение DOS, как правило, содержит информацию о текущем дисководе и о текущем каталоге. Например,

А:\> - дисковод А:, корневой каталог.

С:\ЕХЕ> - дисковод С:, каталог \ЕХЕ.

Иногда приглашение DOS включает также и информацию о текущем времени суток, например 12:59. С:\ЕХЕ\SYS>. Вид приглашения можно изменить с помощью команды DOS prompt.

Для ввода команды следует набрать эту команду на клавиатуре и нажать ENTER. При вводе команд можно пользоваться следующими клавишами для редактирования вводимой команды:

• ВАСKSРАСЕ - удаление предыдущего символа;

• FЗ - вызов в командную строку предыдущей команды;

• DEL - удаление текущего символа;

• INS - включение-выключение режима вставки;

• ESC- очистка всей командной строки.

Если при начальной загрузке операционной системы была запущена программа DOSKEY, то можно пользоваться следующими клавишами:

• - перемещение курсора;

• Т - вывод в командную строку предыдущей команды;

• I - вывод в командную строку следующей команды;

• F7 - вывод на экран списка хранимых команд и их номеров.

Для вывода в командную строку текста команды с данным номером следует нажать F9.

Любая команда, вводимая пользователем, указывает на необходимость выполнения либо внутренней, либо внешней команд DOS, либо других программ или командных файлов. Для выполнения внутренней или внешней команды DOS необходимо ввести имя этой команды и ее параметры. Поиск выполняемой программы. Когда пользователь вводит команду, которая не относится к числу внутренних команд DOS, командный процессор ищет программу с именем, указанным в команде. Поиск проводится среди файлов со следующими расширениями: СОМ - программные файлы; ЕХЕ - программные файлы (в другом формате), ВАТ - пакетные командные файлы.

Поиск выполняется в том порядке, в котором эти расширения перечислены выше. Если пользователь не указал, в каком каталоге следует искать программу, то поиск производится в текущем каталоге и в каталогах, заданных командой DOS Promt.

Если нужная программа в этих каталогах не найдена, то на экран выводится сообщение “Bad command or file name”. Например, если пользователь ввел команду ALFA, то командный процессор будет искать в текущем каталоге и каталогах, заданных командой DOS Path, файл с именем ALFA.СОМ, или ALFA.ЕХЕ, или ALFA.ВАТ. Если найденный файл имеет расширение СОМ или ЕХЕ, то командный процессор выполняет загрузку этого файла в память и передает ему управление, чтобы этот файл мог выполнить свою работу. Если найденный файл имеет расширение ВАТ, т.е. является командным файлом, то он содержит в формате текстового файла последовательность команд, которые должны выполняться так, как будто они вводятся с клавиатуры.

Явное указание каталога в команде. Для выполнения программы или командного файла, расположенного не в текущем каталоге и не в одном из каталогов, перечисленных в команде Promt, необходимо сообщить DOS, в каком каталоге надо искать программу или командный файл. Для этого следует в качестве имени команды использовать полное имя файла, включающее путь к тому каталогу, в котором находится нужная программа или командный файл. Расширение имени файла (т.е. СОМ, ЕХЕ и ВАТ) можно не указывать. Например, пусть текущий каталог - С:\DОС\WORD, а надо выполнить программу HYPHEN, находящуюся в каталоге С:\DОС\PROG, и указать параметры программы PAPER.DОС /Р. Тогда для выполнения этой программы необходимо выполнить команду:

С:\DOC\PROG\HYPHENPAPER.DОС/Р

Иногда выполняемая программа начинает работать неправильно или же не реагирует на нажатия клавиш и т.д. В этом случае выполнение программы следует прекратить. Это делается так: сначала надо одновременно нажать на клавиши Ctrl и Break, чтобы прекратить выполнение программы или вывести ее из состояния "зависания";

-если это не помогает, то надо перезагрузить DOS. Для этого следует одновременно нажать на клавиши Ctrl + Alt + Dе1;

-если при нажатии Ctrl + Alt + Del компьютер не перезагружается, то следует нажать клавишу “Reset” на корпусе компьютера;

-если в Вашем компьютере нет клавиши "Reset, то надо выключить компьютер, а затем включить его.

Вы можете прекратить выполнение любой команды DOS нажав комбинацию клавиш Ctrl и С или Ctrl и Break. Заметим, что прикладные программы не обязаны (хотя и могут) реагировать на нажатие Ctrl+С или Сtrl+Break.

Если команда DOS выдает слишком много информации на экран, можно воспользоваться комбинацией клавиш Ctrl+S для приостановки выдачи. Повторное нажатие Ctrl+S возобновит выдачу.

Для других программ выдачу информации на экран можно приостановить нажатием комбинации клавиш Ctrl+NumLock. Для продолжения выполнения надо нажать любую клавишу.

Если при выполнении команды DOS на экране появляется сообщение: Strike any key when ready (Нажмите любую клавишу, когда будете готовы) или Strike any key to continue (Для продолжения нажмите любую клавишу), то для продолжения работы следует нажать любую буквенно-цифровую клавишу, Пробел или Enter.

DOS предоставляет некоторые возможности по редактированию вводимых команд во время их набора, однако они весьма ограничены и неудобны. Поэтому чаше всего пользователи предпочитают запускать какую-либо специальную резидентную программу, которая позволяет выводить в командную строку одну из нескольких последних введенных команд и редактировать команду в командной строке более удобным образом. Операционная система MS DOS версии 5.0 содержит для этого специальную программу DOSKEY.

Для установки программы следует вставить в файл AUTOEXEC.BAT команду вызова программы DOSKEY. После вызова DOSKEY устанавливается резидентно, и предоставляемые ею возможности доступны до перезагрузки компьютера. После запуска программа DOSKEY командную строку DOS можно редактировать следующим образом:

• → - перемещение курсора вправо;

• ← -перемещение курсора влево;

• Ctrl → - перемещение курсора вправо на слова:

• Ctrl ← - перемещение курсора влево на слово.

• Home - перемещение курсора к началу строки:

• End - перемещение курсора к концу строки.

• Del - удаление символа под курсором;

• ВасkSрасе - удаление символа слева от курсора:

• Еsс - очистка командной строки;

• Ctrl+Home - очистка командной строки от текущей позиции курсора до начала строки;

• Ctrl+Еnd - очистка командной строки от текущей позиции курсора до конца.

• Ins- включение и выключение режима вставки.

В режиме вставки курсор увеличивается в толщине. При нажатая клавиш Enter и Еsc режим вставки выключается. Вызов в командную строку ранее введенных команд Программа DOSKEY хранит несколько последних введенных пользователем команд и может выводить их в командную строку DOS.

Это позволяет легко повторить одну из последних команд, сделав при необходимости в ней нужные изменения. Для вызова в командную строку ранее введенных команд и управления списком команд можно использовать следующие клавиши:

• Стрелка вниз - вызов предыдущей команды;

• Стрелка вверх - вызов следующей команды;

• Аlt+F7 - очистка списка команд;

• F7 - вывод на экран списка запомненных команд и их номеров;

• F9 - вывод из списка в командную строку текста команды с данным номером. Номер команды запрашивается.

Напомним, что команды состоят из имени команды и, возможно, параметров, разделенных пробелами. Имя команды и параметры могут набираться как прописными, так и строчными латинскими буквами. Мы будем отмечать скобками "[" и "]" необязательные элементы команд.

Создание текстовых файлов

Чтобы создать текстовый файл, лучше всего воспользоваться любым редактором, который может работать с текстовыми файлами, например встроенный редактором, NortonCommander.

Небольшие текстовые файлы можно набрать непосредственно с клавиатуры. Для этого необходимо ввести команду СОРY СОN имя файла.

После ввода этой команды нужно будет поочередно вводить строки файла. В конце каждой строки надо нажимать, клавишу ENTER, а после ввода последней - нажать клавишу F6 и затем Enter. Команда СОРY выведет сообщение: 1 file(s) copied (Один файл скопирован).

Удаление файлов

Для удаления файлов имеется команда DEL Формат команды:

DEL [дисковод:] [путь] имя - файла

В имени файла можно употреблять символы "*" и "?", если имя или расширение желаете опустить.

Пример:

DEL PAPER.DOC - удаление файла РАРЕR.DОС из текущего каталога.

Если Вы захотите удалить все файлы из каталога, например, с помощью команды DEL*.*, то DОS спросит Вас: Are you sure (Y/N?) (Вы уверены?) Для удаления файлов надо нажать Y и ENTER, для отмены команды - N и ENTER.

Переименование файлов

Для переименования файлов имеется команда REN(RENAME). Формат команды:

REN [дисковод:][путь] {имя файла} {имя файла}. Первое имя файла в команде задает имя (имена) переименовываемых файлов, второе - новое имя (имена) файлов. Дисковод и путь задают, в каком каталоге переименовываются файлы. Если дисковод или путь опущены, то подразумеваются текущий дисковод и текущий каталог. В именах файлов можно употреблять символы "*" и "?". Переименовываются все файлы из заданного каталога, подходящие под шаблон, заданный в первом имени файла в команде. Если символы "*" и "?" имеются во втором имени файла в команде, то символы имен файлов на соответствующих позициях не изменяются. Примеры:

REN GАММА.DОС GАММА.ТХТ - переименование файла GАММА.DОС в текущем каталоге. Новое имя файла - GАММА.ТХТ;

REN А:*.DОС *.ТХТ - переименование всех файлов с расширением DОС в текущем каталоге на дисководе А:, файлы получают расширение ТХТ.

Копирование файлов

Для копирования файлов имеется команда COPY. Формат команды: СОРY {имя файла} {имя файла} или СОРY имя файла [имя каталога].

В именах файлов можно употреблять символы "*" и "?". Из каталога, указанного в первом параметре команды, копируются файлы, заданные именем файла в первом параметре команды. Дисковод и путь во втором параметре команды указывают каталог, в который копируются файлы. Если во втором параметре имя файла отсутствует, то имена файлов при копировании не меняются. Если во втором параметре команды задано имя файла, то оно указывает новое имя копируемого файла. Символы "*" и "?" в имени файла во втором параметре команды указывают, что соответствующие символы в именах копируемых файлов при копировании не меняются. Примеры:

СОРY GАММА.DОС GАММА.ТХТ - копирование файла GАММА.DОС в текущем каталоге, создается файл GАММА.ТХТ в текущем каталоге;

СОРY А:\*.* - копирование всех файлов из корневого каталога накопителя А: в текущий каталог;

\Т\*.DOC С:\*.ТХТ - копирование всех файлов с расширением DОС из каталога \Т текущего диска в текущий каталог диска С:. Файлы получают расширение ТХТ.

Команда смены текущего дисковода.

Для смены текущего дисковода надо набрать имя дисковода, который должен стать текущим, и затем двоеточие, например:

А: - переход на дисковод А:

В: - переход на дисковод В:

С: - переход на дисковод С:

Напоминаем, что после ввода команды надо нажать клавишу ENTER. Не следует делать текущим дисковод на дискетах, если: на дисководе нет дискеты.

Изменение текущего каталога

Для изменения текущего каталога имеется команда CD (Change Directory). Формат команды: СD [дисковод:]путь.

Если задан дисковод, то текущий каталог изменяется на этом дисководе, иначе - на текущем дисководе. Примеры:

CD \ - переход в корневой каталог текущего диска;

СD \ЕХЕ\DОS - переход в каталог \ЕХЕ\DОS.

Просмотр каталога

Для вывода оглавления каталога имеется команда DIR. Формат команды: DIR [дисковод:] [путь]\ [имя файла] [/Р] [/W] В имени файла можно употреблять символы "*" и "?". Если имя файла не задано, то выводится все оглавление каталога, иначе выводятся только сведения о данном файле или группе файлов. Если в команде не указаны дисковод или путь, то подразумеваются текущий дисковод и текущий каталог. Формат выдачи информации о дате и времени может быть различным, он устанавливается предложением COUNTRY файла CONFIG.SYS Примеры:

DIR - вывести оглавление текущего каталога;

DIR*.ЕХЕ - вывести сведения о всех файлах с расширением ЕХЕ из текущего каталога;

DIR А:\ - вывести оглавление корневого каталога на дисководе А:.

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

Создание каталога

Для создания нового каталога имеется команда МD (Make directory). Формат команды: MD [дисковод:]путь. Примеры:

МD GАММА - создание подкаталога GАММА в текущем каталоге;

МD А:\\WОRК - создание подкаталога WORK в корневом каталоге диска А:.

Для удаления (пустого) каталога имеется команда RD (Remove Directory). Формат команды:RD [дисковод:]путь. Примеры:

RD GAMMA - удаление подкаталога GAMMA в текущем каталоге;

RD A:/ WORK - удаление подкаталога WORK в корневом каталоге диска А:.

Отметим, что удалить можно только пустой каталог, т.е. каталог, не содержащий файлов и подкаталогов.

Таблица размещения файлов и директорий

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

На стандартной дискете, имеющей по 8 секторов на дорожке, FAT занимает 1 сектор. На стандартной дискете с 9-ю секторами на дорожке для таблицы отводится 2 сектора.

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

Дискету не нужно форматировать при каждом ее использовании, форматирование необходимо лишь в случае, когда начинается эксплуатация совершенно новой дискеты. Когда дискета отформатирована, ее можно применять для записи и удаления файлов столько раз, сколько это необходимо пользователю. Формат дискет сохраняется на все время их эксплуатации. Повторное форматирование может потребоваться только в случае, если возникает необходимость изменения формата дискеты, например, если для дискеты на 1,44 Мб нужно установить формат 360 Кб или если возникла необходимость удаления с дискеты всех без исключения файлов (в том числе и системных файлов).

Для форматирования дисков используется команда FORMAT. Она является наиболее опасной из всех команд в случае совершения ошибки. Эта опасность заключается в том, что при ошибочном форматировании дискеты, на которой хранятся важные файлы, их практически невозможно восстановить.

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

Начиная с операционной системы DOS 3.2, во избежание ошибочного форматирования, пользователю задается два вопроса. Сначала операционная система запрашивает имя жесткого диска, который предназначен для форматирования, а затем с помощью следующего вопроса убеждается в том, действительно ли данный жесткий диск предназначен для форматирования, причем на этот вопрос следует дать положительный ответ путем нажатия клавиши "Y" (yes=да).

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

В операционной системе МS DOS 5.0 команда FORMAT претерпела некоторые изменения. В частности, добавлен ключ /G, позволяющий осуществлять форматирование диска с сохранением содержавшейся на нем информации. Сохранять и восстанавливать потерянную в результате форматирования информацию позволяют также новые команды операционной системы DOS 5.0 МIRROR и UNFORMAT.

Рассмотрим команду С:\> FORMAT А:

Прежде всего, следует обратить внимание на то, что данная команда форматирует дискету в соответствии с типом дисковода. Если используется дисковод на 1,2 Мб, то при форматировании дискеты будет получен именно этот формат и это не зависит от емкости самой дискеты. Если используется дискета на 360 Кб, то только часть ее секторов может быть использована после форматирования, остальные секторы будут непригодны для использования (bad sector).

В эксплуатации подобная дискета будет весьма ненадежной, т.к. была предпринята попытка форматирования слишком большого числа дорожек и секторов. В дисководе на 1,44 Мб следует применять только дискеты типа НС или НD, если необходимо получить емкость дискеты 1,44 Мб.

При нажатии на клавишу Enter на экране дисплея появляется сообщение: insert new diskette A: ENTER when ready. В этом сообщении предлагается установить новую дискету в дисковод А: и после этого нажать клавишу ENTER. В более ранних версиях операционной системы в сообщении предлагалось нажать на какую-либо клавишу, но это означало то же самое. Нажатие на клавишу сообщает операционной системе, что дискета установлена на место, и можно начать ее форматирование. Всегда следует проверять, что в дисковод А: установлена дискета, на которой нет важных файлов. В начале форматирования на экране дисплея появится сообщение: Head: 0 cylinders: 0. Первый ноль обозначает сторону дискеты. В процессе форматирования на этом месте поочередно будут появляться 0 и 1. Команда FORMAT форматирует обе стороны дискеты. Второй ноль соответствует номеру форматируемой в данный момент дорожки. Внешняя дорожка имеет номер 0, а внутренняя - 39 (360 Кб) или 79 (1,2 Мб: 1,44 Мб; 2,88 Мб) в зависимости от применяемой дискеты. При форматировании дорожка делится на секторы, которых может быть 9 (360 Кб), 15 (1,2 Мб), 18 (1,44 Мб) или 36 (2,88 Мб). Число секторов при форматировании не выводится на экран дисплея. Когда процесс форматирования приближается к концу, на экране дисплея появляется сообщение, содержание которого зависит от того, какой формат дискеты установлен.

В конце операционная система DOS запрашивает, будет ли производиться форматирование следующей дискеты. Если дается утвердительный ответ Y (yes=да), то в дисковод А.

На данный момент мировая компьютерная индустрия развивается очень стремительно. Производительность систем возрастает, а, следовательно, возрастают возможности обработки больших объёмов данных.

Операционные системы класса MS-DOS уже не справляются с таким потоком данных и не могут целиком использовать ресурсы современных компьютеров. Поэтому в последнее время происходит переход на более мощные и наиболее совершенные операционные системы класса UNIX, примером которых и является Windows NT, выпущенная корпорацией Microsoft.

Конфигурационные файлы config.sys и autoexec.bat

В DOS предусмотрена возможность изменения в процессе загрузки компьютера ряда параметров настройки операционной системы, подключения дополнительных устройств, создания необходимой операционной среды для работы пользователя. Эти задачи решаются с помощью конфигурационных файлов config.sys и autoexec.bat, находящихся в корневом каталоге системного диска (загрузочной дискеты). Эти файлы могут отсутствовать, тогда параметры среды устанавливаются по умолчанию, в процессе загрузки у пользователя запрашивается дата и время.

Основные команды файла config.sys:

break - управляет прерыванием программы по командам Ctrl+C и Ctrl+Break;

buffers - определяет число буферов операционной системы;

country - выбор национального формата дат и денежных средств;

device - установка драйверов устройств;

devicehigh - установка драйверов устройств с их загрузкой в блоки верхней памяти;

dos - загрузка DOS в область высоких адресов, поддержка блоков UMB;

files - предельное число одновременно открываемых файлов;

lastdrive - максимальное число доступных логических дисководов;

rem - комментарий:

shell - определение командного процессора и размера области памяти для переменных окружения;

stacks - число и размер стеков операционной системы;

switches - установка режима загрузки операционной системы.

С помощью команды device (devicehigh) могут быть подключены следующие драйверы:

ansi.sys - расширенные возможности управления клавиатурой и дисплеем (поддержка Esc-последовательностей в команде Prompt);

dblspace.sys - поддержка системы сжатия дисков;

display.sys - переключение кодовых страниц дисплея;

emm386.exe - менеджер расширенной памяти;

hiinem.sys - менеджер дополнительной памяти;

vdisk.svs - организация в ОЗУ электронного диска;

smartdrv.sys - двойная буферизация и кэширование дисков.

Пример конфигурационного файла config.sys:

shell=A;\command.com А:\ /Е:512 /Р

device=A:\ansi.sys

lastdrive=E Команда shell определяет командный процессор и размер памяти (в байтах), отводимой для переменных окружения. В версии Novell DOS опция /Р необходима для выполнения файла autoexec.bat в процессе загрузки операционной системы. Подключение драйвера ansi.sys с помощью команды device обеспечивает расширенные возможности управления клавиатурой и дисплеем, в частности, позволяет в команде prompt применять Esc-последовательности для формирования нестандартного системного приглашения DOS, изменяя цвета символов и фона, позицию курсора и др. Командой lastdrive определяется число логических дисков в данной конфигурации операционной системы.

Если при конфигурировании операционной системы преследуется цель отменить возможность применения трассировочного режима загрузки операционной системы, то в файл conilg.sys следует добавить команду:

switches=/F /N Если необходимо высвободить максимально возможную память для прикладных программ, то с помощью администратора дополнительной памяти himem.sys формируется область высокой памяти и в нее переносится часть компонентов операционной системы. Для этого в файл config.sys включаются команды:

device=A:\himem.sys

dos=high.umb devicehigh=A:\ansi.sys

Пример файла autoexec.bat:

@echo off pathA:\;A:WC

A:\KEYRUS\keyrus /Font=A:\KEYRUS\vga.fnt /Color=13 /Graph=8

/Scan=29e /Keys- A:\KEYRUS\kbddgk

сls prompt=$E[l;37;44m$E]s$E[l;65HФaмилия И.O.$E]u$P$G

Первая команда служит для отмены вывода на экран текста команд файла autoexec.bat (на экран будут выводиться только результаты их выполнения).

Вторая команда определяет пути поиска исполняемых программных модулей, если они не содержатся в текущем каталоге. Третья команда подключает русификатор. Команда сls очищает экран, а команда prompt устанавливает нестандартный вид приглашения DOS.

В файле autoexec.bat, как и в любом другом командном файле (bat-файле), можно использовать команды условной передачи управления, в том числе, в зависимости от значения кода завершения предшествующей программы.

Система прерываний BIOS и DOS

Прерывания - это сигналы, заставляющие центральный процессор компьютера приостановить выполнение текущей работы и перейти на выполнение программы, называемой обработчиком прерываний (interrupt handier). Обработчик прерывания определяет причину прерывания, вы-полняет - запланированные для данного прерывания действия, после чего возвращает управление центральному процессору.

Различают аппаратные прерывания (завершение операций ввода-вывода, обнаружение аппаратного сбоя и т.д.) и программные прерывания, инициируемые операционной системой или прикладной программой.

Для эффективного использования прерываний установлены типы и уровни прерываний. Всего установлено 256 типов (порядковых номеров) прерываний, каждому из которых соответствуют 4 ячейки (два слова) первом килобайте ОЗУ, называемые вектором прерывания. Таким образом, адрес каждого вектора прерывания равен типу прерывания, умноженному на 4. В ячейках вектора прерывания хранятся относительный и сегментный адреса обработчика прерывания данного типа.

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

Прерывание заставляет процессор произвести следующие действия:

1. Поместить в стек регистр флагов.

2. Обнулить флаг трассировки TF и флаг прерываний IF для блокировки других маскируемых прерываний.

3. Поместить в стек значение регистра команд CS.

4. Вычислить вектор прерывания, умножив на 4 тип прерывания.

5. Загрузить второе слово вектора прерывания в регистр GS.

6. Поместить в стек значение указателя команд IP.

7. Загрузить в указатель команд первое слово вектора прерывания и приступить к выполнению программы обработки прерывания.

Программа обработки прерывания заканчивается командой возврата из прерывания, предписывающей выполнение обратных действий: загрузку регистров IP, CS и регистра флагов из стека, что приводит к возврату в основную программу в точку, где она была прервана.

Системные программы, адреса которых хранятся в векторах прерываний, в большинстве своем являются всего лишь диспетчерами, открывающими доступ к большим группам программ, реализующих системные функции. Особенно характерен в этом отношении вектор 21h, через который осуществляется вызов практически всех функций DOS: ввод с клавиатуры и вывод на экран, обслуживание файлов, каталогов и дисков, управление памятью и др.

Обращение из прикладной программы к системным функциям осуществляется единообразно. В регистр АН засылается номер функции (не путать с типом прерывания), в другие регистры - исходные данные, необходимые для выполнения конкретной системной программы. После этого выполняется команда int с числовым аргументом, указывающим тип (номер) прерывания. Большинство функций DOS и многие функции BIOS возвращают в флаге переноса CF код завершения. Если функция выполнилась успешно CF=0, в случае любой ошибки CF=1. В последнем случае в одном из регистров (чаще всего в АН) возвращается еще и код ошибки.

Операционные системы Windows

На сегодняшний момент операционная система Windows фирмы Microsoft бесспорно считается самой распространенной операционной системой на ПК: в мире более 200 млн. IBM PC-совместимых компьютеров, и система Windows установлена на 150 млн. из них.

Первоначально, Windows, разрабатывалась не как операционная система, какой мы привыкли видеть современные ее версии, а как графическая оболочка MS-DOS. Надо отметить, что концепция графического интерфейса была разработана отнюдь не Microsoft. Уже за несколько лет до внедрения Windows существовали компьютеры Apple Macintosh, с графической операционной системой (MacOS), интерфейс которой был более дружественным и понятным рядовому пользователю, в отличие от командной строки MS-DOS. Строго говоря, Windows, не единственная попытка избавить пользователя от командной строки на IBM-совместимых компьютерах. Очень известной, в свое время была псевдографическая (на самом деле работавшая в текстовом режиме), оболочка Norton Commander корпорации Symantec. Она ускоряла в несколько раз процесс навигации по дисковому пространству, к тому же, более естественно представляла иерархию каталогов в виде дерева. Однако Windows появилась раньше Norton, хотя Norton был более популярен, в частности, из-за низких системных требований.

В те времена, когда работа над Windows только начиналась, считалось, что будущее принадлежит интегрированным средам. Фирма VisiCorp - создатель первой электронной таблицы VisiCalc, занималась созданием пакета Vision, работавшего в текстовом режиме с возможностью управления манипулятором "мышь". Пакет предназначался для объединения нескольких приложений одной многооконной оболочкой. Фирма Quarterdesk в то время разрабатывала пакет DESQ, который впоследствии стал основой для ее многозадачной среды DESQView.

Позиция фирмы Microsoft была иной. После посещения исследовательского центра Xerox PARC президент фирмы Билл Гейтс решил заняться созданием графической среды, которая послужила бы стандартной платформой для разработчиков прикладных программ. Тогда же этот центр посетил и Стив Джобб, создатель компьютеров Macintosh и, позднее, NeXT. Итак, Microsoft поставила себе задачу по созданию платформы для разработчиков. Предполагалось обеспечить разработчиков встроенными функциями для реализации пользовательского интерфейса и его компонентов - окон, меню, панелей диалога, которые могли бы управляться с помощью клавиатуры или мыши.

Когда работа над средой Windows только начиналась, в распоряжении Microsoft был компьютер с процессором 8088 и максимальным объемом памяти 640 Кбайт. Предполагалось, что пользователи этой среды имеют порядка 256 Кб памяти, а жесткий диск им не доступен из-за высокой цены. Работа графической среды в таких условиях была безумно медленной. В 1983 г. стали просачиваться первые сведения о разработке Windows.

Windows 1.0

В ноябре 1985 года в Лас-Вегасе фирма Microsoft созвала пресс-конференцию. Эта пресс-конференция плавно перетекла в презентацию нового продукта - Microsoft Windows 1.0.

По сравнению с интерфейсом Macintosh, среда Windows 1.0 выглядела очень "бледно". Окна на экране не перекрывались (а располагались, заполняя экран, что называется tile), но имели кнопки для изменения размера и могли перемещаться мышью. В первой версии Windows не была реализована метафора "рабочей поверхности" (desktop), к тому времени уже имевшаяся в среде Мас и в графической оболочке GEM фирмы Digital Research. Программа управления файлами MS-DOS Executive работала в текстовом режиме.

Среда Microsoft Windows 1.0 не была требовательна к ресурсам: для ее работы было достаточно 256 Кбайт памяти и компьютера с двумя дисководами. Но как показал опрос первых пользователей, наличие жесткого диска и 640 Кбайт памяти существенно повышали производительность среды. Ряд проблем был решен, когда фирма Microsoft ввела поддержку расширенной памяти (LIM), стандарт которой был изначально разработан фирмой Lotus для работы электронной таблицы 1-2-3.

Windows 2.0

В 1987 году была представлена новая версия Windows 2.0. По сравнению с версией 1.0, версия 2.0 имела ряд усовершенствований. Тогда как программа MS-DOS Executive по-прежнему работала в текстовом режиме, и не было графической программы управления файлами и рабочей области, появились перекрывающиеся окна с кнопками максимизации и минимизации. Поддержка перекрывающихся окон стала одной из причин длительных судебных процессов между фирмой Apple и фирмами Digital Research (графическая оболочка GEM) и Microsoft. Окна могли перемещаться по экрану; была реализована поддержка клавиатурных эквивалентов для большинства стандартных команд и функций меню.

Не менее важным было введение протокола динамического обмена данными (DDE), и пакет Excel явился первым примером использования этой концепции. Протокол давал возможность установить динамическую связь между приложениями. Аналогичный протокол был реализован, фирмой Apple только в рамках операционной системы System 7 в 1990 году.

Использование процессора 80386

Годом позже среда Windows была поделена на два продукта, символизируя тем самым разделение рынка на системы с процессором 386 и без него. Версия Windows/286 была улучшенной версией Windows 2.0 с поддержкой протокола управления расширенной памятью EMS 4.0. Версия Windows/386 предоставляла несколько больше возможностей. Используя аппаратные преимущества процессора 80386, эта среда могла эмулировать расширенную память в дополнительной памяти и выполнять одновременно несколько программ, работая в виртуальном 8086 режиме процессора 80386.

Но даже при наличии Windows/386, высокопроизводительных процессоров, значительного количества памяти и поддержке VGA-графики среде Windows не доставало большого количества прикладных программ. Большинство фирм - производителей программного обеспечения делали ставку на OS/2. К их числу относились Borland и Lotus. В их планы разработка приложений для среды Windows в ближайшее время не входила.

Windows 3.0

Крупным шагом вперед стал выпуск в мае 1990 года версии Windows 3.0. Фирма Microsoft ввела поддержку защищенного режима процессоров 80286 и 80386, что давало прикладным программам больше памяти. Поддержка 386 расширенного режима была перенесена из Windows/386. Прикладным программам теперь отводилось до 16 Мбайт памяти, причем не странично организованной, как в LIM EMS, а доступной для одновременного использования. Была реализована псевдомногозадачность и возможность выполнения DOS- программ в окне.

Заметно улучшился пользовательский интерфейс. Программы управления файлами File Manager и Program Manager были выполнены в стиле самой среды, появилась программа конфигурации Control Panel, были добавлены пропорциональные шрифты, а также объемные интерфейсные элементы: полосы прокрутки и кнопки.

Изменения в работе дисплейных драйверов и возможность адресации большего объема памяти позволили Windows работать существенно быстрее.

Windows 3.1

Несмотря на все улучшения, в среде Windows 3.0 были и существенные упущения: недостаток системных ресурсов, что делало невозможным использование имеющейся памяти, и знаменитые системные ошибки (UAE), происходившие намного чаще, чем этого можно было ожидать. Решение этих проблем привело к появлению версии Windows 3.1, которая изначально планировалась как небольшое улучшение версии 3.0. На самом деле введение поддержки масштабируемых шрифтов технологии TrueType и исправление ряда принципиальных ошибок превратило Windows 3.1 в самостоятельный проект, к которому в результате добавились значительные новшества. Так, был реализован протокол создания составных документов OLE, документирован протокол Drag-and-Drop, улучшен интерфейс с протоколом DDE (библиотека DDEML), введены панели диалога общего назначения (COMMDLG), в ответ на многочисленные запросы были открыты ранее недокументированные функции и рабочие области ядра (TOOLHELP).

В основе организации Windows 3.х лежит 16-разрядная архитектура. Ее ядро, большинство важнейших компонентов и собственные прикладные программы представляют собой 16-разрядные коды. (Ее редко используемый интерфейс Win32 API дает возможность выполнять 32-разрядные прикладные программы, но не позволяет работать с несколькими потоками.)

Все собственные прикладные программы Windows 3.х и все ее системные библиотеки DLL отображаются в общее сегментированное виртуальное адресное пространство размером 4 Гбайт. Все эти компоненты видимы (и часто доступны на уровне записи) друг для друга. В нижней части этого адресного пространства, обычно ниже метки 1 Мбайт, размещаются драйверы устройств реального режима, обеспечивающие взаимодействие с периферийными подсистемами, такими, как видеоплаты или принтеры. В Windows 3.11 драйверы VxD файловой системы используются для отыскания маршрута доступа к диску в защищенном режиме.

Упрощенная организация системы позволяет получить очень малое рабочее множество (working set - прикладной и системный код, который необходимо загрузить в память для любой данной задачи), поэтому Windows 3.1х может успешно выполняться на компьютерах с ОЗУ ограниченного размера. Такая архитектура также способствует повышению эффективности исполнения кода, так как программы могут вызывать функции API из собственного пространства памяти. Недостаток архитектуры состоит в слабой защите от сбоев при неправильной работе программ. Программы и системные компоненты видимы друг для друга, модуль, содержащий ошибки, может легко испортить содержимое памяти, принадлежащей другому процессу. Хотя Windows 3.1х способна восстанавливать свою работоспособность после некоторых нарушений защиты общего характера (General Protection Fault), зачастую результатом становится крах всей системы.

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

Другой недостаток, долгое время вызывавший недовольство пользователей Windows 3.1х, - ограниченность ресурсов модулей GDI и USER. Эти ограничения возникают в связи с тем, что системные библиотеки GDI и USER используют несколько 64-Кбайт динамических областей (хипов) для хранения разнообразных скрытых структур данных, создаваемых выполняющимися в данный момент прикладными программами. Когда эти небольшие хипы переполняются, вы получаете сообщение о нехватке памяти даже если в системе остается много свободной памяти.

Windows for Workgroups 3.11

В ноябре 1992 года фирма Microsoft выпустила несколько обновленную версию Windows - Windows for Workgroups 3.11, первую операционную систему Windows, включающую в свой состав сетевые средства. Данная система логически продолжает линию Windows и позволяет соединить в единую сеть отдельные компьютеры по бессерверной схеме (одноранговая сеть), а также позволяет работать как сетевой клиент для сервера Windows NT. Теперь для организации сети необходимо иметь только Windows и соответствующее оборудование - сетевые карты, кабели и т.д. В Windows for Workgroups впервые стали использоваться 32-разрядные драйверы виртуальных устройств (VxD) и 32-разрядный доступ к жесткому диску, что значительно повысило производительность. Еще одним новшеством стало то, что Windows for Workgroups работала только в 386-м расширенном режиме, тем самым, подписывая смертный приговор устаревшим 286-м процессорам.

Windows NT 3.51

Windows NT (NT – New Technology), выпущенная в июле 1993 года, разработана как операционная система высокого класса для компьютеров класса high-end. Она изначально разрабатывалась как сетевая операционная система для работы, как в качестве сервера, так и в качестве рабочей станции. Windows NT это не последовательница Windows 3.х, а в корне новая операционная система, открывающая новую линию Windows. Внешне Windows NT очень сильно похожа на Windows 3.х, но ее внутренняя структура в корне отличается от Windows 3.х. Архитектура Windows NT разрабатывалась таким образом, чтобы система обладала максимальной устойчивостью и надежностью. Windows NT обеспечивает стабильность вполне сравнимую с серверами UNIX. Windows NT функционирует не только на платформе Intel, но и на RISC-процессорах: PowerPC, MIPS R4000, DEC Alpha. Windows NT может исполнять приложения DOS, Win16, Win32, POSIX и приложения OS/2, не использующее графический интерфейс. Одним из важнейших новшеств стало использование новой файловой системой NTFS, обеспечивающей высокую надежность файловой системы и практически любого восстановления сбоев, кроме того, могут использоваться старая система FAT и HPFS (OS/2 Warp), которые позволяют использовать Windows NT на одном разделе жесткого диска с DOS и OS/2. Также нововведением стала поддержка симметричной мультипроцессорной обработки и технологии OpenGL, позволяющей работать с трехмерными объектами. Эта операционная система требовательна к аппаратуре, официальные требования составляют: процессор 386/25, 12 Мбайт ОЗУ, 90 Мбайт свободного места на диске.

Для работы Windows NT нужно, как минимум 12-Мбайт ОЗУ, а для инсталляции может потребоваться до 75 Мбайт пространства на жестком диске. Так же как и Windows 95, это 32-разрядная многозадачная, многопотоковая операционная система, но, кроме того, она обладает важными средствами обеспечения безопасности, надежной новой файловой системой с регистрационным журналом и может быть перенесена на отличные от Intel аппаратные платформы. Ее базовая архитектура обеспечивает лучшую защиту, чем любая соперничающая с ней система.

В среде Windows NT служебные программы операционной системы выполняются в отдельных адресных пространствах, как и любая отдельная прикладная программа, написанная в соответствии с Win32 API. Существующие 16-разрядные программы для среды Windows могут выполняться в защищенных адресных пространствах для взаимной защиты или в совместно используемом пространстве, если требуется взаимообмен. Кроме того, Windows NT допускает применение 16-разрядных прикладных программ OS/2, работающих в текстовом режиме, и прикладных программ с интерфейсом Posix. Каждая прикладная программа DOS может выполняться на своей виртуальной машине; Windows NT обеспечивает реализацию таких особенностей среды DOS, как резидентные программы и отображаемая (expanded) память. В ней не могут устанавливаться драйверы устройств DOS, в том числе драйверы факсов, звуковых плат, сканеров и эмуляторов терминалов.

Архитектура системы Windows NT более надежна, чем любой другой системы фирмы Microsoft. Она благополучно восстанавливается после любых попыток привести ее к краху. Обеспечение такого уровня защиты неизбежно влечет за собой рост непроизводительных издержек и дополнительной памяти, что в большинстве случаев приводит к снижению производительности.

В настоящее время Windows NT 3.51 реализована в версиях для рабочих станций Intel, Alpha, MIPS и PowerPC, хотя и возникает необходимость перекомпилировать прикладные программы, для того чтобы они выполнялись на каждой из этих платформ.

Пользовательский интерфейс Windows NT практически идентичен интерфейсу Windows 3.1, со знакомой оболочкой на базе программ File Manager и Programmm Manager, стандартными диалоговыми окнами, той же самой базовой организацией и встроенными прикладными программами. Как и в Windows for Workgroups, в него входят служебные программы для одноранговых сетей, а также клиенты для Microsoft Mail и Schedule+. Кроме того, этот интерфейс имеет много административных инструментов, в том числе утилиты для создания резервных копий, просмотра журнала событий Event Viewer, администратор диска Disk Administrator и программа контроля производительности Performance Monitor; он также обеспечивает функции сервера удаленного доступа (WAS), позволяющие производить регистрацию на удаленной машине.

Многие сетевые средства входят в комплект поставки. Возможности сервера встроены в Windows NT Workstation, и вы можете совместно пользоваться файлами, каталогами и накопителями, если зарегистрированы как член группы Administrators (администраторы) или Power Users (полноправные пользователи). Windows NT располагает необходимыми средствами для работы со многими протоколами, в том числе IPX/SPX, ТCP/IР и NetBEUI, а также для клиентов сетей Windows NT и NetWare. Инициатор запросов NetWare, утилита NetWare Link, является клиентом серверов NetWare 3.х и 4.х, хотя она еще не может работать с такими средствами NetWare 4.0, как служба управления каталогами (NDS).

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

Windows NT устроит пользователей, желающих получить максимально возможную степень устойчивости и защиты. Хотя в прошлом для этой ОС создавалось недостаточное число программ, переход разработчиков на систему Windows 95, имеющей почти идентичный интерфейс API, означает, что эта проблема вскоре исчезнет. Для работы Windows NT требуется мощный аппаратный комплект, но тем не менее она представляет хороший выбор для пользователей, готовых затратить несколько больше средств на приобретение оборудования и не нуждающихся в драйверах DOS.

Windows 95

24 августа 1995 года в продажу поступила новая операционная система Windows 95. Еще до выхода было продано около 400 тыс. экземпляров beta-версий этой системы. Вся компьютерная общественность буквально помешалась на этой системе - выход Windows 95 стал главнейшим событием 1995 года. Начался шквал: все журналы писали о Windows 95, стали выходить книги, проводилась широкая рекламная компания, все производители программного обеспечения стали переделывать свои продукты для этой новой операционной системы, производители компьютеров и комплектующих старались получить логотип Designed for Windows 95. Причина же, по которой Windows 95 оказалась в центре всеобщего внимания, проста: это самое важное обновление системы Windows со времени появления в 1990г. Windows 3.0.

Пользователи теперь получили теперь преимущества объектно-ориентированного интерфейса, включая настоящий "рабочий стол" и пиктограммы, копирование и удаление техникой перетаскивания (drag-and-drop), вложенные папки и легко доступный диалог для задания свойств. Файловая система распознает длинные имена файлов и хорошо соответствует метафоре "рабочего стола".

Windows95 внесла значительные улучшения в архитектуру Windows, в том числе истинно 32-разрядный интерфейс прикладного программирования (API), защищенные адресные пространства для ее собственных 32-разрядных прикладных программ, вытесняющую многозадачность, разделение прикладных программ на потоки и более широкое использование виртуальных драйверов устройств. Модель защиты памяти реализована с серьезными компромиссами, целью которых было достигнуть совместимости с существующими 16-разрядными прикладными программами и драйверами устройств. Но на практике устойчивость системы оказывается лучше, чем у Windows 3.1х. Производительность же Windows 95 на удивление высока. На медленных системах, оснащенных ОЗУ не более 4 Мбайт, ее показатели почти такие же, а иногда и лучше результатов Windows 3.1х, в зависимости от выполняемой операции. На более быстродействующих системах с большей памятью она остается весьма конкурентоспособной в одно- и многозадачном режимах работы.

С точки зрения базовой архитектуры Windows 95 - истинно 32-разрядная, многопотоковая операционная система с вытесняющей многозадачностью, что ставит ее в один ряд с такими соперниками, как OS/2, UNIX и Windows NT. В ее среде могут выполняться собственные 32-разрядные прикладные программы, написанные в соответствии со спецификацией Win32 API (почти идентичный вариант этого интерфейса реализован в Windows NT). Собственные прикладные программы Windows 95 используют неструктурированное 32-разрядное адресное пространство, что делает их потенциально более быстродействующими при обработке больших массивов данных.

Наиболее важные компромиссы в архитектуре Windows 95 были порождены решением корпорации Microsoft сделать ее совместимой с существующими 16-разрядными прикладными программами Windows и драйверами устройств реального режима. Это позволяет Windows 95 работать с гораздо более широким спектром существующих аппаратных и программных средств, чем работают OS/2, Windows NT, UNIX. Недостаток этого решения заключается в том, что области памяти, содержащие 16-разрядные прикладные программы и драйвера реального режима, должны оставаться незащищенными. Недоработанная программа по-прежнему относительно легко может вызвать крах всей операционной среды.

В Windows 95 каждая 32-разрядная прикладная программа выполняется в собственном адресном пространстве, но все они совместно использую один и тот же 32-разрядный системный код. Неправильно написанная 32-разрядная программа все еще может привести к аварийному сбою всей системы. Все 16-разрядные программы Windows разделяют общее адресное пространство, поэтому они столь уязвимы друг для друга, как и в среде Windows 3.1. . В практической работе Windows 95 производит впечатление более устойчивой среды, чем предшествующие версии Windows. Очевидны крупные изменения в пользовательском интерфейсе Windows 95. Вы используете кнопку Start для запуска прикладных программ самих по себе или через документы, с которыми программы связаны. После запуска программ их пиктограммы появляются на линейке заданий, обычно размещаемой в нижней части экрана. Щелчок на любой кнопке линейки заданий вызывает переключение на соответствующую программу. Это самый интуитивно понятный способ переключения задач из всех когда-либо существовавших.

Модули Program Manager и File Manager уступили место метафоре "рабочего стола", на котором ваши файлы показаны в виде пиктограмм, помещенных в так называемые папки. Более сложные функции по управлению файлами Windows 95 поручены утилите Explorer, по существу заменившей File Manager, которая показывает древовидную диаграмму файловой структуры вашего компьютера и его сетевого окружения. Благодаря расширению файловой системы FAT имена файлов не ограничены, как раньше, восемью символами и состоящим из трех букв расширением; вы можете использовать имена длиной до 255 символа.

Среди прочих благоприятных изменений в пользовательском интерфейсе - анимационные пиктограммы и диалоговые окна с закладками. В целом новый интерфейс представляет собой существенное улучшение по сравнению с Windows 3.1, хотя прежним пользователям потребуется некоторое время, чтобы привыкнуть к нему. Конечно, метафора "рабочего стола", основанная на применении папок, и длинные имена файлов изобретены не создателями Windows 95; в течение длительного времени они были составной частью различных пользовательских интерфейсов, начиная с Macintosh и кончая Workplace Shell операционной системы OS/2.

Увеличилось число и повысилось качество поставляемых вместе с Windows 95 стандартных вспомогательных программ - от традиционного калькулятора и игр до мощных инструментальных средств контроля состояния системы. Также очевидны значительные усовершенствования средств связи. Теперь в состав операционной системы входит клиент Exchange, который разрабатывался как универсальный почтовый ящик для входящей корреспонденции. Он работает в качестве клиентского ящика-получателя с системой Microsoft Mail, службой Microsoft Exchange Server и другими почтовыми системами, совместимыми со стандартом MAPI, а также с Microsoft Network. Он также позволяет получать и отправлять факсы с помощью встроенной службы Microsoft Fax.

Расширились сетевые функциональные возможности. В состав Windows 95 включен встроенный клиент для сетей NetWare 3.x, 4.x и для серверов Windows NT. Предусмотрены также средства для работы с протоколами IPX/SPX, NetBEUI, TCP/IP. Последний из перечисленных протоколов позволяет выполнять подключение к Internet, хотя лучшая программа для соединения с Internet, содержащая утилиту просмотра Web, входит в состав пакета Microsoft Plus!. Windows95 позволяет непосредственно подсоединяться к другому компьютеру через кабель и располагает базовыми средствами для установления коммутируемых соединений через телефонные линии с сервером удаленного доступа Remote Access Server системы Windows NT, NetWare Connect или с коммутируемыми серверами компании Shiva. В состав Windows95 также входит интерфейс прикладного программирования для телефонии (TAPI) фирмы Microsoft, обеспечивающий совместную работу вашей машины с телефоном, регистрируя телефонные вызовы и выполняя функции автоответчика ( прикладные программы для телефонии будут поставляться независимыми фирмами).

Windows95 показывает вполне приемлемые результаты при выполнении как новых прикладных программ, так и программ Windows 3.x, хотя Windows for Workgroups опережает ее по быстродействию во многих дисковых операциях. Но на машинах с ОЗУ 8 Мбайт и более ее производительность сравнима или выше, чем у предыдущих версий Windows. Производительность системы при выполнении Windows-программ намного превышает аналогичный показатель системы Windows NT.

При создании Windows 95 фирма Microsoft пошла на многие компромиссы. Но большинство пользователей, располагающих как минимум 8 Мбайт памяти, сделают правильный выбор, если перейдут на Windows 95. В результате они получат усовершенствованный графический интерфейс, более высокую производительность, усовершенствованный механизм многозадачности, надежную обратную совместимость и способность выполнять большое число новых прикладных программ.

Каждая собственная прикладная программа Windows 95 видит неструктурированное 4-Гбайт адресное пространство, в котором размещается она сама плюс системный код и драйверы Windows 95. Каждая 32-разрядная прикладная программа выполняется так, как будто она монопольно использует весь ПК. Код прикладной программы загружается в это адресное пространство между отметками 2 и 4 Гбайт. Хотя 32-разрядные прикладные программы "не видят" друг друга, они могут обмениваться данными через буфер обмена (Clipboard), механизмы DDE и OLE. Все 32-разрядные прикладные программы выполняются в соответствии с моделью вытесняющей многозадачности, основанной на управлении отдельными потоками. Планировщик потоков, представляющий собой составную часть системы управления виртуальной памятью ( VMM), распределяет время среди группы одновременно выполняемых потоков на основе оценки текущего приоритета каждого потока и его готовности к выполнению. Вытесняющее планирование позволяет реализовать намного более плавный и надежный механизм многозадачности, чем кооперативный метод, используемый в Windows 3.1х.

Системный код Windows 95 размещается выше границы 2 Гбайт. В пространстве между отметками 2 и 3 Гбайт находятся системные библиотеки DLL кольца 3 и любые DLL используемые несколькими программами. (В 32- разрядных процессорах фирмы Intel предоставляются четыре уровня аппаратной защиты, поименованные, начиная с кольца 0 до кольца 3. Кольцо 0 наиболее привилегированно.) Компоненты кольца 0 в системе Windows 95 отображаются в пространство между 3 и 4 Гбайт. Эти важные участки кода с максимальным уровнем привилегий содержат подсистему управления виртуальными машинами (VMM), файловую систему и драйверы VxD.

Область памяти между 2 и 4 Гбайт отображается в адресное пространство каждой 32-разрядной прикладной программы, т. е. оно совместно используется всеми 32-разрядными прикладными программами в вашем ПК. Такая организация позволяет обслуживать вызовы API непосредственно в адресном пространстве прикладной программы и ограничивает размер рабочего множества. Однако за это приходится расплачиваться снижением надежности. Ничто не может помешать программе, содержащей ошибку произвести запись в адреса, принадлежащие системным DLL, и вызвать крах всей системы.

В области между 2 и 3 Гбайт также находятся все запускаемые вами 16-разрядные прикладные программы Windows. С целью обеспечения совместимости эти программы выполняются в совместно используемом адресном пространстве, где они могут испортить друг друга так же, как и в Windows 3.1х.

Адреса памяти ниже 4 Мбайт также отображаются в адресное пространство каждой прикладной программы и совместно используются всеми процессами. Благодаря этому становится возможной совместимость с существующими драйверами реального режима, которым необходим доступ к этим адресам. Это делает еще одну область памяти незащищенной от случайной записи. К самым нижним 64 Кбайт этого адресного пространства 32-разрядные прикладные программы обращаться не могут, что дает возможность перехватывать неверные указатели, но 16-разрядные программы, которые, возможно, содержат ошибки, могут записывать туда данные.

Некоторые системные DLL Windows 95, в частности USER и GDI, все еще содержат 16-разрядный код. Одно из прискорбных следствий этого состоит в том, что 64- Кбайт локальные хипы модулей USER и GDI и сопутствующие им ограничения системных ресурсов по-прежнему остаются. К счастью, в Windows 95 некоторые структуры данных переместились в 32-разрядные хипы, благодаря чему теперь стало намного сложнее истощить системные ресурсы, чем в среде Windows 3.1х. Другая проблема, связанная c l6-разрядным системным кодом, - эффект Win16Mutex. Так как 16-разрядный системный код нереентерабелен, только один поток может обращаться к 16-разрядным DLL в каждый момент времени, потенциально затормаживая другие процессы, которым нужен доступ к этим библиотекам.

Windows NT 4.0

Осенью 1996 года на прилавках магазинов появилась Windows NT 4.0. Ее новый интерфейс полностью совпадает с применяемым в Windows95.

Не все, что есть в Windows 95, имеется в NT 4.0. Наиболее заметно отсутствие поддержки для конфигурирования устройств по принципу Plug &Play. На сегодня добавить периферийное устройство к системе на базе NT намного сложнее, чем в случае Windows 95. Встроенного управления электропитанием тоже нет, и пользователи блокнотных компьютеров, возможно, будут жаловаться на то, что аккумуляторы у них садятся быстрее, чем при работе с Windows 95. Ни то, ни другое не планируется добавлять до появления следующей полноценной версии NT, которая должна выйти в 1998 г. Некоторые изменения коснулись и архитектуры: достигнута более высокое быстродействие и снижены потребности в памяти, однако новый объектно-ориентированный интерфейс сводит эти достижения на нет и в общем остается такой же прожорливой на память.

С целью увеличить производительность и снизить требования к памяти разработчики Windows NT 4.0 решили переместить многие службы API операционной системы из подсистемы Win32 в ядро ОС. На рис. 6, 7 показано, как это отразилось на архитектуре операционной системы. В новом модуле Win32K Executive располагаются три важных элемента операционной системы: диспетчер окон, интерфейс графических устройств (GDI) и драйверы графических устройств, передающие результаты работы GDI на экран и на принтер. В Windows NT 3.x эти компоненты были частью подсистемы Win32 ( см. рис. 8, 9). В ОС Windows NT 4.0 они вошли в состав модуля Windows NT Executive, где доступ к ним, как и к другим службам ядра, можно получить в контексте вызывающих процессов.

Новая архитектура обещает резко повысить производительность, особенно при работе с графикой. Все операции вывода на экран выполняются через обращения к функциям GDI. Теперь, когда GDI стала частью ядра, прикладные программы могут непосредственно обращаться к функциям GDI, избегая сопряженных с большими накладными расходами переключений контекста, видеодрайверы могут быстрее получать доступ к аппаратным средствам, а службы Win32 API - обращаться к службам в модуле Windows NT Executive, не переходя через границы колец.

Обращение к служебным функциям GDI и диспетчера окон из прикладной программы кольца 3 по-прежнему приводит к переходу через границы колец, но фирма Microsoft вновь нашла несколько остроумных способов оптимизации, позволяющих добиться максимальной производительности. Один пример: если несколько функций GDI вызываются последовательно одна за другой, то они организуются в очередь в пользовательском режиме и затем направляются в ядро единым пакетом, что сводит к минимуму число переходов через границу кольца. По утверждению Microsoft, новая архитектура GDI позволит программам, интенсивно использующим графические средства, таким, как PowerPoint, выводить изображения на экран на 15-20% быстрее.

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

Теперь, когда основная часть программ и данных, реализующих службы Win32 API операционной системы, отображается в адресное пространство каждого процесса, необходимость в серверных потоках и совместных буферах памяти исчезает. Следовательно, требования системы к памяти снижаются. Однако полученная экономия почти полностью "съедается" увеличившимся размером оболочки пользовательского интерфейса. Поэтому хотя утверждение, что Windows NT 4.0 использует память более эффективно, чем версия 3.x, правильно, однако верно и то, что для достижения приемлемой производительности по-прежнему понадобится, по меньшей мере 16-Мбайт ОЗУ.

Фрагменты операционной системы, перенесенные из подсистемы Win32 в модуль Windows NT Executive, сейчас защищены не хуже, чем раньше, хотя теперь это сделано по-иному. Критики указывают на то, что плохо отлаженный видеодрайвер или драйвер принтера теперь может привести к краху ядра, тогда как раньше он мог ли лишь вызвать сбой подсистемы Win32. Фирма Microsoft возражает - и обоснованно, - что как Windows NT 3.x, так и версия 4.0 стабильны в той мере, насколько это обеспечивается драйверами устройств, используемыми вместе с ОС. Вот почему фирма Microsoft проводит тестирование драйверов для Windows NT, в том числе разработанных независимыми поставщиками, и сертифицирует лишь безупречные продукты. Если качество графических драйверов Windows NT 4.0 окажется таким же или превзойдет качество графических драйверов версии 3.x, то нет причин, по которым Windows NT может оказаться менее надежной, чем 3.x. С другой стороны, инсталляция несертифицированного графического драйвера в системе Windows NT 4.0 теоретически более рискованна, чем инсталляция того же драйвера в системе 3.x, поскольку графические драйверы Windows NT 4.0 работают в привилегированном режиме ядра ЦП.

Что касается безопасности, то Windows NT 4.0 спроектирована с учетом требований стандартов безопасности точно так же, как и ее предшественники. Архитектурные изменения не затронули подсистему защиты информации, которая, как и другие подсистемы, выполняется в виде отдельного процесса в пользовательском режиме.

Тонкие изменения, внесенные в архитектуру Windows NT в версии 4.0, отражают новое отношение к системе со стороны ее разработчиков. Первоначально Windows NT замышлялась как операционная система "равных возможностей", способная выполнять прикладные программы других ОС так же легко, как и свои собственные. Но теперь, когда центральное место отводится службам Win32 API, система Windows NT оптимизирована на выполнение программ Win32 с большей скоростью, чем раньше. Windows NT 4.0 работает гораздо быстрее, чем ее предшественники, и при этом, очевидно, не поступается теми качествами, которые сделали ее знаменитой. Взвесив все обстоятельства, можно сказать, что пользователи вряд ли могут пожелать чего-то лучшего.

К концу 1996 года фирма Microsoft планировала выпустить новую операционную систему Windows 96 под кодовым названием "Nashville". Однако этого не удалось, и сроки были переназначены на середину 1997 года, кроме того, было изменено кодовое название на "Memphis". Все же, как заявляет фирма Microsoft, выпустить систему к этим срокам не удастся и срок перенесен на 1998 год. Новая версия будет иметь "браузерный" (Web-ified) интерфейс, стирающий грань между перемещениями в пределах Рабочего стола и по компьютерным сетям и содержащий как новые технологии, так и - в преобразованном виде - привычные возможности. Если в Проводнике Windows 9.х выбрать в меню View (просмотр) новую опцию Web View (Web-просмотр), перемещение по жесткому диску вашего компьютера будет обеспечивать Internet Explorer 4.0. Значки файлов и древесно-списочное представление структуры каталогов исчезнут, замененные, как обещают представители Microsoft, наглядной трехпанельной схемой гиперсвязей с окнами просмотра, производящей впечатление хорошо спроектированной Web-страницы. А средство Active Desktop позволит с помощью компонентов ActiveX добавлять непосредственно к Рабочему столу просмотр Web, вывод новостей в режиме реального времени и даже телепередачи. Это называется "отъединением" пользовательского интерфейса от операционной системы и должно обеспечить возможность сколь угодно частого внесения поверхностных нововведений без замены версии операционной системы.

Глубинных изменений тоже планируется немало. В Windows 9.х будет введена переработанная файловая система - FAT32, - более экономно использующая дисковое пространство и поддерживающая жесткие диски объемом до 2 Тбайт (правда, производительность некоторых программ с переходом на новую файловую систему может слегка снизиться). Новая версия будет также поддерживать мультимедийные дополнения MMX к набору инструкций процессора Pentium. Изменился и способ связи между файлами приложений. Это сделано для преодоления проблем, возникающих при случайном удалении DLL, и усовершенствования не очень ясного сейчас процесса деинсталляции в Windows 95. Переработанная Панель управления не будет так перегружена значками, как нынешняя, и в ней появятся мастера, помогающие пользователю в настройке системы. Расширения, ориентированные на сеть, позволят компьютерам запрашивать центральный сервер или Web-страницу относительно появления там новых программ, чтобы загружать обновленные компоненты (это станет шагом в сторону сетевой модели ПК), а также обеспечат лучшую синхронизацию версий файлов для портативных компьютеров. Усовершенствованная система управления электропитанием для блокнотных ПК сможет отключать интенсивно расходующие энергию PC-карты; планируется также поддержка ожидаемого вскоре стандарта на 32-разрядные PC-карты - CardBus.

Windows 2000

Windows 2000 - операционная система Microsoft, основанная на технологии Windows NT, что было отражено в первоначальном названии проекта Windows NT 5.0.

Windows 2000 - полностью 32-разрядная ОС с приоритетной многозадачностью и улучшенной реализацией работы с памятью. В основе проекта Windows 2000 лежат те же принципы, которые обеспечили успех NT:

1. Совместимость (Compatibility). Система может иметь привычный интерфейс ОС семейства Windows, с некоторыми добавлениями и расширениями, поддержку файловых систем NTFS5, NTFS4, FAT16 и FAT32. Большинство приложений, написанных под MSDOS, W9x, NT4, а также некоторые программы под OS/2 и POSIX запускаются и функционируют без проблем. При проектировании NT учитывалась возможность работы системы в различных сетевых средах, поэтому в поставку входят средства для работы в Unix- и Novell-сетях.

2. Переносимость (Portability). Система работает на различных процессорах семейства x86 производства Intel и AMD. Уже существует 64 битная версия WindowsXP и Windows.NET, предназначенная для работы на Intel Itanium. Реализация поддержки процессоров других архитектур возможна, но потребует некоторых усилий.

3. Масштабируемость (Scalability). В WindowsXP реализована поддержка технологии SMP. В Windows.NET Advanced Server и Datacenter Server кроме этого есть поддержка COW (Cluster Of Workstations).

4. Система безопасности (Security). Реализована привычная для NT система безопасности на уровне пользователей.

5. Распределённая обработка (Distributed processing). WindowsXP имеет встроенные в систему сетевые возможности, что обеспечивает возможность связи с различными типами компьютеров-хостов благодаря наличию разнообразных транспортных протоколов и технологии "клиент-сервер".

6. Надёжность и отказоустойчивость (Reliability and robustness). Архитектура ОС защищает приложения от повреждения друг другом и самой операционной системой. При этом используется отказоустойчивая структурированная обработка особых ситуаций на всех архитектурных уровнях, которая включает восстанавливаемую файловую систему NTFS и обеспечивает защиту с помощью встроенной системы безопасности и усовершенствованных методов управления памятью.

7. Локализация (Localization). Система предоставляет возможности для работы во многих странах мира на национальных языках, что достигается применением стандарта ISO Unicode.

8. Расширяемость (Extensibility). Благодаря модульному построению системы становится возможно добавление новых модулей на различные архитектурные уровни ОС.

Можно поставить Windows 2000 и на 32МБ, но для того, чтобы действительно нормально работать надо как минимум 64МБ, а лучше ещё больше. С 128 МБ система будет работать очень приятно, а с 256МБ заработает быстрее, чем любая W9x когда-либо сможет на любом количестве памяти. На 32МБ и FAT32 может работать, хотя и с большими торможениями.

Windows XP

Операционная система Windows XP появилась 25 октября 2001 года. Это уникально мощная операционная система, в основе которой лежит Windows 2000.

WindowsXP - это операционная система, начиная с которой сделана попытка объединить две, ранее существовавшие независимо, линейки W9x и NT. Первоначально этот проект назывался Whisler, но сейчас он разделился на две линии, WindowsXP, позиционирующуюся на замену W9x и W2000Pro, и Windows.NET, позиционирующуюся на замену NT Server всех сортов. Вне зависимости от названия, все они является прямыми наследниками Windows2000, и продолжателями линейки WindowsNT. Этот факт и определяет основные особенности WindowsXP. Это полностью 32 разрядная ОС с приоритетной многозадачностью. В её основе лежат те же принципы, на которых базировались все NT.

Рис.18.1 Диаграммы состояния.

В Windows XP есть Windows Product Activation. Это новая технология разработанная Microsoft для борьбы с нелегальными копиями их программного обеспечения. Впервые подобный механизм был опробован на Terminal Service, из W2000 Server, теперь же, похоже, подобным образом будут защищаться все, или многие, последующие продукты Microsoft. Суть технологии состоит в следующем. После инсталляции системы на основе серийного номера, который даётся с каждой копией XP, и некоторых особенностей вашего компьютера генерируется так называемый Product ID. Он состоит из 20 цифр, и на его основе (вместе с правильным серийным номером, конечно же), вы получаете Activation Code, после введения, которого Windows считается активированным. Как утверждает Microsoft, на основе этих двух номеров они не могут узнать ничего про ваш компьютер. То есть, полная анонимность. Если не проделать такой процедуры, то через 30 дней в XP просто перестанет функционировать практически всё. Узнать, активирована ли ваша версия XP можно в окне System Summary, находящегося в меню Programs -> Accessories -> System tools -> System Information. Если увидите строку Activation Status, и напротив её надпись вроде Activation Pending (XX days remaining), значит через XX дней Ваш XP перестанет работать. Апплет который отвечает за активацию XP находится в меню Programs -> Accessories -> System Tools -> Activate Windows. После того как система будет активирована (любым способом), строка Activation Pending из System Information пропадёт без следа.

Существуют два вида версии XP – Windows XP Home и Windows XP Professional. Кроме этого, существует 64 битная версия Windows XP Professional, сделанная для 64 битного Intel Itanium. XP Home позиционируется как ОС на смену линейки W9x, XP Professional, как смена для Windows2000 Professional. Из существенных отличий между ними, можно отметить только отсутствие поддержки SMP в XP Home. Но, несмотря на это, даже XP Home построена на ядре NT, поэтому с 25 октября 2001 года (дата официального выхода XP) можно говорить о давно обещанной официальной смерти линейки W9x, и идеологии MS-DOS вместе с ней. Windows.NET отличается от XP наличием системных служб и приложений, свойственных серверу, и поддержкой более мощного железа. Так, если XP Pro поддерживает SMP только на два процессора, то NET Server уже на 4, NET Advanced Server на 8, а NET Datacenter Server на 32.

Для успешной инсталляции XP необходим процессор не менее 233МГц, 64МБ оперативной памяти, и 1,5ГБ свободного места на диске. Однако для более комфортной работы понадобится процессор не менее 500МГц, и не менее 128МБ оперативной памяти.

Windows («окна») – повсеместно распространенная, по существу, стандартная многозадачная операционная система для современных IBM – совместимых компьютеров. Существуют два главных её семейства: условно говоря, для домашнего использования (Windows версии 3.1, 3.11, 95, 98 и Millennium Edition, XP Home Edition) и для профессиональных применений (Windows NT версий 3.5, 4.0, 2000 и ХР). Системы первого типа ставят, конечно же, не только на домашних компьютерах, но и в большинстве учреждений, фирм, институтов. Windows NT же используют тогда, когда хотят создать локальную или глобальную сеть предприятия или учебного заведения или когда необходимо обеспечить повышенную устойчивость системы, что, желательно для всех, но для профессионалов необходимо.

С точки зрения приёмов работы, вида экрана и окон, кнопок и меню системы обоих семейств весьма похожи.

Фирма Microsoft собирается постепенно перевести всех домашних пользователей на новую технологию (NT в переводе – New Technology), для чего, и созданы были системы Windows 2000 , а затем – ХР. Разработка «старой технологии» прекращена. Системы первого поколения (Windows 3.1 и 3.11, а также NT 3.5), весьма популярные середине 90-х годов, практически исчезли с компьютеров современных пользователей.

После того, как Джон Соша изобрел Norton Commander командная строка стала раздражать миллионы пользователей ПК, не знающих стандартных команд и параметров дисковой операционной системы. Вскоре в четвертой версии MS-DOS появилось нечто похожее на объектно-ориентированную оболочку - DOS Shell. Но это программа как-то не прижилась. Можно сказать, что Windows - это более чем просто операционная система, так как в ней вы можете работать, не вводя с клавиатуры команды в приглашение. В Windows вся информация представлена в интуитивно-понятной графической оболочке таким образом, что пользователь персонального компьютера может работать эффективно, легко, без заучивания директив и команд. Все, что вам нужно сделать - это найти нужное приложение или документ и щелкнуть по соответствующему ярлыку клавишей мыши. Для упрощения поиска документов и приложений Windows предлагает пользователю так называемую концепцию рабочего стола. Рабочий стол в Windows есть некая модель поверхности обычного стола с документами и папками.

Преимущества и недостатки Windows.

Преимущества. Удобство и поддержка устройств. Основное отличие программ для DOS и для Windows состоит в том, что DOS-программа может работать с аппаратными средствами компьютера (монитором, клавиатурой, принтером и т.д.) непосредственно минуя DOS, в то время как Windows-программа должна обращаться к внешним устройствам только через Windows. Поэтому после установки в Windows драйвера, обеспечивающего поддержку данного устройства (то есть настраивающего Windows на особенности данного устройства) все Windows-программы могут работать с этим устройством. Это ликвидирует проблему обеспечения совместимости программ с конкретными устройствами.

Программы (драйверы) для поддержки наиболее распространенных устройств входят в Windows, а для остальных устройств поставляются вместе с этими устройствами или контролёрами.

Единый пользовательский интерфейс. Windo

ws представляет программистам все необходимые средства для создания пользовательского интерфейса, поэтому программисты пользуются ими, а не изобретают аналогичные собственные средства. Вследствие этого пользовательский интерфейс Windows-программ в значительной степени унифицирован, и пользователям не требуется изучать для каждой программы новые принципы организации взаимодействия с этой программой.

Поддержка масштабируемых шрифтов. В таких приложениях, как редактирование документов, издательское и рекламное дело, создание таблиц или презентаций и т.д., необходимо использование большого количества шрифтов – текстовых, заголовочных, декоративных, пиктографических и других, причем символы этих шрифтов могут потребоваться в самых различных размерах. Поэтому в Windows 3.1 была встроена поддержка масштабируемых шрифтов формата True Type. Масштабируемые шрифты в (отличие от растровых) содержат не растровые (поточечные) изображения символов некоторого фиксированного размера, а описание контуров символов, позволяющие строить символы любого нужного размера. Поскольку изображения символов на экране и на печати формируется из одних и тех же контуров, содержащихся в шрифтовом файле, они, естественно, полностью соответствуют друг другу, что обеспечивает выполнение принципа: что на экране, то и на печати.

Поддержка мультимедиа. Одним из усовершенствований Windows явилась поддержка мультимедиа. При подключении соответствующих устройств Windows может воспринимать звуки от микрофона, компакт-диска или MIDI – синтезатора, изображения от цифровой видеокамеры или с компакт-диска, выводить звуки и движущиеся изображения. Это открывает большие возможности для обучающих, игровых и других программ, позволяя делать общение с компьютером более лёгким и приятным даже для непрофессионалов.

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

Средства обмена данными. Для организации обмена данными между различными программами Windows предлагает следующие способы:

• Буфер обмена данными (clipboard):одна программа может поместить данные в этот буфер, а другая использовать данные из буфера (например, вставив их в документ);

• Динамический обмен данными(Dynamic Data Exchange, DDE) – одна программа может использовать данные, созданные другой программой (например, редактор документов может использовать часть таблицы, созданной табличным процессором), причем копия данных в использующей программе сохраняет «привязку» к исходным (оригинальным) данным. Поэтому программа, использующая DDE-данные, может в любой момент их «обновить», т.е. восстановить соответствие используемой копии данных оригиналу;

• Механизм связи и внедрения объектов (Object Linking and Imbibing,OLE), появившийся в версии Windows3.1, является усовершенствованием средств DDE. Здесь программа использующая «внедренные» данные, может редактировать эти данные, для чего автоматически запускается программа, с помощью которой эти данные были созданы. Например, в документ, обрабатываемый редактором Microsoft Word, можно вставить в качестве «объекта» картинку, созданную в графическом редакторе Corel Draw, и тогда при двойном щелчке мышью над изображением данной картинки в документе Microsoft Word автоматически вызовется Corel Draw для редактирования этой картинки.

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

Совместимость с DOS-программами. Работа в среде Windows не вынуждает отказываться от использования DOS программ. Более того, для запуска DOS программ, как правило, нет необходимости выходить из Windows. Однако следует заметить, что DOS программы под управлением Windows выполняются медленнее.

Возможности для разработчиков. Все перечисленные особенности Windows удобны и для разработчиков программ. Например, имеющиеся в Windows стандартные средства для создания пользовательского интерфейса делает ненужным изобретения собственных средств. Поддержка устройств (принтеров, мониторов и т.д.) в Windows снимает его заботу с разработчиков программ. Однако два преимущества программирования для Windows следует отметить особо:

• доступность всей оперативной памяти – в отличие от DOS, средства управления оперативной памятью Windows обеспечивают доступность для программ всей оперативной памяти компьютера (а не 640 Кбайт), что облегчает создание больших программ;

• динамическое подключение библиотек - Windows обеспечивает автоматическое подключение библиотек подпрограмм во время выполнения программы. Формат библиотек (.DLL – файлов) и порядок вызова библиотечных подпрограмм стандартизованы, поэтому эти библиотеки могут быть созданы с помощью различных программных средств и даже написаны на разных языках программирования.

Недостатки.

Главный недостаток Windows для пользователей состоит в том, что описанные преимущества Windows достигаются за счет значительного увеличения нагрузки на аппаратные средства компьютера. Графический интерфейс, поддержка масштабируемых шрифтов, поддержка многозадачности и т.д. требуют большой мощности процессора, значительной оперативной памяти и дискового пространства. Хотя для работы с Windows достаточно лишь процессора 80386 с 2-4 мегабайтами оперативной памяти и свободных 45 мегабайт на винчестере, такая конфигурация не позволяет использовать Windows ни для каких практических задач, разве лишь для раскладывания карточных пасьянсов. Комфортная же работа обеспечивается лишь при наличии 8-16 мегабайт и не менее 150-300 мегабайт на диске для Windows и Windows-приложений. При этом часто программы с приблизительно одинаковыми возможностями для DOS и для Windows отличаются по требованиям к компьютерным ресурсам в несколько раз. Так, Microsoft Word для DOS может работать на компьютере без жёсткого диска и требует всего 512 килобайт ОЗУ.

А редактор Microsoft Word for Windows (правда, он обладает несколько большими возможностями) требует 4 мегабайта оперативной памяти (а лучше 8 мегабайт), и около 20 мегабайт на диске, работая при этом в несколько раз медленнее. Чтобы компенсировать это замедление и обеспечить приемлемую скорость работы, пользователи вынуждены покупать достаточно мощные компьютеры. На западе мода на Windows очень быстро привела к отказу не только от компьютеров на основе Intel-286, но и на основе Intel-386.

Всё вышесказанное указывает на то, что Windows не является универсальным решением, пригодным для всех пользователей и на все случаи жизни. Конечно, для большинства пользователей Windows и Windows-программы позволяют работать на компьютере самым удобным и эффективным способом. Использование Windows нецелесообразно в следующих случаях:

• Для приложений, в которых графический интерфейс и многозадачные возможности Windows не нужны: например, на рабочих местах операторов в банках, торговых работников и т.д.

• Для приложений, в которых необходимо обеспечить особо высокое быстродействие обработки.

• Для задач, решение которых обеспечивается имеющимися программами, работающими в среде DOS, UNIX и т.д.

Имеет свои негативные стороны и программирование под Windows. Дело в том, что Windows в принудительном порядке заставляет программистов использовать средства программного интерфейса Windows (API) - это более 600 функций. Кроме того, программист должен для этого свободно владеть весьма сложными концептуальными понятиями объектно-ориентированного программирования, оперировать с объектами, сообщениями, разделяемыми ресурсами и т.д., поэтому обучение программированию под Windows весьма непростое дело.

Файловая система операционных систем Windows.

Файловая система (file system) – функциональная часть операционной системы, которая отвечает за обмен данными с внешними запоминающими устройствами. Операционными системами Windows используется, разработанная еще для DOS файловая система FAT, в которой для каждого раздели и тома DOS имеется загрузочный сектор, а каждый раздел DOS содержит две копии таблицы размещения файлов (file allocation table – FAT). FAT представляет собой матрицу, которая устанавливает соотношение между файлами и папками раздела и их физическим местоположением на жестком диске. Перед каждым разделом жесткого диска последовательно расположены две копии FAT. Подобно загрузочным секторам, FAT располагается за пределами области диска, видимой для файловой системы. При записи на диск файлы не обязательно занимают пространство, эквивалентное их размеру. Обычно файлы разбиваются на кластеры определенного размера, которые могут быть разбросаны по всему разделу. В результате таблица FAT представляет собой не список файлов и их местоположения, а список кластеров раздела и их содержимого, а в конце каждого описания содержится ссылка на следующий занимаемый файлом кластер.

Элементы таблицы FAT представляют собой 12-, 16- и 32-битовые шестнадцатеричные числа, размер которых определяется программой FDISK, а значение непосредственно создается программой FORMAT. Все гибкие диски, а также жесткие диски размером до 16 Мбайт используют в FAT 12-битовые элементы. Жесткие и съемные диски, имеющие размер от 16 Мбайт и более, обычно используют 16-битовые элементы. В Windows98 для дисков объемом более 512 Мбайт может использоваться файловая система FAT32 с 32-битовым элементами таблицы FAT. Очевидно, чем меньше размер кластеров раздела, тем больше их будет содержаться в этом разделе и тем больше размер таблицы размещения файлов FAT, а, значит, дольше а ней выполняется поиск информации, необходимой для доступа к файлу. Зачем же тогда необходимо уменьшать размер кластера? Дело в том, что размер файла может быть произвольным, однако, при записи на диск, Windows разбивает файл на несколько кластеров. В итоге последний кластер почти никогда не бывает заполнен до конца. Оставшееся пустое пространство, называемое люфтом, существует до тех пор, пока файл находится на диске. Таким образом, размер потерянного пространства зависит от размера кластера. Помимо поддержки больших разделов и меньших кластеров FAT32 иначе использует саму таблицу размещения файлов. В FAT использовались две идентичные таблицы, одна из которых служила основной, вторая при выполнении обычных процедур постоянно обновлялась, заполняясь при этом возможными ошибками первой копии. FAT32, при невозможном считывании данных из основной таблицы, обращается ко второй копии, которая и становится основной. Основным недостатком FAT32 является несовместимость с более ранними файловыми системами, а также системой NTFS, применяемой в Windows NT.

Когда Windows NT впервые вышла в свет, в ней была предусмотрена поддержка трех файловых систем. Это таблица размещения файлов (FAT), обеспечивавшая совместимость с MS-DOS, файловая система повышенной производительности (HPFS), обеспечивавшая совместимость с LAN Manager, и новая файловая система, носившая название Файловой системы новых технологий (NTFS). NTFS обладала рядом преимуществ в сравнении с использовавшимися на тот момент для большинства файловых серверов файловыми системами. Для обеспечения целостности данных в NTFS имеется журнал транзакций. Подобный подход не исключает вероятности утраты информации, однако, значительно увеличивает вероятность того, что доступ к файловой системе будет возможен даже в том случае, если будет нарушена целостность системы сервера. Это становится возможным при использовании журнала транзакций для отслеживания незавершенных попыток записи на диск при последующей загрузке Windows NT. Журнал транзакций также используется для проверки диска на наличие ошибок вместо проверки каждого файла, в случае использования таблицы размещения файлов. Одним из основных преимуществ NTFS является безопасность. NTFS предоставляет возможность вносить записи контроля доступа (Access Control Entries, ACE) в список контроля доступа (Access Control List, ACL). ACE содержит идентификационное имя группы или пользователя и маркер доступа, который может быть использован для ограничения доступа к определенному каталогу или файлу.

Этот доступ может предполагать возможность чтения, записи, удаления, выполнения и даже владения файлами. С другой стороны, ACL представляет собой контейнер, содержащий одну или более записей ACE. Это позволяет ограничить доступ отдельных пользователей или групп пользователей к определенным каталогам или файлам в сети. Кроме того, NTFS поддерживает работу с длинными именами, имеющими длину до 255 символов и содержащими заглавные и строчные буквы в любой последовательности. Одной из главных характеристик NTFS является автоматическое создание эквивалентных имен, совместимых с MS-DOS. Также NTFS имеет функцию сжатия, впервые появившуюся в NT версии 3.51. Она обеспечивает возможность сжатия любого файла, каталога или диска NTFS. В отличии от программ сжатия MS-DOS, создающих виртуальный диск, имеющий вид скрытого файла и подвергающий сжатию все данные на этом диске, Windows NT использует дополнительный уровень файловой подсистемы для сжатия и разуплотнения требуемых файлов без создания виртуального диска. Это оказывается полезным при сжатии либо определенной части диска (например, пользовательского каталога), либо файлов, имеющих определенный тип (например, графических файлов). Единственным недостатком сжатия NTFS является невысокий, в сравнении со схемами сжатия MS-DOS, уровень компрессии. Зато NTFS отличается более высокой надежностью и производительностью.

Некоторые клавиатурные комбинации Windows

• Alt+Tab, Shift+Alt+Tab

Переход в следующую (предыдущую) активную задачу.

• Ctrl+Tab, Shift+Ctrl+Tab

Переход в следующее окно многооконной программы или

в следующую страницу диалогового окна.

• Alt+Esc Переход на следующий значок или в следующую задачу.

• Ctrl+Esc Вход в главное меню.

• Ctrl+пробел Снять/установить выделение текущего объекта.

• Alt+ пробел Вход в системное меню окна.

• Alt+Enter Свойства выделенного объекта. Перевод DOS-программ

из оконного в полноэкранный режим и обратно.

• Ctrl+↑, ↓, →, ←, Home, End, PgUp, PgDown

Переходы между значками в папке без выделения.

• Ctrl+A Выделить всё.

• Ctrl+X Вырезать выделенные объекты.

• Ctrl+С Копировать выделенные объекты.

• Ctrl+V Вставить.

• Ctrl+Z Отмена последней команды.

• F1 Вызывается справка (общая).

• F2 Изменение имени значка или папки.

• F3, Ctrl+F Вызывается программа поиска файлов в текущей папке.

• F4 Раскрывается список «Переход к другой папке» (если в

окне установлена панель инструментов).

• Alt+F4 Закрывается текущее окно или программа.

• F5 Заново считывается окно, снимаются все выделение.

• F6 Попадаете в список «Переход к другой папке» (если в

окне установлена панель инструментов).

• F10 Активизация строки меню текущей программы.

• Shift+F10 Вызывает контекстно-зависимое меню.

Некоторые комбинации с клавишей “Windows”

• Windows Вызывает главное меню.

• Windows+E Запускает Проводник.

• Windows+F Запускает Поиск файлов.

• Windows+ Ctrl+F Запускает Поиск компьютера в локальной сети.

• Windows+V, Windows+F7 Запускает Просмотр буфера обмена.

• Windows+M Сворачивает все окна.

• Windows+ Shift+M Разворачивает все ранее свернутые окна.

• Windows+D Сворачивает и разворачивает все окна.

• Windows+R Вызывает окно «Выполнить».

• Windows+F1 Запускает справку Windows из любой программы.

• Windows+Break Вызывает окно «Система».

• Windows+C Запускает Панель управления.

• Windows+K Вызывает окно «Свойства: Клавиатура».

• Windows+I Вызывает окно «Свойства; Мышь».

• Windows+ Tab Переходит на следующую активную программу.

DeskTop 1.1

File manager in DeskTop 1.1

GS/OS 5.0.4

File manager in GS/OS 5.0.4

GS/OS 6.0.1

File manager in GS/OS 6.0.1

BeOS R5.0.1 PE

File manager in BeOS R5.0.1 PE

CDE 1.5 in Solaris 9

File manager in CDE 1.5 in Solaris 9

GEOS 2 for C64

GEOS 2.1 for Apple II

File manager in GEOS 2.1 for Apple II

GeoWorks Ensemble 2.0

File manager in GeoWorks Ensemble 2.0

NewDeal Office 3 Eval.

File manager in NewDeal Office 3 Eval.

BreadBox Ensemble Lite

File manager in BreadBox Ensemble Lite

GNOME 2.2.0 in RedHat 9

File manager in GNOME 2.2.0 in RedHat 9 (Nautilus)

http://www.guidebookgallery.org/screenshots/filemanager

IRIX 5.3

File manager in IRIX 5.3 with thanks to Ian Young

Lisa OS 1.0

File manager in Lisa OS 1.0. The screenshot has wrong aspect ratio (correct), and is a reproduction.

Lisa OS 3.1

File manager in Lisa OS 3.1 with thanks to James Musheno. The screenshot has wrong aspect ratio (correct).

File manager in System 1.1 (Finder)

File manager in System 3.0 (Finder)

File manager in System 7.0 (Finder)

File manager in System 7.5.3 (Finder)

File manager in Mac OS 8.0 (Finder)

File manager in Mac OS 9.0 (Finder)

Mac OS X DP

File manager in Mac OS X DP

Mac OS X DP 3

File manager in Mac OS X DP 3 (Finder)

Mac OS X Public Beta

File manager in Mac OS X Public Beta (Finder)

Mac OS 10.0.4

File manager in Mac OS 10.0.4 (Finder)

Mac OS 10.1

File manager in Mac OS 10.1 (Finder)

Mac OS X Panther

File manager in Mac OS X Panther (Finder)

OPENSTEP 4.2

File manager in OPENSTEP 4.2 (File Viewer)

OS/2 Warp 3

File manager in OS/2 Warp 3

OS/2 Warp 4

File manager in OS/2 Warp 4

Windows 1.01

File manager in Windows 1.01. The screenshot has an extra border (remove) and wrong aspect ratio (correct).

Windows NT 3.1 Workstation

File manager in Windows NT 3.1 Workstation

Windows NT 3.51 Workstation

File manager in Windows NT 3.51 Workstation

Windows 95

Windows 95B

File manager in Windows 95

Windows NT 4.0 Workstation

Windows NT 4.0 Server

File manager in Windows NT 4.0 Workstation

Windows 98

File manager in Windows 98

Windows 98 SE

File manager in Windows 98 SE

Windows XP Pro

File manager in Windows XP Pro

Список использованной литературы.

1. Гордеев А.В. Операционные системы: Учеб. Для студентов вузов, обучающихся по направлению подгот. Бакалавров и магистров и направлению подгот. дипломир. специалистов "Информатика и вычисл. техника". 2-е изд. – СПб.: Питер, 2004, - 415 с.

2. Столингс В. Операционные системы: Внутрен. Устройство и принципы проектирования. 4-е изд. – М.: Вильямс, 2002 – 843 с.

3. Таненбаум Э. Современные операционные системы. 2-е изд. – СПб.: Питер, 2002, 1040 с.

4. http://os.kaf-i.kg/index.php?chapter=lections&page=4

5. http://education.aspu.ru/view.php?olif=gl4

6. В.Г. Олифер, Н.А. Олифер Сетевые операционные системы. Изд. ПИТЕР, 2003, -544с.

7. http://www.guidebookgallery.org/screenshots/filemanager

8. http://art-dizain.com/price/interfaces.php

Показать полностью…
Похожие документы в приложении