Cтраница 3
С каждым открытым файлом связан указатель, который сообщает, какой байт будет считываться следующим. После команды read указатель дополняется числом считанных байтов, поэтому последовательные команды read считывают последовательные блоки данных из файла. Обычно этот указатель можно установить на особое значение, чтобы программы могли получать доступ к любой части файла. Когда программа закончила считывание файла, она может закрыть его и сообщить операционной системе, что она больше не будет использовать этот файл. [31]
Однако даже при использовании списка свободных блоков может быть выполнена определенная кластеризация блоков. Хитрость заключается в том, чтобы учитывать место на диске не в блоках, а в группах последовательных блоков. [32]
При первом способе система имеет указатель первого свободного блока, и запросы на выделение памяти удовлетворяются за счет последовательных блоков, начиная с этого свободного блока. В случае когда часть ранее занятых блоков больше не используется ( например, удаляется файл или программа), эти блоки все же продолжают находиться в множестве занятых блоков и системе они недоступны. [33]
Такое представление обладает рядом интересных свойств. Во-первых, все поддеревья некоторого узла следуют непосредственно за этим узлом, так что все поддеревья в пределах исходного леса располагаются в последовательных блоках. Во-вторых, заметим, что стрелки RLINK в ( 3) не пересекаются друг с другом. [34]
Теорема 2.4 применима также к бесконечно длящейся передаче. Как объяснялось во введении, надежная бесконечно длящаяся передача может быть успешно реализована посредством блокового кодирования при условии, что критерий точности обладает следующим свойством: если последовательные блоки и их воспроизведения по отдельности удовлетворяют критерию точности, то ему должны удовлетворять и их последовательные объединения. [35]
Системный вызов write также прост. Для этого требуется всего лишь выделение файлу нового свободного блока из битового массива, хранящегося в оперативной памяти, и запись блока. Последовательные блоки файла не располагаются последовательно на диске, так как центральный процессор Intel 8080 не успевает обработать прерывание и начать чтение следующего блока. Вместо этого используется чередование блоков, позволяющее считывать несколько блоков за один оборот диска. [36]
Из-за переменных размеров дисковых файлов место под их хранение иногда приходится выделять не сплошным участком, а порциями - блоками. Чаще эти блоки имеют фиксированный размер ( 128, 256 или 512 байт), но некоторые системы предоставляют пользователю возможность задавать и нестандартную длину. Между последовательными блоками файла устанавливаются связи с помощью различного рода указателей, а в каталог заносится ссылка на первый блок. Таким образом, свободная память на диске состоит из двух областей - участка со сплошной адресацией и цепочки разрозненных блоков. Информация о расположении этих областей и их длинах также является составной частью каталога. [37]
Дальнейшее преобразование можно вести двумя путями: либо поочередно заменять цепи обратной связи соответствующими корректирующими звеньями, либо объединить все цепи обратной связи в одну. Схемы рис. 4.8 е и 4.8 ж; получены вторым способом. Система представлена в виде трех последовательных блоков, показыв ющих отдельно роль каждой цепи обратной связи, прямой связи и исходных динамических звеньев. [38]
Производство этилена представляет собой сложную химико-технологическую систему, предназначенную для получения олефинов с помощью процесса пиролиза жидких и газообразных углеводородов. Технологически производство этилена состоит из трех последовательных блоков с жесткими связями: отделение пирогаза; отделение газоразделения; отделение переработки пироконденсата. [39]
Неоднородные массивы Снобола 4 создаются динамически примитивной операцией ( функцией) ARRAY, которую можно вызвать в любой момент выполнения программы. Типы элементов массива могут меняться в ходе работы с ним, но размер массива не может быть изменен после его создания. Фиксированный размер допускает представление массива в виде последовательного блока памяти с присоединенным к нему дескриптором. Каждый элемент этого блока содержит указатель на значение элемента массива, за исключением тех случаев, когда значением является число, которое обычно записывается прямо в элемент блока. Массивы в языке Снобол 4 не имеют имени; вместо этого массив изображается указателем на блок памяти, содержащий дескриптор и значения. [40]
Библиотечная организация является удобным и эффективным способом для размещения и обработки данных на устройстве прямого доступа. Библиотека состоит из независимых, последовательно организованных наборов данных ( подфайлов) и справочника или иерархии справочников. Справочник содержит имя и данные о местоположении каждого раздела библиотеки, который представляет собой один или несколько логически связанных последовательных блоков данных. Типичным примером библиотечного набора данных является библиотека программ ( разд. [41]
Здесь следует сказать несколько слов. Во-первых, данный способ представления информации о расположении блоков файла на диске не накладывает никаких дополнительных ограничений на размер файла. При отсутствии сжатия адреса для каждой пары требуется два 64-разрядных числа, что составляет 16 байт на пару. Однако одна пара может указывать на миллион последовательных блоков. Например, 20-мегабайтный файл, состоящий из 20 сегментов по 1 млн килобайтных блоков каждый, легко может быть описан всего одной записью MFT, тогда как 60-килобайтный файл, состоящий из 60 изолированных блоков, не может. [42]
При генерировании указателя на элемент внутри области можно определить этот указатель не как абсолютный адрес, а скорее как смещение относительно начала области; поэтому такие указатели называются смещениями. В общем случае любые данные с классом памяти BASED или CONTROLLED могут быть созданы с помощью инструкции ALLOCATE в любой желаемой области. Получаемые смещения могут трактоваться как данные типа POINTER. Однако в тех случаях, когда желательно вывести данные, хранящиеся в области, можно вывести всю область, просто как последовательный блок памяти. Впоследствии этот блок может быть прочитан в новые ячейки памяти и смещения-указатели сохранят их исходные взаимосвязи. [43]
Для данных в основной памяти используется понятие поля, которое может принимать форму числа с фиксированной или плавающей запятой, упакованного десятичного числа или последовательности байтов. Группу взаимосвязанных полей называют логической записью. При обмене информацией между основной и внешней памятями используются блоки, в состав которых может входить одна или большее число логических записей. При хранении данных во внешней памяти блок соответствует физической записи; на практике термины блок и физическая запись часто используются как взаимозаменяемые. Группа последовательных блоков, хранимых во внешней памяти, образует экстент. Способ использования физических средств для хранения информации определяет эффективность системы управления данными. [44]
Арифметическо-логические устройства ( блоки), в которых ширина обработки совпадает с разрядностью данных, называются параллельными. Параллельные АЛУ используются чаще всего для операций над числами фиксированной длины. Они предназначаются в основном для операций над данными переменных форматов. Гораздо реже используются последовательные блоки, обрабатывающие данные разряд за разрядом. В больших ЭВМ АЛУ состоят из блоков параллельной и лоследовательно-параллельной обработки. [45]