next up previous contents
Next: Информация о системе Linux Up: Введение в Linux Previous: Краткая история системы Linux

Характеристика и возможности системы

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

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

Система Linux в основном совместима с несколькими стандартами системы UNIX (в той мере, в которой стандарты системы UNIX вообще существуют) на уровне исходных текстов, в том числе -- со стандартами IEEE POSIX.1, UNIX System V, Berkely System Distribution UNIX. При разработке системы Linux совместимость на уровне исходных текстов подразумевалась, и довольно просто будет найти общие для нескольких различных платформ черты. Значительная часть свободного программного обеспечения для системы UNIX может быть получена через Интернет (или как-либо еще) и без всякой обработки откомпилирована в системе Linux. Кроме того, все исходные тексты системы Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и средства разработки, распространяются свободно.

В системе Linux реализованы язык управления заданиями POSIX (используется оболочками типа csh и bash), псевдотерминалы (устройства pty) и поддержка динамически загружаемых драйверов клавиатуры для измененных либо иностранных (не-английских) алфавитов. Система Linux поддерживает виртуальные консоли (virtual console), с помощью которых можно переключаться между несколькими одновременными сеансами на одном (физически) терминале. Пользователи программы screen обнаружат, что система организации виртуальных консолей в системе Linux им знакома.

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

Система Linux поддерживает несколько типов файловых систем для хранения данных. Среди них система ext2, разработанная специально для Linux, файловые системы для Xenix и UNIX System V, а также система VFAT для Microsoft MS-DOS и Windows 95 на жестком и гибких магнитных дисках. Также поддерживается система ISO 9660 CD-ROM для лазерных дисков. Подробнее об этом будет написано в главах 2 и 4.

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

Ядро системы Linux предполагает использование защищенного режима процессора Intel 80386 и выше. В частности, подход системы Linux к управлению памятью в защищенном режиме основан на описателях (protected-mode descriptor-based memory management). Знакомые с программированием защищенного режима процессора 80386 знают, что этот процессор предназначен для мультизадачных систем, таких как UNIX. Система Linux активно использует это свойство процессора и другие мощные средства.

Ядро системы позволяет производить постраничную загрузку исполняемых программ. В оперативную память с диска загружаются только те части программы, которые в данный момент требуются. Исполняемые программы пользуются общим буфером записи (copy-on-write pages). Если одновременно в памяти работают несколько экземпляров одной и той же программы, то они пользуются общими кусками физической памяти, уменьшая тем самым суммарный объем используемой памяти.

Для увеличения объема доступной оперативной памяти Linux использует также временное хранение данных на диске (disk paging). Под эти цели может быть отведено до 1 гигабайта (8 частей по 128 мегабайт) дисковой памяти. На своп, или область подкачки (swap), могут перекачиваться не обязательно процессы целиком; возможно скачивание отдельных страниц памяти. Таким образом система получает возможность запускать объемные приложения и/или поддерживать больше пользователей, работающих одновременно. Заметим, что временное хранение данных на диске не может заменить "настоящую" оперативную память, работающую намного быстрее диска.

Для пользовательских программ и кэширования ядро системы Linux использует "общий котел" (unified memory pool) оперативной памяти. В каждый момент используется вся доступная оперативная память, объем которой может, например, уменьшаться, когда запускается крупное приложение.

Для исполняемых файлов используются также динамически вызываемые библиотеки общего пользования (они существуют на диске в единственном экземпляре и могут использоваться несколькими программами). Этот механизм немногим отличается от аналогичного механизма SunOS. Таким образом, объем исполняемых файлов, особенно тех, которые используют много библиотечных процедур, резко сокращается. Возможно также формирование статически связываемых библиотек (statically linked libraries); это нужно для целей отладки или для формирования "полного" исполняемого файла для работы на тех системах, где библиотеки общего пользования не установлены. Подключение библиотечных процедур происходит во время работы программы, так что программист может по желанию подключать либо стандартную библиотечную процедуру, либо собственную процедуру взамен библиотечной.

Для упрощения отладки ядро системы может генерировать полную "распечатку" содержимого памяти и регистров (core dump) в случае аварийного завершения программы. С помощью специальной программы, подключенной к средствам отладки, разработчик программы может проанализировать эту "распечатку" и отыскать причину сбоя в программе.


next up previous contents
Next: Информация о системе Linux Up: Введение в Linux Previous: Краткая история системы Linux

root
Sun Aug 29 12:01:30 MSD 1999