Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ ОС ЭКЗАМЕН.docx.doc
Скачиваний:
2
Добавлен:
16.09.2019
Размер:
185.86 Кб
Скачать

17. Для чего используются потоки. Функции

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

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

Существование нескольких процессов позволяет компьютеру "одновременно" выполнять несколько задач. Существование нескольких потоков позволяет процессу разделять работу для параллельного выполнения. На многопроцессорном компьютере процессы или потоки могут работать на разных процессорах. Это позволяет выполнять реально параллельную работу.

Чтобы создать поток нужно воспользоваться функцией:

HANDLE WINAPI CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes, //указатель на структуру

SIZE_T dwStackSize, //размер стека

LPTHREAD_START_ROUTINE lpStartAddress, //адрес на имя потоковой ф-ции

LPVOID lpParameter, //адрес параметра пот. ф-ции

DWORD dwCreationFlags, //флаг

LPDWORD lpThreadId //id потока

);

Чтобы завершить поток нужно воспользоваться функцией:

DWORD WINAPI WaitForMultipleObject(

DWORD nCount, //размер массива

const HANDLE *lpHandles, //массив дескрипторов

BOOL bWaitAll, //TRUE – завершение всех, FALSE – завершение одного

DWORD dwMilliseconds //время ожидание

);

18. Приоритеты процессов и потоков. Функции:

Для установки класса приоритета для указанного процесса следует воспользоваться функцией:

BOOL WINAPI SetPriorityClass(

HANDLE hProcess, //Дескриптор процесса

DWORD dwPriorityClass //Класс приоритета

);

Классы приоритетов:

ABOVE_NORMAL_PRIORITY_CLASS //Класс приоритета, где процесс который имеет приоритет выше нормального, но ниже высокого класса

BELOW_NORMAL_PRIORITY_CLASS //Класс приоритета, где процесс имеет приоритет выше IDLE, но ниже нормального

HIGH_PRIORITY_CLASS, //Класс приоритета, где процесс с самым высоким приоритетом, должен выполнять срочные задачи, которые не могут ожидать

IDLE_PRIORITY_CLASS //Класс приоритета, где процесс который работает только когда система находится в режиме ожидания

NORMAL_PRIORITY_CLASS, //Класс приоритета, где процесс есть с обычным(нормальным) приоритетом

REALTIME_PRIORITY_CLASS //Класс приоритета, где процесс есть с приоритетом реального времени, упреждает процессы операционной системы.

Для установки приоритета потока необходимо воспользоваться функцией

BOOL WINAPI SetThreadPriority(

HANDLE hThread, //Дескриптор потока

int nPriority //Значение приоритета

);

Значения приоритетов:

THREAD_PRIORITY_ABOVE_NORMAL //1 – выше нормального

THREAD_PRIORITY_BELOW_NORMAL //-1 – ниже нормального

THREAD_PRIORITY_HIGHEST //2 – высокий приоритет

THREAD_PRIORITY_IDLE //-15 – самый низкий приоритет (в режиме ожидания)

THREAD_PRIORITY_LOWEST //-2 – Низкий приоритет потока

THREAD_PRIORITY_NORMAL //0 – обыкновенный (нормальный) приоритет

THREAD_PRIORITY_TIME_CRITICAL //15 – приоритет реального времени.