1.3 Системные и программные характеристики Linux
Linux поддерживает большинство свойств, присущих другим реализациям Unix, плюс ряд тех, которых больше нигде нет. Linux - это полная многозадачная многопользовательская операционная система. Это означает, что одновременно много пользователей могут работать на одной машине, одновременно выполнять много программ. Linux достаточно хорошо совместим с рядом стандартов для Unix (насколько можно говорить о стандартизации Unix) на уровне исходных текстов, включая IEEEPOSIX.1, SystemV и BSD. Он создавался, имея в виду такую совместимость. Поэтому, несложно найти в Linux черты, присущие многим Unix-системам. Большинство свободно распространяемых по сети Internet программ для Unix может быть откомпилировано для Linux практически без особых изменений. Кроме того, все исходные тексты для Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и инструментальные средства распространяются свободно.[12]
Linux также поддерживает виртуальные консоли (“virtualconsoles”), которые позволяют “переключать экраны” на консоли в текстовом режиме, также позволяют войти в систему под несколькими именами в одно время. Ядро может само эмулировать команды 387-FPU, так что системы без сопроцессора могут выполнять программы, на него рассчитывающие (т.е. с плавающей точкой).
Linux поддерживает различные типы файловых систем для хранения данных. Некоторые файловые системы были созданы специально для Linux. Поддерживаются также другие типы файловых систем, такие как Minix-1 и Xenix. Реализована также файловая система MS-DOS, позволяющая прямо обращаться к файлам MS-DOS на жестком диске. Linux обеспечивает полный набор протоколов TCP/IP для сетевой работы, включая драйверы устройств для многих популярных карт Ethernet, SLIP (SerialLineInternetProtocol, обеспечивающие доступ по TCP/IP при последовательном соединении), PLIP (ParallelLineInternetProtocol), PPP (Point-to-PointProtocol), NFS (NetworkFileSystem), и так далее. Поддерживается весь спектр клиентов и услуг TCP/IP, таких как FTP, telnet, NNTP и SMTP. [5]
Ядро Linux поддерживает загрузку только нужных страниц. То есть с диска в память загружаются те сегменты программы, которые действительно используются. Возможно использование одной страницы, физически один раз загруженной в память, несколькими выполняемыми программами.
Для увеличения объема доступной памяти Linux осуществляет также разбиение диска на страницы: то есть на диске может быть выделено до 256 Мбайт “пространства для своппинга” (swapspace). В область своппинга выгружается не весь процесс, а только отдельные его части, в которых нет необходимости). Когда системе нужно больше физической памяти, то она с помощью своппинга выводит неактивные страницы на диск. Это позволяет выполнять более объемные программы и обслуживать одновременно больше пользователей. Однако свопинг не исключает наращивания физической памяти, поскольку он снижает быстродействие, увеличивает время доступа.
Ядро также поддерживает универсальный пул памяти для пользовательских программ и дискового кэша. При этом для кэша может использоваться вся память, и наоборот, кэш уменьшается при работе небольших программ. Выполняемые программы используют динамически связываемые библиотеки, т.е. выполняемые программы могут совместно использовать библиотечную программу, представленную одним физическим файлом на диске. Это позволяет выполняемым файлам занимать меньше места на диске, особенно тем, которые многократно используют библиотечные функции. Есть также статические связываемые библиотеки для тех, кто желает пользоваться отладкой на уровне объектных кодов или иметь “полные” выполняемые программы, которые не нуждаются в разделяемых библиотеках. В Linux разделяемые библиотеки динамически связываются во время выполнения, позволяя программисту заменять библиотечные модули своими собственными. Для обеспечения отладки ядро Linux выдает дампы памяти для “посмертного” анализа. Использование дампа и динамических отладчиков позволяет определить причины краха программы.[14]
Практически любая утилита, которая находится в стандартных реализациях Unix, имеется и в Linux. Сюда включены и базовые команды, такие как ls, awk, tr, sed, bc, more и т.д. В Linux есть все стандартные команды и утилиты Unix.
Вместо перечисления всех возможных опций каждой команды, будем говорить только о тех, которые полезны или важны в данное время (Таблица 2). Действительно, большинство из этих команд имеет большое число опций (большинство из которых никогда не используется).
В Linux имеются многие текстовые редакторы, включая vi, ex, pico, jove, также GNUEmacs и его вариации, вроде LucidEmacs (который содержит расширение для использования под “XWindow”) и joe. Но vi имеет много ограничений по причине своего преклонного возраста, сейчас завоевывают популярность более современные и сложные редакторы вроде Emacs. Emacs поддерживает базирующийся на LISP макроязык и интерпретатор, мощный командный синтаксис и другие расширения.
Основные команды Linux | ||
Команда | Что делает | Синтаксис |
Cd | Изменяет текущий рабочий каталог | Cd <directory>; <directory> - каталог, в который перейти. |
Ls | Выдает информацию о файлах в каталоге | Ls <file1> ... <fileN> Где<file1> ... <fileN> имена файлов или каталогов, информацию про которые надо выдать.Опции огромное колличество. Наиболее часто используемые: -F (для представления информации о типах файлов), и -l (выдает в длинном формате информацию о размерах файлов, владельцах, правах доступа и т.д.). |
Cp | Копирует файл(ы) в файл или каталог | Cp <file1> ... <fileN> <destination> Где<file1> ... <fileN> имена копируемых файлов, а <destination> файл или каталог, в который копируют. |
Mv | Перемещает файл(ы) в другой файл или каталог | Mv <file1> ... <fileN> <destination> Где<file1> ... <fileN> имена перемещаемых файлов, а <destination> имя файла или каталога, в который перемещают. |
Rm | Удаляет файлы | Rm <file1> ... <fileN> Где<file1> ... <fileN> имена удаляемых файлов. Опции: -i потребует пользовательского подтверждения перед удалением файла |
Mkdir | Создает новые каталоги | Mkdir <dir1> ... <dirN> |
Rmdir | Эта команда удаляет пустые каталоги | rmdir <dir1> ... <dirN> Где<dir1> ... <dirN> удаляемые каталоги |
Man | Выдает страницу руководства по данной команде или ресурсу. | man <command> Где <command> имя команды или ресурса, о котором запрашивается информация |
More | Выдает содержимое названных файлов по-экранно | more <file1> ... <fileN> Где<file1> ... <fileN>отображаемыефайлы |
Cat | Используется для конкатенации файлов. Также используется для выдачи полного содержания файла разом | cat <file1> ... <fileN> Где<file1> ... <fileN> выдаваемые файлы |
Echo | Просто повторяет аргументы | echo <arg1> ... <argN> Где<arg1> ... <argN> "повторяемые" аргументы. |
Grep | Выдает все строки в названном файле(лах), которые содержат заданный образец | grep <pattern> <file1> ... <fileN> Где <pattern> - образец (представленный регулярным выражением) и <file1> ... <fileN> - файлы, в которых производится поиск |
Таблица 2.
Существуют макропакеты Emacs, позволяющие читать электронную почту и новости, редактировать содержимое каталогов и даже проводить сеансы психотерапии с использованием искусственного интеллекта.
Многие пользователи самой важной утилитой считают shell. Shell - это программа, которая читает и выполняет команды пользователя. Кроме того, многие оболочки имеют такие возможности, как контроль выполнения (jobcontrol), позволяя пользователю управлять несколькими параллельными процессами, также перенаправление входа-выхода и командный язык для написания командных файлов (shellscripts). Командный файл - это программа на языке оболочки, аналогичная “batchfile” в MS-DOS.