Windows’95 и Windows NT, Сходства и различия, страница 5

В противоположность этому, требования к управлению памятью в большинстве приложений полностью удовлетворяются семейством функций Сmalloc или оператором C++new; в приложении Win32 эти вызовы автоматически транслируются в соответствующие системные вызовы управления памятью Win32. Для приложений с более высокими требованиями управления памятью существуют усложненные функции управления виртуальной памятью; например, эти функции можно использовать для манипуляции адресным пространством в несколько сотен мегабайт, выделяя, но не блокируя память.

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

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

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

Некоторые функциональные возможности модуля Kernel определены только для Windows NT. Например, модуль Kernel NT поддерживает множество функций проверки и работы с атрибутами защиты объектов ядра.

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

Доступ к содержимому INI-файлов также осуществляется через вызовы функций модуля Kernel, таких какWriteProfileString илиGetPrivateProfileString. Однако, использовать эти функции не рекомендуется, вместо этого новым приложениям следует использовать для хранения инициализационной информации системный реестр Windows.

Модуль Kernel также поддерживает функции, необходимые для 32-разрядных программ только с текстовым выводом — консольных приложений. На первый взгляд эти программы напоминают обыкновенные старые программы DOS, но она самом деле это полностью 32-разрядные приложения, которые запускаются из командной строки и не используют графический интерфейс. Тем не менее, эти приложения точно также имеют доступ к множеству системных вызовов Win32; например, консольные приложения могут использовать функции виртуальной памяти, а также они могут быть многопоточными программами.