Файловая система UNIX
В операционной системе UNIX файл является хранилищем двоичных и символьных данных, хранимых как поток байтов. ВUNIX символьные данные кодируются с помощью кода ASCII, хотя на таких системах, как мэйнфрейм IBM 390, используется кодировка EBCDIC. Коды ASCII и EBSDICотличаются друг от друга, т.е. один и тот же код в них соответствует разным символам, а один и тот же символ закодирован в них разными кодами. В разных операционных системах данные хранятся по-разному. Данное обстоятельство может вызвать проблемы при попытке в одной операционной системе обработать данные, созданные в другой операционной системе. Необходимы специальные программы для конвертирования данных из файлов, созданных в одной операционной системе в файлы другой операционной системы так, чтобы они были пригодны для обработки.
Файлы содержат разные типы информации. Например, файл может содержать исходный код программы на С, COBOL или C++, он может быть текстовым документом с письмом от друга или исполняемым модулем программы. В UNIXсуществует несколько «родных» форматов файлов, которые можно просматривать или копировать, используя команды системы. Однако некоторые файлы нельзя обработать внутренними командами UNIX. Например, файлы базы данных для СУБД независимых разработчиков, таких как Oracle, требуют для обработки специальных программ.
Файл может располагаться на разных носителях. Файлы бывают постоянными, т.е. записанными на диске или временными -в памяти; данные из файла могут выводиться на терминал, или файл может принимать данные с терминала. Если файл постоянный, то его можно просмотреть, а если файл временный, то вы можете даже не знать о его существовании.
Функции, которые обычно выполняются по отношению к файлу, таковы:
§ открытие файла для обработки
§ чтение данных из файла для обработки
§ запись данных в файл после обработки
§ закрытие файла после того, как вся необходимая обработка выполнена
Теперь,когда у вас есть представление о том, что такое файл и что он содержит, пришло время узнать побольше о тех разных типах файлов, с которыми вы можете столкнуться.
Типы файлов
Данный раздел содержит обсуждение различных типов файлов, имеющихся в UNIX. С некоторыми из данных типов файлов вы наверняка уже знакомы, например с текстовыми документами и с файлами исходных кодов.
Регулярные файлы
Регулярные файлы -это те файлы, с которыми вы, вероятно, знакомы лучше всего. Сущность их неизменна.Они постоянны по природе и содержат такие данные, как код программы, почту,полученную от босса, или письмо, которое вы пишете другу. Данные файлы почти всегда содержат текстовую информацию. В таких файлах данные организованы в записи. Если бы, к примеру, данная книга была файлом, содержащим данные об операционной системе UNIX, то каждая строка в книге была бы записью.
Как UNIX узнает о записях? Существует специальный символ, называющийся символом новой строки (newline character), который используется UNIX для поиска места, где одна запись заканчивается, а другая начинается. Многие команды UNIX поддерживают обработку текстов. Однако, имейте в виду, что текстовые файлы -не единственный тип регулярных файлов. Некоторые файлы представляют собой поток байтов без каких-либо символов новой строки. Хотя UNIX изначально была предназначена для обработки текстовых документов, она не сможет обработать такие файлы.
Читайте также: Как создать компьютерную сеть
Ниже следуют примеры нескольких регулярных файлов:
— prog.c содержит исходный код программы на С.
— prog.cbl содержит исходный код программы на COBOL.
— prog.exe содержит исполняемый модуль программы.
— invite.doc содержит приглашение на вечеринку от коллеги.
Приведенные здесь примеры следуют обычным для UNIX соглашениям по менованию Однако это просто соглашения, а не правила. Поэтому, файл можно назвать и prog.с даже если он содержит письмо к боссу.
Вот пример списка атрибутов, имеющихся у файла. Файл называетсяtestfile, и атрибуты выводятся с использованием следующей команды:
ls—al testfile
rwxr—xr—r 2 guhas staff 1012 Oct 30 18:39 testfile
UNIX отслеживает атрибуты, используя структуру данных под названием i-node (индексный дескриптор), Каждый индексный дескриптор в системе идентифицируется числом, которое называется номером индексного дескриптора. Каждый файл в системе имеет ассоциированный с ним индексный дескриптор, который содержит следующую информацию:
— владелец файла;
— права доступа;
— дата и время создания, дата и время модификации, и т.д.;
— тип файла.
Для временной информации в индексном дескрипторе выделено несколько полей:
— время последнего доступа;
— время последней модификации;
— время последней модификации индексного дескриптора.
Время последнего доступа меняется при выполнении любой операции с файлом. Дата последней модификации изменяется при модификации файла. Время последней модификации индексного дескриптора меняется тогда, когда меняется информация, хранящаяся в индексном дескрипторе.
Посетителей: 66390 | Просмотров: 87801 (сегодня 0)
Шрифт:
Дополнительные настройки (Patches)
Дополнительные настройки — это на самом деле модификация системных файлов. Описание видно на скриншоте, но я остановлюсь на этом чуть подробнее.
Максимальное число одновременных соединений. Файл tcpip.sys в Service Pack 2 для Windows XP ограничивает максимальное число одновременных незавершенных (half-open) соединений (то есть, когда запрос на соединение отправлен, но ответ еще не получен). Если число таких «полу-соединений» превышает максимум, то они помещаются в очередь. Обычно это оказывает негативный эффект на скорость работы файлообменных (P2P) сетей, а также некоторых специфических программ типа сканера ресурсов локальной сети LanScope. Так или иначе, число одновременных незавершенных соединений в каждую секунду не может превышать десяти. Лимит, видимо, введен из соображений безопасности. Если у вас нет насущной необходимости в большем количестве соединений, то лучше оставьте файл в покое. Впрочем, как я сказал выше, иногда просто необходимо обойти лимит. Вы также можете загрузить уже измененные файл tcpip.sys по прямой ссылке с нашего сайта: Windows XP SP2 (171 kb) Достаточно просто скопировать файл в директорию i386 вашего дистрибутива и согласиться на перезапись.
Частота работы портов USB. Модификация файла позволяет добиться более плавного перемещения курсора у USB мышей отдельных производителей.
Поддержка неподписанных тем. Файл uxtheme.dll, наверное, наиболее часто заменяемый файл в Windows. Целью замены является возможность устанавливать неподписанные визуальные стили (visual styles), которые доступны на различных сайтах (включая коллекцию стилей на OSZone.net). Нередко в сети можно увидеть рекомендации типа «поставь StyleXP». Ничего не имею против этой программы, но если единственной целью является использование неподписанных стилей, то можно обойтись заменой uxtheme.dll. Вы также можете загрузить уже измененные файлы uxtheme.dll по прямым ссылкам с нашего сайта: Windows XP SP2 EN (98 kb) | Windows XP SP2 RU (111 kb). Достаточно просто скопировать файл в директорию i386 вашего дистрибутива и согласиться на перезапись.
Читайте также: Программа для скачки музыки с сайта
SFC (Защита файлов Windows). Файл sfc_os.dll отвечает за WFP — Windows File Protection (Защита системных файлов Windows). Если вы попытаетесь удалить защищенный файл/папку, то увидите примерно такое окно:
Если вы действительно хотели заменить файл, то простоe нажатие Cancel решает проблему. А что если вы не хотите каждый раз жать Cancel или защищенный файл уже находится в директории dllcache? Вот в таком случае sfc_os.dll и придется модифицировать.
Твики (Tweaks)
Твики реестра, надеюсь, будут понятны и без дополнительных комментариев. Правильность русского перевода я не оценивал, смотрите сами.
Создание ISO (Create Bootable ISO)
Создание ISO — заключительный этап нашего обзора. Нажав «Создать» вы получите возможность выбрать имя создаваемого файла и директорию, в которую он будет записан. Вы также можете добавить в образ свои файлы («Обзор») и указать дополнительные параметры командной строки утилиты mkisofs, которую nLite использует для создания образа.
Последовательность действий, требуемых для модификации уже существующего файла, несколько отличается от той, которая необходима для записи в файл или чтения из него. Прежде всего файл должен быть открыт для модификации (т.е. для чтения и записи одновременно). Для этой цели служит предикат openmodify.
успешен только в том случае, если файл уже присутствует на диске. Другими словами, файл должен быть создан при помощи предиката openwrite. При этом следует, конечно, помнить, что openwrite создает новый файл даже тогда, когда файл с таким именем уже имеется, затирая при этом все, что в нем находилось.
Содержимое файла можно рассматривать как поток символов. Каждый символ находится в файле на какой-то позиции. Позиция определяется удаленностью от первого символа файла. Таким образом, первый символ в файле занимает нулевую позицию, второй — первую и т. д. Вообразим себе теперь невидимый указатель, который можно сместить на любую позицию файла. Этот указатель определяет позицию, из которой будет прочитан или в которую будет записан очередной символ.
Когда файл открывается для модификации, указатель помещается в начало файла. Турбо-Пролог позволяет смещать указатель при помощи предиката filepos, который будет подробно рассмотрен в разделе, посвященном файлам прямого доступа. В настоящий момент вам требуется знать лишь то, где будет располагаться указатель после вызова openmodify.
Модификацию файла можно разбить на следующие шаги:
1. Открытие файла
2. Переадресация вывода в файл
3. Запись в файл новых данных.
4. Использование произвольных предикатов и правил, отвечающих целям программы.
5. Закрытие файла
Примером может служить
Дозапись в конец уже существующего файла
Возможность записать новые данные в конец уже существующего файла обеспечивается в Турбо-Прологе предикатом openappend. Когда файл открывается для дозаписи, указатель файла смещается в его конец.
Следующие шаги необходимо предпринять для добавления новых данных в конец файла:
1. Открытие файла
2. Переадресация вывода в файл
Читайте также: Как строить круговую диаграмму в тетради
3. Дозапись в файл новых данных при помощи соответствующих правил.
4. Использование произвольных предикатов и правил, отвечающих целям программы.
5. Закрытие файла
Разработать программу для формирования базы данных с клавиатуры и записи в файл. После ввода слова «list», вывести все содержимое файла на экран (таблица.5).
Таблица 5
ВариантПредметная областьКоличество объектовКоличество параметров объектаГородаАвтомобилиКомпьютерыДомаСамолетыСтраныСтудентыПартииСотрудникиВакансииОперационные системыКнигиТелефонный справочникПредприятияАвтобусные маршруты
Лабораторная работа № 6
Структуры
Структуры данных вместе с сопоставлением, автоматическими возвратами и арифметикой представляют собой мощный инструмент программирования.
База данных может быть представлена на Прологе в виде множества фактов. Например, в базе данных о семьях каждая семья может описываться одним предложением. На рис. 28 показано, как информацию о каждой семье можно представить в виде структуры.
Каждая семья состоит из трех компонент: мужа, жены и детей.
Поскольку количество детей в разных семьях может быть разным, то их целесообразно представить в виде списка, состоящего из произвольного числа элементов. Каждого члена семьи в свою очередь можно представить структурой, состоящей из четырех компонент: имени, фамилии, даты рождения и работы. Информация о работе — это либо «не работает», либо указание места работы и оклада (дохода). Информацию о семье, изображенной на рис.28, можно занести в базу данных с помощью предложения:
[членсемьи(знн, фокc, дата(9, май, 1951),
[членсемьи(пат, фокc, дата(5, май, 1973),
членсемьи(джим, фокc, дата(5, май, 1973),
Рис. 28.Структурированная информация о семье
Тогда база данных будет состоять из последовательности фактов, подобных этому, и описывать все семьи, представляющие интерес для нашей программы. ; В действительности Пролог очень удобен для извлечения необходимой информации из такой базы данных. Здесь можно ссылаться на объекты, не указывая в деталях всех их компонент. Можно задавать только структуру интересующих вас объектов и оставлять конкретные компоненты без точного описания или лишь с частичным описанием. На рис. 29 приведено несколько примеров. Так, в запросах к базе данных можно ссылаться на всех Армстронгов с помощью терма
Символы подчеркивания обозначают различные анонимные переменные, значения которых нас не заботят. Далее можно сослаться на все семьи с тремя детьми при помощи терма:
Чтобы найти всех замужних женщин, имеющих по крайней мере троих детей, можно задать вопрос:
Главным моментом в этих примерах является то, что указывать интересующие нас объекты можно не только по их содержимому, но и по их структуре. Мы задаем одну структуру и оставляем ее аргументы в виде слотов (пропусков).
Рис. 29. Описания объектов по их структурным свойствам;
а — любая семья Армстронгов; б — любая семья, имеющая ровно трех детей; с — любая семья, имеющая по крайней мере три ребенка. Структура (с) дает возможность получить имя в фамилию жены конкретизацией переменных Имя и Фамилия
Можно создать набор процедур, который служил бы утилитой, делающей взаимодействие с нашей базой данных более удобным. Такие процедуры являлись бы частью пользовательского интерфейса. Вот некоторые полезные процедуры для нашей базы данных: