Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники / KONSPEKT_СРС_OSA.doc
Скачиваний:
31
Добавлен:
12.05.2015
Размер:
715.26 Кб
Скачать

Программный интерфейс платформы сапр

Основу операционной среды платформы САПР составляет программный интерфейс или интерфейс программирования приложений – ApplicationProgrammingInterface(API).

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

  • Среда Unix

  • Среда Windows

Среда Unixтрадиционно использовалась для создания САПР на рабочих станциях, аWindows– для персональных компьютеров.

У нас в практически всех разработках САПР лежит Windows.

При создании Windows-платформы фирмаMicrosoftпредложила программный интерфейсWin32API.

Интерфейс Win32APIбыл реализован на 4-х платформах:

  1. Win32 S

  2. Windows 95-98

  3. Windows NT

  4. Windows 2000

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

Полной библиотекой является библиотека WindowsNT,Windows2000.

Усеченная библиотека у Windows95-98,Win32S.

Платформа Win32S– промежуточная. Она является переходом отWindows3.1-3.11 к новой платформеWindows95. Основным отличием между ними является то, чтоWindows3.1-3.11 – 16-разрядная платформа, аWin32Sимеет 32-битовый интерфейс (функции 32-битовые).

Win32Sявляется надстройкой дляWindows3.1-3.11.

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

В Windows3.1-3.11 не были реализованы потоки.

Серьезная платформа, пригодная для создания 32-разрядных платформ САПР - WindowsNT.

WindowsNT– полноценная операционная система, не отягощенная тяжелым наследствомMS-DOS.

Для WindowsNTродными являются 32-битовые приложения, при этомWindows32 интерфейс обеспечивает параллельное выполнение одновременно нескольких разнотипных приложений.

Особенности Windows NT

  1. Разработчики интерфейса WindowsNTстарались сделать так, чтобы приложение, разработанное подOS/2 и др.16-битовые приложения автоматически выполнялось вWindowsNT.

  2. WindowsNTпереносима, т.е. способна работать на машинах с различными типами процессоров. Большая частьWindowsNTнаписана на языках Си и Си++, поэтому она может быть скомпилирована под любую аппаратную среду. При переходе в другую аппаратную среду необходимо переписать ядро (Kernel) и программный слой абстрагирования от оборудования (HardwareAbstractionLayer). Эти 2 части операционной системы прописываются всегда на языкеAssembler.

  3. Поддержка многопроцессорных машин. WindowsNTможет поддерживать одновременно 30 потоков.

Windows95 – офисная версия операционной системы.

Отличия от Windows NT:

  1. Не полностью поддерживается асинхронный ввод/вывод файлов.

  2. Упрощенная реализация функций регистрации, защиты и обработки событий.

В основе программного интерфейса Win32Sлежит понятиепроцесса.

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

В Win32 процессу отводится 4Гб адресного пространства.

В отличие от других программных интерфейсов, Win32 процесс ничего не выполняет. Он просто владеет 4Гб адресным пространством, содержащим код и модули для .exeфайлов приложения.

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

Помимо адресного пространства, процессу принадлежат такие ресурсы, как:

  • Файлы

  • Динамические области памяти

  • Потоки

Ресурсы, создаваемые при жизни процесса уничтожаются при его завершении.

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

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

Если у процесса нет потоков, то сам процесс не есть действие – он уничтожается.

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

Объекты, входящие в ядро операционной системы:

  1. Каналы – pipe objects

  2. Объекты – mutex

  3. Семафоры – semaphore objects

  4. Почтовые ящики – mail slot objects

  5. Процессы – process objects

  6. Потоки – threadobjects

  7. Файлы, проецируемые в память – file-mappingobjects

  8. События – event objects

  9. Файлы – file objects

Эти объекты создаются различными функциями Win32.

Например, функция Createfile-mappingсоздает файл, проецируемый в память. Если эта функция срабатывает, тогда в пределах 4Гб адресного пространства выделяется блок памяти, который идентифицируется с соответствующим файлом, а приложению, которое выдало соответствующую функцию, возвращается идентификатор выделенной области памяти. Таким образом, приложение получает всю необходимую информацию, чтобы манипулировать объектом.

Приложение может манипулировать с другими объектами, которые принадлежат не ядру операционной системы, а GUI(GraphicUserInterface). Есть библиотека функций, которая создаетGDI-GraphicDevicesInterface(графический интерфейс устройств).

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

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

Если потоку нет необходимости манипулировать с каким-либо объектом ядра, то функция CloseHandleприведет к тому, что счетчик числа пользователей будет уменьшен на 1, а как только счетчик станет нулевым, объект будет удален из памяти.

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

Для каждого пользовательского объекта выделяется память.

В системе Win32 поддерживается 2 типа приложений:

  1. Приложения, использующие графический интерфейс (GUI)

  2. Консольные приложения

Приложения, использующие GUI, имеют графические приложения, окна, меню и т.д.

Консольные приложения имитируют работу в среде MS-DOS.

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

Главное различие между консольными приложениями и GUI-приложениями заключается в том, что дляGUI-приложений первичный поток процесса начинается с исполнения функцииWinMain, а для консольных приложений – просто с функцииMain.

Функция WinMainотвечает за выполнение следующих операций:

  1. Поиск указателя на командную строку нового процесса

  2. Поиск указателя на переменные окружения нового процесса

  3. Инициализация глобальных переменных

  4. Инициализация кучи (динамической памяти)

  5. Инициализация обращения к функции Exit.

Процесс создается при вызове функции приложением CreateProcess.

Функция CreateProcessможет выполняться в каком-либо потоке. В этом случае создается новый объект процесса. Этот объект – компактная структура данных. После этого для нового процесса создается виртуальное адресное пространство размером 4Гб и в него загружается код, данные иDLL-библиотеки нового процесса. После этого создается объект ядра потока.

Структура данных объекта ядра потока – эта та структура, которая управляет потоком.

Процесс завершается вызовом либо функции ExitProcess, либо функциейTerminalProcess.

Функцией ExitProcessосуществляется нормальное завершение работы процесса, а функциейTerminalProcess– аварийное.

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

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

TerminalProcessзавершает процесс – это аварийная функция для непредвиденных ситуаций.

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

  1. Прекращается выполнение всех потоков

  2. Все объекты GUIиGDIзакрываются. Все объекты ядра, созданные в процессе, тоже закрываются.

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

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

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

Соседние файлы в папке Заочники