Современные ОС — широко распространенные системы — во многом похожи друг на друга. Прежде всего это определяется требованием переносимости программного обеспечения. Именно для обеспечения этой переносимости был принят POSIX (Portable OS Interface based on uniX) — стандарт, определяющий минимальные функции по управлению файлами, межпроцессному взаимодействию и т.д., которые должна уметь выполнять система.
Кроме того, за четыре с лишним десятилетия, прошедших с момента разработки первых ОС, сообщество программистов достигло определенного понимания того, что: — при разработке ОС возникает много стандартных проблем и вопросов; — для большинства из этих проблем и вопросов существует набор стандартных решений; — некоторые из этих решений намного лучше, чем все альтернативные.
По современным представлениям, ОС должна уметь делать следующее:
· Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение.
· Обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски и т.д. Как правило, ОС управляет свободным пространством на этих носителях и структурирует пользовательские данные.
СОВБЕЗ на Рен тв — К чему НАТО готовит ВСУ
· Предоставлять более или менее стандартный доступ к различным устройствам ввода/вывода, таким как терминалы, модемы, печатающие устройства.
· Предоставлять некоторый пользовательский интерфейс. Слово некоторый здесь сказано не случайно — часть систем ограничивается командной строкой, в то время как другие на 90% состоят из средств интерфейса пользователя.
Существуют ОС, функции которых этим и исчерпываются. Одна из хорошо известных систем такого типа — дисковая операционная система MS DOS.
Более развитые ОС предоставляют также следующие возможности:
· Параллельное (точнее, псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач.
· Распределение ресурсов компьютера между задачами.
· Организация взаимодействия задач друг с другом.
· Взаимодействие пользовательских программ с нестандартными внешними устройствами.
· Организация межмашинного взаимодействия и разделения ресурсов.
· Защита системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и их программ.
Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.
Транслятор — программа или техническое средство, выполняющее трансляцию программы. Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати тексты программы и т.д.
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.
Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.
Я торговал на ФЬЮЧЕРСАХ по сигналам ТРЕЙДЕРОВ 30 дней…
Язык процессоров (машинный код) обычно является низкоуровневым. Существуют платформы, использующие в качестве машинного язык высокого уровня (например, iAPX-432[5]), но они являются исключением из правила в силу сложности и дороговизны.
Транслятор, который преобразует программы в машинный язык, принимаемый и исполняемый непосредственно процессором, называется компилятором.
Процесс компиляции как правило состоит из нескольких этапов: лексического, синтаксического и семантического анализов, генерации промежуточного кода, оптимизации и генерации результирующего машинного кода. Помимо этого, программа как правило зависит от сервисов, предоставляемых операционной системой и сторонними библиотеками (например, файловый ввод-вывод или графический интерфейс), и машинный код программы необходимо связать с этими сервисами.
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.
В случае, если исходный язык является языком ассемблера (низкоуровневым языком, близким к машинному языку), то компилятор такого языка называется ассемблером.
Противоположный метод реализации — когда программа исполняется с помощью интерпретатора вообще без трансляции. Интерпретатор программно моделирует машину, цикл выборки-исполнения которой работает с командами на языках высокого уровня, а не с машинными командами. Такое программное моделирование создаёт виртуальную машину, реализующую язык. Этот подход называется чистой интерпретацией.
Достоинство чистого интерпретатора: отсутствие промежуточных действий для трансляции упрощает реализацию интерпретатора и делает его удобнее в использовании, в том числе в диалоговом режиме. Недостаток — интерпретатор должен быть в наличии на целевой машине, где должна исполняться программа. А свойство чистого интерпретатора, что ошибки в интерпретируемой программе обнаруживаются только при попытке выполнения команды (или строки) с ошибкой, можно признать как недостатком, так и достоинством.
Трансляция и интерпретация — разные процессы: трансляция занимается переводом программ с одного языка на другой, а интерпретация отвечает за исполнение программ. Однако, поскольку целью трансляции как правило является подготовка программы к интерпретации, то эти процессы обычно рассматриваются вместе. Например, языки программирования часто характеризуются как «компилируемые» или «интерпретируемые», в зависимости от того, преобладает при использовании языка компиляция или интерпретация. Причём практически все языки программирования низкого уровня и третьего поколения, вроде ассемблера, Си или Модулы-2, являются компилируемыми, а более высокоуровневые языки, вроде Python или SQL, — интерпретируемыми.
С другой стороны, существует взаимопроникновение процессов трансляции и интерпретации: интерпретаторы могут быть компилирующими (в том числе с динамической компиляцией), а в трансляторах может требоваться интерпретация для конструкций метапрограммирования (например, для макросов в языке ассемблера, условной компиляции в Си или для шаблонов в C++).
Более того, один и тот же язык программирования может и транслироваться, и интерпретироваться, и в обоих случаях должны присутствовать общие этапы анализа и распознавания конструкций и директив исходного языка. Это относится и к программным реализациям, и к аппаратным — так, процессоры семейства x86 перед исполнением инструкций машинного языка выполняют их декодирование, выделяя в опкодах поля операндов (регистров, адресов памяти, непосредственных значений), разрядности и т. п., а в процессорах Pentium с архитектурой NetBurst машинный код перед сохранением во внутреннем кэше вообще транслируется в последовательность микроопераций.
Источник: studopedia.su
Трансляция, интерпретация и компиляция (определения)
Трансляция (лат. translatio — перевод) — преобразование программы с одного языка программирования на другой, который понятен процессору или программе-интерпретатору.
Транслятор — программа или техническое средство (процессор), выполняющее трансляцию программы.
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.
Исходный код => Транслятор => Объектный код.
Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера).
Интерпретация — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы или запроса (в отличие от компиляции, при которой программа транслируется до её выполнения целиком).
Трансляторы:
- Интерпретатор — программа или аппаратное средство, выполняющее интерпретацию.
- Компилятор — программа или аппаратное средство, выполняющее компиляцию.
Компилировать — проводить трансляцию машинной программы с проблемно-ориентированного языка на машинно-ориентированный язык.
Решение:
Существуют два принципиально различных метода трансляции. Они называются соответственно компиляция и интерпретация. Для объяснения их различия можно предложить следующую аналогию: лектор должен выступить перед аудиторией на незнакомом ей языке. Перевод можно организовать двумя способами:
— полный предварительный перевод – лектор заранее передает текст выступления переводчику, тот записывает перевод, размножает его и раздает слушателям (после чего лектор может и не выступать);
— синхронный перевод – лектор читает доклад, переводчик одновременно с ним слово в слово переводит выступление.
Компиляция является аналогом полного предварительного перевода; интерпретация – аналогом синхронного перевода. Транслятор, работающий по принципу компиляции, называется компилятором; транслятор, работающий методом интерпретации, – интерпретатором.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
79. Трансля́тор — программа или техническое средство, выполняющее трансляцию программы.
В общем случае понятие трансляции относится не только к языкам программирования, но и к другим языкам — как формальным компьютерным (вроде языков разметки типа HTML), так и естественным (русскому, английскому и т. п.).
Виды трансляторов
Трансляторы подразделяют:
Диалоговый. Обеспечивает использование языка программирования в режиме разделения времени (англ.).
Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
Тестовый. Набор макрокоманд языка ассемблера, позволяющих задавать различные отладочные процедуры в программах, составленных на языке ассемблера.
Обратный. Для программы в машинном коде выдаёт эквивалентную программу на каком-либо языке программирования (см.: дизассемблер, декомпилятор).
80. Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.
Файловая система связывает носитель информации с одной стороны и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и на каком физическом типе носителя (CD, жёстком диске, магнитной ленте, блоке флеш-памяти или другом) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).
С точки зрения операционной системы (ОС), весь диск представляет собой набор кластеров (как правило, размером 512 байт и больше)[1]. Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.
Однако файловая система не обязательно напрямую связана с физическим носителем информации. Существуют виртуальные файловые системы, а также сетевые файловые системы, которые являются лишь способом доступа к файлам, находящимся на удалённом компьютере.
Кластер — группа компьютеров, объединённых высокоскоростными каналами связи и представляющая с точки зрения пользователя единый аппаратный ресурс.
Один из первых архитекторов кластерной технологии Грегори Пфистер дал кластеру следующее определение: «Кластер — это разновидность параллельной или распределённой системы, которая:
1.состоит из нескольких связанных между собой компьютеров;
2.используется как единый, унифицированный компьютерный ресурс».
Обычно различают следующие основные виды кластеров:
1.отказоустойчивые кластеры (High-availability clusters, HA, кластеры высокой доступности)
2.кластеры с балансировкой нагрузки (Load balancing clusters)
3.вычислительные кластеры (High perfomance computing clusters)
4.grid-системы
FAT (англ. File Allocation Table — «таблица размещения файлов») — классическая архитектура файловой системы, которая из-за своей простоты всё ещё широко используется для флеш-дисков и карт памяти. В недавнем прошлом использовалась в дискетах, на жёстких дисках и других носителях информации.
Разработана Биллом Гейтсом и Марком МакДональдом (англ.) в 1976—1977 годах.[1][2] Использовалась в качестве основной файловой системы в операционных системах семейств DOS и Windows (до версии Windows 2000).
Структура FAT следует стандарту ECMA-107 и подробно определяется официальной спецификацией от Microsoft, известной под названием FATGEN.[3]
82. И́мя фа́йла — строка символов, однозначно определяющая файл в некотором пространстве имён файловой системы (ФС), обычно называемом каталогом, директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой и операционной системах (ОС). Многие системы позволяют назначать имена как обычным файлам, так и каталогам и специальным объектам (символическим ссылкам, блочным устройствам и т. п.).
Имя файла является частью полного имени файла, также называемого полным или абсолютным путём к файлу. Полное имя может включать следующие компоненты:
протокол или способ доступа (http, ftp, file и т. п.);
имя или адрес компьютера, узла сети (wikipedia.org, 207.142.131.206, \MYCOMPUTER, SYS: и т. п.);
устройство хранения, диск (C:, /, SYSLIB и т. п.);
путь к каталогу (/usr/bin, TEMP, [USR.LIB.SRC] и т. п.);
собственно имя файла, которое может содержать его расширение (.txt, .exe, .COM и т. п.);
версия или номер ревизии
Имя файла необходимо для того, чтобы к файлу мог обратиться пользователь. В одном каталоге не может быть двух файлов с одинаковыми именами (некоторые файловые системы регистронезависимы, что оставляет возможность для создания файлов, имена которых отличаются регистром символов).
Имя файла состоит из двух частей, разделенных точкой:
Название (до точки, часто также называют именем);
Расширение (необязательная часть).
Название файлу (до точки) рекомендуется давать осмысленное, говорящее о назначении файла, дабы избежать путаницы в дальнейшем.
Запрещенные символы
Многие операционные системы запрещают использование некоторых служебных символов. Запрещенные символы Windows:
— разделитель подкаталогов
/ — разделитель ключей командного интерпретатора
: — отделяет букву диска или имя альтернативного потока данных
* — заменяющий символ (маска «любое количество любых символов»)
? — заменяющий символ (маска «один любой символ»)
» — используется для указания путей, содержащих пробелы
> — перенаправление вывода
| — обозначает конвейер
В UNIX и UNIX-подобных ОС запрещен слеш (/) — разделитель подкаталогов — и символ конца строки ( ). Перечисленные выше символы (кроме слеша) использовать можно, но из соображений совместимости их лучше избегать.
83. Катало́г (англ. directory — справочник, указатель) — объект в файловой системе, упрощающий организацию файлов. Типичная файловая система содержит большое количество файлов, и каталоги помогают упорядочить её путём их группировки.
В информатике используется следующее определение: каталог — поименованная совокупность байтов на носителе информации, содержащая название подкаталогов и файлов.[источник не указан 743 дня]
Понятие каталог всё чаще используется не как дублирующий синоним Директории, а для обозначения отдельно созданной иерархической структуры, построенной по принципу «Избранное». (то есть в русском значении слова Каталог — опись)
Логический диск или том (англ. volume) — часть долговременной памяти компьютера, рассматриваемая как единое целое для удобства работы. Термин «логический диск» используется в противоположность «физическому диску», под которым рассматривается память одного конкретного дискового носителя.
Для операционной системы не имеет значения, где располагаются данные — на лазерном диске, в разделе жёсткого диска, или во флеш-памяти. Для унификации представляемых участков долговременной памяти вводится понятие логического диска.
В таблице определяется, в частности, в каком каталоге (папке) находится тот или иной файл. Благодаря этому при переносе файла из одной папки в другую в пределах одного тома, не осуществляется перенос данных из одной части физического диска на другую, а просто меняется запись в таблице размещения файлов. Если же файл переносится с одного логического диска на другой (даже если оба логических диска расположены на одном физическом диске), обязательно будет происходить физический перенос данных (копирование с дальнейшим удалением оригинала в случае успешного завершения).
По этой же причине форматирование и дефрагментация каждого логического диска не затрагивает другие.
Путь к файлу
Путь (англ. path) — набор символов, показывающий расположение файла в файловой системе, адрес каталога.
В операционных системах UNIX разделительным знаком при записи пути является «/». В Windows — «». В других операционных системах таким знаком может быть «:» или другой знак[источник не указан 245 дней]. Эти знаки служат для разделения названия каталогов, составляющих путь к файлу.
Например, в следующей записи адресации /home/user_kolia/foo/bar.txt часть bar.txt — это имя файла, а /home/user_kolia/foo/ — путь к нему.
Путь может быть абсолютным или относительным. Полный или абсолютный путь — это путь, который указывает на одно и то же место в файловой системе, вне зависимости от текущей рабочей директории или других обстоятельств. Полный путь всегда начинается с корневого каталога. Относительный путь представляет собой путь по отношению к текущему рабочему каталогу пользователя или активных приложений.
Для эффективного поиска файлов UNIX-подобные операционные системы, как правило, имеют системную переменную $PATH в командной оболочке (например, sh), которая задает перенаправления к важнейшим исполняемым файлам. Узнать значение этой переменной можно с помощью команды echo $PATH или аналогичной.
Источник: studfile.net