Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ostatok_lektsy_3_kurs_OSSiO.doc
Скачиваний:
4
Добавлен:
18.09.2019
Размер:
801.28 Кб
Скачать

Семейства unix

(***слайд 46) Все UNIX-системы можно отнести либо к гнезду USG (это прямые наследники творения Bell Labs: Linux, UnixWare, SCO Open Server, HPUX, AIX, Solaris,), либо к гнезду BSD (все системы, название которых включает BSD, ядро Mac OS (Darwin), Tru64 и некоторые другие).

Следует понимать, что Linux - название даже не операционной системы, а одного только ядра. Ядро это, ориентированное первоначально на процессор i386, написал в одиночку Линус Торвальдс (Linus Torvalds), желая создать на этом компьютере среду выполнения UNIX, аналогичную коммерческим версиям. Тогда, в самом начале 90-х, UNIX-подобные системы для i386 были неполными и довольно нелепыми, а кроме того, исходные тексты этих систем не были доступны. Все остальное в Linux-системе - программы, написанные программистами со всего мира и собранные (после тщательной доработки напильником) в единое целое.

Из всей UNIX-истории нам важны два факта. Во-первых, UNIX создавался для того, чтобы на нем работать, а не для того, чтобы им потом торговать, т. е. для себя. А когда им додумались торговать, уже ничего испортить, перекроив удобство в привлекательность, было нельзя. Образ мысли авторов UNIX породил особую идеологию и принципы системы. Именно попытка формализовать и обосновать эти принципы и привела к понятию "проективной системы".

Структура unix

Рассмотрим теперь вкратце общее устройство UNIX как ОС (*** слайд 47).

Ядро

Центром ОС является, как было сказано раньше, менеджер ресурсов и планировщик задач. Функции этих частей системы востребованы, пока есть хоть одна задача (т. е. всегда), и к тому же они работают в режиме супервизора. В UNIX они составляют ядро системы (kernel). Ядро постоянно находится в памяти, обслуживая непрерывный поток запросов на использование универсальных ресурсов системы: памяти и времени. В ядро UNIX, кроме того, входит реализация сетевых протоколов. Ядро UNIX предоставляет программам пользователя унифицированный интерфейс к ресурсам компьютера (так называемые системные вызовы, system calls) и содержит всю непростую логику распределения ресурсов по задачам, которые в UNIX называются процессами.

На самом деле далеко не все, что работает в режиме ядра (супервизора), обязано присутствовать в конкретной системе, запущенной на конкретном компьютере. Функции, отвечающие за работу с разнообразными внешними устройствами (которые отличаются логикой работы), бессмысленно включать в ядро все сразу. Отдельно взятый компьютер не содержит и сотой части всех устройств, которые поддерживает система.

Программные драйверы включаются в состав ядра в том случае, если соответствующие им устройства входят (или будут входить) в состав компьютера. Одни драйверы (скажем, шины PCI) есть в системе почти всегда, другие написаны специально для контроллера какого-нибудь экзотического устройства. Существуют драйверы, которые не являются интерфейсной частью внешнего устройства, а реализуют дополнительную функциональность самой системы (скажем, драйвер файловой системы ISO-9660, которая используется на лазерных дисках).

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

Если базового ядра все-таки недостаточно, то в современных системах многие драйверы можно загружать динамически, из дополнительных модулей и даже перекомпоновать ядро прямо на ходу! Т.к. модули ядра работают в привилегированном режиме, обращаться с ними следует крайне осторожно: ошибка в таком модуле (скажем, запись неизвестно чего неизвестно куда в память) может быть фатальной и даже, вызвать крах системы.

Итак, ядро и его дополнительные модули работают в привилегированном режиме, а все остальные части UNIX запускаются уже как процессы в режиме пользователя. Хотя, очень тесно с ядром взаимодействует функциональная подсистема (службы), т.е. наборы программных средств, выполняющих определенную функцию (например, система печати, система передачи почты и т. д.). Управляющий центр функциональной подсистемы - это так называемый демон (daemon, в переводах с греческого называемый "даймон"). Демон - это процесс, который запускается при старте UNIX для обслуживания запросов к функциональной подсистеме, т.е. выполняет роль посредника. Пользователю запускать его незачем, он работает всегда. Именно демон обменивается данными с ядром системы, часто он держит очередь пользовательских запросов, работает с сетью и выполняет некоторые другие задачи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]