Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lek_3_.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
257.54 Кб
Скачать

Синопсис

# include < unistd.h >

int nice ( int incr );

Чим нижче фактор поступливості, тим вище рівень пріоритету процесу. Параметр incr містить значення, яке добавляється до біжучого фактору поступ­ли­вості процесу, який викликає. Значення параметру incr може бути від’ємним і додатнім, а фактор поступливості є невід’ємним числом. Додатне значення incr збільшує фактор поступливості, а отже, зменшує рівень пріоритету. Від’ємне значення incr зменшує фактор поступливості, тим самим підвищує рівень пріо­ритету. Якщо значення incr змінює фактор поступливості вище або нижче від­по­відних граничних величин, він встановлюється рівним самій високій або са­мій низькій межам відповідно. При успішному виконанні функція nice () повер­тає новий фактор поступливості процесу, в іншому випадку – число -1, а попе­реднє значення фактору поступливості при цьому не змінюється.

Синопсис

# include < sys/resource.h >

int getpriority ( int which, id_t who);

int setpriority ( int which, id_t who, int value);

Функція setpriority () встановлює фактор поступливості для заданого процесу, групи процесів або користувача. Функція getpriority () повертає пріо­ри­тет заданого процесу, групи процесів або користувача. Синтаксис викорис­тан­ня функцій setpriority () і getpriority () для встановлення і зчитування фактора поступливості біжучого процесу подано в лістінгу 1.

 Лістінг 1. Викорис­тан­ня функцій setpriority () і getpriority ()

# include < sys/resource.h >

 . . .

id_t pid = 0;

int which = PRIO_PROCESS;

int value = 10;

int nice_value;

int ret;

nice_value = getpriority (which, pid);

if (nice_value < value) {

ret = setpriority (which, pid, value);

}

// . . .

В лістінгу 1 повертається та встановлюється пріоритет процесу який вик­ликає. Якщо фактор поступливості процесу, який викликає, стає менше 10, він встановлюється рівним 10. Процес задається значенням, що зберігається в параметрах which і who (синопсис вище). Параметр which може визначати про­цес, групу процесів або користувача і має наступні значення.

PRIO_PROCESS Означає процес

PRIO_PGRP Означає групу процесів

PRIO_USER Означає користувача

В залежності від значення параметру which параметр who містить іден­ти­фікаційний номер (id) процесу або ефективного користувача. В лістінгу 1 па­раметру which присвоюється значення PRIO_PROCESS. В лістінгу 1 параметр who встановлюється рівним 0, означаючи тим самим біжучий процес. Параметр value для функції setpriority () визначає нове значення фактора поступливості для заданого процесу, групи процесів або користувача. Фактори поступливості в середовищі Linux повинні знаходитися в межах від -20 до 19. В лістінгу 1 фак­тор поступливості встановлюється рівним 10, якщо біжуче його значення виявиться менше 10. На відміну від функції nice (), значення, яке передається функції setpriority (), є фактичним значенням фактору поступливості, а не змі­ще­нням, яке додається до біжучого фактору поступливості.

Якщо процес має декілька потоків, модифікація пріоритету вплине на пріоритет всіх його потоків. При успішному виконанні функції getpriority () повертає фактор поступливості заданого процесу, а при успішному виконанні функції setpriority () – значення 0. У випадку невдачі обидві функції повертають число -1. Однак число -1 є допустимим значенням фактора поступливості для довільного процесу. Щоб перевірити, чи не було помилок при виконанні функ­ції getpriority (), є доцільним протестувати зовнішню змінну errno.

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