Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВОПРОСЫ К ЭКЗАМЕНУ ОС.doc
Скачиваний:
13
Добавлен:
23.09.2019
Размер:
612.35 Кб
Скачать

21 Системные вызовы в unix и windows сравнение.

Программы UNIX состоят из кода, который выполняет те или иные действия, при необходимости обращаясь к системе с системными вызовами для получения конкретных услуг. В отличие от этого программа Windows управляется, как правило, событиями. Основная программа ждет, пока возникнет какое-нибудь событие, а затем вызывает процедуру для его обработки. Типичные события — это нажатие клавиши, перемещение мыши, нажатие кнопки мыши или вставка в привод компакт-диска. Затем для обслуживания события, обновления экрана и обновления внутреннего состояния программы вызываются обработчики. В итоге все это приводит к несколько иному стилю программирования, чем в UNIX. В UNIX имеется практически однозначная связь между системными вызовами (например read) и библиотечными процедурами (с той же read), используемыми для обращения к системным вызовам. В системе Windows ситуация совершенно иная. Начнем с того, что фактические системные вызовы и используемые для их выполнения библиотечные вызовы намеренно разделены. Корпорацией Microsoft определен набор процедур, названный Win32 API. Количество имеющихся в Win32 API вызовов велико и исчисляется тысячами. В Win32 API имеется огромное число вызовов для управления окнами, геометрическими фигурами, текстом, шрифтами, полосами прокрутки, диалоговыми окнами, меню и другими составляющими графического пользовательского интерфейса. Если графическая подсистема работает в памяти ядра (что справедливо для некоторых, но не для всех версий Windows), то их можно отнести к системным вызовам; в противном случае они являются просто библиотечными вызовами. Вызов CreateProcess создает новый процесс. В нем совмещается работа UNIX-вызовов/огй и execve. Множество параметров этого вызова определяют свойства вновь создаваемого процесса. В Windows отсутствует иерархия процессов, присущая UNIX, поэтому понятия родительского и дочернего процессов здесь не используются. После создания процесса процесс- создатель и вновь созданный процесс становятся равноправными. Вызов Wait- ForSingleObject используется для ожидания события. Ожидание может касаться множества возможных событий. Если в параметре указан процесс, то вызывающая программа дожидается окончания конкретного процесса. Завершение работы процесса происходит при использовании вызова ExitProcess. Следующие шесть вызовов работают с файлами и функционально похожи на своих UNIX-собратьев, хотя и отличаются от них в параметрах и деталях. Тем не менее файлы могут быть открыты, закрыты, прочитаны и записаны практически так же, как и в UNIX. Вызовы SetFilePointer и GetFileAttributesEx устанавливают позицию указателя файла и получают некоторые из атрибутов файла. В Windows также имеются каталоги, которые, соответственно, создаются и удаляются вызовами CreateDirectory и RemoveDirectory. Здесь тоже имеется понятие текущего каталога, который устанавливается вызовом SetCurrentDirectory. Для получения текущего времени используется вызов GetLocalTime. В интерфейсе Win32 отсутствует поддержка связанных файлов, подключаемых файловых систем, защиты файлов, сигналов, поэтому отсутствуют и вызовы, соответствующие тем, что есть в UNIX. Win32 не является полностью единообразным и последовательным интерфейсом.