Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://uneex.mithril.cs.msu.su/static/AltDocs_linuxnovice/ch01s02.html
Дата изменения: Mon Sep 26 12:35:53 2011 Дата индексирования: Mon Oct 1 23:43:23 2012 Кодировка: koi8-r |
Linux поддерживает те возможности, которые имеются в других реализациях семейства UNIX, а также те, которых нет больше нигде. В этом разделе будет дан краткий обзор основных возможностей ядра системы Linux.
Linux љ— это полностью мультизадачная многопользовательская операционная система, так же как и все версии системы UNIX. Это означает, что сразу несколько пользователей могут одновременно войти в операционную систему и запускать программы на одном и том же компьютере.
Система Linux в основном совместима с несколькими стандартами системы UNIX (в той мере, в которой стандарты системы UNIX вообще существуют) на уровне исходных текстов, в том числе љ— со стандартами IEEE POSIX.1, UNIX System V, BSD (Berkely System Distribution) UNIX. При разработке системы Linux совместимость на уровне исходных текстов подразумевалась, и довольно просто будет найти общие для нескольких различных платформ черты. Значительная часть свободного программного обеспечения для системы UNIX может быть получена через Интернет (или как-либо ещё) и без всякой обработки откомпилирована в системе Linux. Кроме того, все исходные тексты системы Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и средства разработки, распространяются свободно.
В системе Linux реализованы язык управления заданиями POSIX (используется оболочками типа csh и bash), псевдотерминалы (устройства pty) и поддержка динамически загружаемых драйверов клавиатуры для изменённых либо иностранных (не-английских) алфавитов. Система Linux поддерживает виртуальные консоли (virtual console), с помощью которых можно переключаться между несколькими одновременными сеансами на одном (физически) терминале. Пользователи программы screen обнаружат, что система организации виртуальных консолей в системе Linux им знакома.
Ядро системы позволяет производить постраничную загрузку исполняемых программ. В оперативную память с диска загружаются только те части программы, которые в данный момент требуются. Исполняемые программы пользуются общим буфером записи (copy-on-write pages). Если одновременно в памяти работают несколько экземпляров одной и той же программы, то они пользуются общими кусками физической памяти, уменьшая тем самым суммарный объем используемой памяти.
Для увеличения объёма доступной оперативной памяти Linux использует также временное хранение данных на диске (disk paging). Под эти цели может быть отведено до 1 гигабайта (8 частей по 128 мегабайт) дисковой памяти. На своп, или область подкачки (swap), могут перекачиваться не обязательно процессы целиком; возможно скачивание отдельных страниц памяти. Таким образом система получает возможность запускать объёмные приложения и/или поддерживать больше пользователей, работающих одновременно. Заметим, что временное хранение данных на диске не может заменить «настоящую» оперативную память, работающую намного быстрее диска.
Для пользовательских программ и кэширования ядро системы Linux использует «общий котёл» (unified memory pool) оперативной памяти. В каждый момент используется вся доступная оперативная память, объем которой может, например, уменьшаться, когда запускается крупное приложение.
Для исполняемых файлов используются также динамически вызываемые библиотеки общего пользования (они существуют на диске в единственном экземпляре и могут использоваться несколькими программами). Этот механизм немногим отличается от аналогичного механизма SunOS. Таким образом, объем исполняемых файлов, особенно тех, которые используют много библиотечных процедур, резко сокращается. Возможно также формирование статически связываемых библиотек (statically linked libraries); это нужно для целей отладки или для формирования «полного» исполняемого файла для работы на тех системах, где библиотеки общего пользования не установлены. Подключение библиотечных процедур происходит во время работы программы, так что программист может по желанию подключать либо стандартную библиотечную процедуру, либо собственную процедуру взамен библиотечной.
Для упрощения отладки ядро системы может генерировать полную «распечатку» содержимого памяти и регистров (core dump) в случае аварийного завершения программы. С помощью специальной программы, подключённой к средствам отладки, разработчик программы может проанализировать эту «распечатку» и отыскать причину сбоя в программе.