Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 530 из 715



алгоритм terminal_write

{

 do while(из пространства задачи еще поступают данные)  {

  if (на терминал поступает информация)  {

   приступить к выполнению операции записи данных из списка, хранящего выводные данные;

   приостановиться (до того момента, когда терминал будет готов принять следующую порцию данных);

   continue; /* возврат к началу цикла */

  }

  скопировать данные в объеме символьного блока из пространства задачи в список, хранящий выводные данные: строковый интерфейс преобразует символы табуляции и т. д.;

 }

 приступить к выполнению операции записи данных из списка, хранящего выводные данные;

}

Рисунок 10.13. Алгоритм переписи данных на терминал

'Если на терминал ведут запись несколько процессов, они независимо друг от друга следуют указанной процедуре. Выводимая информация может быть искажена; то есть на терминале данные, записываемые процессами, могут пересекаться. Это может произойти из-за того, что процессы ведут запись на терминал, используя несколько вызовов системной функции write. Ядро может переключать контекст, пока процесс выполняется в режиме задачи, между последовательными вызовами функции write, и вновь запущенные процессы могут вести запись на терминал, пока первый из процессов приостановлен. Выводимые данные могут быть также искажены и на терминале, поскольку процесс может приостановиться на середине выполнения системной функции write, ожидая завершения вывода на терминал из системы предыдущей порции данных.

|< Пред. 528 529 530 531 532 След. >|

Java книги

Контакты: [email protected]