Какие программы интерпретируют содержимое файла

Обновлено: 07.07.2024

Интерпретаторы и компиляторы отвечают за преобразование языка программирования или сценариев (язык высокого уровня) в машинный код. Но если обе программы делают одно и то же, чем они различаются? Давайте разберемся.

Компилятор

Что такое компилятор ?

Компилятор — это компьютерная программа, которая переводит компьютерный код с одного языка программирования на другой. Компилятор берет программу целиком и преобразует ее в исполняемый компьютерный код. Для этого требуется целая программа, так как компьютер понимает только то, что написано двоичным кодом. Задача компилятора — преобразовать исполняемую программу в машинный код, который и распознается компьютером. Примерами скомпилированных языков программирования являются C и C++.

Компилятор в основном используется для программ, которые переводят исходный код с языка программирования высокого уровня на язык программирования более низкого уровня.

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

Интерпретатор

Что такое интерпретатор ?

Интерпретатор — это компьютерная программа, которая преобразует каждый программный оператор высокого уровня в машинный код. Сюда входят исходный код, предварительно скомпилированный код и сценарии.

Интерпретатор представляет собой машинную программу, которая непосредственно выполняет набор инструкций без их компиляции. Примерами интерпретируемых языков являются Perl, Python и Matlab.

  • И компилятор , и интерпретатор выполняют одну и ту же работу — преобразовывают язык программирования высокого уровня в машинный код. Однако компилятор преобразовывает исходный материал в машинный код перед запуском программы . Интерпретатор выполняет эту функцию при ее запуске .

Как это работает?

Интерпретатор создает программу. Он не связывает файлы и не генерирует машинный код. Происходит построчное выполнение исходных операторов во время исполнения программы.

Network File System (NFS) – широко распространенная система общего доступа к файлам через локальную сеть .

Абсолютный путь - полный путь доступа к файлу, начиная от логического имени раздела, либо от корневой системной директории.

Атрибуты файла – общие свойства, описывающие содержимое файла.

Блок – логическая единица информации (часть) файла, как правило, объединяющая несколько записей, с целью оптимизации операций ввода-вывода .

Блок управления файлом (File control block - FCB) – структура в памяти, содержащая информацию о файле и используемая операционной системой.

Директория (справочник, папка) - directory, folder – структура во внешней памяти, содержащая символьные имена файлов и других директорий и ссылки на них.

Дополнение к файлу объектного кода (ДФОК):в системе "Эльбрус" - файл , содержащий в унифицированном виде таблицы именованных сущностей, определенных в программе и ее процедурах ( метаданные ).

Заголовок файла – головная запись файла, в которой содержатся его атрибуты.

Запись (record) – элементарная единица , часть файла, в терминах которых выполняются операции обмена с файлом.

Защита (Protection) – управляющая информация , задающая полномочия чтения, изменения и исполнения файла.

Контейнер (в системе "Эльбрус") – хранилище файлов на одном или нескольких дисках.

Монтирование – подсоединение отдельного поддерева еще не смонтированной файловой системы к какой-либо вершине (точке монтирования) общего дерева доступных файловых систем.

Набор данных (data set) - термин фирмы IBM для обозначения файла.

Общий доступ (sharing) – возможность доступа к файлам и директориям различным пользователям, в том числе – по локальной сети.

Относительный путь - путь доступа к файлу относительно некоторой текущей директории .

Память файла - его записи, содержащие собственно хранимую в нем информацию.

Путь (path) – многослоговое имя файла или директории, состоящее из имени корневой директории (или логического диска) и последовательности имен директорий последующих уровней.

Раздел (partition) – смежная область дисковой памяти, имеющая свое логическое имя (обычно одна из первых букв латинского алфавита).

Резервное копирование (back-up) – копирование файлов и директорий на внешние носители – ленту ( стример ), flash- память , внешний переносной жесткий диск , компакт- диск ( CD , DVD ), с целью их сохранности.

Символическая ссылка – ссылка из элемента одной директории на другую директорию или файл , уже имеющий другой путь доступа .

Cправочник внешних ссылок (СВС) – в системе "Эльбрус": справочник, имеющийся у каждого файла и используемый для хранения его внешних ссылок на другие файлы; элементы СВС адресуются по номерам, а не по именам.

Точка монтирования (mount point) – узел в дереве файловых систем, к которому подсоединяется новая файловая система при монтировании.

Файл (file) – смежная область логического адресного пространства, как правило, хранящаяся во внешней памяти.

Файл объектного кода (ФОК) – в системе "Эльбрус": файл , в котором хранится двоичный код исполняемой программы.

Файловая система – поддерево директорий на некоторой машине, расположенных в одном разделе.

Краткие итоги

Файл – смежная область логического адресного пространства, хранящаяся, как правило, во внешней памяти. В файле могут храниться данные или программа . Файл делится на записи постоянной или переменной длины. Возможны файлы сложной структуры, интерпретируемые программами, их создавшими (например, документ в Microsoft Word ). Файлы интерпретируют ОС и обрабатывающие их программы.

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

Основные операции над файлом: создание, запись , чтение, позиционирование , удаление, сокращение, открытие и закрытие.

Тип файла в большинстве ОС указывается с помощью расширения его имени.

Различаются прямой ( по номеру блока) и последовательный (с помощью сдвига текущей позиции) доступ к файлам. Последовательный доступ может быть смоделирован операциями прямого доступа.

Индексные файлы используются для ускорения поиска в больших основных файлах.

Директория – системная структура во внешней памяти, содержащая ссылки на файлы или другие директории.

Файловая система в "Эльбрусе" отличается тем, что файл может быть создан без явной ссылки на него из справочника (директории). Файлы и справочники хранятся в контейнерах – хранилищах из одного или нескольких дисков. Файлы могут ссылаться друг на друга через справочники внешних ссылок, имеющися у каждого файла. Недостатки файловой системы "Эльбруса" – сложность структуры файлов, большое число атрибутов, зависимость операций над файлами от типа внешнего устройства .

Файлы и директории в файловой системе хранятся в разделах – смежных областях дисковой памяти, имеющих свои логические имена.

Основные операции над директорией: поиск файла, создание файла , удаление файла , создание поддиректории, вывод содержимого директории, переименование файла , создание символической ссылки , обход файловой системы.

Различные способы логической организации директорий: одноуровневая, двухуровневая, древовидная, в виде ациклического графа, в виде произвольного графа. Рекомендуется древовидная структура директорий, так как она позволяет организовать поддиректории для каждого пользователя, использовать файлы с одинаковыми именами в директориях различных пользователей и организовывать директории тематически. Структура директорий в виде ациклического графа возникает вследствие совместного использования узлов несколькими поддиректориями. Структура директорий в виде произвольного графа может привести к наличию циклов, обнаружение которых – очень неэффективная и нежелательная операция.

Монтирование файловой системы – это ее подсоединение к узлу уже существующих, активных и используемых файловых систем (точке монтирования).

Общий доступ к файлам и директориям необходим в многопользовательских системах, в том числе – в локальных сетях. Общий доступ контролируется некоторой системой защиты. Система NFS наиболее распространена как система общего доступа к файлам в локальной сети.

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

Для реализации файловой системы ОС организует блок управления файлом, содержащий основные атрибуты файла .

Реализация системы файлов имеет иерархическую структуру, на верхнем уровне которой – пользовательские программы, на нижнем – драйверы и устройства ввода-вывода.

Для управления открытием, закрытием файлов и операциями обмена ОС хранит в памяти общую таблицу открытых файлов и таблицы открытых файлов для каждого процесса.

Чтобы указать конкретное имя файла и открыть его необходимо выполнить следующее действие с данной ссылкой - myfile .


1) Если файл будет находиться в той же директории что и программа то задаем имя командой

2) Если файл будет находиться например на диске то задаем имя файла следующим образом:

a) можно использовать символ / (обратный слэшь) для задания пути

myfile .open (" E: / DEVELOP / MyCodingSite / C++ / IO / WriteRead / Win32 / Debug / Mytext.txt ");

б) чтобы использовать стандартный символ \ его нужно удваивать ( \\) иначе система не распознает данный символ.

myfile .open (" E: \\ DEVELOP \\ MyCodingSite \\ C++ \\ IO \\ WriteRead \\ Win32 \\ Debug \\ Mytext.txt ");

Указывая имя файла или полный путь к файлу мы связываем его с файловой системой. Если файла не существует то операционная система его создаст сама если файл существует то он будет открыт.

Функция Open встроенная в тип данных fstream содержит набор флагов позволяющих открывать файлы в разных режимах доступа. Чтобы задать один из режимов необходимо явно указать флаг доступа к файлу.

myfile .open (" Имя файла " , флаг доступа к файлу );

Если флаг не указан то система открывает файл с полным доступом по умолчанию.

Когда мы связались с файловой системой и указали имя файла которое нужно использовать. Нам открывается возможность выполнять различные действия:

Для записи данных в файл мы нужно открыть его с флагом ios::app это сообщит файловой системе что мы просто будем дописывать в конец файла информацию. Если флаг опустить то файл будет перезаписан заново. Т.е. содержимое исчезнет и останется только наш текст.

записываем текст в файл myfile << "My Ferst Text in file";


Этот код создаст файл с именем Mytext.txt в той же директории где находиться наш скомпилированный проект и запишет в него строку My Ferst Text in file




Для чтения файла нужно открыть его с флагом ios::in это сообщит файловой системе что мы просто будем читать информацию но не сможем ее записывать


При открытии файла на чтении нужно проверить смогла ли ОС (операционная система выполнить данное действие).

а) Если нет то сообщим что нет такого файла.

б) Если да будем пробовать читать содержимое файла.

Для проверки открылся файл или нет нужно использовать встроенную в функцию is_open() она встроена в тип данных ofstream.

Если файл открылся то функция вернет true (правду 1) если нет то false (ложь 0)





Файл - логическая единица распределения памяти. Он является также совокупностью логически взаимосвязанной информации. Файловая система располагается во внешней памяти (на дисках) и организована поуровням. Структура многоуровневой файловой системы изображена на рис. 19.11.


Рис. 19.11.Многоуровневая файловая система.

На верхнем уровне абстракции работают пользовательские программы, использующие высокоуровневые примитивы вида WriteLine(F, X).Уровнем ниже располагаются модули интерфейса логических файлов – логических записей, блоков и операций обмена. Еще ниже следуют модули организации файлов, затем – операции базовой системы файлов. На нижних уровнях располагаются драйверы устройств (управлениевводом-выводом) и аппаратура (устройства ввода-вывода и их контроллеры).

Блок управления файлом (File control block - FCB)– структура в памяти, содержащая информацию о файле. Типовая структура блока управления файлом представлена в таблица 3.

Таблица 3. Типовая структура блока управления файлом
полномочия для работы с файлом
даты создания, доступа и модификации файла
владелец файла, группа, список управления доступом
размер файла
блоки данных файла

Системные структуры в памяти для управления файловой системой

При открытии файла и при дальнейшем выполнении операций над ним ОС хранит в памяти целый ряд системных структур, изображенных на рис. 19.12.


Рис. 19.12.Структуры ОС в памяти для управления файловой системой.

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

Ключевые термины

Network File System (NFS)– широко распространенная система общего доступак файлам через локальную сеть.

Абсолютный путь- полный путь доступа к файлу, начиная от логического имени раздела, либо от корневой системной директории.

Атрибуты файла– общие свойства, описывающие содержимое файла.

Блок– логическая единица информации (часть) файла, как правило, объединяющая несколько записей, с целью оптимизации операций ввода-вывода.

Блок управления файлом (File control block - FCB)– структура в памяти, содержащая информацию о файле и используемая операционной системой.

Директория (справочник, папка)- directory, folder– структура во внешней памяти, содержащая символьные имена файлов и других директорий и ссылки на них.

Дополнение к файлу объектного кода (ДФОК):в системе "Эльбрус" - файл, содержащий в унифицированном виде таблицы именованных сущностей, определенных в программе и ее процедурах (метаданные).

Заголовок файла –головная записьфайла, в которой содержатся его атрибуты.

Запись (record) –элементарная единица, часть файла, в терминах которых выполняются операции обмена с файлом.

Защита (Protection)– управляющая информация, задающая полномочия чтения, изменения и исполнения файла.

Контейнер(в системе "Эльбрус") – хранилище файлов на одном или нескольких дисках.

Монтирование– подсоединение отдельного поддерева еще не смонтированной файловой системы к какой-либо вершине (точке монтирования)общего дерева доступных файловых систем.

Набор данных (data set)- термин фирмы IBM для обозначения файла.

Общий доступ (sharing)– возможность доступа к файлам и директориям различным пользователям, в том числе – по локальной сети.

Относительный путь- путь доступа к файлу относительно некоторой текущей директории.

Память файла -его записи, содержащие собственно хранимую в нем информацию.

Путь (path)– многослоговое имя файла или директории, состоящее из имени корневой директории (или логического диска) и последовательности имен директорий последующих уровней.

Раздел (partition) –смежная область дисковой памяти, имеющая свое логическое имя (обычно одна из первых букв латинского алфавита).

Резервное копирование (back-up)– копирование файлов и директорий на внешние носители – ленту (стример), flash-память, внешний переносной жесткий диск, компакт-диск (CD, DVD), с целью их сохранности.

Символическая ссылка– ссылка из элемента одной директории на другую директорию или файл, уже имеющий другой путь доступа.

Cправочник внешних ссылок (СВС)– в системе "Эльбрус": справочник, имеющийся у каждого файла и используемый для хранения его внешних ссылок на другие файлы; элементы СВС адресуются по номерам, а не по именам.

Точка монтирования (mount point)– узел в дереве файловых систем, к которому подсоединяется новая файловая система при монтировании.

Файл (file) –смежная область логического адресного пространства, как правило, хранящаяся во внешней памяти.

Файл объектного кода (ФОК)– в системе "Эльбрус": файл, в котором хранится двоичный код исполняемой программы.

Файловая система– поддерево директорий на некоторой машине, расположенных в одном разделе.

Вопросы

1. Что такое файл?

2. Какого типа информация может храниться в файле?

3. Какую структуру может иметь файл?

4. Какие программы интерпретируют содержимое файла?

5. Каковы основные атрибуты файла?

6. Каковы основные операции над файлом?

7. Каким образом система определяет тип файла?

8. Какие расширения имен используются в операционных системах?

9. Какие методы доступа к файлам Вам известны?

10. Какие операции определены над файлами прямого доступа?

11. Какие операции определены над файлами последовательного доступа?

12. Что такое индексный файл и для чего он используется?

13. Что такое директория?

14. Каковы особенности, достоинства и недостатки файловой системы "Эльбруса"?

15. Что такое раздел?

16. Каковы основные операции над директорией?

17. Каковы цели логической организации директорий?

18. Какая организация директорий является наиболее предпочтительной и почему?

19. Какие проблемы возникают при организации директорий в виде произвольного графа?

20. Что такое монтирование файловых систем?

21. Что такое точка монтирования?

22. Что такое общий доступ к файлам и почему он необходим?

23. Что такое NFS?

24. Что такое защита файлов?

25. Какие полномочия защиты и для каких пользователей рассматриваются в UNIX?

26. Что такое блок управления файлом?

27. Какие уровни абстракции можно выделить в реализации файловых систем?

28. Какие структуры в памяти создает ОС при открытии файла и для управления операциями обмена?

Упражнения

1. Реализуйте набор основных операций над файлами, используя низкоуровневые примитивы ввода-вывода.

2. Реализуйте операции последовательного доступа к файлам, используя операции прямого доступа.

3. Реализуйте индексные файлы и операции ускоренного поиска информации по основным файлам с использованием индексных файлов.

4. Реализуйте структуру директорий и основные операции над ней, используя операции над файлами. Храните все ссылки в символической форме.

5. Разработайте и реализуйте алгоритм поиска циклических ссылок в структуре директорий.

Читайте также: