Реферат Многозадачность Windows от NT до Vista
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Московский Авиационный Институт
(Государственный технический университет)
Реферат по предмету ”Операционные системы”
на тему: ”Многозадачность Windows от NT до Vista”
Выполнила студентка гр.06-321
Венгловская Е.Ю.
Проверил
Терентьев М.Н.
Москва 2010
Содержание:
1. Что такое многозадачность?....................................................стр.3
2. Основные принципы многозадачности в Windows………...стр.4
3. Синхронизация потоков……………………………………...стр.5
4. Windows NT как родоначальник многозадачности………...стр.10
5. NT и ее улучшенные версии…………………………………стр.11
Windows 95……………………………………………………………….стр.11
Windows 98……………………………………………………………….стр.12
Windows 2000…………………………………………………………….стр.12
Windows XP………………………………………………………………стр.13
Windows Vista…………………………………………………………….стр.14
6. Сходства и различия Windows 9x и Windows NT (2000, XP)..стр.15
7. Заключение ……………………………………………………стр.17
8. Список литературы……………………………………………стр.18
Что такое многозадачность?
В компьютерных технологиях многозадачность – это метод, в котором различные задачи, также известные как процессы, делят общие ресурсы, такие как центральное обрабатывающее устройство (центральный процессор) , который является исполнителем машинных инструкций и отвечает за выполнение всевозможных операций, которые задаются программами. В случае компьютера с одним центральным процессором только одна задача выполняется в любой момент времени, что означает, что центральное обрабатывающее устройство активно исполняет инструкции для этой задачи. Многозадачность решает проблему распределения задач, то есть, какая именно задача должны быть выполнена в данный момент времени, а какая задача начнет выполняться после. Перераспределение центрального процессора от одной задачи к другой называется переключением контекста(только в многозадачных операционных системах). Это перераспределение состоит в том, что одна задача прекращает свое выполнение, причем сохраняет о себе всю информацию, так необходимую для последующего продолжения с того места, на котором прервалась задача. Когда переключение контекста совершается довольно часто, достигается иллюзия параллелизма. Даже в компьютерах с более чем одним центральным процессором (в данном случае они называются многопроцессорные машины) многозадачность позволяет выполняться намного большему количеству задач.
Операционные системы могут принимать одну из многих разных стратегий распределения, которые в основном попадают в следующие категории: многопрограммные системы, системы распределения времени и системы реального времени.
В многопрограммных системах выполняемая задача продолжает выполняться до того момента, пока она выполняет операцию, нуждающуюся в ожидании внешнего воздействия (например, чтение с магнитной ленты) или пока планировщик компьютера принудительно меняет местоположение выполняемой задачи, то есть вне центрального процессора. Многопрограммные системы изобретены для максимизирования использования центрального обрабатывающего устройства.
В системах распределения времени выполняемая задача нуждается в отступлении от центрального процессора, либо добровольно, либо по д воздействием внешнего фактора, такого как вмешательство аппаратного обеспечения. Системы распределения времени изобретены для того, чтобы позволить нескольким программам выполняться предположительно одновременно, совместно. Выражение «распределение времени» обычно использовалось для объявления компьютеров, которые разделены интерактивными пользователями на границах, таких как IBM’s TSO и VM/CMS.
В системах реального времени некоторые ожидающие задачи гарантировано даются центральному процессору, когда происходит внешнее воздействие. Системы реального времени изобретены для того, чтобы контролировать механические устройства, такие как промышленные машины, которые нуждаются во временном процессоре.
Термин «распределение времени» обычно уже не используется. Он был заменен более простым – «многозадачность», а также распределение интерактивных систем - на усовершенствованные персональные компьютеров и рабочие станции.
Процесс необходим для реализации основных идей многозадачности. Наша задача, т.е задача пользователей, различать системные управляющие процессы, которые показывают работу операционной системы и те, которые занимаются распределением и управлением ресурсов, от всех остальных процессов. Процесс может находится в активном или пассивном состоянии. В активном состоянии процесс участвует в конкуренции использовать ресурсы системы. В пассивном же состоянии – он всего лишь известен системе, а в самой конкуренции он не принимает участия. В то же время, активный процесс может быть в следующих трех состояниях: выполнение, готовность к выполнению и блокирование (ожидание). Состояние выполнения состоит в том, что все требуемый ресурсы выделены и что только один процесс может находится в нем в определенный момент времени. Состояние готовности к выполнению означает, что процесс перейдет в состояние выполнения только после того, как ресурсы будут предоставлены. А состояние блокирования (ожидания) показывает, что операция ввода/вывода не завершилась и ресурсы не могут быть предоставлены.
Основные принципы многозадачности в
Windows
В Windows каждый поток имеет свое собственное адресное пространство, причем виртуальное. Процесс – статический объект, который сам по себе действие не совершает, хоть и состоит из кода, данных, синхронизирующих объектов, каналов и отрытых файлов.
Операционная система в свое время распределяет время центрального процессора для такого базового объекта, как поток. В зависимости от заданного маршрута поток выполняет то или иное действие, ту или иную команду. В свою очередь каждый процесс – это какой то определенный начальный поток, иногда еще его именуют первичным.
Основная способность первичного потока – это создание вторичных потоков.
Все потоки какого то одного процесса имеют общий доступ к его ресурсам. Все они действуют пот управлением одной и той же программы, с теми же переменными, у них есть доступ к одним и тем же объектам и использует одну и ту же область памяти для записи информацию. Для выполнения асинхронных действий, т.е работа происходит с несколькими окнами, создаются дополнительные потоки.
Для многих операционных систем многозадачность превосходно отвечает требованиям, так как домашние компьютеры выполняют маленькое количество хорошо протестированных программ. Window NT стала первой версий Microsoft Windows, которая навязывает преимущественную многозадачность, но он не появился на рынке для обычных пользователей до появления Windows XP
В различных линейках Windows многозадачность отличается своей организацией.
Windows NT использует вытесняющую многозадачность. Это означает, что операционная система строго контролирует, как выполняются все процессы. Для каждой из программ операционная система выделяет определенное количество процессорного времени и мы можем наблюдать переключение между запущенными на компьютере программами, производимое операционной системой. Мы имеем возможность обратиться к специальному системному вызову, с помощью которого мы как будто приостанавливаем (“усыпляем”) действие программы. Но если даже мы этого не сделаем, в последствии операционная система сделает это сама. Если одна из программ будет в подвешенном состоянии, то система не зависнет.
Но все выглядит не так уж и просто в Windows NT. Давайте представим, что наш поток открыл файл и начал в него запись, но в этот же момент наша операционная система передала управление другому потоку. И представим. Что этот поток захочет открыть этот же файл. Что тогда произойдет? Возможно два исхода: первый - это сделать не получится и второй – наш второй поток откроет этот файл в режиме “for sharing”, т.е в режиме совместного доступа. Это нам совершенно не подходит. С этой же проблемой мы сможем столкнуться, если файл попытается открыть не другой поток нашей операционной системой, а поток, принадлежащий другому процессору.
Синхронизация потоков
При работе с потоками необходимо иметь возможность координировать их дейст-
вия. Часто координация действий подразумевает определенный порядок выполнения
операций. Кроме функций, предназначенных для создания потоков и изменения их пла-
нового приоритета, Win32 API содержит функции, которые переводят потоки в режим
ожидания сигналов от определенных объектов, например от файлов или процессов.
Кроме того, эти функции обеспечивают поддержку некоторых специальных объектов, в
частности семафоров и исключающих семафоров.
Лучше всего проиллюстрировать применение синхронизирующих объектов можно
на примере функций, ожидающих сигнала от объекта. С помощью одного набора обоб-
щенных команд можно организовать ожидание сигналов от процессов, семафоров, ис-
ключающих семафоров, событий и некоторых других объектов. Следующая функция
ожидает поступления сигнала от указанного объекта:
DWORD WaitForSingleObject( HANDLE hObject, // объект, сигнал от
// которого ожидается
DWORD dwMilliseconds ); // максимальное время ожидания
Функция WaitForSingleObject позволяет приостановить выполнение потока до тех
пор, пока не поступит сигнал от заданного объекта. Кроме того, в этой команде указыва-
ется максимальное время ожидания. Чтобы обеспечить бесконечное ожидание, в качест-
ве временного интервала следует задать значение INFINITE. Если объект уже доступен
или если он подает сигнал в течение заданного времени, функция WaitForSingleObject
возвращает значение 0 и выполнение потока возобновляется. Но если заданный интер-
вал времени прошел, а объект не подал сигнала, функция возвращает значение
WAIT_TIMEOUT.
Для того чтобы заставить поток ожидать сигналы сразу от нескольких объектов,
воспользуйтесь функцией WaitForMultipleObjects. Функция возвратит управление пото-
ку при поступлении сигнала либо от одного из указанных объектов, либо от всех объек-
тов вместе. В программе, управляемой событиями, должен быть задан массив объектов.
DWORD WaitForMultipleObjects(
DWORD dwNumObjects, // количество ожидаемых объектов
LPHANDLE lpHandles, // массив дескрипторов
BOOL bWaitAll, // TRUE - ожидание сигналов
// сразу от всех объектов;
// FALSE - ожидание сигнала от
// любого из объектов
DWORD dwMilliseconds ); // максимальный период ожидания
Результирующее значение WAIT_TIMEOUT, опять-таки, говорит о том, что задан-
ный интервал времени прошел, а сигнал от объектов не поступил. Если флаг bWaitAll
имеет значение FALSE, соответствующее ожиданию сигнала от любого из указанных
объектов, в случае успешного завершения функция WaitForMultipleObjects возвращает
код, который указывает, от какого из элементов массива lpHandles поступил сигнал.
(Первый элемент массива соответствует значению 0, второй - значению 1 и т.д.). Если
флаг bWaitАll имеет значение TRUE, функция не возвращает результат до тех пор, пока
не будут установлены флаги всех объектов (т.е. пока не завершите выполнение всех по-
токов).
Две расширенные версии функций ожидания содержат дополнительный флаг ста-
туса оповещения, который позволяет возобновить выполнение потока, если в течение
периода ожидания были завершены асинхронные операции чтения или записи. Работу
этих функций можно представить так, как будто они просят "разбудить" их в одном из
трех случаев: если становится доступным указанный объект, если заканчивается задан-
ный период времени или если завершилось выполнение фоновой операции вво-
да/вывода.
DWORD WaitForSingleObjectEx (
HANDLE hObject, // объект, сигнал от которого ожидается
DWORD dwMilliseconds, // максимальное время ожидания
BOOL bAlertable ); // TRUE - прекращение ожидания
// при завершении операции ввода/вывода
DWORD WaitForMultipleObjectsEx(
DWORD dwNumObjects, // количество ожидаемых объектов
LPHANDLE lpHandles, // массив дескрипторов
BOOL bWaitAll, // TRUE - ожидание сигналов
// сразу от всех объектов;
// FALSE - ожидание сигнала от
// любого из объектов
DWORD dwMilliseconds, // максимальный период ожидания
BOOL bAlertable ); // TRUE - прекращение ожидания
// при завершении операции ввода/вывода
При успешном выполнении функции ожидания объект, сигнал от которого ожи-
дался, обычно определенным образом изменяется. Например, если поток ожидал и по-
лучил сигнал от исключающего семафора, функция восстанавливает несигнальное со-
стояние исключающего семафора, чтобы остальные потоки знали о том, что он занят.
Кроме того, функции ожидания декрементируют значение счетчика семафора и сбрасы-
вают информацию о некоторых событиях.
Функции ожидания не изменяют состояния указанного объекта до тех пор, пока не
поступит сигнал от одного или нескольких других объектов. В частности, поток не за-
хватывает исключающий семафор сразу же после поступления сигнала от него, а ожида-
ет сигналов от других объектов. Кроме того, в течение времени ожидания исключающий
семафор снова может быть захвачен другим потоком, который еще больше продлит со-
стояние ожидания.
Конечно, ожидать поступления сигнала от объекта можно лишь в том случае, если
этот объект уже создан. Начнем с создания исключающих семафоров и семафоров, по-
скольку для работы с ними существуют параллельные API-команды, позволяющие соз-
давать и уничтожать эти объекты, захватывать их и освобождать, а также получать их
дескрипторы.
Функциям, создающим исключающие семафоры и семафоры, нужно указать тре-
буемые привилегии доступа и начальные параметры создаваемого объекта (можно также
указать его имя, но это необязательно) [12].
HANDLE CreateMutex (
LPSECURITY_ATTRIBUTES lpsa, // необязательные атрибуты безопасности
BOOL bInitialOwner // TRUE - создатель хочет
// завладеть полученным объектом
LPTSTR lpszMutexName ) // имя объекта
HANDLE CreateSemaphore(
LPSECURITY_ATTRIBUTES lpsa, //необязательные атрибуты безопасности
LONG lInitialCount, // исходное значение счетчика (обычно 0)
LONG lMaxCount, // максимальное значение
// счетчика (ограничивает число потоков)
LPTSTR lpszSemName ); // имя семафора (может иметь значение NULL)
Если в качестве атрибута безопасности задано значение NULL, результирующий
дескриптор получит все привилегии доступа и не будет наследоваться дочерними про-
цессами. Имена объектов являются необязательными, однако они становятся полезными
в ситуации, когда несколько процессов управляют одним и тем же объектом.
Если флагу bInitialOwner присвоить значение TRUE, поток сразу после создания
объекта завладеет им. Созданный исключающий семафор не станет подавать сигналы до
тех пор, пока поток не освободит его.
В отличие от исключающего семафора, который может принадлежать только од-
ному потоку, неисключающий семафор остается в сигнальном состоянии до тех пор, по-
ка его счетчик захватов не получит значения iMaxCount. Если другие потоки в этот момент попытаются завладеть семафором, они будут приостановлены до тех пор, пока
счетчик захватов не будет декрементирован до значения ниже максимального.
Пока семафор (или исключающий семафор) существует, поток взаимодействует с
ним посредством операций захвата и освобождения. Для захвата любого объекта поток
вызывает функцию WaitForSingleObject (или одну из ее разновидностей). Завершив вы-
полнение задачи, которая синхронизировалась захваченным объектом, поток освобож-
дает этот объект с помощью одной из следующих функций:
BOOL ReleaseMutex( HANDLE hMutex ) ;
BOOL ReleaseSemaphore(
HANDLE hSemaphore,
LONG lRelease, // величина, на которую
// инкрементируется значение счетчика
// при освобождении объекта (обычно 1)
LPLONG lplPrevious ); // переменная, которой присваивается
// предыдущее значение счетчика
При освобождении семафора: или исключающего семафора значение счетчика за-
хватов инкрементируется. Значение счетчика, превышающее 0, воспринимается систе-
мой как сигнал объекта ожидающим его потокам.
Освободить исключающий семафор может только тот поток, который завладел им.
Однако любой поток может вызвать функцию ReleaseSemaphore, которая инкрементиру-
ет значение счетчика захватов обычного семафора вплоть до его максимального значе-
ния. Изменение значения счетчика дает возможность в процессе выполнения программы
произвольным образом задать количество потоков, которые могут завладеть семафором.
Обратите внимание, что функция CreateSemaphore позволяет при создании нового сема-
фора присвоить его счетчику значение, меньшее максимального. Например, при разра-
ботке нового семафора его счетчику можно задать начальное значение 0. Такой прием
позволит заблокировать все потоки до тех пор, пока программа не произведет инициали-
зацию, а затем не увеличит значение счетчика с помощью команды ReleaseSemaphore.
Не забывайте вовремя освобождать синхронизирующие объекты. Не задав макси-
мального времени ожидания и забыв освободить исключающий семафор, вы заблоки-
руете все ожидающие его потоки.
Поток может ожидать несколько сигналов от одного и того же объекта, не будучи
заблокированным, однако после завершения каждого из процессов ожидания необходи-
мо, выполнять операцию освобождения. Это требование справедливо для семафоров,
исключающих семафоров и критических разделов.
Событие представляет собой объект, который создается программой при необхо-
димости информировать потоки о выполнении определенных действий. В простейшем
случае (ручной сброс) событие переключает свое состояние с помощью команд SetEvent
(сигнал включен) и ResetEvent (сигнал выключен). Когда сигнал включается, его полу-
чают все потоки, которые ожидают появления соответствующего события. Если сигнал
выключается, все такие потоки блокируются. В отличие от семафоров и исключающих
семафоров, события данного типа изменяют свое состояние только при подаче соответ-
ствующей команды каким-нибудь потоком.
События целесообразно использовать при условии, что поток должен выполняться
только после того, как программа обновит свое окно или пользователь введет опреде-
ленную информацию . Ниже представлены основные функции, предназначенные для
работы с событиями:
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpsa, // привилегии доступа
// (по умолчанию = NULL)
BOOL bManualReset, // TRUE - событие должно быть
// сброшено вручную
BOOL bInitialState, // TRUE - создание события в
// сигнальном состоянии
LPTSTR lpszEventName ); //имя события (допускается
// значение NULL)
BOOL SetEvent ( HANDLE hEvent );
BOOL ResetEvent( HANDLE hEvent );
При установке параметра bInitialState функция CreateEvent создает событие, кото-
рое сразу же будет находиться в сигнальное состоянии. Функции SetEvent и ResetEvent в
случае успешного завершения возвращают значение TRUE, при возникновении ошибки
- значение FALSE.
Параметр bManualReset функции CreateEvent позволяет создать событие, сбрасы-
ваемое не вручную, а автоматически. Автоматически сбрасываемое событие переходит в
несигнальное состояние сразу же после выполнения функции SetEvent. Для таких собы-
тий функция ResetEvent является избыточной. Кроме того, перед автоматическим сбро-
сом по каждому сигналу событие освобождает только один поток. Автоматически сбра-
сываемые события целесообразно применять в таких программах, где один основной
поток подготавливает данные для других, вспомогательных потоков. При готовности
нового набора данных основной поток устанавливает событие, по которому освобожда-
ется один вспомогательный поток. Остальные вспомогательные потоки продолжают
ожидать подготовки новых данных.
Наряду с выполнением операций установки и сброса события можно сгенериро-
вать импульсное событие:
BOOL PulseEvent( hEvent ) ;
Импульсное событие включает сигнал на короткий промежуток времени. Приме-
нение этой функции для события, сбрасываемого вручную, позволяет оповестить о нем
все ожидающие потоки, а затем сбросить событие. Вызов функции для события, сбрасы-
ваемого автоматически, дает возможность оповестить только один ожидающий поток.
Если не было ни одного ожидающего потока, то никакой другой поток не будет опове-
щен. С другой стороны, установка автоматического события позволит оставить сигнал
включенным до тех пор, пока не появится ожидающий его поток. После оповещения по-
тока событие сбрасывается автоматически.
Семафоры, исключающие семафоры и события могут совместно использоваться
несколькими процессами, которые необязательно должны быть связаны друг с другом.
Путем совместного задействования синхронизирующих объектов процессы могут коор-
динировать свои действия по аналогии с тем, как это делают потоки. Существует три
механизма совместного использования. Первый из них - это наследование, при котором
один процесс создает новый процесс, получающий копии всех дескрипторов родитель-
ского процесса. Копируются только те дескрипторы, которые при создании были поме-
чены как доступные для наследования.
Два других метода сводятся к созданию второго дескриптора существующего объ-
екта с помощью вызова функций. Какая из функций будет вызвана, зависит от имею-
щейся информации. При наличии дескрипторов как исходного процесса, так и процесса,
назначения следует вызывать функцию DuplicateHandle, при наличии только имени объ-
екта - одну из функций Openxxx. Две программы могут заранее определить имя совме-
стно используемого объекта. Кроме того, одна из программ способна передать другой
это имя посредством совместно используемой области памяти функций DDEML (DDE
Management Library - библиотека управления динамическим обменом данных) или кана-
ла.
BOOL DuplicateHandle(
HANDLE hSourceProcess, // процесс, которому принадлежит
// исходный объект
HANDLE hSource, // дескриптор исходного объекта
HANDLE hTargetProcess, // процесс, который хочет создать
// копию дескриптора
LPHANDLE lphTarget, // переменная для записи копии дескриптора
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, // может ли наследоваться копия дескриптора?
DWORD fdwOptions ); // дополнительные операции, например
// закрытие исходного дескриптора
HANDLE OpenMutex(
DWORD fdwAccess, //запрашиваемые привилегии доступа
BOOL binherit, // TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя исключающего семафора
HANDLE OpenSemaphore(
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, //TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя семафора
HANDLE OpenEvent(
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, // TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя события
Используемый в этом примере тип данных LPTSTR - это обобщенный текстовый
тип, который компилируется по-разному в зависимости от того, какой стандарт, Unicode
или ASCII, поддерживается приложением.
Семафоры, исключающие семафоры и объекты событий будут сохраняться в памя-
ти до тех пор, пока не завершатся все использующие их процессы или пока с помощью
функции CloseHandle не будут закрыты все дескрипторы соответствующего объекта:
BOOLCloseHandle(hObject);
Критический раздел представляет собой объект, выполняющий те же функции,
что и исключающий семафор, но в отличие от последнего критический раздел не может
наследоваться. Оба объекта доступны только для одного процесса. Преимущество кри-
тических разделов перед исключающими семафорами состоит в том, что они проще в
управлении и гораздо быстрее работают .
Терминология, принятая для функций, которые используются при работе с крити-
ческими разделами, отличается от терминологии, разработанной для функций управле-
ния семафорами, исключающими семафорами и событиями, однако сами функции вы-
полняют одни и те же операции. В частности, принято говорить не о создании
критического раздела, а о его инициализации. Процесс не ожидает критический раздел, а
входит в него, и не освобождает критический раздел, а покидает его; к тому же вы не
закрываете дескриптор, а удаляете объект.
VOID InitializeCriticalSection ( LPCRITICAL_SECTION lpcs );
VOID EnterCriticalSection( LPCRITICAL_SECTION lpcs );
VOID LeaveCriticalSection( LPCRITICAL_SECTION lpcs );
VOID DeleteCriticalSection( LPCRlTICAL_SECTION lpcs );
Переменная типа LPCRITICAL_SECTION содержит указатель (а не дескриптор)
критического раздела. Функция InitializeCriticalSection должна получить указатель на
пустой объект (&cs).
Windows
NT
как родоначальник многозадачности.
Windows NT – это линия операционных систем, производимых корпорацией Microsoft, релиз первой версии которой был в июле 1993. Это была мощная, основанная на высокоуровневом программном языке, многофункциональная, многопользовательская операционная система, сравнимая с UNIX. Основным архитектором этой системы был Дейв Катлер. NT была первой операционной системой Windows, основанной на гибридном ядре (также называемым как макроядро), а также первой полной 32-битной версией Windows, в то время как его аналоги - Windows 3.1 и Windows 9 – были 16-битными/32-битными гибридами. Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Home Server, Windows Server 2008 and Windows 7 основаны на Windows NT, хотя в мире они выступают не под брендом Window NT.
Программы и подсистемы в пользовательском режиме ограничены в том, к каким системным ресурсам они имеют доступ, в то время как режим ядра имеет неограниченный доступ к системе памяти и внешним устройствам. Ядро Window NT известен как гибридное ядро (или макроядро). Архитектура содержит обычное ядро, уровень аппаратных абстракций, драйвера и ряд сервисов, которые есть в режиме ядра.
Пользовательский режим в Window NT состоит из подсистем, которые способны переносить, передавать запросы ввода/вывода к соответствующему программному обеспечению драйверов режима ядра с использованием менеджера ввода/вывода. Две подсистемы составляют пользовательский режим Window NT: подсистема окружающей среды, окружения (которая запускает приложения, написанные для разных видов операционных систем), и центральная подсистема (оперирует специальными системными функциями от имени подсистемы окружения). Режим ядра в Window NT имеет полный доступ к аппаратному обеспечению и ресурсным системам компьютера. Режим ядра предостерегает службы и приложения пользовательского режима от достижения областей операционной системы, к которым у них не должно быть доступа.
Исполнительная часть программы со всеми подсистемами пользовательского режима имеет дело с вводом/выводом, управлением объектов, безопасностью и управлением процессами. Ядро «сидит» между уровнем аппаратных абстракций и исполнительной частью для предоставления многопроцессорную синхронизацию, связывает и прерывает распределение и координацию. Ядро также отвечает за инициализацию устройств драйвера в программе начального пуска. Драйвера режима ядра существуют в трех уровнях: высший уровень драйверов, средний и низший. Модель драйвера Windows – модель среднего уровня и была в основном изобретёна бинарной сдвоенной, а источник сравним с Windows 98 и Windows 2000.
NT
и его улучшенные версии
Многие программисты возлагали на Windows NT большие надежды с его появлением. Но он не превзошел их ожидания. Эта операционная оказалась довольно таки тяжеловесной, громоздкой. Из-за этого требовался огромный на то время объем оперативной памяти в 16 Мбайт, когда в основном преобладал объем в 8 Мбайт. Следовательно, установить Windows NT могли только счастливчики, которые обладали устройствами чтения компакт-дисков. Но на то время это было очень дорогим удовольствием, и лишь малое количество пользователей имели возможность установить CD-ROM. И конечно же круг любителей и пользователей Windows NT был довольно таки мал. Остальные продолжали пользоваться устаревшим, но проверенным Windows 3.1.
Но все же Windows приняла решение не отказываться от своего детища и начала продуктивную работу над улучшенной операционной системой. После выпуска нескольких выпущенных версий разработчики поняли. что без привлечения других независимых разработчиков различного программного обеспечения не обойтись.
Windows
95
Итак, в 1995 на свет появилась новая операционная система Chicago, а точнее Windows 95. Основной особенностью этой системы стало то, что ее интерфейс был очень похож на интерфейс системы Windows NT. Вся стратегия, использованная для создания Windows 95, получила своё – количество 32-битовых программ увеличивалось с невероятной скоростью. Но многие вскоре снова обратились к Windows NT. Ведь все же данная операционная система способна на поддержание работы одновременно с несколькими процессами, в то время как Windows 95 к сожалению имеет в использовании только один процессор.
Низший уровень этой операционной системы сформирован из огромного количества виртуальных устройств. Эти устройства отвечают за управление такими физическими устройствами, как видеокарта и сетевая карта, за копирование виртуальные устройства, используемые виртуальными машинами или за предоставление различных системных служб. Вот три наиболее важные виртуальные устройства: виртуальный машинный менеджер, менеджер конфигурации и подсистема ввода/вывода.
Виртуальный машинный менеджер считается ядром Windows 95 и в ответе за такие задачи, как управление памятью, событием или управление прерыванием, загрузка и инициализация всех других виртуальных устройств, создание новых виртуальных машин, а также распределение сетей.
Менеджер конфигурации обнаруживает все устройства в системе, которые используют несколько нумераторов, наблюдает за изменением системы на конфигурацию аппаратного обеспечения.
Подсистема ввода/вывода же координирует доступ к различным файловым системам.
Windows
98
Вскоре вслед за линейкой операционных систем Windows 95 была выпущена новая - Windows 98. Самым существенным отличием данной операционной системы от предыдущей стало наличие средств связи с Internet, которые были встроенными.
В Windows 95/98 работа с потоками доступна только 32-разрядным процессорам. Старые версии Windows не могут работать с функциями, которые отвечают за потоки. Любой 32-разрядный драйвер устройства имеет возможность создавать дополнительные потоки, а Windows 95/98 в отличии от предыдущих версий может организовывать диспетчеризацию всех потоков в соответствии с алгоритмами вытеснения, что представляет собой еще одна способность многозадачности Windows. Несмотря на то, что все эти потоки могут представлять совершенно различные виды программ, все же в самой системе все они показаны в виде одинаковых структур данных.
Windows
2000
К 2000 г. компания Microsoft выпустила на рынок два своих новых продукта. В
продолжении линейки NT была выпущена Windows 2000, а в продолжение и завершение
линейки 9x – Windows Millenium.
К 2001 году подавляющее большинство пользователей домашних компьютеров
продолжали использовать Windows 95 или Windows 98 (Windows Mellenium не была
принята большинством пользователей ПК, в первую очередь связи с частыми отказами
системы). Основная часть корпоративных пользователей, разработчиков и квалифици-
рованных пользователей с Windows NT перешли на Windows 2000.
Компания Microsoft распространяла Windows 2000 в четырех вариантах [1]:
• Professional;
• Server;
• Advanced Server;
• Datacenter Server.
Вариант Professional лучше всего подходит для оснащения рабочей станции, с ко-
торой в каждый момент работает только один пользователь. В этот комплект входит все
необходимое для использования Windows в качестве персональной операционной сис-
темы. Оснастив несколько рабочих станций системой Windows 2000 Professional, вы мо-
жете объединить их в небольшую вычислительную сеть.
Если вы намерены организовать работу крупной сети или Web-сервера, вы можете
приобрести Windows 2000 Server. Эта разновидность Windows, в свою очередь, распро-
страняется в нескольких различных вариантах. Например, в состав комплекта Site Server
входит система Microsoft Personalization System и другие средства организации работы
высокоэффективного многоцелевого узла Web.
Операционные системы Windows 2000 Advanced Server и Windows 2000 Datacenter
Server позволяют программам обращаться к большему по объему виртуальному адрес-
ному пространству, обладают дополнительными, более эффективными средствами рабо-
ты с сетью, а также поддерживают работу с большим количеством процессоров.
Основные особенности Windows 2000:
- рассчитана на рабочие станции и серверы, а также на применение в центрах обработ-
ки данных;
- отказоустойчива - плохо написанные программы не могут привести к краху системы;
- защищена - несанкционированный доступ к ресурсам (например, файлам или прин-
терам), управляемым этой системой, невозможен;
- богатый набор средств и утилит для администрирования системы в масштабах орга-
низации;
- ядро Windows 2000 написано в основном на С и C++, поэтому система легко перено-
сится на процессоры с другими архитектурами;
- полностью поддерживает Unicode, что упрощает локализацию и работу с использо-
ванием различных языков;
- имеет высокоэффективную подсистему управления памятью с широкими возможно-
стями;
- поддерживает структурную обработку исключений (structured exception handling,
SEH), облегчая восстановление после ошибок;
- позволяет расширять функциональность за счет динамически подключаемых биб-
лиотек (DLL);
- поддерживает многопоточность и мультипроцессорную обработку, обеспечивая вы-
сокую масштабируемость системы;
- файловая система Windows 2000 дает возможность отслеживать, как пользователи
манипулируют с данными на своих ПЭВМ.
Как было сказано выше, Windows 98 являлась операционная системой потреби-
тельского класса. Она обладала многими возможностями Windows 2000, но некоторые
ключевые из них не поддерживала:
- Windows 98 не являлась отказоустойчивой (приложение вполне способно привести к
краху системы);
- Windows 98 была менее защищена и поддерживала аппаратные платформы только с
одним процессором;
- Windows 98 поддерживала Unicode лишь частично.
Но почему вообще на момент начала 21 века существовало ядро Windows 98? От-
вет очень прост - Windows 98 была более дружественна к пользователю, чем Windows
2000.
Windows
XP
Компания Microsoft активно продолжала работать над созданием операционной
системы более дружественной к пользователю и в результате в 2001 г. объявила о вы-
пуске ОС – Windows XP (от англ. experience - опыт), известной также под кодовым на-
именованием Microsoft Codename Whistler. Первоначально в планы корпорации Micro-
soft входила разработка двух независимых операционных систем нового поколения.
Первый проект получил рабочее название Neptune, эта ОС должна была стать очеред-
ным обновлением Windows Millennium Edition, новой системой линейки Windows 9X.
Второй проект, называвшийся Odyssey, предполагал создание ОС на платформе Windows
NT, которая должна была придти на смену Windows 2000. Однако руководство Microsoft
посчитало нецелесообразным рассредоточивать ресурсы на продвижение двух разных
ОС, вследствие чего оба направления разработок были объединены в один проект - Mi-
crosoft Whistler. Главной задачей при разработке данной операционной системы было
сохранение всех основных особенностей Windows 2000, создав при этом более дружест-
венном интерфейсе пользователя. И следует отметить, что компании Microsoft это уда-
лось. С учетом вложения компанией Microsoft более миллиарда долларов в рекламную
компанию Windows XP в 2002-2003 годах, ОС Windows XP в 2003 - 2005 годах бьет все
рекорды продаж в области ОС. К 2006 году Windows 9x осталась только на устаревших
компьютерах, которые по техническим данным не позволяли установить более совре-
менную систему. Windows XP для настольных ПК и рабочих станций выпускалась в
трех модификациях: Home Edition для домашних персональных компьютеров, Profes-
sional Edition - для офисных ПК и, наконец, Microsoft Windows ХР 64bit Edition - для
персональных компьютеров, собранных на базе 64-битных процессоров.
Удивляет демократичность при установке ОС, вплоть до выбора типа файловой
системы - FAT32 или NTFS, хотя в данном случае при выборе FAT32 меняется главная
сущность линейки NT - защищенность на уровне файловой системы. Несмотря на ряд
спорных решений компания Microsoft создав Windows XP достигла главного - смогла
сдвинуть рядового пользователя домашних систем с Windows 98 в Windows XP.
В 2003 компанией Microsoft была анонсирована новая операционная система Win-
dows Server 2003, созданная как операционная система нового поколения для серверов,
основанная на концепции Microsoft Windows.NET. Данная система пришла на смену
Windows 2000 Server, Advanced Server и Datacenter Server.
Windows
Vista
В этом же 2003 году Microsoft объявляет о начале работы над ОС нового поколе-
ния - Microsoft Windows Longhorn, позднее система получила новое название - Wista.
Главные особенности системы - новая файловая система, созданная Microsoft в качестве
замены для FAT32 и NTFS. Это Windows Future Storage или, говоря коротко, WinFS.
Главная особенность файловой системы - абстрагирование пользователя и приложений
от физического расположения информации. В каком-то смысле она работает наподобие
обычной базы данных: где бы ни находился нужный файл, для нахождения и доступа к
нему требуется лишь выдача операционной системы запроса, характеризующего иско-
мый объект. Длина файла, его имя, специфические признаки - всё это может служить в
качестве компонентов такого запроса. Результат - максимально быстрый доступ к дан-
ным, вне зависимости от их типов и местонахождения, а также замечательное свойство:
все файлы, доступные с одного компьютера, можно увидеть сразу, а не разбросанными
по папкам. Попросту говоря, запустив МРЗ-плейер, можно увидеть сразу все поддержи-
ваемые им файлы, доступные с данной машины - без необходимости искать по директо-
риям. Любопытно, что найденные таким образом документы можно объединять в псев-
догруппы - для ещё большего удобства. Новой является так же поисковая система,
новый пользовательский интерфейс, известный под названием Plex. Это в первую оче-
редь две панели: одна привычная панель задач и вторая, опциональная панелька, допол-
няющая первую для большего удобства работы с системой, а также использование век-
торной графики для прорисовки иконок.
Следует отметить, что выпуск новой тяжеловесной системы от Microsoft отклады-
вался более трех лет и недаром. Большое число недороботок, многие спорные решения
привели к тому, что данная система стала главным "долгостроем" от Microsoft. И нако-
нец, только в начале 2007 года, после многократного переноса сроков выпуска, компа-
ния Microsoft выпустила ОС Windows Vista.
В заключение анализа ОС для настольных ПК и рабочих станций от Microsoft хо-
чется отметить, что в настоящее время огромное количество компаний, занимающихся
разработкой программных приложений, "уставшее" от постоянной гонки Microsoft по
пути создания новых операционных систем, переключается на Unix-подобные ОС, в
первую очередь Linux, Qnx и др.
Сходства и различия
Windows
9
x
и
Windows
NT
(2000,
XP
)
Общие черты.
1. Простота использования:
• Автоматическое определение оборудования во время инсталляции и последую-
щей конфигурации
• Интерфейс пользователя нового поколения
• Технология Plug and Play
2. Мощность:
• Реальная многозадачность
• Использование Win32® и OLE
3. Способность совместной работы:
• Встроенная поддержка основных сетевых протоколов (TCP/IP, IPX/SPX, NetBeui)
• Открытая сетевая архитектура и способность выбора типа сетевого клиента,
транспорта, драйверов и расширяемость для поддержки дополнительных сетевых
приложений.
• Встроенные средства предоставления удаленного доступа к рабочей станции
4. Управляемость:
• Открытая архитектура управления с возможностью использования дополнитель-
ных управляющих систем.
• Поддержка стандартов системного управления
• Независимая настройка рабочей области экрана для каждого пользователя и
средства мониторинга.
5. Поддержка приложений:
• Возможность выполнения 16-разрядных Windows приложений
• Возможность выполнения 32-разрядных Windows приложений
6. Переносимость
• Полная переносимость на платформы Intel® (386DX, 486, и Pentium® и т.д.)
Различия Windows 9x и Windows NT приведены в таблице
Таблица
Свойство | Windows 9x | Windows NT |
Обеспечение полной изоляции 16 битных Windows приложений путем предоставления каждому отдель- ного адресного пространств | Нет | Да |
Предоставление защиты по стандарту C-2. Отдельные каталоги и файлы могут быть сделаны невидимыми для выбранных пользователей. | Нет | Да |
Установка прав различных пользователей к изменению конфигурации системы. | Нет | Да |
Защита файловой структуры | Нет | Да |
Автоматическое восстановление после краха системы | Нет | Да |
Поддержка приложений | | |
MS DOS | Да | Большинство |
Поддержка файловых структур NTFS и HPFS | Нет | да |
Поддержка графической библиотеки OpenGL (грёхмерная графика) | Да, начиная с Win98 | Да |
Выполнение IBM® Presentation Manager® (through1.3) и поддержка стандарта POSIX 1003.2 | Нет | Да |
Системные возможности | | |
Драйверы MS DOS | Да | Нет |
Драйверы Win16 | Да | Нет |
Компрессия диска | Да | Да |
Поддержка мультипроцессорных платформ | Нет | Да |
Техническая поддержка и сервис | | |
Команды инженеров для решения проблем в критических случаях | Нет | Да |
Ежемесячные информационные выпуски | Нет | Да |
Ежеквартальные сервисные пакеты на CD и дискетах | Нет | Да |
Заключение
Как можно теперь заметить, в системах Windows используется два вида многозадачности. Первый основан на процессах, а второй – на потоках.
В многозадачности первого вида одновременно могут выполняться несколько программ (хоть технически это и не так, но на практике благодаря высокой скорости работы компьютера это незаметно).
Во втором случае, в случае потоков, могут одновременно выполняться несколько потоков. Во всех системах каждый процесс имеет один поток, но в Windows NT их может быть не один, а несколько.
Итак, можно сделать вывод, что в Windows NT допускается существование процессов, в которых выполняются одновременно две или более частей. Следовательно, при работе в этих операционных системах возможно параллельное выполнение как программ, так и их отдельных частей. Это позволяет писать очень эффективные программы
Используемая литература
1. Эндрю Таненбаум - «Современные операционные системы» (3-е изд. СПБ. Питер 2010г.)
2. И.И. Попов, Т.Л. Партыка-«Операционные системы, среды и оболочки» (изд.Форум, Инфра-М 2007 г.)
3. Коньков - «Устройство и функционирование ОС Windows» (изд.Интуит.РУ БИНОМ ЛЗ 2008 г.)
4. Гордеев А.В. - «Операционные системы» (Учебник для ВУЗов. 2-е изд. СПБ. Питер 2004 г.)
Аннотация к книгам
- http://en.wikipedia.org/wiki/Computer_multitasking
- http://en.wikipedia.org/wiki/Windows_NT
- http://en.wikipedia.org/wiki/Architecture_of_Windows_NT