338 Глава 10. Краткий обзор современных операционных систем
Linux, как и все UNIX-системы, поддерживает полный набор протоколов стека
TCP/IP для сетевой работы. Программное обеспечение для работы в Интернет/
интранет включает драйверы устройств для многих популярных сетевых адапте-
ров технологии Ethernet, протоколы SLIP (Serial Line Internet Protocol), PLIP
(Parallel Line Internet Protocol), PPP (Point-to-Point Protocol), NFS (Network File
System) и пр. Поддерживается весь спектр клиентов и услуг TCP/IP, таких как
FTP, telnet, NNTP и SMTP.
Ядро Linux сразу было создано с учетом возможностей защищенного режима 32-
разрядных процессоров 80386 и 80486 фирмы Intel. В частности, в Linux использу-
ется парадигма описания памяти в защищенном режиме и другие новые свойства
процессоров с архитектурой ia32. Для защиты пользовательских программ друг от
друга и операционной системы от них Linux работает исключительно в защищен-
ном режиме
1
, реализованном в процессорах фирмы Intel. В защищенном режиме
только программный код, исполняющийся в нулевом кольце защиты, имеет не-
посредственный доступ к аппаратным ресурсам компьютера — памяти и устрой-
ствам ввода-вывода. Пользовательские и системные обрабатывающие программы
работают в третьем кольце защиты. Они обращаются к аппаратным ресурсам ком-
пьютера исключительно через системные подпрограммы, функционирующие в
нулевом кольце защиты. Таким образом, пользовательским программам предо-
ставляются только те услуги, которые реализованы разработчиками операцион-
ной системы. При этом системные подпрограммы обеспечивают выполнение только
тех функций, которые безопасны с точки зрения операционной системы.
Как и в классических UNIX-системах, Linux имеет макроядро, которое содержит
уже известные нам три подсистемы. Ядро обеспечивает выделение каждому про-
цессу отдельного адресного пространства, так что процесс не имеет возможности
непосредственного доступа к данным других процессов и ядра операционной сис-
темы. Тем более что сегмент кода, сегмент данных и стек ядра располагаются в
нулевом кольце защиты. Для обращения к физическим устройствам компьютера
ядро вызывает соответствующие драйверы, управляющие аппаратурой компьюте-
ра. Поскольку драйверы функционируют в составе ядра, их код будет выполнять-
ся в нулевом (привилегированном) кольце защиты, и они могут получить прямой
доступ к аппаратным ресурсам компьютера.
В отличие от старых версий UNIX, в которых задачи выгружались во внешнюю
память на магнитных дисках целиком, ядро Linux использует аппаратную поддерж-
ку процессорами страничного механизма организации виртуальной памяти. Поэто-
му в Linux замещаются отдельные страницы. То есть с диска в память загружаются
те виртуальные страницы образа, которые сейчас реально требуются, а неиспользу-
емые страницы выгружаются на диск в файл подкачки. Возможно разделение стра-
ниц кода, то есть использование одной страницы, физически уже один раз загру-
женной в память, несколькими процессами. Другими словами, реентерабельность
кода, присущая всем UNIX-системам, осталась. В настоящее время имеются ядра
для этой системы, оптимизированные для работы с процессорами Intel и AMU
1
Напомним, что только в этом режиме процессоры с архитектурой ia32 используют 32-разрядную
адресацию и имеют доступ ко всей оперативной памяти.