| |
Ядро 4.4BSD предоставляет четыре основных системных сервиса: процессы, файловую систему, коммуникации и запуск системы. Этот раздел перечисляет, в каком месте этой книги описана каждая из этих служб.
Процессы образуют поток управления в адресном пространстве. Механизмы создания, завершения и другие управляющие процессы описаны в Главе 4. Для каждого процесса система мультиплексирует отдельное виртуальное адресное пространство; такое управление памятью обсуждается в Главе 5.
Механизм доступа пользователя к файловой системе и устройствам один и тот же; общие аспекты обсуждаются в Главе 6. Файловая система является набором именованных файлов, организованных в древовидную иерархию каталогов, а операции по управлению ими представлены в Главе 7. Файлы располагаются на таких физических носителях, как диски. 4.4BSD поддерживает несколько типов организации данных на диске, как описано далее в Главе 8. Доступ к файлам на удаленных машинах является предметом обсуждения в Главе 9. Для доступа к системе Терминалы используются терминалы; их функционированию посвящена глава 10.
Механизмы коммуникаций, предоставляемые традиционными UNIX-системами, включают однонаправленные потоки байтов между связанными процессами (смотрите материал о конвейерах в Разделе 11.1) и извещение об исключительных событиях (смотрите материал о сигналах в Разделе 4.7). В 4.4BSD имеется также механизм межпроцессного взаимодействия между процессами. Этот механизм, описываемый в Главе 11, использует способы доступа, отличающиеся от тех, что используются в файловой системе, но, как только соединение установлено, процесс может работать с ним, как будто это конвейер. Имеется и механизм работы с сетью, описываемый в Главе 12, который обычно используется как слой ниже механизма IPC. В Главе 13 дается детальное описание конкретной реализации механизма работы с сетью.
В любой операционной системе присутствуют вопросы управления, такие, как ее запуск. Запуск и вопросы управления обсуждаются в Главе 14.
Разделы с 2.3 по 2.14 представляют собой вводный материал, относящийся к главам с 3 по 14. Мы определим понятия, коснемся основных системных вызовов и рассмотрим исторические разработки. Наконец, мы расскажем о причинах многих ключевых архитектурных решений.
Ядро является частью системы, которая работает в защищенном режиме и управляет доступом всех пользовательских программ к низкоуровнему аппаратному обеспечению (к примеру, ЦПУ, дискам, терминалам, сетевым связям) и программным компонентам (к примеру, файловой системе, сетевым протоколам). Ядро предоставляет основные системные услуги; оно создает процессы и управляет ими, предоставляет функции для доступа к файловой системе и службам связи. Такие функции, называемые системными вызовами, доступны процессам пользователей в виде библиотечных подпрограмм. Эти системные вызовы являются единственным способом доступа к таким услугам. Подробно механизм работы системных вызовов дается в Главе 3, вместе с описанием некоторых механизмов ядра, работа которых не является прямым результатом процесса, выполняющего системный вызов.
Ядро, по традиционной терминологии операционных систем, является маленьким куском программного обеспечения, которое предоставляет только минимальный набор услуг, необходимый для реализации дополнительных служб операционной системы. В современных исследовательских операционных системах -- таких, как Chorus Rozier et al, 1988, Mach Accetta et al, 1986, Tunis Ewens et al, 1985, и V Kernel Cheriton, 1988 -- такое разделение функциональности выполнено не только логически. Такие службы, как файловые системы и сетевые протоколы, выполнены в виде прикладных процессов клиентов ядра или микроядра.
Ядро 4.4BSD не разбивается на несколько процессов. Это основополагающее архитектурное решение было сделано в самых ранних версиях UNIX. В первых двух реализациях Кена Томпсона (Ken Thompson) не было отображаемой памяти, и поэтому не было аппаратного различия между адресным пространством пользователя и ядра Ritchie, 1988. Могла бы быть придумана система обмена сообщениями как реально реализуемая модель процессов ядра и пользователя. Для простоты и увеличения производительности было выбрано монолитное ядро. К тому же ранние ядра были маленькими; включение таких служб, как сетевые коммуникации, в ядро увеличило его размер. Современные тенденции в области операционных систем сводятся к уменьшению размера ядра за счет перевода таких служб в пользовательское адресное пространство.
Пользователи обычно общаются с системой через интерпретатор языка команд, называемый оболочкой (shell), и, может быть, через дополнительные прикладные пользовательские программы. Такие программы и оболочка реализованы в виде процессов. Подробное описание таких программ выходит за рамки этой книги, которая практически полностью посвящена работе ядра.
В разделах 2.3 и 2.4 описываются сервисы, предоставляемые ядром 4.4BSD, и дается обзор их архитектуры. Последующие главы описывают подробности архитектуры и реализации этих сервисов в 4.4BSD.
[Accetta et al, 1986] "Mach: A New Kernel Foundation for UNIX Development"", M. Accetta, R. Baron, W. Bolosky, D. Golub, R. Rashid, A. Tevanian, and M. Young, 93-113, USENIX Association Conference Proceedings, USENIX Association, June 1986.
[Ewens et al, 1985] "Tunis: A Distributed Multiprocessor Operating System", P. Ewens, D. R. Blythe, M. Funkenhauser, and R. C. Holt, 247-254, USENIX Assocation Conference Proceedings, USENIX Association, June 1985.
[Gingell et al, 1987] "Virtual Memory Architecture in SunOS", R. Gingell, J. Moran, and W. Shannon, 81-94, USENIX Association Conference Proceedings, USENIX Association, June 1987.
[Kernighan & Pike, 1984] The UNIX Programming Environment, B. W. Kernighan and R. Pike, Prentice-Hall, Englewood Cliffs, 1984.
[Macklem, 1994] The 4.4BSD NFS Implementation, R. Macklem, 6:1-14, 4.4BSD System Manager's Manual, O'Reilly & Associates, Inc., Sebastopol, 1994.
[McKusick & Karels, 1988] "Design of a General Purpose Memory Allocator for the 4.3BSD UNIX Kernel", M. K. McKusick and M. J. Karels, 295-304, USENIX Assocation Conference Proceedings, USENIX Assocation, June 1998.
[McKusick et al, 1994] Berkeley Software Architecture Manual, 4.4BSD Edition, M. K. McKusick, M. J. Karels, S. J. Leffler, W. N. Joy, and R. S. Faber, 5:1-42, 4.4BSD Programmer's Supplementary Documents, O'Reilly & Associates, Inc., Sebastopol, 1994.
[Rosenblum & Ousterhout, 1992] "The Design and Implementation of a Log-Structured File System", M. Rosenblum and K. Ousterhout, 26-52, ACM Transactions on Computer Systems, 10, 1, Association for Computing Machinery, February 1992.
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |