Операционные системы. Учебное пособие. Марапулец Ю.В. - 122 стр.

UptoLike

Составители: 

Ко второй группе относятся неблокирующиеся системные вызовы. В данном слу-
чае системный вызов возвращается немедленно, выполнив предписанные ему операции
ввода-вывода полностью, частично или не выполнив совсем, в зависимости от текущей
ситуации (состояния устройства, наличия данных и т. д.). В качестве примера такого вы-
зова можно привести периодическую проверку на поступление информации с клавиату-
ры при выполнении трудоемких расчетов.
К третьей группе относятся асинхронные системные вызовы. Процесс, использо-
вавший асинхронный системный вызов, никогда в нем не блокируется. Системный вы-
зов инициирует выполнение необходимых операций ввода-вывода и немедленно воз-
вращается, после чего процесс продолжает свою регулярную деятельность. Об
окончании завершения операции ввода-вывода операционная система впоследствии ин-
формирует процесс изменением значений некоторых переменных, передачей ему сигна-
ла или сообщения или каким-либо иным способом.
Необходимо четко понимать разницу между неблокирующимися и асинхронными
вызовами. Неблокирующийся системный вызов для выполнения операции чтения вер-
нется немедленно, при этом может быть прочитано как запрошенное количество байтов,
так и меньшее их количество или вообще ничего. Асинхронный системный вызов для
этой операции также вернется немедленно, но требуемое количество байт все равно бу-
дет прочитано в полном объеме.
Для обеспечения операций ввода-вывода достаточно часто используются механиз-
мы буферизации и кэширования. Рассмотрим их более подробно.
Под буфером обычно понимается некоторая область памяти для запоминания ин-
формации при обмене данных между двумя устройствами, двумя процессами или про-
цессом и устройством. Существует три основные причины, приводящие к использова-
нию буферов при выполнении операции ввода-вывода [2].
Первая причина буферизации - это разные скорости приема и передачи информации, ко-
торыми обладают участники обмена. Вторая причина - это разные объемы данных, ко-
торые могут быть приняты или получены участниками обмена единовременно. Третья
причина буферизации связана с необходимостью копирования информации из приложе-
ний, осуществляющих ввод-вывод, в буфер ядра операционной системы и обратно.
Под словом кэш (cash – «наличные») обычно понимают область быстрой памяти,
содержащую копию данных, расположенных где-либо в более медленной памяти, пред-
назначенную для ускорения работы вычислительной системы. В современных системах
для этой задачи обычно используется кэш-память центрального процессора. Не следует
смешивать понятия буферизации и кэширования. Буфер обычно содержит единственный
набор данных, существующий в системе, в то время как кэш по определению содержит
копию данных, существующих где-нибудь еще. Функции буферизации и кэширования
не обязательно должны быть локализованы в базовой подсистеме ввода-вывода. Они мо-
гут быть частично реализованы в драйверах и даже в контроллерах устройств, скрытно
по отношению к базовой подсистеме.
С точки зрения программиста, наиболее часто используемой операцией ввода-
вывода является ввод-вывод на жесткие диски. В этом случае обычно речь идет о работе
с файлами, т.е. о файловом вводе-выводе. Рассмотрим принципы размещения данных на
жестком диске более подробно.
§ 5.2. Общие принципы размещения данных на магнитных дисках
Под файлом понимают набор данных, организованных в виде совокупности запи-
сей одинаковой структуры [2]. В любой ОС работу с файлами обеспечивает файловая
система - набор спецификаций и соответствующее им программное обеспечение, кото-
рые отвечают за создание, уничтожение, организацию, чтение, запись, модификацию и
124
     Ко второй группе относятся неблокирующиеся системные вызовы. В данном слу-
чае системный вызов возвращается немедленно, выполнив предписанные ему операции
ввода-вывода полностью, частично или не выполнив совсем, в зависимости от текущей
ситуации (состояния устройства, наличия данных и т. д.). В качестве примера такого вы-
зова можно привести периодическую проверку на поступление информации с клавиату-
ры при выполнении трудоемких расчетов.
     К третьей группе относятся асинхронные системные вызовы. Процесс, использо-
вавший асинхронный системный вызов, никогда в нем не блокируется. Системный вы-
зов инициирует выполнение необходимых операций ввода-вывода и немедленно воз-
вращается, после чего процесс продолжает свою регулярную деятельность. Об
окончании завершения операции ввода-вывода операционная система впоследствии ин-
формирует процесс изменением значений некоторых переменных, передачей ему сигна-
ла или сообщения или каким-либо иным способом.
     Необходимо четко понимать разницу между неблокирующимися и асинхронными
вызовами. Неблокирующийся системный вызов для выполнения операции чтения вер-
нется немедленно, при этом может быть прочитано как запрошенное количество байтов,
так и меньшее их количество или вообще ничего. Асинхронный системный вызов для
этой операции также вернется немедленно, но требуемое количество байт все равно бу-
дет прочитано в полном объеме.
     Для обеспечения операций ввода-вывода достаточно часто используются механиз-
мы буферизации и кэширования. Рассмотрим их более подробно.
     Под буфером обычно понимается некоторая область памяти для запоминания ин-
формации при обмене данных между двумя устройствами, двумя процессами или про-
цессом и устройством. Существует три основные причины, приводящие к использова-
нию буферов при выполнении операции ввода-вывода [2].
Первая причина буферизации - это разные скорости приема и передачи информации, ко-
торыми обладают участники обмена. Вторая причина - это разные объемы данных, ко-
торые могут быть приняты или получены участниками обмена единовременно. Третья
причина буферизации связана с необходимостью копирования информации из приложе-
ний, осуществляющих ввод-вывод, в буфер ядра операционной системы и обратно.
     Под словом кэш (cash – «наличные») обычно понимают область быстрой памяти,
содержащую копию данных, расположенных где-либо в более медленной памяти, пред-
назначенную для ускорения работы вычислительной системы. В современных системах
для этой задачи обычно используется кэш-память центрального процессора. Не следует
смешивать понятия буферизации и кэширования. Буфер обычно содержит единственный
набор данных, существующий в системе, в то время как кэш по определению содержит
копию данных, существующих где-нибудь еще. Функции буферизации и кэширования
не обязательно должны быть локализованы в базовой подсистеме ввода-вывода. Они мо-
гут быть частично реализованы в драйверах и даже в контроллерах устройств, скрытно
по отношению к базовой подсистеме.
     С точки зрения программиста, наиболее часто используемой операцией ввода-
вывода является ввод-вывод на жесткие диски. В этом случае обычно речь идет о работе
с файлами, т.е. о файловом вводе-выводе. Рассмотрим принципы размещения данных на
жестком диске более подробно.

     § 5.2. Общие принципы размещения данных на магнитных дисках

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


                                         124