Составление алгоритмов и написание многомодульных программ обмена данными с диском — это использование принципа модульности при формировании программных продуктов информационного обмена с дисковой памятью.
Раздельная трансляция программных модулей
Разделение основного программного текста на набор файлов помогает лучше понять его специалисту или группе специалистов, которые принимают участие в реализации программного продукта. Но при этом возникает ряд сопутствующих проблем:
- Программа, выполняющая трансляцию, обрабатывает весь исходный текст в целом, объединяя перед началом трансляции все файлы в единое целое. Поэтому время, затрачиваемое на трансляцию, достаточно велико. Но нужно заметить, что программа практически никогда не обновляется полностью, а меняются лишь отдельные её фрагменты.
- При определении переменных их число имеет ограничения условиями транслятора и может быть превышено при формировании программы.
- Разные специалисты, которые принимают участие в реализации программного продукта, могут присвоить одни и те же имена своим переменным и, при объединении файлов в одну программу, возможны проблемы.
Все перечисленные вопросы возможно решить, если осуществлять раздельную трансляцию программы. То есть нужно транслировать каждый модуль по отдельности и уже потом объединять готовые части общей программы.
Программы компиляции, позволяющие осуществлять трансляцию отдельных участков программы, являются компиляторами с раздельной трансляцией. Исходный программный текст, который можно транслировать отдельно, носит название программного модуля.
Программный модуль, прошедший процедуру трансляции, должен быть сохранён как отдельный файл в объектном формате, то есть, помимо машинных команд, хранятся данные об именах переменных, адресах команд, которые должны быть модифицированы при соединении модулей в одну программу, а также информация, необходимая для отладки.
Отдельная трансляция программных модулей допустима, только если применяются две программы:
- Программа трансляции исходного текста.
- Программа редактирования связей.
Программа редактирования связей даёт возможность соединения набора модулей в единую программу. Чтобы соединить набор модулей в одну исполняемую программу, наименование каждого модуля представляется в редактор связей как параметр перед запуском этой программы. При поверхностном взгляде на проблему может показаться, что выполнение раздельной трансляции не может вызвать какие-нибудь проблемы. Но это не совсем так. Когда выполняется компиляция исходного программного текста, транслятор формирует таблицу со ссылками на константы, переменные и команды. Если при повторном проходе по исходному программному тексту, при котором осуществляется формирование объектного модуля, программа трансляции не находит имени метки или переменной в своей таблице, выдаётся сообщение об обнаружении ошибки и выполняется удаление объектного модуля с диска компьютера. Для того, чтобы программа трансляции вместо выдачи сообщения об ошибке внесла в объектный модуль данные, требуемые редактору связей, необходимо применять специальные директивные ссылки на внешние метки или переменные.
Применение многомодульных конструкций при реализации программы уменьшает время трансляции, а в общем итоге и время формирования программы. Но, чтобы объявить переменные и имена подпрограмм внешних модулей, приходится загромождать исходную текстовую конструкцию модуля. Помимо этого, при применении модулей, созданных другими программистами, не всегда удаётся безошибочно выполнить объявление переменных и подпрограмм. По этой причине все эти параметры прилагаются во включённых файлах, называемых файлами заголовков.
Программы обмена данными с диском
Файлом является поименованный набор записей данных, которые размещаются на оборудовании ввода и вывода информации компьютера, в том числе размещённых на жёстких дисках. Написание программ обработки файлов на дисках предполагает программирование информационного обмена между оперативной памятью компьютера и дисками. Вывод данных из оперативной памяти и размещении их на диске именуется записью данных на диск. Приёмником информационных данных является диск. При выводе информации с диска и расположении её в оперативной памяти компьютера, подразумевается чтение информации с диска и информационным приёмником является уже оперативная память.
У персонального компьютера имеется объединённая структура информационного обмена с дисками. Информация, подлежащая записи на диск, вначале размещается в системном буфере, которым является специально определённый для этих целей операционной системой участок памяти. А далее буфер постепенно заполняется и данные через специальный порт, имеющий связь с диском, пересылаются прямо на диск. Чтение информации с жёсткого диска выполняется в обратной последовательности, а именно, порт, буфер, оперативная память.
Приведённый алгоритм информационного обмена обеспечивает ускорение этих процессов и прежде всего за счёт уменьшения количества обращений центрального процессора к устройствам ввода и вывода данных и их подключения. Каждая конкретная запись информации, помещаемой в файл, бывает двух типов:
- Логический тип записи.
- Физический тип записи.
Логическая запись - это порция информации, измеряемая в байтах, которая определяется перечнем выводимых данных, помещённым в тот или иной оператор вывода.
Физическая запись - это пространство диска, которое занимает определённое количество информации. Мерой физической записи является количество секторов диска.
Преобразование логических записей, которые выводятся на диск, в физические записи, осуществляется операционной системой компьютера. По методам информационного кодирования записей файла, они делятся на:
- Текстовый формат.
- Типизированный формат.
- Формат без наличия конкретного типа.