В Linux. 2 Приобретение и инсталляция Linux. 3 Учебник по Linux 4 Администрирование системы. 5 The X window System. 6 Работа в сети

Вид материалаУчебник

Содержание


1.3 Системные характеристики.
1.4 Программные характеристики.
C Shell (csh) использует командный язык, чем-то напоминающий язык программирования Си. Классический
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   73

1.3 Системные характеристики.


Linux очень простая система: все, что в Windows называется "фича", в Linux называется "глюк".

Linux поддерживает большинство свойств, присущих другим реализациям UNIX, плюс ряд тех, которых больше нигде нет. Этот раздел дает поверхностный обзор характеристик ядра Linux.

Linux это полная многозадачная многопользовательская операционная система (точно также как и другие версии UNIX). Это означает, что одновременно много пользователей могут работать на одной машине, одновременно выполнять много программ.

Linux достаточно хорошо совместим с рядом стандартов для UNIX (насколько вообще можно говорить о стандартизации UNIX) на уровне исходных текстов, включая IEEE POSIX.1, System V и BSD. Он создавался имея в виду такую совместимость. Поэтому, скорее всего, вы найдете в Linux черты, присущие многим UNIX-системам. Большинство свободно распространяемых по сети Internet программ для UNIX может быть откомпилировано для LINUX практически без особых изменений. Кроме того, все исходные тексты для Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и инструментальные средства распространяются свободно.

Другие специфические внутренние черты Linux включают контроль задач по стандарту POSIX (используемый оболочками, такими как csh и bash), псевдотерминалы (pty), поддержку национальных и стандартных клавиатур динамически загружаемыми драйверами клавиатур. Linux поддерживает виртуальные консоли, которые позволяют переключаться между различными сеансами работы на разных (или одной) системах с одной консоли, то есть позволяют "переключать экраны" на консоли в текстовом режиме. Те, кто пользовался программой "screen", найдут подобное в реализации виртуальных консолей в Linux.

Ядро может само эмулировать команды 387-FPU, так что системы без сопроцессора могут выполнять программы, на него рассчитывающие (т.е. с плавающей точкой).

Linux поддерживает различные типы файловых систем для хранения данных. Некоторые файловые системы, такие как файловая система ext2fs, были созданы специально для Linux. Поддерживаются также другие типы файловых систем, такие как Minix-1 и Xenix. Реализована также файловая система MS-DOS, позволяющая прямо обращаться к файлам MS-DOS на жестком диске. Поддерживается также файловая система ISO 9660 CD-ROM для работы с дисками CD-ROM. Подробнее о файловых системах говорится в Главах 2 и 4.

Linux обеспечивает полный набор протоколов TCP/IP для сетевой работы. Это включает драйверы устройств для многих популярных карт Ethernet, SLIP (Serial Line Internet Protocol, обеспечивающие вам доступ по TCP/IP при последовательном соединении), PLIP (Parallel Line Internet Protocol), PPP (Point-to-Point Protocol), NFS (Network File System), и так далее. Поддерживается весь спектр клиентов и услуг TCP/IP, таких как FTP, telnet, NNTP и SMTP. О сетевых проблемах мы будем говорить в Главе 5.

Ядро Linux сразу создано с учетом специального защищенного режима для процессоров Intel 80386 и 80486. В частности, Linux использует парадигму описания памяти в защищенном режиме и другие новые свойства процессоров. Любой знакомый с защищенным режимом процессора 80386 знает, что этот чип проектировался для многозадачных систем вроде UNIX (или Mulics). Linux использует эти свойства.

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

Для увеличения объема доступной памяти Linux осуществляет также разбиение диска на страницы: то есть на диске может быть выделено до 1 гигабайта "пространства для свопинга" (swap space). (Swap space не совсем подходящее имя, в Linux в область свопинга выгружается не весь процесс, а только отдельные его части, в которых нет необходимости). Когда системе нужно больше физической памяти, то она с помощью свопинга выводит неактивные страницы на диск. Это позволяет выполнять более объемные программы и обслуживать одновременно больше пользователей. Однако свопинг не исключает наращивания физической памяти, поскольку он снижает быстродействие, увеличивает время доступа.

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

Выполняемые программы используют динамически связываемые библиотеки, т.е. выполняемые программы могут совместно использовать библиотечную программу, представленную одним физическим файлом на диске (иначе, чем это реализовано в механизме разделяемых библиотек SunOS). Это позволяет выполняемым файлам занимать меньше места на диске, особенно тем, которые многократно используют библиотечные функции. Есть также статические связываемые библиотеки для тех, кто желает пользоваться отладкой на уровне объектных кодов или иметь "полные" выполняемые программы, которые не нуждаются в разделяемых библиотеках. В Linux разделяемые библиотеки динамически связываются во время выполнения, позволяя программисту заменять библиотечные модули своими собственными.

Для обеспечения отладки ядро Linux выдает дампы памяти для "посмертного" анализа. Использование дампа и динамических отладчиков позволяет определить причины краха программы (и системы...).

1.4 Программные характеристики.


В этом разделе мы представим вам многие приложения, доступные в Linux, и поговорим об общих задачах вычисления. В конечном счете наиболее важным в системе является то, насколько широк спектр доступных в ней программ. А тот факт, что большая часть этих программ распространяется свободно, усиливает впечатление.

Практически любая утилита, которую вы ожидаете найти в стандартных реализациях UNIX, имеется и в Linux. Сюда включены и базовые команды, такие как ls, awk, tr, sed, bc, more и т.д. Назовите любую: она уже есть в Linux. Поэтому вы в праве ожидать знакомой рабочей UNIX-среды. В Linux есть все стандартные команды и утилиты. (Новички могут посмотреть Главу 3 для начального знакомства с базовыми командами UNIX).

В Linux имеются многие текстовые редакторы, включая vi, ex, pico, jove, также как GNU Emacs и его вариации, вроде Lucid Emacs (который содержит расширение для использования под X Windows) и joe. Скорее всего, любой текстовый редактор, к которому вы привыкли, перенесен в Linux.

Выбор редактора явление любопытное. Многие пользователи UNIX до сих пор используют "простые" редакторы вроде vi (кстати, автор писал эту книгу в Linux, используя редактор vi). Но vi имеет много ограничений по причине своего преклонного возраста. Сейчас завоевывают популярность более современные и сложные редакторы, вроде Emacs. Emacs поддерживает базирующийся на LISP макроязык и интерпретатор, мощный командный синтаксис и другие расширения. Существуют макропакеты Emacs, позволяющие читать электронную почту и новости, редактировать содержимое каталогов и даже проводить сеансы психотерапии с использованием искусственного интеллекта (неоценимая возможность для измотанных Linux хакеров).

Интересное замечание: большинство утилит Linux имеют статус GNU. Эти утилиты часто поддерживают наиболее современные черты, не содержащиеся в стандартных версиях BSD или AT&T. Например, версия GNU редактора vi, elvis, содержит структурный макроязык, который отличается от исходной реализации AT&T. Но тем не менее, утилиты GNU сохраняют совместимость с их тезками из BSD и System V. Многие считают, что GNU версии лучше исходных программ.

Многие пользователи самой важной утилитой считают shell. shell это программа, которая читает и выполняет команды пользователя. Кроме того, многие оболочки (shells) имеют такие возможности, как контроль выполнения> (job control) (позволяя пользователю управлять несколькими параллельными процессами), перенаправление входа-выхода и командный язык для написания командных файлов (shell scripts). Командный файл это программа на языке оболочки, аналогичная "batch file" в MS-DOS, но язык имеет гораздо больше возможностей. Мне приходилось видеть оболочку, в которой был встроен язык С!

В Linux много типов оболочек. Наиболее важное различие между ними используемый командный язык. Например, C Shell (csh) использует командный язык, чем-то напоминающий язык программирования Си. Классический <Борновский shell (Bourne Shell) использует иной командный язык. Обычно выбор оболочки обусловлен выбором соответствующего командного языка. Выбранная оболочка в какой-то мере определяет вашу рабочую среду.

Не важно, к какой оболочке вы привыкли, та или иная ее версия есть в Linux. Наиболее популярная оболочка GNU Bourne Again Shell (bash), т.е. вариант Bourne shell, включающий много современных свойств и возможностей, таких как управление работами, командную историю, дописывание имен команд и имен файлов, Emacs-подобный интерфейс редактирования командной строки и мощное расширение стандартной оболочки (Bourne shell).

Другая популярная оболочка tcsh, версия C Shell с более современными функциями по сравнению с bash. Другие оболочки: zsh небольшая борноподобная оболочка; ksh оболочка Корна; ash оболочка BSD и rc оболочка проекта Plan 9.

Что особенно важно сказать относительно этих оболочек? Linux дает вам уникальную возможность кроить систему под ваши личные нужды. Например, если вы единственный пользуетесь этой системой и вы предпочитаете редактор vi и bash в качестве оболочки, то нет необходимости иметь прочие редакторы и оболочки. "Сделай сам, как тебе нравится" это позиция хакеров и пользователей Linux.