Операционные системы. Программирование в операционной среде Windows
5 1. Работа с процессами 1.1.Понятие процесса Процесс - это экземпляр выполняемого приложения. В операционной среде Windows процесс состоит из двух компонентов: - объекта ядра (ОЯ) «процесс», через который операционная система (ОС) управляет процессом; - адресного пространства процесса, содержащего код и данные всех ЕХЕ- и DLL модулей. Именно в нем находятся области памяти, динамически распределяемые для стеков потоков и других нужд. ОС и ее приложения используют ОЯ для управления ресурсами: процессами, потоками, файлами и др. Приложения могут создавать и использовать ОЯ только с помощью API функций ОС. Функция создания ОЯ возвращает описатель объекта - handle, идентифицирующий объект. ОЯ принадлежит ядру ОС, а не процессу. ОЯ — это структура данных в памяти ядра и она доступна только ядру ОС. Через эту структуру ОС управляет объектом, например процессом. В элементах структуры содержится информация об объекте. Например, ОЯ «процесс» имеет идентификатор, тип, приоритет процесса и др., а ОЯ «файл» - режим открытия и разделения, смещение в байтах и др. У каждого типа ОЯ есть такие элементы, как дескриптор защиты и счетчик числа пользователей. Дескриптор защиты содержит информацию о создателе объекта и процессах, имеющих доступ к объекту. Функциям создания объектов ядра передается параметр - указатель на структуру атрибутов защиты SECURITY ATTRIBUTES. Процесс может содержать несколько потоков. В каждом процессе есть минимум один поток. При создании процесса первый, так называемый первичный, поток создается системой автоматически. Далее этот поток может породить другие потоки, те в свою очередь — новые и т. д. Начинается работа первичного потока от стартовой функции библиотеки C/C++, которая вызывает одну из входных функций. Каждый поток имеет свой стек и сохраняет контекст своей задачи - содержимое регистров процессора. Контекст задачи находится в ОЯ «поток». Чтобы процесс что-нибудь выполнил, в нем нужно создать поток. Именно потоки отвечаю за исполнение кода, содержащегося в адресном пространстве процесса. Если процесс владеет несколькими потоками, тогда они "одновременно" исполняют код в адресном пространстве процесса. Чтобы все потоки работали, ОС отводит каждому из них определенное процессорное время. Выделяя потокам отрезки времени (называемые квантами) по принципу карусели, она создает тем самым иллюзию одновременного выполнения потоков. Если в машине установлено более одного процессора, алгоритм работы операционной системы значительно
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy