Введение
В данной курсовой работе дается общийобзор операционной системы UNIX. Преждевсего, рассматривается история системы, а также причины ее популярности внастоящее время.
Все пользователи ОС UNIX так илииначе наверняка работают с файлами. В данной работе рассматривается древовиднаяфайловая структура UNIX.
Затем следует описание структуры ядраданной операционной системы, модели безопасности, вводятся понятиядиспетчеризации, прерываний, системного времени (таймера), кеша, а такжерассматривается проблема построения многопроцессорных систем.
Операционная система UNIX — этомногопользовательская система с разделением времени. Сеанс в этой системевсегда начинается с авторизации. Причем, это правило универсально и не зависитот того, где именно (к примеру, на рабочей станции / интернет — сервере)запускается версия UNIX. В этоми заключается одно из ключевых отличий UNIX от других операционных систем. Одно из, но неединственное. UNIX находитсяна вершине самых популярных в мире операционных систем благодаря тому, что еесопровождает и распространяет большое число компаний. Существуют версии UNIXдля многих систем, начиная от персонального компьютера, до суперкомпьютеров,таких как Cray Y-MP.
Цель курсовой работы состоит в изученииобщей структуры системы, выделении и развитии ее ключевых особенностей исвойств, понимание которых позволит сложить комплексное впечатление о системе UNIX.
Задачи:- раскрыть понятие операционной системы, еефункции и отличия от других;
— рассмотреть архитектуру ядрасистемы; — ознакомитьсяс классической моделью безопасности UNIX и UNIX – like ОС;
— рассмотретьтехнические особенности построения многопроцессорных систем на базе рассматриваемойсистемы;
Определение
UNIX (читается ю́никс) —семейство переносимых, многозадачных и многопользовательских операционных систем.
История
Система Multics. В 1965году компания Bell Telephone Laboratories, объединив собственные труды с фирмойGeneral Electric и проектом MAC Массачусетского научно-технического ВУЗа,обратилась к исследованию новейшей операционной системы, получившей имяMultics. Перед системой Multics были поставлены разнообразные цели, средикоторых — обеспечить одновременный доступ к ресурсам ЭВМ множествапользователей, обеспечить необходимую скорость вычислений и хранение данных идать возможность пользователям при необходимости коллективно использоватьданные. Многие создатели, позднее участвовавшие в разработке ранних версийсистемы UNIX, приняли участие в работе над системой Multics в организации BellLaboratories. В попытке усовершенствовать средупрограммирования, Кен Томпсон, Дэннис Риччи и некоторые другие сотрудникиИсследовательского центра по информатике создали на бумаге проект файловойсистемы, который позднее получил развитие в ранних версиях UNIX.
Позднее, Томпсонполучил доступ к малоиспользуемой машине под названием PDP– 7, что позволило ему изучить ее и выполнить свой проект системы, включавший всебя начальную версию файловой системы, систему обеспечения управленияпроцессами и скудный набор утилит. Новая система получила название UNIX(аналогия с Multics). Придумал это названиееще один сотрудник Исследовательского центра – Брайн Керниган.
Для работы в реальномпроекте (обработка текстов) в 1971 году система была перенесена на машину PDP– 11.
В 1973 году система была переписана сиспользованием языка С, имеющего возможность генерировать машинный код,объявлять типы о определять структуру данных. Популярность системы быстро рослаи уже к 1977 году количество машин, работавших под ее управлением, приближалоськ 500.
UNIXоказалась простой и понятной для большинства разработчиков, благодаря чемуначали развиваться самостоятельные направления системы. В течение 1977 – 82годов фирма Bell Lab.,объединив несколько наиболее удачных вариантов, выпустила UNIX версии 3. С 1983 года начала распространяться версия5.
Причины популярности системы UNIX
Популярность и востребованностьсистемы во многом объясняются следующими особенностями:
· Системанаписана на языке высокого уровня, благодаря чему ее легко читать, понимать,изменять и переносить на другие машины. Первый вариант системы на Си имел на20-40 % больший объем и работал медленнее по сравнению с вариантом наассемблере, однако преимущества использования языка высокого уровня намногоперевешивают недостатки.
· Наличиедовольно простого пользовательского интерфейса, в котором имеется возможностьпредоставлять все необходимые пользователю услуги.
· Наличиеэлементарных средств, позволяющих создавать сложные программы из более простых.
· Наличиеиерархической файловой системы, легкой в сопровождении и эффективной в работе.
· Обеспечениесогласования форматов в файлах, работа с последовательным потоком байтов,благодаря чему облегчается чтение прикладных программ.
· Наличиепростого, последовательного интерфейса с периферийными устройствами.
· Системаявляется многопользовательской, многозадачной; каждый пользователь можетодновременно выполнять несколько процессов.
Последовательность и простота вообщеявлялись и являются характерными для систем UNIX и UNIX – like.
Структура системы
Система UNIX не монолитна. Операционная система взаимодействует саппаратурой непосредственно, обеспечивая обслуживание программ и ихнезависимость от деталей аппаратной конфигурации. Если представить системусостоящей из пластов, в ней можно выделить системное ядро, изолированное отпользовательских программ. Поскольку прикладные программы не зависят отаппаратного устройства исполняющей их машины, то они могут быть перенесены изодной системы в другую (учитывая, что в этих программах не предусмотрена работас некоторым точно определенным оборудованием).
Программы, подобные командномупроцессору shell, взаимодействуют с ядром при помощи хорошо определенногонабора обращений к операционной системе. Обращения к операционной системепонуждают ядро к выполнению различных операций, которых требует вызывающая программа,и обеспечивают обмен данными между ядром и программой. Другие прикладныепрограммы располагаются выше указанных программ, на верхнем уровне.
Многие прикладные программы,редакторы, программные пакеты и т.п. со временем становятся синонимичны понятию“система UNIX”.Однако, следует иметь ввиду, что все они пользуются ресурсами программ нижнегоуровня и, в конечном счете, ядра. Т.е. в каноническом, наиболее правильномварианте понимания, к словам “система UNIX” относится именно ядро.
Первоначальная загрузка
Для того, чтобы перевести систему изнеактивное состояние в активное, администратор выполняет процедуру«начальной загрузки». На разных машинах эта процедура имеет своиособенности, однако во всех случаях она реализует одну и ту же цель: загрузить копиюоперационной системы в основную память машины и запустить ее на исполнение.
В системе UNIX процедура начальнойзагрузки заканчивается считыванием с диска в память блока начальной загрузки(нулевого блока). Программа, содержащаяся в этом блоке, загружает из файловойсистемы ядро ОС (например, из файла с именем "/unix" или с другимименем, указанным администратором). После загрузки ядра системы в память, ядрозапускается на выполнение.
Файловая система UNIX
Рассмотрим ключевые особенностиданной системы, в первую очередь полезные для общего понимания UNIX/
Итак, файлы характеризуются:
· Иерархическойструктурой,
· согласованнойобработкой массивов данных,
· возможностьюсоздания и удаления файлов,
· динамическимрасширением файлов,
· защитойинформации в файлах,
· трактовкойпериферийных устройств как файлов.
Файловая системапредставляет собой дерево, с единственной основой – корнем (root),обозначающимся как “/”.
Каждая вершина в древовиднойструктуре файловой системы, кроме листьев, является каталогом файлов, а файлы,соответствующие дочерним вершинам, являются либо каталогами, либо обычнымифайлами, либо файлами устройств.
Каталоги похожи на обычные файлы втом смысле, что система представляет информацию в каталоге набором байтов, ноэта информация включает в себя имена файлов в каталоге в объявленном формате.
Права доступа
Права доступа определяются установкойтрех остальных флагов (битов разрешения) на файлах для 3 – х действий: чтение,запись, выполнение. (rwe)Делается эта установка для 3 – х разных случаев: для владельца файла, дляобщего пользования и для прочих случаев.
Устройства
Для пользователя система UNIXтрактует устройства так, как если бы они были файлами. Устройства, для которыхназначены специальные файлы устройств, становятся вершинами в структурефайловой системы. Обращение программ к устройствам имеет тот же самыйсинтаксис, что и обращение к обычным файлам; семантика операций чтения и записипо отношению к устройствам в большой степени совпадает с семантикой операцийчтения и записи обычных файлов. Способ защиты устройств совпадает со способомзащиты обычных файлов.
Процессы
Программой называется исполняемыйфайл, а процессом называется последовательность операций программы или частьпрограммы при ее выполнении. В системе UNIX может одновременно выполнятьсямножество процессов (эту особенность иногда называют мультипрограммированиемили многозадачным режимом), при чем их число логически не ограничивается, имножество частей программы (такой как copy) может одновременно находиться всистеме. Различные системные операции позволяют процессам порождать новыепроцессы, завершают процессы, синхронизируют выполнение этапов процесса иуправляют реакцией на наступление различных событий. Благодаря различнымобращениям к операционной системе, процессы выполняются независимо друг отдруга.
Возможныйнабор состояний процесса содержится в следующем перечне:
1. Процессвыполняется в режиме задачи.
2. Процессвыполняется в режиме ядра.
3. Процессне выполняется, но готов к запуску под управлением ядра.
4. Процессприостановлен и находится в оперативной памяти.
5. Процессготов к запуску, но программа подкачки (нулевой процесс) должна еще загрузитьпроцесс в оперативную память, прежде чем он будет запущен под управлением ядра.
6. Процессприостановлен и программа подкачки выгрузила его во внешнюю память, чтобы воперативной памяти освободить место для других процессов.
7. Процессвозвращен из привилегированного режима (режима ядра) в непривилегированный(режим задачи), ядро резервирует его и переключает контекст на другой процесс.
8. Процессвновь создан и находится в переходном состоянии; процесс существует, но неготов к выполнению, хотя и не приостановлен. Это состояние является начальнымсостоянием всех процессов, кроме нулевого.
9. Процессвызывает системную функцию exit и прекращает существование. Однако, после негоосталась запись, содержащая код выхода, и некоторая хронометрическаястатистика, собираемая родительским процессом. Это состояние является последнимсостоянием процесса.
Диспетчеризацияпроцессов в системе UNIX
В системе разделения времени ядропредоставляет процессу ресурсы центрального процессора (ЦП) на интервалвремени, называемый квантом, по истечении которого выгружает этот процесс изапускает другой, периодически переупорядочивая очередь процессов. Алгоритмпланирования процессов в системе UNIX использует время выполнения в качествепараметра. Каждый активный процесс имеет приоритет планирования; ядропереключает контекст на процесс с наивысшим приоритетом. При переходе выполняющегосяпроцесса из режима ядра в режим задачи ядро пересчитывает его приоритет,периодически и в режиме задачи переустанавливая приоритет каждого процесса,готового к выполнению.
То есть, в соответствии с этимпринципом ядро предоставляет процессу ресурсы ЦП на квант времени, по истечениикоторого выгружает этот процесс и возвращает его в одну из нескольких очередей,регулируемых приоритетами. Прежде чем процесс завершится, ему можетпотребоваться множество раз пройти через цикл с обратной связью. Когда ядровыполняет переключение контекста и восстанавливает контекст процесса, процессвозобновляет выполнение с точки приостановки.
Общий алгоритм диспетчеризации
разу после переключения контекстаядро запускает алгоритм планирования выполнения процессов, выбирая навыполнение процесс с наивысшим приоритетом среди процессов, находящихся всостояниях «резервирования» и «готовности к выполнению, будучизагруженным в память». Рассматривать процессы, не загруженные в память, неимеет смысла, поскольку не будучи загружен, процесс не может выполняться. Еслинаивысший приоритет имеют сразу несколько процессов, ядро, используя принципкольцевого списка (карусели), выбирает среди них тот процесс, который находитсяв состоянии «готовности к выполнению» дольше остальных. Если ни одиниз процессов не может быть выбран для выполнения, ЦП простаивает до моментаполучения следующего прерывания, которое произойдет не позже чем через одинтаймерный тик; после обработки этого прерывания ядро снова запустит алгоритмпланирования.
Системные часы / таймер
В функциипрограммы обработки прерываний по таймеру входит:
· перезапускчасов
· вызовна исполнение функций ядра, использующих встроенные часы
· поддержкавозможности профилирования выполнения процессов в режимах ядра и задачи
· сборстатистики о системе и протекающих в ней процессах
· слежениеза временем
· посылкапроцессам сигналов «будильника» по запросу
· периодическоевозобновление процесса подкачки
· управлениедиспетчеризацией процессов
Некоторые изфункций реализуются при каждом прерывании по таймеру, другие — по прошествиинескольких таймерных тиков.
Программаобработки прерываний по таймеру запускается с высоким приоритетом обращения кпроцессору, не допуская во время работы возникновения других внешних событий(таких как прерывания от периферийных устройств). Поэтому программа обработкипрерываний по таймеру работает очень быстро, за максимально-короткое времяпробегая свои критические отрезки, которые должны выполняться без прерываний состороны других процессов.
Функции операционной системы
Данные функции довольно очевидны.Среди них:
· Управлениевыполнением процессов посредством их создания, завершения или приостановки иорганизации взаимодействия между ними.
· Планированиеочередности предоставления выполняющимся процессам времени центральногопроцессора (диспетчеризация). Процессы работают с центральным процессором врежиме разделения времени: центральный процессор выполняет процесс, по завершенииотсчитываемого ядром кванта времени процесс приостанавливается и ядроактивизирует выполнение другого процесса. Позднее ядро запускаетприостановленный процесс.
· Выделениевыполняемому процессу оперативной памяти. Ядро операционной системы даетпроцессам возможность совместно использовать участки адресного пространства наопределенных условиях, защищая при этом адресное пространство, выделенноепроцессу, от вмешательства извне. Если системе требуется свободная память, ядроосвобождает память, временно выгружая процесс на внешние запоминающиеустройства, которые называют устройствами выгрузки.
· Выделениевнешней памяти с целью обеспечения эффективного хранения информации и выборкаданных пользователя. Именно в процессе реализации этой функции создаетсяфайловая система. Ядро выделяет внешнюю память под пользовательские файлы,мобилизует неиспользуемую память, структурирует файловую систему в форме,доступной для понимания, и защищает пользовательские файлы отнесанкционированного доступа.
Прерывания и особыеситуации:
Система UNIX позволяет такимустройства, как внешние устройства ввода-вывода и системные часы, асинхроннопрерывать работу центрального процессора. По получении сигнала прерывания ядрооперационной системы сохраняет свой текущий контекст (застывший образвыполняемого процесса), устанавливает причину прерывания и обрабатываетпрерывание. После того, как прерывание будет обработано ядром, прерванныйконтекст восстановится и работа продолжится так, как будто ничего не случилось.Устройствам обычно приписываются приоритеты в соответствии с очередностью обработкипрерываний. В процессе обработки прерываний ядро учитывает их приоритеты иблокирует обслуживание прерывания с низким приоритетом на время обработкипрерывания с более высоким приоритетом.
Особые ситуации связаны свозникновением незапланированных событий, вызванных процессом, таких какнедопустимая адресация, задание привилегированных команд, деление на ноль ит.д.
Различают некоторое количествоуровней прерывания. Их можно перечислить как (от высшего к низшему):
è Машинные сбои
è Системные часы
è Диск
è Сетевое оборудование
è Терминалы
è Программное прерывание
Установка уровня прерывания наопределенное значение отсекает прерывания этого и более низких уровней,разрешая обработку только прерываний с более высоким приоритетом.
архитектура операционнаямногопроцессорный ядро
Архитектура ядра UNIX
Я буду рассматривать ядро системы какнекоторую модель. Файловая подсистема и подсистема управления процессами, двеглавные компоненты ядра. Файловая подсистема управляет файлами, размещаетзаписи файлов, управляет свободным пространством, доступом к файлам и поискомданных для пользователей. Процессы взаимодействуют с подсистемой управленияфайлами, используя при этом совокупность специальных обращений к операционнойсистеме, таких как open (для того, чтобы открыть файл на чтение илизапись),close, read, write, stat (запросить атрибуты файла), chown (изменитьзапись с информацией о владельце файла) и chmod (изменить права доступа кфайлу).
Подсистема управления файламиобращается к данным, которые хранятся в файле, используя буферный механизм,управляющий потоком данных между ядром и устройствами внешней памяти. Буферныймеханизм, взаимодействуя с драйверами устройств ввода-вывода блоками,инициирует передачу данных к ядру и обратно.
Данныев ядре и их структура
Большинство информационных структурядра размещается в таблицах фиксированного размера, а не в динамическивыделенной памяти. Простота алгоритмов ядра представляется более важной, чемсжатие последних байтов оперативной памяти. Обычно в алгоритмах для поискасвободных мест в таблицах используются несложные циклы и этот метод болеепонятен и иногда более эффективен по сравнению с более сложными схемамивыделения памяти.
Структура процессов: управляющие ипользовательские.
Ядро системы не выделяет управляющиепроцессы в отдельный класс. К управляющим процессам, грубо говоря, относятся тепроцессы, которые выполняют различные функции по обеспечению благополучнойработы пользователей системы. К таким функциям относятся форматирование дисков,создание новых файловых систем, восстановление разрушенных файловых систем,отладка ядра и др. С концептуальной точки зрения, между управляющими ипользовательскими процессами нет разницы. Они используют один и тот же наборобращений к операционной системе, доступный для всех. Управляющие процессыотличаются от обычных пользовательских процессов только правами и привилегиями,которыми они обладают.
Сверхоперативная память или КЕШ
Ядро операционной системыподдерживает файлы на внешних запоминающих устройствах большой емкости, такихкак диски, и позволяет процессам сохранять новую информацию или вызывать ранеесохраненную информацию. Если процессу необходимо обратиться к информации файла,ядро выбирает информацию в оперативную память, где процесс сможет просматриватьэту информацию, изменять ее и обращаться с просьбой о ее повторном сохранении вфайловой системе.
Ядро могло бы производить чтение изапись непосредственно с диска и на диск при всех обращениях к файловойсистеме, однако время реакции системы и производительность при этом были бынизкими из-за низкой скорости передачи данных с диска. По этой причине ядростарается свести к минимуму частоту обращений к диску, заведя специальнуюобласть внутренних информационных буферов, именуемую буферным кешем ихранящую содержимое блоков диска, к которым перед этим производились обращения.
Перед чтением информации с диска ядропытается считать что-нибудь из буфера кеша. Если в этом буфере отсутствуетинформация, ядро читает данные с диска и заносит их в буфер, используя алгоритм,который имеет целью поместить в буфере как можно больше необходимых данных.Аналогично, информация, записываемая на диск, заносится в буфер для того, чтобынаходиться там, если ядро позднее попытается считать ее. Ядро также стараетсясвести к минимуму частоту выполнения операций записи на диск.
Плюсы и минусы КЕШ
+
Использование буферов позволяетвнести единообразие в процедуру обращения к диску, поскольку ядру нетнеобходимости знать причину ввода-вывода, что упрощает проектирование системы.
Благодаря использованию буферногокеша, сокращается объем дискового трафика и время реакции и повышается общаяпроизводительность системы.
-
Так как ядро в случае отложеннойзаписи не переписывает данные на диск немедленно, такая система уязвима длясбоев, которые оставляют дисковые данные в некорректном виде. Пользователь,запрашивающий выполнение операции записи, никогда не знает, в какой моментданные завершат свой путь на диск.
Использование буферного кеша требуетдополнительного копирования.
При передаче большого количестваданных дополнительное копирование отрицательным образом отражается напроизводительности системы, однако при передаче небольших объемов данныхпроизводительность повышается.
Представление файловвнутри системы
Систематизируя прошлую информацию,хочу отметить, что каждый файл в системе UNIX имеет уникальный индекс. Индекссодержит информацию, необходимую любому процессу для того, чтобы обратиться кфайлу, например, права собственности на файл, права доступа к файлу, размерфайла и расположение данных файла в файловой системе. Процессы обращаются кфайлам, используя четко определенный набор системных вызовов.
У индексов можно выделить следующиеполя:
-Идентификаторвладельца файла. Права собственности разделены между индивидуальным владельцеми «групповым» и тем самым помогают определить круг пользователей,имеющих права доступа к файлу. Суперпользователь имеет право доступа ко всемфайлам в системе.
-Тип файла. Файл можетбыть файлом обычного типа, каталогом, специальным файлом,
-Права доступа к файлу. Системаразграничивает права доступа к файлу для трех классов пользователей:индивидуального владельца файла, группового владельца и прочих пользователей
-Таблица адресов на диске, в которыхрасполагается информация файла.
-Размер файла
К примеру:
владелецsergey
группаtest
тип- обычный файл
правадоступа rwxr-wxr-x
последнееобращение 02 Сен 2009 13:45
последнееизменение 15 Сен 2009 10:30
коррекцияиндекса 23 Сен 2009 13:30
размер70030 байт
Модель безопасности UNIX
По сути, якосвенно касался данной модели в прошлых разделах, преимущественно при описаниифайловой системы.
Модельбезопасности UNIX довольно проста. В основе её лежит дискреционный механизм доступа — каждый объект в системеимеет владельца, который и устанавливает права доступа к объекту. Самипользователи в системе фигурируют в виде процессов — программ, запущенных от ихимени. Так как в операционной системе UNIX даже устройства представляются ввиде файлов, достаточно для каждого из них хранить владельца и права на использованиеэтого файла другими пользователями системы.
Но воперационной системе могут работать тысячи пользователей (а такая ситуациявстречается и сейчас — на мэйнфреймах и других больших машинах). При этомсписки доступа (ACL, Access Control List) для каждого файла разрастутся догигантских размеров. Частично эту проблему решает добавление групппользователей, но ведь их число тоже может быть очень большим.Создатели UNIX придумали более элегантное решение: для каждого файла задаютсятри группы прав — права владельца, права группывладельца и права для всехостальных. Таким образом, все права на файл занимают лишь несколькобайт.
В UNIXсуществует три основных права доступа: чтение, запись и исполнение. Если правачтения и записи очевидны и понятны, то право исполнения трактуется по-разномудля разных типов файлов. Для простых файлов оно определяет возможность запуска содержащейся в нём программы. В UNIXисполняемые файлы могут иметь не только любое расширение (часто они вообще неимеют в имени символа точки), но и содержимое — это может бытьоткомпилированная для данной архитектуры программа или скрипт на любом изподдерживаемых языков программирования. А вот для директории право исполненияозначает возможность «войти» в неё.
Помимо комбинации из этих девяти прав доступа, каждый файлможет иметь дополнительные флаги доступа: sticky-бит, специфичный длядиректорий, и suid-бит, применяемый для исполняемых файлов. Если пометитьдиректорию sticky-битом, удалять файл в ней смогут только владельцы, а не всете, кто имеют права записи на эту директорию — это необходимо в «общихдиректориях», где создавать и удалять файлы может любой. Suid-бит — большая головная боль системных администраторов, он нужен для повышения правпрограммы на время запуска.
Распределение основной (оперативной)памяти
Алгоритмпланирования использования процессорного времени в сильной степени зависит отвыбранной стратегии управления памятью. Процесс может выполняться, если он хотябы частично присутствует в основной памяти; ЦП не может исполнять процесс,полностью выгруженный во внешнюю память. Тем не менее, основная память — чересчур дефицитный ресурс, который зачастую не может вместить все активныепроцессы в системе. Если, например, в системе имеется основная память объемом 8Мбайт, то девять процессов размером по 1 Мбайту каждый уже не смогут в нейодновременно помещаться. Какие процессы в таком случае следует размещать впамяти (хотя бы частично), а какие нет, решает подсистема управления памятью,она же управляет участками виртуального адресного пространства процесса, нерезидентными в памяти. Она следит за объемом доступного пространства основнойпамяти и имеет право периодически переписывать процессы на устройство внешнейпамяти, именуемое устройством выгрузки, освобождая в основной памятидополнительное место. Позднее ядро может вновь поместить данные с устройствавыгрузки в основную память.
В раннихверсиях системы UNIX процессы переносились между основной памятью и устройствомвыгрузки целиком и, за исключением разделяемой области команд, отдельныенезависимые части процесса не могли быть объектами перемещения. Такая стратегияуправления памятью называется свопингом (подкачкой). Такую стратегию имелосмысл реализовывать на машине типа PDP-11, где максимальный размер процессасоставлял 64 Кбайта. При использовании этой стратегии размер проце иссаограничивается объемом физической памяти, доступной в системе.
Система BSD(версия 4.0) явилась главным полигоном для применения другой стратегии,стратегии «подкачки по обращению» (demand paging), в соответствии скоторой основная память обменивается с внешней не процессами, а страницамипамяти; эта стратегия поддерживается и в последних редакциях версии V системыUNIX. Держать в основной памяти весь выполняемый процесс нет необходимости, и ядрозагружает в память только отдельные страницы по запросу выполняющегосяпроцесса, ссылающегося на них.
Преимуществостратегии подкачки по обращению состоит в том, что благодаря ей отображениевиртуального адресного пространства процесса на физическую память машиныстановится более гибким: допускается превышение размером процесса объемадоступной физической памяти и одновременное размещение в основной памятибольшего числа процессов. Преимущество стратегии свопинга состоит в простотереализации и облегчении «надстроечной» части системы.
Demand paging
В машинах собъемом физической памяти 1 и 2 Мбайта могут исполняться процессы размером 4или 5 Мбайт. Ограничение на виртуальный размер процесса, связанное с объемомадресуемой виртуальной памяти, остается в силе и здесь. Поскольку процесс можетне поместиться в физической памяти, ядру приходится динамически загружать впамять отдельные его части и исполнять их, несмотря на отсутствие остальныхчастей. В механизме подкачки страниц все открыто для пользовательских программ,за исключением разрешенного процессу виртуального размера.
Процессыстремятся исполнять команды небольшими порциями, которые именуются программнымициклами или подпрограммами.
Когда процесс обращается к странице, отсутствующей в егорабочем множестве, возникает ошибка, при обработке которой ядро корректируетрабочее множество процесса, в случае необходимости подкачивая страницы свнешнего устройства. По мере выполнения процесса его рабочеемножество видоизменяется в соответствии с используемыми процессом указателямистраниц; увеличение размера памяти влечет за собой увеличение рабочегомножества и, с другой стороны, сокращение числа ошибок в выполнении процесса.
Подсистемаввода/вывода
Подсистемауправления вводом-выводом позволяет процессам поддерживать связь спериферийными устройствами, такими как накопители на магнитных дисках,терминалы, принтеры и сети, с одной стороны, и с модулями ядра, которыеуправляют устройствами и именуются драйверами устройств, с другой. Междудрайверами устройств и типами устройств обычно существует однозначноесоответствие: в системе может быть один дисковый драйвер для управления всемидисководами, один терминальный драйвер для управления всеми терминалами и одинленточный драйвер для управления всеми ленточными накопителями. Если в системеимеются однотипные устройства, полученные от разных изготовителей — например,две марки ленточных накопителей, — в этом случае можно трактовать однотипныеустройства как устройства двух различных типов и иметь для них два отдельныхдрайвера, поскольку таким устройствам для выполнения одних и тех же операциймогут потребоваться разные последовательности команд. Один драйвер управляетмножеством физических устройств данного типа. Например, один терминальныйдрайвер может управлять всеми терминалами, подключенными к системе. Драйверразличает устройства, которыми управляет: выходные данные, предназначенные дляодного терминала, не должны быть посланы на другой.
Системаподдерживает «программные устройства», с каждым из которых не связанони одно конкретное физическое устройство. Например, как устройство трактуетсяфизическая память, чтобы позволить процессу обращаться к ней извне, пусть дажепамять не является периферийным устройством.
Два типаустройств
В системеUNIX имеется два типа устройств — устройства ввода/вывода блоками и устройстванеструктурированного или посимвольного ввода-вывода. Устройства ввода-выводаблоками, такие как диски, для остальной части системы выглядят как запоминающиеустройства с произвольной выборкой; к устройствам посимвольного ввода-выводаотносятся все другие устройства, в том числе терминалы и сетевое оборудование.Устройства ввода-вывода блоками могут иметь интерфейс и с устройствамипосимвольного ввода-вывода.
Пользовательвзаимодействует с устройствами через посредничество файловой системы. Каждоеустройство имеет имя, похожее на имя файла, и пользователь обращается к немукак к файлу. Специальный файл устройства имеет индекс и занимает место виерархии каталогов файловой системы. Файл устройства отличается от другихфайлов типом файла, хранящимся в его индексе, либо «блочный», либо«символьный специальный», в зависимости от устройства, которое этотфайл представляет. Если устройство имеет как блочный, так и символьный интерфейс,его представляют два файла: специальный файл устройства ввода-вывода блоками испециальный файл устройства посимвольного ввода-вывода. Системные функции дляобычных файлов, такие как open, close, read и write, имеют то же значение и дляустройств.
Многопроцессорные системы
В классической постановке для системыUNIX предполагается использование однопроцессорной архитектуры, состоящей изодного ЦП, памяти и периферийных устройств. Многопроцессорная архитектура,напротив, включает в себя два и более ЦП, совместно использующих общую память ипериферийные устройства, располагая большими возможностями в увеличениипроизводительности системы, связанными с одновременным исполнением процессов наразных ЦП. Каждый ЦП функционирует независимо от других, но все они работают содним и тем же ядром операционной системы. Поведение процессов в такой системеничем не отличается от поведения в однопроцессорной системе — с сохранениемсемантики обращения к каждой системной функции — но при этом они могут открытоперемещаться с одного процессора на другой. Хотя, к сожалению, это не приводитк снижению затрат процессорного времени, связанного с выполнением процесса.Отдельные многопроцессорные системы называются системами с присоединеннымипроцессорами, поскольку в них периферийные устройства доступны не для всехпроцессоров.
Проблемы многопроцессорных систем
Защита целостности структур данныхядра системы UNIX обеспечивается двумя способами: ядро не может выгрузить одинпроцесс и переключиться на контекст другого, если работа производится в режимеядра, кроме того, если при выполнении критического участка программы обработчиквозникающих прерываний может повредить структуры данных ядра, все возникающиепрерывания тщательно маскируются. В многопроцессорной системе, однако, если дваи более процессов выполняются одновременно в режиме ядра на разных процессорах,нарушение целостности ядра может произойти даже несмотря на принятие защитныхмер, с другой стороны, в однопроцессорной системе вполне достаточных.
Избежать этого можно при использованииодного из 3–х перечисленных способов:
1. Исполнятьвсе критические операции на одном процессоре, опираясь на стандартные методысохранения целостности данных в однопроцессорной системе;
2. Регламентироватьдоступ к критическим участкам программы, используя элементы блокированияресурсов;
3. Устранитьконкуренцию за использование структур данных путем соответствующей переделкиалгоритмов.
Систему с двумя процессорами, один изкоторых — главный (master) — может работать в режиме ядра, а другой — подчиненный (slave) — только в режиме задачи, впервые реализовал на машинахтипа VAX. Эта система, реализованная вначале на двух машинах, получила своедальнейшее развитие в системах с одним главным и несколькими подчиненнымипроцессорами. Главный процессор несет ответственность за обработку всехобращений к операционной системе и всех прерываний. Подчиненные процессорыведают выполнением процессов в режиме задачи и информируют главный процессор овсех производимых обращениях к системным функциям. Выбор процессора, на которомбудет выполняться данный процесс, производится в соответствии с алгоритмомдиспетчеризации.
Проблемадиспетчеризации в многопроцессорных системах
Единственнымместом, где целостность структур данных ядра еще подвергается опасности,является алгоритм диспетчеризации, поскольку он не предохраняет от выборапроцесса на выполнение сразу на двух процессорах. Например, если в конфигурацииимеется один главный процессор и два подчиненных, не исключена возможностьтого, что оба подчиненных процессора выберут для выполнения в режиме задачиодин и тот же процесс. Если оба процессора начнут выполнять его параллельно,осуществляя чтение и запись, это неизбежно приведет к искажению содержимогоадресного пространства процесса.
Избежатьвозникновения этой проблемы можно двумя способами. Во-первых, главный процессорможет явно указать, на каком из подчиненных процессоров следует выполнятьданный процесс. Если на каждый процессор направлять несколько процессов,возникает необходимость в сбалансировании нагрузки (на один из процессоровназначается большое количество процессов, в то время как другие процессорыпростаивают). Задача распределения нагрузки между процессорами ложится наглавное ядро. Во-вторых, ядро может проследить за тем, чтобы в каждый моментвремени в алгоритме диспетчеризации принимал участие только один процессор.
Семафоры
Семафор представляетсобой обрабатываемый ядром целочисленный объект, для которого определеныследующие элементарные (неделимые) операции:
· Инициализациясемафора, в результате которой семафору присваивается неотрицательное значение;
· Операция(P), уменьшающая значение семафора. Если значениесемафора опускается ниже нулевой отметки, выполняющий операцию процессприостанавливает свою работу;
· Операция(V), увеличивающая значение семафора. Если значениесемафора в результате операции становится больше или равно 0, один изпроцессов, приостановленных во время выполнения операции P, выходит изсостояния приостанова;
· Условнаяоперация (CP), уменьшающая значениесемафора и возвращающая логическое значение «истина» в том случае,когда значение семафора остается положительным. Если в результате операциизначение семафора должно стать отрицательным или нулевым, никаких действий надним не производится и операция возвращает логическое значение «ложь».
Семафор — это структура, состоящая из поля блокировки(управляющего доступом к семафору), значения семафора и очереди процессов,приостановленных по семафору. Поле блокировки содержит информацию, открывающуюво время выполнения операций типа P и V доступ к другим полям структуры толькоодному процессу. По завершении операции значение поля сбрасывается. Этозначение определяет, разрешен ли процессу доступ к критическому участку,защищаемому семафором. В начале выполнения алгоритма операции P ядропредоставляет процессу право исключительного доступа к семафору и уменьшаетзначение семафора. Если семафор имеет неотрицательное значение, текущий процессполучает доступ к критическому участку. По завершении работы процесс сбрасываетблокировку семафора, открывая доступ к семафору для других процессов, ивозвращает признак успешного завершения. Если же в результате уменьшениязначение семафора становится отрицательным, ядро приостанавливает выполнениепроцесса, используя алгоритм: основываясь на значении приоритета, ядропроверяет поступившие сигналы, включает текущий процесс в списокприостановленных процессов, в котором последние представлены в порядкепоступления, и выполняет переключение контекста. Операция V получаетисключительный доступ к семафору и увеличивает значение семафора. Если очередьприостановленных по семафору процессов непустая, ядро выбирает из нее первыйпроцесс и переводит его в состояние «готовности к запуску».
Узкие местамногопроцессорности
Оба рассмотренных мною метода (основанный на семафорах и наиспользовании главного и подчиненного процессора) инвариантны к количествупроцессоров, однако говорить о том, что с ростом числа процессоров общаяпроизводительность системы увеличивается с линейной скоростью, нельзя. Потерипроизводительности возникают, во-первых, как следствие конкуренции за ресурсыпамяти, которая выражается в увеличении продолжительности обращения к памяти.Во-вторых, в схеме, основанной на использовании семафоров, к этой конкуренциидобавляется соперничество за семафоры; процессы зачастую обнаруживают семафорызахваченными, больше процессов находится в очереди, долгое время ожиданияполучения доступа к семафорам. Первая схема, основанная на использованииглавного и подчиненного процессоров, тоже не лишена недостатков: по мереувеличения числа процессоров главный процессор становится узким местом всистеме, поскольку только он один может функционировать в режиме ядра. Несмотряна то, что более внимательное техническое проектирование позволяет сократитьконкуренцию до разумного минимума и в некоторых случаях приблизить скоростьповышения производительности системы при увеличении числа процессоров к линейной,все построенные с использованием современной технологии многопроцессорныесистемы имеют предел, за которым расширение состава процессоров несопровождается увеличением производительности системы.
Заключение
В работе были описаны:полная структура системы UNIX, взаимоотношения между процессами, выполняющимисяв режиме задачи и в режиме ядра, файловая система, методы защиты, а также аппаратнаясреда функционирования ядра операционной системы.
Операционная системаUNIX обеспечивает надежную среду разработки и использования мобильныхприкладных систем, одновременно представляя собой практическую основу дляпостроения открытых программно-аппаратных систем и комплексов. Именно широкоевнедрение в практику ОС UNIX позволило перейти от лозунга Открытых Систем кпрактической разработке этой концепции. Большой вклад в развитие направленияОткрытых Систем внесла деятельность по стандартизации интерфейсов ОС UNIX.
Архитектура системыподдерживает такой стиль программирования, при котором из небольших программ, выполняющихтолько отдельные функции, но действительно хорошо делающих это, составляютсяболее сложные программы, использующие механизм каналов и переназначение ввода-вывода.Обращения к операционной системе позволяют процессам производить операции,которые иначе не выполняются. В дополнение к обработке подобных обращений ядрооперационной системы осуществляет общие учетные операции, управляетпланированием процессов, распределением памяти и защитой процессов воперативной памяти, обслуживает прерывания, управляет файлами и устройствами иобрабатывает особые ситуации, возникающие в системе. В функции ядра системыUNIX намеренно не включены многие функции, являющиеся частью другихоперационных систем, поскольку набор обращений к системе позволяет процессамвыполнять все необходимые операции на пользовательском уровне.
Список использованнойлитературы:
1. Дж.Баш, Архитектура операционной системы UNIX,Prentice-Hall, 1986.
2. Л.Торвальдс, Наследие UNIXиперспективы развития модели безопасности в Linux,БХВ-Петербург, 1993.
3. Б. Керниган, UNIX — универсальная среда программирования, Финансы и статистика, 1992.
4. М. Ганкарз, БИНОМ. Лаборатория знаний, 1991.
5. Википедия, ru.wikipedia.org/wiki/UNIX, UNIX — Википедия
.