Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 81
Текст из файла (страница 81)
Все реальные сложности оставлялись пользовательским программам.Второй целью была общность. Одни и те же методы и механизмы должны былииспользоваться во многих случаях:• обращение к файлам, устройствам ввода-вывода и буферам межпроцессныхсообщений выполняются с помощью одних и тех же примитивов;• одни и те же механизмы именования, присвоения альтернативных имен и защиты от несанкционированного доступа применяются и к файлам с данными,и к каталогам, и к устройствам;а одни и те же механизмы работают в отношении программно и аппаратно инициируемых прерываний.Третья цель заключалась в том, чтобы сложные задачи можно было решать, комбинируя существующие небольшие программы, а не разрабатывая их заново.Наконец, четвертая цель состояла в создании мультитерминальной операционнойсистемы с эффективными механизмами разделения не только процессорного времени, но и всех остальных ресурсов.
В мультитерминальной операционной системе на одно из первых мест по значимости выходят вопросы защиты одних вычисСоздателями системы UNIX считаются Кен Томпсон и Деннис Ритчи. В своей операционной с и с ^ме Томпсон и Ритчи учли опыт работы над проектом сложной мультизадачной операционной си ^мы с разделением времени, которая имела название MULTICS (MULTiplexed I n f o r m a t l ° " * e dComputing System). Название новой системы UNIX произошло от аббревиатуры UNICS (Unip eInformation and Computing System).Семейство операционных систем UNIX313лительных процессов от вмешательства других вычислительных процессов.
Причем для реализации третьей цели необходимо было создать механизмы полноценного обмена данными между программными модулями, из которых предполагалось составлять конечные программы,перационная система UNIX обладает простым, но очень мощным команднымзыком и независимой от устройств файловой системой. Важным, хотя и простымпозиций реализации такой возможности, является тот факт, что система UNIXредоставляет пользователям средства направления выхода одной программы неосредственно на вход другой.
В результате достигается четвертая цель — большиерограммные системы можно создавать путем композиции имеющихся небольшихрограмм, а не путем написания новых, что в большинстве случаев упрощает задау. UNIX-системы существуют уже 30 лет, и к настоящему времени имеется чрезычайно большой набор легко переносимых из системы в систему отлично отлаенных и проверенных временем приложений.число системных и прикладных программ, поставляемых с UNIX-системами,ходят редакторы текстов, программируемые интерпретаторы командного языка,омпиляторы с нескольких популярных языков программирования, включая С,"++, ассемблер, PERL, FORTRAN и многие другие, компоновщики (редакторыежпрограммных связей), отладчики, многочисленные библиотеки системныхпользовательских программ, средства сортировки и ведения баз данных, многоисленные административные и обслуживающие программы.
Для абсолютногоольшинства всех этих программ имеется документация, в том числе исходныеексты программ (как правило, хорошо комментированные). Кроме того, описаия и документация по большей части доступны пользователям в интерактивномежиме. Используется иерархическая файловая система с полной защитой, рабоа со съемными томами, обеспечивается независимость от устройств.'ентральной частью UNIX-систем является ядро (kernel). Оно состоит из большого количества модулей и с точки зрения архитектуры считается монолитным,днако в ядре всегда можно выделить три основные подсистемы: управления провесами, управления файлами, управления операциями ввода-вывода между ценральной частью и периферийными устройствами.
Подсистема управления провесами организует выполнение и диспетчеризацию процессов, их синхронизациюразнообразное межпроцессное взаимодействие. Важнейшая функция подсистемы управления процессами — это распределение оперативной памяти и (для соременных систем) организация виртуальной памяти. Подсистема управленияаилами тесно связана и с подсистемой управления процессами, и с драйверами.Дро может быть перекомпилировано с учетом конкретного состава устройствомпьютера и решаемых задач. Не все драйверы могут быть включены в составДра, часть из них может вызываться из ядра. Более того, очень большое количетво системных функций выполняется системными программными модулями, неходящими непосредственно в ядро, но вызываемых из ядра. Основные системЫе функции, которые должно выполнять ядро совместно с остальными системами модулями, строго стандартизированы.
За счет этого во многом достигаетсяереносимость кода между разными версиями UNIX и абсолютно различным апаРатным обеспечением.314Глава 10. Краткий обзор современных операционных системОсновные понятияОдним из достоинств ОС UNIX является то, что система базируется на небольшом числе понятий; рассмотрим их вкратце. Здесь необходимо отметить, что настоящая книга не претендует на полноценное изложение основ работы и детальноеописание архитектуры системы UNIX (или Linux). На эту тему имеется достаточное количество специальной литературы, например отличная монография [39] илитакие замечательные книги, как [23,43].
Тем не менее, исходя из имеющегося опыта преподавания предметов, относящихся к операционным системам и системному программному обеспечению, считаю полезным изложить здесь минимальныйнабор основных понятий, который часто помогает студентам «погрузиться в мирUNIX», отличающийся от привычного всем окружения Windows.Виртуальная машинаСистема UNIX многопользовательская. Каждому пользователю после регистрации (входа в систему) предоставляется виртуальный компьютер, в котором естьвсе необходимые ресурсы: процессор (процессорное время выделяется на основекруговой, или карусельной, диспетчеризации и с использованием динамическихприоритетов, что позволяет обеспечить равенство в обслуживании), оперативнаяпамять, устройства, файлы.
Текущее состояние такого виртуального компьютера,предоставляемого пользователю, называется образом. Можно сказать, что процесс — это выполнение образа. Образ процесса состоит:О из образа памяти;Q значений общих регистров процессора;О состояния открытых файлов;•текущего каталога файлов;• другой информации.Образ процесса во время выполнения процесса размещается в основной памяти.В старых версиях UNIX образ можно было «сбросить» на диск, если какому-либоболее приоритетному процессу требовалось место в основной памяти. Напомним,что такое замещение процессов называется свопингом (swapping). В современныхреализациях, поддерживающих, как правило, страничный механизм виртуальнойпамяти, прежде всего выгружаются неиспользуемые страницы, а не целиком образ.
В частности, в системах Linux свопинг образов не применяется, но создаетсяспециальный 1 раздел на магнитном диске для файла подкачки (swap-file), где размещаются виртуальные страницы выполняющихся процессов, для которых не хватает места в оперативной памяти. Таким образом, замещаются не процессы, а ихотдельные страницы.Образ памяти делится на три логических сегмента:Q сегмент реентерабельных процедур (начинается с нулевого адреса в виртуальном адресном пространстве процесса);Сигнатура этого раздела обозначается как 082h.Семейство операционных систем UNIX315• сегмент данных (располагается следом за сегментом процедур и может расти всторону больших адресов);• сегмент стека (начинается со старшего адреса и растет в сторону младших адресов по мере занесения в него информации при вызовах подпрограмм и при прерываниях).В современных версиях UNIX-систем все виртуальное адресное пространство каждого образа отображается на реальную физическую память компьютера.
Используется страничный механизм организации виртуальной памяти. И следует различать замещение процессов и подкачку страниц, хотя в обоих случаях используетсятермин swapping.ПользовательМы уже отмечали, что с самого начала операционная система UNIX замышляласькак интерактивная многопользовательская система. Другими словами, UNIX предназначена для мультитерминальной работы. Чтобы начать работать, пользовательдолжен «войти» в систему, введя со свободного терминала свое учетное, или входное, имя (account name, или login) и пароль (password).
Человек, зарегистрированный в учетных файлах системы и, следовательно, имеющий учетное имя, называетсязарегистрированным пользователем системы. Регистрацию новых пользователейобычно выполняет администратор системы. Пользователь не может изменить своеучетное имя, но может установить и/или изменить свой пароль. Пароли хранятсяв отдельном файле в закодированном виде.Ядро операционной системы UNIX идентифицирует каждого пользователя по егоидентификатору (User Identifier, UID), уникальному целому значению, присваиваемому пользователю при регистрации в системе. Кроме того, каждый пользовательотносится к некоторой группе пользователей, которая также идентифицируется некоторым целым значением (Group Identifier, GID). Значения UID и GID для каждогозарегистрированного пользователя сохраняются в учетных файлах системы и приписываются процессу, в котором выполняется командный интерпретатор, запущенный при входе пользователя в систему.