В ОС семейства Unix имя файла может содержать несколькосимволов '.', и, таким образом, файл может иметь несколькокаскадированных расширений. Например, файл "main.C" - этопрограмма на языке C++; "main.C.gz" - это программана языке C++, упакованная архиватором GNU Zip сцелью сэкономить место; "main.C.gz.crypt" - это программа, которуюупаковали и потом зашифровали, чтобы никто посторонний не смог ее прочитать;наконец, "main.C.gz.crypt.uue" - это упакованная и зашифрованнаяпрограмма, преобразованная в последовательность печатаемых символовкода ASCII, например, для пересылки по электронной почте.
В принципе расширения являются вполне приемлемым и во многихотношениях даже очень удобным способом идентификации типа файла.Одно из удобств состоит в том, что для использования этого методане нужно никаких или почти никаких усилий со стороны ОС: просто программы договариваются интерпретировать имя файла определенным образом.
Например, стандартный драйвер компилятора в системах семействаUnix - программа cc - определяет тип файла именно порасширению. Командная строка
Example:
cc main.C c-code.c asm-code.s obj-code.o\ library.a -o programбудет интерпретироваться следующим образом:
main.C:
текст на языке C++. Его нужно пропуститьчерез препроцессор и откомпилировать компилятором C++,а затем передать то, что получится, редактору связей.Большинство компиляторов в Unix генерируют кодна ассемблере, то есть вывод компилятора еще нужно пропуститьчерез ассемблер.
c-code.c:
текст на языке C. Он обрабатывается,так же, как и C++-программа, только вместокомпилятора C++ используется обычный компилятор C.
asm-code.s:
программа на языке ассемблера. Ее нужнообработать ассемблером и получить объектный модуль.
obj-code.o:
объектный модуль, который непосредственноможно передавать редактору связей.
library.a:
объектная библиотека, которую нужно использоватьдля разрешения внешних ссылок наравне со стандартными библиотеками.
Многие ОС, разработанные в 70-е гг., такие как RT-11,RSX-11, VAX/VMS, CP/M, навязывают программистуразделение имени на собственно имя и расширение, интерпретируя точкув имени файла как знак препинания. В таких системах имя может содержатьтолько одну точку и соответственно иметь только одно расширение.Напротив, в ОС нового поколения - OS/2, Windows NTи даже в Windows 95 - реализована поддержка имен файловсвободного формата, которые могут иметь несколько каскадированныхрасширений, как и в Unix.
Однако никакие средства операционной системы не могут навязать прикладнымпрограммам правил выбора расширения для файлов данных. Это приводит кнеприятным коллизиям. Например, почти все текстовые процессоры отЛексикон до Word 7.0 включительно используютрасширение файла .doc (сокращение от document),хотя форматы файлов у различных процессоров и даже у разных версийодного процессора сильно различаются.
Другая проблема связана с исполняемыми загрузочными модулями. Обычносистема использует определенное расширение для исполняемых файлов.Так, VMS, MS/DR DOS, OS/2, MS Windowsи Windows NT используют расширение .exe: сокращение отexecutable (исполняемый).Однако по мере развития системы формат загрузочного модуля может изменяться.Так, например, OS/2 v3.0 Warp поддерживает по крайней мерепять различных форматов загрузочных модулей.
Для исполнения последних двух типов программ OS/2 создаетзадачу, работающую в режиме совместимости с 8086.Эта задача запускает копию ядра DOS и, если этонеобходимо, копию MS Windows, которые уже выполняют загрузкупрограммы. Загрузочные модули всех трех ``родных'' форматов загружаютсясистемой непосредственно.
Так или иначе загрузчик должен уметь правильно распознавать все форматы.При этом он не может использовать расширение файла: файлы всех перечисленныхформатов имеют расширение .EXE.
Похожая ситуация имеет место в системах семейства Unix,где бинарные загрузочные модули и командные файлы вообще не имеют расширения.При этом большинство современных версий системы также поддерживает несколькоразличных исторически сложившихся форматов загрузочного модуля.
Разработчики Unix столкнулись с этой проблемой еще в 70 гг.В качестве решения они предложили использоватьмагические числа (magic number) - соглашение о том, чтофайлы определенного формата содержат в начале определенный байт илипоследовательность байтов. Первоначально это были численные коды;файл /etc/magic содержал коды, соответствующие известнымтипам файлов. Позднее в качестве магических чисел стали использоватьсядлинные текстовые строки. Так, например, изображения в форматеCompuserve GIF 87a должны начинаться с символов GIF87a.
Легко понять, что магические числа ничуть не лучше расширений,а во многих отношениях даже хуже. Например, пользователь,просмотрев содержимое каталога, не может сразу узнатьтипы содержащихся в ней файлов. Еще хуже ситуация, когда расширениефайла не соответствует его реальному типу. Это будет вводить взаблуждение не только пользователя, но и некоторые программы, полагающиесяпри определении формата на расширение вместо магического числа.
С длинными мнемоническими текстовыми строками может быть связанаеще одна забавная проблема, которая может иметь неприятные последствия.Например, текстовый файл следующего содержания:
Example:
GIF87a -- это очень плохой форматхранения изображений.будет воспринят некоторыми программами как изображение в форматеCompuserve GIF 87a, каковым он, безусловно, не является.
Пытаясь как-то решить проблему идентификации типа файла, разработчикиMacintoch отказались как от расширений, так и от магическихчисел. В MacOS каждый файл состоит из двух частей иливетвей (forks): ветви данных (data fork) и ветвиресурсов (resource fork). Кроме идентификатора типа файла,ветвь ресурсов хранит информацию о:
Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обеспечить совместное использование файлов несколькими пользователями и процессами.
В широком смысле понятие "файловая система" включает:
23.
Программное обеспечение — это совокупность программ, позволяющих осуществить на компьютере автоматизированную обработку информации. Программное обеспечение делится на системное (общее) и прикладное (специальное).
Класификация
Без программ (совокупности, команд, которые должен выполнять процессор)компьютер - не более чем простое переплетение бесполезных электронных схем.
Программное обеспечение (softwаrе) на данный момент составляет сотни тысяч программ, которые предназначены для обработки самой разнообразной информация с самыми различными целями. В зависимости от того, какие задачи выполняет то или иное программное обеспечение можно разделять все программное обеспечение на несколько групп:
К Базовомупрограммному обеспечению относят операционные системы и оболочки операционных систем.
Операционной системой называют совокупность программ, которая координирует работу компьютера и управляет размещением программ и данных в оперативной памяти компьютера, интерпретирует команды, управляет периферийными устройствами, распределяет аппаратные ресурсы. Операционная система (ОС) - "режиссер" компьютерного действа.
Оболочки операционных систем обеспечивают удобный интерфейс (способ общения) для пользователя, программиста и компьютера.
Операционных систем и оболочек операционных систем довольно много, они различаются интерфейсом, набором возможностей, способами защиты от вирусов (программ, которые портят другие программы), способами управления ресурсами памяти, периферийными устройствами. Различия ОС обоснованы обычно свойствами и назначением самих ЭВМ, спецификой их использования. Можно назвать наиболее распространенные операционные системы, это: MS DOS, UNIX, Windows 95 и далее, WindowsNT и др.
Оболочки операционных систем дают возможность вводить команды операционных систем в более удобном для человека виде, с помощью выбора команд в предложенном оболочкой меню. Из наиболее распространенных оболочек можно назвать оболочки Norton Commander, DOS Shell, Windows2, 3.0, 3.11 и др.
К трансляторам относят программы, которые преобразуют команды программ, написанных на языках высокого уровня, таких как Qbasic, Pascal, С, Prolog, Ada и других, в команды записанные в машинных кодах, использующих двоичный алфавит. Эти программы можно назвать программами-переводчиками с языков программирования высокого уровня на машинный язык.