|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.4. Сравнение ОС Windows и UNIX |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Операционные системы Windows и UNIX фундаментально отличаются друг от друга в соответствующих моделях программирования. Программы UNIX состоят из кода, который выполняет те или иные действия, при необходимости обращаясь к системе с системными вызовами для получения конкретных услуг. В отличие от этого программой Windows управляют, как правило, события. Основная программа ждет, пока возникнет какое-нибудь событие, а затем вызывает процедуру для его обработки. Типичные события — это нажатие клавиши, перемещение мыши, нажатие кнопки мыши или подключение USB-диска. Затем для обслуживания события, обновления экрана и обновления внутреннего состояния программы вызываются обработчики. В итоге все это приводит к несколько иному стилю программирования, чем в UNIX, но поскольку эта книга посвящена функциям и структурам операционных систем, различные модели программирования не будут вызывать у нас особого интереса. В системе Windows ситуация совершенно иная. Начнем с того, что фактические системные вызовы и используемые для их выполнения библиотечные вызовы намеренно разделены. Корпорацией Microsoft определен набор процедур, названный Win32 API (Application Programming Interface — интерфейс прикладного программирования). Предполагается, что программисты должны использовать его для доступа к службам операционной системы. Этот интерфейс частично поддерживается всеми версиями Windows, начиная с Windows 95. Отделяя API-интерфейс от фактических системных вызовов, Microsoft поддерживает возможность со временем изменять существующие системные вызовы (даже от одной версии к другой), сохраняя работоспособность уже существующих программ. Фактически в основу Win32 вносится некоторая неоднозначность, поскольку в самых последних версиях Windows содержится множество новых, ранее недоступных системных вызовов. В этом разделе под Win32 будет пониматься интерфейс, поддерживаемый всеми версиями Windows. Win32 обеспечивает совместимость версий Windows. Количество имеющихся в Win32 API вызовов велико — исчисляется тысячами. Более того, наряду с тем, что многие из них действительно запускают системные вызовы, существенная часть целиком выполняется в пространстве пользователя. Как следствие, при работе с Windows становится невозможно понять, что является системным вызовом (то есть выполняемым ядром), а что — просто вызовом библиотечной процедуры в пространстве пользователя. Фактически то. что было системным вызовом в одной версии Windows, может быть выполнено в пространстве пользователя в другой, и наоборот. В этой книге при рассмотрении системных вызовов Windows мы будем использовать там, где это необходимо, процедуры Win32, поскольку Microsoft гарантирует, что с течением времени они не будут меняться. Но следует помнить, что не все они действительно являются системными вызовами (то есть обрабатываются ядром). Давайте коротко поговорим об этом списке. Вызов Create Process создает новый процесс. В нем совмещается работа UNIX-вызовов forit и ехесvе. Множество параметров этого вызова определяют свойства вновь создаваемого процесса. В Window's отсутствует иерархия процессов, присущая UNIX, поэтому понятия родительского и дочернего процессов здесь не используются. После создания процесса процесс-создатель и вновь созданный процесс становятся равноправными. Вызов WaitForSingleObject используется для ожидания события. Ожидание может касаться множества возможных событий. Если в параметре указан процесс, то вызывающая программа дожидается окончания конкретной) процесса. Завершение работы процесса происходит при использовании вызова ExitProcess. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Таблица 1.1. Вызовы Win32 API, приблизительно соответствующие вызовам UNIX
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Следующие шесть выловов работают с файлами и функционально похожи на своих UNIX-собратьев, хотя и отличаются от них в параметрах н деталях. Тем не менее файлы могут быть открыты, закрыты, прочитаны и записаны практически так же, как в UNIX. В интерфейсе Win32 отсутствует поддержка связанных файлов, подключаемых файловых систем, защиты файлов, сигналов, поэтому отсутствуют и вызовы, соответствующие тем, что есть в UNIX. Разумеется, в Win32 есть огромное количество других вызовов, которых нет в UNIX, особенно относящихся к графическому пользовательскому интерфейсу. Windows Vista имеет усовершенствованную систему защиты, а также поддерживает связанные файлы. А в Windows 7 и 8 добавлено еще больше свойств и системных вызовов. В дальнейшем будут рассматриваться только операционные системы фирмы Microsoft, которые предназначены для использования на персональных компьютерах. Эти операционные системы отличаются своей внутренней организацией, но используют один и тот же интерфейс для программирования приложений — Win API. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 |