Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Ограничения для процесса в ОС UNIX (по ресурсам). Связь со свойствами процесса.




Каждый процесс имеет огранич на ресурсы. Для получения инфы о текущем огранич и их изменении:

 

<sys/time.h> <sys/resurce.h>

 

Int getrlimit(int resource,struct rlimit*rep);

Int setrlimit( ) – изменение

 

Struct rlimit:

Rlim_t rlim_cur; soft текущее огранич

Rlim_t rlim_max; hard

 

Любой процесс может изменть от cur До max.

Ограничения установл при инициализ системы и наследуются процессом.

Обычный процесс может только уменьшать, а суперпользователь и увеличивать.

Hard можно увеличивать до бесконечности( RLIM_INFINITY)

 

35. Планирование процессов. Обработка прерываний таймера; «будильники» (алармы).

 

Планирование процессов:

Обеспечение поочередного доступа процессов к одному процессору.

1) Устанавливается задержка от 100 до 200 мс.

2) Фоновое приложение – не требует вмешательства пользователя.

Важно минимизировать суммарное время выполнения в системе..

3) Реального времени – нужны опред ограничения на время обработки кадра.

Задача – нах золотой середины( макс производительность)

 

Обработка прерываний таймера

 

Генерирует прерывания с интервалом 10мс (тик) HZ=100 – Опред в param.h

Обработчик прерываний ядра вызывается аппаратным прерыванием таймера, приоритет которого самый высокий. Обраб прерывания должна заним минимальное количество времени. Обработчики:

1) Обновление статистики использования CPU для текущ процесса.

2) Планировщик процессов (пересчет приоритета , проверка истчения временного кванта для процесса) Если превышена процессорная квота, то посыл сигнал SIGEXCPU

3) Обновление системного времени, обработка отложенных вызовов, обработка будильников.

 

Часть задач раегирует только на главный тик (кажд 4 тика). Отложенный вызов – определяет функцию, вызов котрой будет произведен системой через некот время.

Int co_ID = timeout

(void(*fn)(); caddr_t arg адрес функции, long delta через дельта тиков);

Ядро ОС производит вызов функции fn в системном контексте (она не дожна нах в состоянии ожидания)

 

Обработка отложенного вызова запускается после обработки прер таймера.

Хранится в системной таблице отложенных вызовов( просмотр кажд тик)

Будильники:

Процесс может попросить ядро отправить сигнал SIGALRM себе через некотрое время.

Для установки таймера реального времени:

Int alarm( unsigned int seconds)

- Вернет 0 если не было заказа.

- Если был, то вернет количество секунд до посылки сигнала. Новый заказ отменит старый и установит свой.

 

 


Поделиться:

Дата добавления: 2015-01-14; просмотров: 102; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты