Реферат: Операционная система Unix

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИРОССИЙСКОЙ

ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕУЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ТАГАНРОГСКИЙ ГОСУДАРСТВЕННЫЙРАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Дисциплина «Информатика»

РЕФЕРАТ

по теме:

 «Операционная система UNIX»

                        Выполнила:  Орда-ЖигулинаД.В., гр. Э-25

                                                                    Проверил:        Вишневецкий В.Ю.

Таганрог 2006<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-font-kerning:16.0pt;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA;mso-bidi-font-weight:bold">
<span Times New Roman",«serif»;font-weight:normal;mso-bidi-font-weight: bold">СОДЕРЖАНИЕ

Введение

Что такое Unix                                                                                        3

Где взять бесплатный Unix                                                                    7

Основная часть. (ОписаниеUnix)

1. Основные понятия Unix                                                                     8

2. Файловая система                                                                               9

2.1 Типы файлов                                                                                     9

3. Командный интерпретатор                                                                         11

4. Ядро ОС UNIX                                                                                   12

4.1Общая организация традиционного ядра ОС UNIX            13

4.2Основные функции ядра                                                         14

4.3Принципы взаимодействия с ядром                                       15

4.4Принципы обработки прерываний                                        17

5. Управлениевводом/выводом                                                             18

5.1 Принципы системной буферизации ввода/вывода               19

5.2 Системные вызовы для управления вводом/выводом                   21

6.  Интерфейсы и входные точки драйверов                                         23

6.1 Блочные драйверы                                                                          23

6.2 Символьные драйверы                                                          24

6.3 Потоковые драйверы                                                             25

7.  Команды и утилиты                                                                                    25

7.1 Организация команды в ОС UNIX                                       26

7.2 Перенаправление ввода/вывода и организация конвейера26

7.3 Встроенные, библиотечные и пользовательские команды   26

7.4 Программирование на командном языке                             27

8. Средства графическогоинтерфейса пользователей                                   27

8.1Идентификаторы пользователя и группы пользователей     30

8.2Защита файлов                                                                        32

8.3 Перспективные ОС,поддерживающие среду ОС UNIX                          33

Заключение

Основные отличия Unixот других OS                                                  36

Области применения Unix                                                                      37

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">
Введение<span Times New Roman",«serif»; mso-ansi-language:EN-US;font-weight:normal">Что такое Unix

ТерминUnix и не вполне эквивалентный ему UNIX используется в разных значениях. Начнемсо второго из терминов, как более простого. В двух словах, UNIX (именно в такойформе) — зарегистрированная торговая марка, первоначально принадлежавшаякорпорации AT&T, сменившая за свою долгую жизнь много хозяев и нынеявляющаяся собственностью организации под названием Open Group. Право наиспользование имени UNIX достигается путем своего рода «проверки навшивость» — прохождения тестов соответствия спецификациям некоей эталоннойОС (Single Unix Standard — что в данном случае можно перевести как ЕдинственныйСтандарт на Unix). Процедура эта не только сложна, но и очень недешева, ипотому ей подверглись лишь несколько оперционок из ныне здравствующих, и всеони являются проприетарными, то есть представляют собой собственность некихкорпораций.

Вчисле корпораций, заслуживших право на имя UNIX потомразработчиков/тестировщиков и кровью (точнее, долларом) владельцев, можноназвать следующие:

Sunс ее SunOS (более известной в миру под именем Solaris);

IBM,разработавшая систему AIX;

Hewlett-Packard- владелец системы HP-UX;

IRIX- операционка компании SGI.

Кромеэтого, собственно имя UNIX применяется к системам:

True64Unix, разработанная фирмой DEC, с ликвидацией коей перешедшая к Compaq, а ныне,вместе с последней, ставшая собственностью той же Hewlett-Packard;

UnixWare- собственность компании SCO (продукту слияния фирм Caldera и Santa CruzOperation).

Будучипроприетарными, все эти системы продаются за немалые (даже по американскиммасштабам) деньги. Однако это — не главное препятствие к распространениюсобственно UNIX'ов. Ибо общей их особенностью является привязка к определеннымаппаратным платформам: AIX работает на серверах и рабочих станциях IBM спроцессорами Power, HP-UX — на собственных машинах HP-PA (PrecissionArchitecture), IRIX — на графических станциях от SGI, несущих процессорыMIPS,True64 Unix — предназначена для процессоров Alpha (к сожалению, в бозепочивших). Лишь UnixWare ориентирована на «демократическую» платформуPC, а Solaris существует в вариантах для двух архитектур — собственной, Sparc,и все той же PC. Что, однако, не сильно поспособствовало их распространенности- вследствие относительно слабой поддержки новой PC-периферии.

Такимобразом, UNIX — это понятие в первую очередь юридическое. А вот за терминомUnix закрепилась технологическая трактовка. Так в обиходе IT-индустрии называютвсе семейство операционных систем, либо происходящих от«первозданной» UNIX компании AT&T, либо воспроизводящих еефункции «с чистого листа», в том числе свободные ОС, такие, какLinux, FreeBSD и другие BSD, никакой проверке на соответствие Single UnixStandard никогда не подвергавшиеся. И потому их часто называют Unix-подобными.

         Широкораспространен также близкий по смыслу термин «POSIX-совместимыесистемы», которым объединяется семейство ОС, соответствующих одноименномунабору стандартов. Сами по себе стандарты POSIX (Portable Operation SystemInterface based on uniX) разрабатывались на основе практики, принятой вUnix-системах, и потому последние все являются по определениюPOSIX-совместимыми. Однако это — не вполне синонимы: на совместимость состандартами POSIX, претендуют операционки, связанные с Unix лишь косвенно (QNX,Syllable), или несвязанные вообще (вплоть до Windows NT/2000/XP).

Чтобыпрояснить вопрос взаимоотношений UNIX, Unix и POSIX, придется немногоуглубиться в историю. Собственно, история этого вопроса подробно рассмотрена всоответствующей главе книги «Свободный Unix: Linux, FreeBSD и другие»(в ближайшее время выходит в издательстве БХВ-Петербург) и в статьях по историиLinux и BSD-систем.

Операционнаясистема Unix (точнее, ее первый вариант) была разработана сотрудниками BellLabs (подразделения компании AT&T) в 1969-1971 годах. Первые ее авторы — Кен Томпсон и Деннис Ричи, — делали это исключительно для собственных целей, вчастности, для того, чтобы можно было развлекаться любимой игрой StarTravel. Ипо ряду юридических причин сама компания не могла использовать ее каккоммерческий продукт. Однако практическое применение Unix нашлось довольнобыстро. Во-первых, она использовалась в Bell Labs для подготовки разного родатехнической (в том числе патентной) документации. А во-вторых, на Unixбазировалась коммуникационная система UUCP (Unix to Unix Copy Programm — программа копирования из Unix в Unix).

Другаясфера применения Unix в 70-х — начале 80-х годов прошлого века, оказаласьсовсем необычной. А именно, в исходных текстах она распространялась срединаучных учреждений, ведущих работы в области Computer Science. Целью такогораспространения (оно не было вполне свободным в нынешнем понимании, нофактически оказывалось весьма либеральным) были: образование и исследования ввышеуказанной области знаний.

Наибольшуюизвестность получила система BSD Unix, созданная в Университете Беркли,Калифорния. Которая, постепенно освобождаясь от проприетарного кодапервозданной Unix, в конце концов, после драматических перипетий (подробноописанных здесь), дала начало современным свободным BSD-системам — FreeBSD,NetBSD и другим.

Однимиз наиболее важных результатов работы университетских хакеров оказалось (1983год) внедрение в Unix поддержки протокола TCP/IP, на котором основываласьтогдашняя сеть ARPANET (и который стал основой основ современного Интернета).Это стало препосылкой к доминированию Unix во всех сферах, связанных соВсемирной Сетью. И это оказалось следующим практическим применением этогосемейства операционок — к тому времени о единой Unix говорить уже неприходилось. Потому что она, как было сказано ранее, обособились две ее ветки — происходящая от первозданной UNIX (со временем она получила имя System V) исистема берклианского происхождения. С другой же стороны, System V легла воснову тех разнообразных проприетарных UNIX'ов, которые, собственно, и имелиюридическое право претендовать на это имя.

Последнееобстоятельство — разветвление некогда единой ОС на несколько линий, постепенноутрачивающих совместимость, — вошло в противоречие с одним из краеугольныхкамней Unix-идеологии: переносимости системы между разными платформами, и ееприложений — из одной Unix-системы в другую. Что вызвало к жизни деятельностьразного рода стандартизирующих организаций, завершившуюся в конце концовсозданием набора стандартов POSIX, о котором говорилось ранее.

Именнона стандарты POSIX опирался Линус Торвальдс, создавая «с нуля» (тоесть не используя ранее существовавшего кода) свою операционную систему — Linux. А та, быстро и успешно освоив традиционные сферы применения Unix-систем(разработка софта, коммуникации, Интернет), со временем открыла для них и новую- настольные пользовательские платформы общего назначения. Что и обеспечило еепопулярность в народе — популярность, превосходящую таковую всех прочихUnix-систем, вместе взятых, как проприетарных, так и свободных.

Далееречь пойдет о работе в Unix-системах в самом широком смысле этого слова, безучета всякого рода торговых марок и прочих юридических заморочек. Хотя основныепримеры, относящиеся к приемам работы, будут взяты из области свободных ихреализаций — Linux, в меньшей степени FreeBSD, и еще в меньшей — из прочихBSD-систем.

<span Times New Roman",«serif»;font-weight:normal">Гдевзять бесплатный <span Times New Roman",«serif»; mso-ansi-language:EN-US;font-weight:normal">Unix<span Times New Roman",«serif»;font-weight:normal">?

FreeBSDБаза — www.freebsd.org;

Обратитьсяможно на www.sco.com

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">
Основная часть. (Описание Unix)<span Times New Roman",«serif»; mso-ansi-language:EN-US;font-weight:normal">1. Основные понятия Unix

Unixбазируется на двух основных понятиях: «процесс» и «файл».Процессы являют собой динамическую сторону системы, это субьекты; а файлы — статическую, это обьекты действия процессов. Почти весь интерфейсвзаимодействия процессов с ядром и друг с другом выглядит как запись/чтениефайлов. Хотя надо добавить такие вещи, как сигналы, разделяемая память исемафоры. 

Процессыможно весьма условно разделить на два типа — задачи и демоны. Задача — этопроцесс, который выполняет свою работу, стремясь побыстрее закончить ее изавершиться. Демон ждет событий, которые он должен обработать, обрабатываетпроизошедшие события и снова ждет; завершается он как правило по приказудругого процесса, чаще всего его убивает пользователь, дав команду «killномер_процесса».  В этом смыслеполучается, что интерактивная задача, обрабатывающая ввод пользователя, скореепохожа на демона, чем на задачу.

2. Файловая система

Встарых Unix'ах отводилось 14 букв на имя, в новых это ограничение снято. Вдиректории кроме имени файла находится его идентефикатор inode — целое число,определяющее номер блока, в котором записаны атрибуты файла. Среди них: номерпользователя — хозяина файла; номер группы; количество ссылок на файл(см.далее) даты и время создания, последней модификации и последнего обращенияк файлу; атрибуты доступа. Атрибуты доступа содержат тип файла (см.далее),атрибуты смены прав при запуске (см.далее) и права доступа к нему для хозяина,одногрупника и остальных на чтение, запись и выполнение. Право на стираниефайла определяется правом записи в вышележащую директорию.

Каждыйфайл (но не директория) может быть известен под несколькими именами, нообязательно лежащими на одном разделе. Все ссылки на файл равноправны; файлстирается, когда удаляется последняя ссылка на файл. Если файл открыт (длячтения и/или записи), то число ссылок на него увеличивается еще на единицу; такмногие программы, открывающие временный файл, сразу удаляют его, чтобы приаварийном завершении, когда операционная система закрывает открытые процессомфайлы, этот временный файл был удален операционной системой.

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

<span Times New Roman",«serif»; mso-ansi-language:EN-US;font-weight:normal">2.1 Типы файлов<span Times New Roman",«serif»;font-weight:normal">

Файлыбывают следующих типов:

обычныйфайл прямого доступа;

директория(файл, содержащий имена и идентефикаторы других файлов);

символьныйлинк (строка с именем другого файла);

блочноеустройство (диск или магнитная лента);

последовательноеустройство (терминалы, последовательные и параллельные порты; диски и магнитныеленты тоже имеют интерфейс последовательного устройства)

поименованныйканал.

Специальныефайлы, предназначенные для работы с устройствами как правило сосредоточены вдиректории "/dev". Вот некоторые из них (в номинации FreeBSD):

tty*- терминалы, в т.ч.: ttyv<цифра> — виртуальная консоль;

ttyd<цифра>- DialIn терминал (обычно последовательный порт);

cuaa<цифра>- DialOut линия

ttyp<цифра>- сетевой псевдо-терминал;

tty- терминал, с которым ассоциирована задача;

wd*- жесткие диски и их подразделы, в т.ч.: wd<цифра> — жесткий диск;

wd<цифра>s<цифра>- партиция этого диска (именуемая здесь «slice»);

wd<цифра>s<цифра><буква>- раздел партиции;

fd<цифра>[<буква>]- floppy-диск;

rwd*,rfd* — то же самое, что wd* и fd*, но с последовательным доступом;

Иногдатребуется, чтобы программа, запущенная пользователем, имела не правазапустившего ее пользователя, а какие-то другие. В этом случае устанавливаетсяатрибут смены прав на права пользователя — хозяина программы. (В качествепримера приведу программу, которая читает файл с вопросами и ответами и наосновании прочитанного тестирует запустившего эту программу студента. Программадолжна иметь право читать файл с ответами, а запустивший ее студент — нет.)Так, например, работает программа passwd, с помощью которой юзер может изменитьсвой пароль. Юзер может запустить программу passwd, она может произвестиизменения в системной базе данных — а пользователь не может.

Вотличие от DOS, в котором полное имя файла выглядит как«диск: путьимя», и RISC-OS, в которой оно выглядит"-файловая_система-диск:$.путь.имя" (что вообще говоря имеет своипреимущества), Unix использует прозрачную нотацию в виде "/путь/имя".Корень отсчитывается от раздела, с которого было загружено ядро Unix. Еслинеобходимо использовать другой раздел (а на загрузочном разделе как правило находитсятолько самое необходимое для загрузки), используется команда `mount/dev/файл_раздела директория`. При этом файлы и поддиректории, ранеенаходившиеся в этой директории, становятся недоступными, пока раздел не будетразмонтирован (естественно, все нормальные люди используют для монтированияразделов пустые директории). Производить монтирование и размонтирование имеетправо только супервизор.

Призапуске каждый процесс может расчитывать, что для него уже открыты три файла,которые ему известны как стандартный ввод stdin по дескриптору 0; стандартныйвывод stdout по дескриптору 1; и стандартный вывод stderr по дескриптору 2. Прирегистрации в системе, когда пользователь вводит имя и пароль, а емузапускается shell, все трое направлены на /dev/tty; позже любой из них можетбыть перенаправлен в любой файл.

3. Командный интерпретатор

ВUnix практически всегда входят два командных интерпретатора — sh (shell) и csh(C-подобный shell). Кроме них еще бывают bash (Bourne), ksh (Korn), и другие.Не вдаваясь в подробности, приведу общие принципы:

Всекоманды, кроме изменения текущей директории, установки переменных окружения(environment) и операторов структурного программирования — внешние программы.Программы эти как правило располагаются в каталогах /bin и /usr/bin. Программысистемного администрирования — в каталогах /sbin и /usr/sbin.

Командасостоит из имени запускаемой программы и аргументов. Аргументы отделяются отимени команды и друг от друга пробелаим и табуляциями. Некоторые спецсимволыинтерпретируются самим shell'ом. Спецсимволами являются " ' `! $ ^ *?< > | &; (еще какие?).

Водной командной строке можно дать несколько команд. Команды могут бытьразделены; (последовательное выполнение команд), & (асинхронноеодновременное выполнение команд), | (синхронное выполнение, стандартный выводstdout первой команды будет подан на стандартный ввод stdin второй).

Крометого, можно брать стандартный ввод из файла, включив в качестве одного изаргументов "<файл" (без кавычек); можно направить стандартныйвывод в файл, используя ">файл" (файл будет обнулен) или">>файл" (запись будет произведена в конец файла).

Еслинадо получить информацию по какой-либо команде, дайте команду «manимя_команды». На экран это будет выдаваться через программу«more» — посмотрите, как с ней управляться на вашем Unix'е командой`man more`.

4. Ядро ОС UNIX

Каки в любой другой многопользовательской операционной системе, обеспечивающейзащиту пользователей друг от друга и защиту системных данных от любогонепривилегированного пользователя, в ОС UNIX имеется защищенное ядро, котороеуправляет ресурсами компьютера и предоставляет пользователям базовый наборуслуг.

Удобствои эффективность современных вариантов ОС UNIX не означает, что вся система,включая ядро, спроектирована и структуризована наилучшим образом. ОС UNIXразвивалась на протяжении многих лет (это первая в истории операционнаясистема, которая продолжает завоевывать популярность в таком зрелом возрасте — уже больше 25 лет). Естественно, наращивались возможности системы, и, как эточасто бывает в больших системах, качественные улучшения структуры ОС UNIX непоспевали за ростом ее возможностей.

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

Попричине наибольшей распространенности часто обсуждается ядро UNIX System V(можно считать его традиционным).

<span Times New Roman",«serif»; mso-ansi-language:EN-US;font-weight:normal">4.1 Общая организация традиционногоядра ОС UNIX<span Times New Roman",«serif»;font-weight:normal">

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

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

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

Машинно-зависимаячасть традиционного ядра ОС UNIX включает следующие компоненты:

раскруткаи инициализация системы на низком уровне (пока это зависит от особенностейаппаратуры);

первичнаяобработка внутренних и внешних прерываний;

управлениепамятью (в той части, которая относится к особенностям аппаратной поддержкивиртуальной памяти);

переключениеконтекста процессов между режимами пользователя и ядра;

связанныес особенностями целевой платформы части драйверов устройств.

<span Times New Roman",«serif»; mso-ansi-language:EN-US;font-weight:normal">4.2 Основные функции ядра<span Times New Roman",«serif»;font-weight:normal">

Косновным функциям ядра ОС UNIX принято относить следующие:

(a)Инициализация системы — функция запуска и раскрутки. Ядро системы обеспечиваетсредство раскрутки (bootstrap), которое обеспечивает загрузку полного ядра впамять компьютера и запускает ядро.

(b)Управление процессами и нитями — функция создания, завершения и отслеживаниясуществующих процессов и нитей («процессов», выполняемых на общейвиртуальной памяти). Поскольку ОС UNIX является мультипроцессной операционнойсистемой, ядро обеспечивает разделение между запущенными процессами временипроцессора (или процессоров в мультипроцессорных системах) и других ресурсовкомпьютера для создания внешнего ощущения того, что процессы реальновыполняются в параллель.

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

(d)Управление файлами — функция, реализующая абстракцию файловой системы, — иерархии каталогов и файлов. Файловые системы ОС UNIX поддерживают несколькотипов файлов. Некоторые файлы могут содержать данные в формате ASCII, другиебудут соответствовать внешним устройствам. В файловой системе хранятсяобъектные файлы, выполняемые файлы и т.д. Файлы обычно хранятся на устройствахвнешней памяти; доступ к ним обеспечивается средствами ядра. В мире UNIXсуществует несколько типов организации файловых систем. Современные варианты ОСUNIX одновременно поддерживают большинство типов файловых систем.

(e)Коммуникационные средства — функция, обеспечивающая возможности обмена даннымимежду процессами, выполняющимися внутри одного компьютера (IPC — Inter-ProcessCommunications), между процессами, выполняющимися в разных узлах локальной илиглобальной сети передачи данных, а также между процессами и драйверами внешнихустройств.

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

<span Times New Roman",«serif»; mso-ansi-language:EN-US;font-weight:normal">4.3 Принципы взаимодействия с ядром<span Times New Roman",«serif»;font-weight:normal">

Влюбой операционной системе поддерживается некоторый механизм, который позволяетпользовательским программам обращаться за услугами ядра ОС. В операционныхсистемах наиболее известной советской вычислительной машины БЭСМ-6соответствующие средства общения с ядром назывались экстракодами, воперационных системах IBM они назывались системными макрокомандами и т.д. В ОСUNIX такие средства называются системными вызовами.

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

Понятно,что конкретные механизмы возбуждения внутренних прерываний по инициативепользовательской программы различаются в разных аппаратных архитектурах.Поскольку ОС UNIX стремится обеспечить среду, в которой пользовательскиепрограммы могли бы быть полностью мобильны, потребовался дополнительныйуровень, скрывающий особенности конкретного механизма возбуждения внутреннихпрерываний. Этот механизм обеспечивается так называемой библиотекой системныхвызовов.

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

<span Times New Roman",«serif»; mso-ansi-language:EN-US;font-weight:normal">4.4 Принципы обработки прерываний<span Times New Roman",«serif»;font-weight:normal">

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

Еслиговорить не очень точно и конкретно, суть принятого на сегодня механизмасостоит в том, что каждому возможному прерыванию процессора (будь то внутреннееили внешнее прерывание) соответствует некоторый фиксированный адрес физическойоперативной памяти. В тот момент, когда процессору разрешается прерваться попричине наличия внутренней или внешней заявки на прерывание, происходитаппаратная передача управления на ячейку физической оперативной памяти ссоответствующим адресом — обычно адрес этой ячейки называется «векторомпрерывания» (как правило, заявки на внутреннее прерывание, т.е. заявки,поступающие непосредственно от процессора, удовлетворяются немедленно).

Делооперационной системы — разместить в соответствующих ячейках оперативной памятипрограммный код, обеспечивающий начальную обработку прерывания и инициирующийполную обработку.

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

5. Управление вводом/выводом

Традиционнов ОС UNIX выделяются три типа организации ввода/вывода и, соответственно, тритипа драйверов. Блочный ввод/вывод главным образом предназначен для работы скаталогами и обычными файлами файловой системы, которые на базовом уровне имеютблочную структуру. На пользовательском уровне теперь возможно работать сфайлами, прямо отображая их в сегменты виртуальной памяти. Эта возможностьрассматривается как верхний уровень блочного ввода/вывода. На нижнем уровнеблочный ввод/вывод поддерживается блочными драйверами. Блочный ввод/вывод,кроме того, поддерживается системной буферизацией.

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

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

<span Times New Roman",«serif»;font-weight:normal">5.1 Принципы системной буферизации ввода/вывода

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

Принципамиорганизации традиционного механизма буферизации является, во-первых, то, чтокопия содержимого блока удерживается в системном буфере до тех пор, пока невозникнет необходимость ее замещения по причине нехватки буферов (для организацииполитики замещения используется разновидность алгоритма LRU). Во-вторых, привыполнении записи любого блока устройства внешней памяти реально выполняетсялишь обновление (или образование и наполнение) буфера кэша. Действительныйобмен с устройством выполняется либо при выталкивании буфера вследствиезамещения его содержимого, либо при выполнении специального системного вызоваsync (или fsync), поддерживаемого специально для насильственного выталкиванияво внешнюю память обновленных буферов кэша.

Этатрадиционная схема буферизации вошла в противоречие с развитыми в современныхвариантах ОС UNIX средствами управления виртуальной памятью и в особенности смеханизмом отображения файлов в сегменты виртуальной памяти. Поэтому в System VRelease 4 появилась новая схема буферизации, пока используемая параллельно состарой схемой.

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

Новаясхема буферизации в ядре ОС UNIX главным образом основывается на том, что дляорганизации буферизации можно не делать почти ничего специального. Когда одиниз пользовательских процессов открывает не открытый до этого времени файл, ядрообразует новый сегмент и подключает к этому сегменту открываемый файл. Послеэтого (независимо от того, будет ли пользовательский процесс работать с файломв традиционном режиме с использованием системных вызовов read и write илиподключит файл к сегменту своей виртуальной памяти) на уровне ядра работа будетпроизводиться с тем ядерным сегментом, к которому подключен файл на уровнеядра. Основная идея нового подхода состоит в том, что устраняется разрыв междууправлением виртуальной памятью и общесистемной буферизацией (это нужно было бысделать давно, поскольку очевидно, что основную буферизацию в операционнойсистеме должен производить компонент управления виртуальной памятью).

Почемуже нельзя отказаться от старого механизма буферизации? Все дело в том, чтоновая схема предполагает наличие некоторой непрерывной адресации внутри объектавнешней памяти (должен существовать изоморфизм между отображаемым иотображ

еще рефераты
Еще работы по программному обеспечению