- •Введение.
- •Вопрос№1 Определение операционной системы
- •Вопрос№2 Структура операционной системы
- •Вопрос№3 Типы операционных систем
- •Вопрос№4 Объекты и их дескрипторы в ос Windows
- •Потоки и процессы
- •Вопрос№5 Поток управления
- •Вопрос№6 Состояния потока
- •Вопрос№11 Управление исполнением процессов
- •Планирование процессов
- •3.8. Задачи на обслуживание непрерываемых процессов
- •3.9. Задачи на обслуживание прерываемых процессов
- •4. Синхронизация потоков
- •5. Примитивы синхронизации
- •6. Классические задачи синхронизации
- •6.5. Задача Дейкстры об обедающих философах
- •Вопрос 1. Требуется определить, сколько ресурсов дополнительно можно выделить процессу j, где
- •Вопрос 2. Процесс 3 запросил у системы 3 единицы ресурса r. Удовлетворит ли система этот запрос?
- •8. Передача данных между процессами.
- •9. Управление устройствами компьютера
- •10. Виртуальная память
- •11. Управление файлами
Вопрос№4 Объекты и их дескрипторы в ос Windows
Объектом в ОС Windows называется структура данных, которая представляет собой системный ресурс. Таким ресурсом может быть, например, файл, поток, графический рисунок.
Операционные системы Windows предоставляют приложению объекты трех категорий:
User – объекты интерфейса пользователя;
Graphics Device Interface – объекты интерфейса графических устройств;
Kernel – объекты ядра.
Категория User включает объекты, которые используются приложением для интерфейса с пользователем. К таким относятся, например, окна и курсоры.
Категория Graphics Device Interfacе включает объекты, которые используются для вывода информации на графические устройства. К таким объектам относятся, например, кисти и перья.
Категория Kernel включает объекты ядра ОС Windows. К таким объектам относятся, например, потоки и каналы.
В курсе ОС рассматриваются только объекты категории Kernel.
Под доступом к объектам понимается возможность приложения выполнять над объектом некоторые функции. Для работы с объектами в ОС используется интерфейс (набор функций и классов) Win 32 API.
Приложение не имеет прямого доступа к объектам, а обращается к ним косвенно. Для этого в ОС Windows каждому объекты ставится в соответствие дескриптор (handle). В Win32 API дескриптор имеет тип HANDLE. Дескриптор объекта представляет собой запись в таблице, которая поддерживается системой и содержит адрес объекта и средства для идентификации типа объекта. Дескриптор создается операционной системой.
Порядок работы прикладной программы с объектами ядра:
Создать объект ядра посредством вызова функции Create. Функция Create возвращает дескриптор созданного объекта.
Выполнить доступ к объекту через его дескриптор.
Закрыть дескриптор объекта посредством вызова функции CloseHandle.
Потоки и процессы
Вопрос№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;
Графически потоки управления могут быть представлены графиком (блок-схемой), вершины которого обозначают инструкции, а дуги указывают последовательность исполнения инструкций. Например, для нашей программы граф потоком управления имеет следующий вид:
Если в программе могут одновременно существовать несколько потоков управления, то программа называется многопоточной. А сами потока в этом случае называются параллельными. Если в программе одновременно может существовать только один поток, то такая программа называется однопоточной.
