Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_po_OSyam.doc
Скачиваний:
34
Добавлен:
27.09.2019
Размер:
493 Кб
Скачать
☆
    1. Вопрос№4 Объекты и их дескрипторы в ос Windows

Объектом в ОС Windows называется структура данных, которая представляет собой системный ресурс. Таким ресурсом может быть, например, файл, поток, графический рисунок.

Операционные системы Windows предоставляют приложению объекты трех категорий:

User – объекты интерфейса пользователя;

Graphics Device Interface – объекты интерфейса графических устройств;

Kernel – объекты ядра.

Категория User включает объекты, которые используются приложением для интерфейса с пользователем. К таким относятся, например, окна и курсоры.

Категория Graphics Device Interfacе включает объекты, которые используются для вывода информации на графические устройства. К таким объектам относятся, например, кисти и перья.

Категория Kernel включает объекты ядра ОС Windows. К таким объектам относятся, например, потоки и каналы.

В курсе ОС рассматриваются только объекты категории Kernel.

Под доступом к объектам понимается возможность приложения выполнять над объектом некоторые функции. Для работы с объектами в ОС используется интерфейс (набор функций и классов) Win 32 API.

Приложение не имеет прямого доступа к объектам, а обращается к ним косвенно. Для этого в ОС Windows каждому объекты ставится в соответствие дескриптор (handle). В Win32 API дескриптор имеет тип HANDLE. Дескриптор объекта представляет собой запись в таблице, которая поддерживается системой и содержит адрес объекта и средства для идентификации типа объекта. Дескриптор создается операционной системой.

Порядок работы прикладной программы с объектами ядра:

  1. Создать объект ядра посредством вызова функции Create. Функция Create возвращает дескриптор созданного объекта.

  2. Выполнить доступ к объекту через его дескриптор.

  3. Закрыть дескриптор объекта посредством вызова функции CloseHandle.

  1. Потоки и процессы

    1. Вопрос№5 Поток управления

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

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

Например, рассмотрим следующую программу:

int a,b,c;

cin>>a>>b;

if (a<b)

c=b-a;

else

c=a-b;

cout<<c<<endl;

Предположим, что пользователь ввел следующие данные: 1 2. Тогда при работе программы будут выполняться инструкции:

cin>>a>>b;

if (a<b)

c = b-a;

cout<<c<<endl;

Предположим, что пользователь ввел следующие данные: 2 1. Тогда при работе программы будут выполняться инструкции:

cin>>a>>b;

if (a<b)

else

c = a-b;

cout<<c<<endl;

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

Если в программе могут одновременно существовать несколько потоков управления, то программа называется многопоточной. А сами потока в этом случае называются параллельными. Если в программе одновременно может существовать только один поток, то такая программа называется однопоточной.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]