Инфо IT 24

IT блог, IT мышление

Системная библиотека

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

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

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

Например, на рис. 4.2 на линии времени показано последовательное изменение состояния буферов ввода/вывода двух процессов, последовательно выводящих на экран арабские цифры от 1 до 9 и латинские буквы от А до F.

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

Статью опубликовал: i24TbloG

Метки:

Из каталога:

Программирование Linux Part F

Предыдущая статья:

Следующая статья: