1. Понятие ОС. Основные функции ОС.

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

Основными функциями ОС являются:

1. Прием от пользователя заданий или команд.

2. Прием и исполнение программных запросов на запуск, приостановку и остановку других программ.

4. Инициация программы (передача ей управления, в результате чего процессор исполняет программу).

5. Идентификация всех программ и данных.

6. Обеспечение работы системы управления файлами и СУБД. что увеличивает эффективность работы всего ПО.

7. Обеспечения режима мультипрограммирования, т. е. выполнение 2 или более программ на 1 процессоре, воздающие видимость их одновременного исполнения.

8. Управление операциями ввода/вывода.

9. Удовлетворение жестким ограничениям в режиме реального времени.??

10. Распределение памяти, организация виртуальной памяти.

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

12. Обмен сообщениями и данными между выполняющимися программами.

13. Защита программ от влияния друг на друга. обеспечение сохранности данных.

14. Предоставление услуг на случай сбоя системы.

15. Обеспечение работы систем программирования.

2. Прерывания. Обработка прерываний.

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

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

1. Установление факта прерывания (прием и идентификация сигнала на прерывание).

2. Запоминание состояния прерванного процесса (состояние процесса определяется значением счетчика команд, содержимым регистра процессора, спецификацией режима: пользовательский или привилегированный)

3. Управление аппаратно передается программе обработки прерывания. В этом случае, в счетчик команд заносится начальный адрес подпрограммы обработки прерывания, а в соответствующие регистры из слова состояния.???

4. Сохранение информации прерванной программе, которую не удалось спасти с помощью действий аппаратуры.

5. Обработка прерывания. Работа может быть выполнена той же подпрограммой, которой было передано управление на 3-ем шаге, но в ОС чаще всего эта обработка реализуется путем вызова соотв. подпрограммы.

6. восстановление информации относящейся к прерванному процессу.

7. Возврат в прерванную программу.

Первые 3 шага реализуются аппаратными средствами, а остальные – программно.

Главные функции механизма прерывания:

1. Распознавание или классификация прерывания.

2. Передача управления обработчику прерывания.

3. Корректное возвращение к прерванной программе

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

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

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

2) с абсолютным приоритетом. Всегда обслуживаются задачи с наивысшим приоритетом. Для реализации этой дисциплины при запросе на обработку прерываний маскируются все прерывания с низшим приоритетом. При этом возможно многоуровневое прерывание, т. е. прерывание программы обработки прерывания. Число уровней прерывания в этом режиме изменяется и зависит от приоритета запроса по принципу стека: LCFS – last come first served, т. е. запрос с более высоким приоритетом может прервать запрос с более низким приоритетом. При появлении запроса на прерывание система прерываний идентифицирует сигнал и если прерывания разрешены, то управление передается на соотв. программу обработки прерываний.

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

3. В чем заключается различие между повторновходимым (реентерным) и повторнопрерываемыми программными модулями. Как они реализуются.

1. Что такое система управления файлами (СУФ)?

Назначение СУФ.

Организация более удобного доступа к данным, организованным как файлы. Вместо низкоуровнего доступа к данным – с указанием физического адреса каждой записи – используется логический доступ с указанием имени файла и записи в нём.

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

2. Внешние, внутренние и программные прерывания.

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

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

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

7.1. Основные концепции операционных систем

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

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

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

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

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

Обобщая сказанное, можно предложить следующую структуру программного обеспечения (рис. 7.1).

Рис.7.1. Классификация программного обеспечения



Предложенная классификация программного обеспечения является в большой мере условной, так как в настоящее время программные продукты многих фирм стали объединять в себе программные элементы из разных классов. Например, операционная система Windows, являясь комплексом системных программ, в своем составе содержит блок служебных программ (дефрагментация, проверка, очи­стка диска и др.), а также текстовый процессор WordPad, графичес­кий редактор Paint, которые принадлежат классу прикладных про­грамм.

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

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

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

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

Наиболее распространенные операционные системы: MS-DOS, OS/2, UNIX, WINDOWS, LINUX, WINDOWS NT, они имеют разные модификации.

Основные функции (простейшие ОС):

Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода);

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

Управление доступом к данным на энергонезависимых носителях (таких как жесткий диск, компакт-диск и т.д.), как правило с помощью файловой системы;

Пользовательский интерфейс;

Сетевые операции, поддержка стека протоколов

Дополнительные функции:

Параллельное или псевдопараллельное выполнение задач (многозадачность);

Взаимодействие между процессами: обмен данными, взаимная синхронизация;

Защита самой системы, а также пользовательских данных и программ от злонамеренных действий пользователей или приложений;

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

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

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

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

Виды операционных систем.

История развития ОС насчитывает уже много лет. Операцион­ные системы появились и развивались в процессе совершенствова­ния аппаратного обеспечения компьютеров, поэтому эти события исторически тесно связаны. Развитие компьютеров привело к появ­лению огромного количества различных ОС, из которых далеко не все широко известны.

На самом верхнем уровне находятся ОС для мэйнфреймов. Эти огромные машины еще можно встретить в больших организациях. Мэйнфреймы отличаются от персональных компьютеров по своим возможностям ввода/вывода. Довольно часто встречаются мэйнфреймы с тысячью дисков и терабайтами данных. Мэйнфреймы высту­пают в виде мощных web-серверов и серверов крупных предприятий и корпораций. Операционные системы для мэйнфреймов в основ­ном ориентированы на обработку множества одновременных зада­ний, большинству из которых требуется огромное количество операций ввода-вывода. Обычно они выполняют три вида операций: па­кетную обработку, обработку транзакций (групповые операции) и разделение времени. При пакетной обработке выполняются стандартные задания пользователей, работающих в интерактивном режиме. Системы обработки транзакций управляют очень большим количе­ством запросов, например бронирование авиабилетов. Каждый от­дельный запрос невелик, но система должна отвечать на сотни и тысячи запросов в секунду. Системы, работающие в режиме разде­ления времени, позволяют множеству удаленных пользователей од­новременно выполнять свои задания на одной машине, например, работать с большой базой данных. Все эти функции тесно связа­ны между собой, и операционная система мэйнфрейма выполняет их все. Примером операционной системы для мэйнфрейма является OS/390.

Уровнем ниже находятся серверные ОС. Серверы представляют собой или многопроцессорные компьютеры, или даже мэйнфреймы. Эти ОС одновременно обслуживают множество пользователей и по­зволяют им делить между собой программно-аппаратные ресурсы. Серверы также предоставляют возможность работы с печатающими устройствами, файлами или Internet. У Internet-провайдеров обычно работают несколько серверов для того, чтобы поддерживать одновре­менный доступ к сети множества клиентов. На серверах хранятся страницы web-сайтов и обрабатываются входящие запросы. UNIX и Windows 2000 являются типичными серверными ОС. Теперь для этой цели стала использоваться и операционная система Linux.

Следующую категорию составляют ОС для персональных компью­теров. Их работа заключается в предоставлении удобного интерфей­са для одного пользователя. Такие системы широко используются в повседневной работе. Основными ОС в этой категории являются операционные системы платформы Windows, Linux и операционная система компьютера Macintosh.

Еще один вид ОС - это системы реального времени. Главным па­раметром таких систем является время. Например, в системах управ­ления производством компьютеры, работающие в режиме реального времени, собирают данные о промышленном процессе и использу­ют их для управления оборудованием. Такие процессы должны удов­летворять жестким временным требованиям. Если, например, по конвейеру передвигается автомобиль, то каждое действие должно быть осуществлено в строго определенный момент времени. Если сварочный робот сварит шов слишком рано или слишком поздно, то нанесет непоправимый вред изделию. Системы VxWorks и QNX яв­ляются операционными системами реального времени.

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

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

Классификация операционных систем.

Операционные системы классифицируются по:

Количеству одновременно работающих пользователей: однопользовательские, многопользовательские;

Числу процессов, одновременно выполняемых под управлением системы: однозадачные, многозадачные;

Количеству поддерживаемых процессоров: однопроцессорные, многопроцессорные;

Разрядности кода ОС: 8-разрядные, 16-разрядные, 32-разрядные, 64-разрядные;

Типу интерфейса: командные (текстовые) и объектно-ориентированные (графические);

Типу доступа пользователя к ЭВМ: с пакетной обработкой, с разделением времени, реального времени;

Типу использования ресурсов: сетевые, локальные.

В соответствии с первым признаком классификации многопользовательские операционные системы, в отличие от однопользовательских, поддерживают одновременную работу на ЭВМ нескольких пользователей за различными терминалами.

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

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

Четвертый признак подразделяет операционные системы на 8-, 16-, 32- и 64-разрядные. При этом подразумевается, что разрядность операционной системы не может превышать разрядности процессора.

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

Пакетной обработки, в которых из программ, подлежащих выполнению, формируется пакет (набор) заданий, вводимых в ЭВМ и выполняемых в порядке очередности с возможным учетом приоритетности;

Разделения времени (TSR), обеспечивающих одновременный диалоговый (интерактивный) режим доступа к ЭВМ нескольких пользователей на разных терминалах, которым по очереди выделяются ресурсы машины, что координируется операционной системой в соответствии с заданной дисциплиной обслуживания;

Реального времени, обеспечивающих определенное гарантированное время ответа машины на запрос пользователя с управлением им какими-либо внешними но отношению к ЭВМ событиями, процессами или объектами.

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

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

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

Увеличение пропускной способности ЭВМ, т.е. увеличение общего объема работы, выполняемой ЭВМ в единицу времени;

Уменьшение времени реакции системы, т.е. сокращение интервала времени между моментами поступления заданий в ЭВМ и моментами времени получения результатов;

Контроль работоспособности технических и программных средств;

Помощь пользователям и операторам при использовании ими технических и программных средств, обеспечения их работы;

Управление программами и данными в ходе вычислений;

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

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

Основная функция всех операционных систем - посредническая . Она заключается в обеспечении нескольких видов интерфейса:

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

Интерфейса между программным и аппаратным обеспечением (аппаратно-программный интерфейс);

Интерфейса между разными видами программного обеспечения (программный интерфейс).

Даже для одной аппаратной платформы, например такой, как IBM PC, существует несколько операционных систем. Различия между ними рассматривают в двух кате­гориях: внутренние и внешние. Внутренние различия характеризуются методами реализации основных функций. Внешние различия определяются наличием и доступностью приложений данной системы, необходимых для удовлетворения тех­нических требований, предъявляемых к конкретному рабочему месту.

Основные критерии подхода к выбору операционной системы:

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

Чтобы выбрать ту или иную ОС, необходимо знать:

На каких аппаратных платформах и с какой скоростью работает ОС;

Какое периферийное аппаратное обеспечение ОС поддерживает;

Как полно удовлетворяет ОС потребности пользователя, то есть каковы функции системы;

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

Существуют ли информативные подсказки, встроенные справочники и т. д.;

Какова надежность системы, то есть ее устойчивость к ошибкам пользователя, отказам оборудования и т. д.;

Какие возможности предоставляет ОС для организации сетей;

Обеспечивает ли ОС совместимость с другими операционными системами;

Какие инструментальные средства имеет ОС для разработки прикладных программ;

Осуществляется ли в ОС поддержка различных национальных языков;

Какие известные пакеты прикладных программ можно использовать при работе с данной системой;

Как осуществляется в ОС защита информации и самой системы.

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

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

Курс по операционным системам состоит из 9 лекций, каждая из которых посвящена определенной теме. Его цель — объяснить основные принципы дизайна ОС. Вы узнаете о причинах их появления, о том, какие проблемы пришлось решать инженерам и как им это удалось. Также курс расскажет, какие ресурсы компьютера используются ОС, что такое треды, виртуальная память. После просмотра вы узнаете, как бороться с дедлоками, сегментацией памяти, а также множество других понятий, которые являются неотъемлемой частью курса операционных систем.

1. Что такое компьютер и операционная система

В этом видео вы познакомитесь с такими понятиями как компьютер, операционная система, и другими ключевыми определениями курса.

2. Эволюция ОС. Фундаментальные проблемы. Слои абстракции.

Главные проблемы компьютера и разработки ОС.

3. Представление и обработка процессов. Структуры данных. Очереди.

Здесь вам помогут разобраться в способах представления задач в ОС.

4. Треды. SMP. Микроядро

Главная цель очередного видео – объяснить, что такое потоки и чем они отличаются от процессов. Также вы узнаете, что такое категории параллельных машин и микроядро.

5. Взаимное исключение. Семафоры. Мониторы. Передача сообщений. Проблема чтения/записи.

Если вы хотели узнать, как решить проблемы, которые могут возникнуть с работой множества процессов на одной системе.

6. Дедлок. Проблема обедающих философов.

Видео о проблемах, связанных с ограниченными ресурсами и несколькими процессами.

7. Организация памяти. Виртуальная память.

Для чего нужно использовать виртуальную память и как решать проблемы организации памяти – тема этой лекции.

8. Планирование выполнения задач. Диспетчеризация.

Вы изучите классические методы планирования процессов, а также сложности, возникающие вместе с ними.

9. Ввод и вывод

В заключительном видео курса будут рассмотрены принципы работы с устройствами ввода и вывода.

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

Что такое операционная система

Структура вычислительной системы

Из чего состоит любая вычислительная система? Во-первых, из того, что в англоязычных странах принято называть словом hardware, или техническое обеспечение: процессор , память, монитор, дисковые устройства и т.д., объединенные магистральным соединением, которое называется шиной. Некоторые сведения об архитектуре компьютера имеются в приложении 1 к настоящей лекции.

Во-вторых, вычислительная система состоит из программного обеспечения. Все программное обеспечение принято делить на две части: прикладное и системное. К прикладному программному обеспечению, как правило, относятся разнообразные банковские и прочие бизнес-программы, игры, текстовые процессоры и т. п. Под системным программным обеспечением обычно понимают программы, способствующие функционированию и разработке прикладных программ. Надо сказать, что деление на прикладное и системное программное обеспечение является отчасти условным и зависит от того, кто осуществляет такое деление. Так, обычный пользователь, неискушенный в программировании, может считать Microsoft Word системной программой, а, с точки зрения программиста, это – приложение. Компилятор языка Си для обычного программиста – системная программа, а для системного – прикладная. Несмотря на эту нечеткую грань, данную ситуацию можно отобразить в виде последовательности слоев (см. рис. 1.1), выделив отдельно наиболее общую часть системного программного обеспечения – операционную систему:

Рис. 1.1. Слои программного обеспечения компьютерной системы

Что такое ОС

Большинство пользователей имеет опыт эксплуатации операционных систем , но тем не менее они затруднятся дать этому понятию точное определение. Давайте кратко рассмотрим основные точки зрения.

Операционная система как виртуальная машина

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

Архитектура большинства компьютеров на уровне машинных команд очень неудобна для использования прикладными программами. Например, работа с диском предполагает знание внутреннего устройства его электронного компонента – контроллера для ввода команд вращения диска, поиска и форматирования дорожек, чтения и записи секторов и т. д. Ясно, что средний программист не в состоянии учитывать все особенности работы оборудования (в современной терминологии – заниматься разработкой драйверов устройств), а должен иметь простую высокоуровневую абстракцию, скажем представляя информационное пространство диска как набор файлов. Файл можно открывать для чтения или записи, использовать для получения или сброса информации, а потом закрывать. Это концептуально проще, чем заботиться о деталях перемещения головок дисков или организации работы мотора. Аналогичным образом, с помощью простых и ясных абстракций, скрываются от программиста все ненужные подробности организации прерываний , работы таймера, управления памятью и т. д. Более того, на современных вычислительных комплексах можно создать иллюзию неограниченного размера оперативной памяти и числапроцессоров . Всем этим занимаетсяоперационная система . Таким образом,операционная система представляется пользователювиртуальной машиной , с которой проще иметь дело, чем непосредственно с оборудованием компьютера.

Операционная система как менеджер ресурсов

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

Операционная система как защитник пользователей и программ

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

Операционная система как постоянно функционирующее ядро

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

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

Краткая история эволюции вычислительных систем

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

Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет

Мы начнем исследование развития компьютерных комплексов с появления электронных вычислительных систем (опуская историю механических и электромеханических устройств).

Первые шаги в области разработки электронных вычислительных машин были предприняты в конце Второй мировой войны. В середине 40-х были созданы первые ламповые вычислительные устройства и появился принцип программы, хранящейся в памяти машины (John Von Neumann, июнь 1945 г.). В то время одна и та же группа людей участвовала и в проектировании, и в эксплуатации, и в программировании вычислительной машины. Это была скорее научно-исследовательская работа в области вычислительной техники, а не регулярное использование компьютеров в качестве инструмента решения каких-либо практических задач из других прикладных областей. Программирование осуществлялось исключительно на машинном языке. Об операционных системах не было и речи, все задачи организации вычислительного процесса решались вручную каждым программистом с пульта управления. За пультом мог находиться только один пользователь. Программа загружалась в память машины в лучшем случае с колоды перфокарт, а обычно с помощью панели переключателей.

Вычислительная система выполняла одновременно только одну операцию (ввод-вывод или собственно вычисления). Отладка программ велась с пульта управления с помощью изучения состояния памяти и регистров машины. В конце этого периода появляется первое системное программное обеспечение: в 1951–1952 гг. возникают прообразы первых компиляторов с символических языков (Fortran и др.), а в 1954 г. Nat Rochester разрабатывает Ассемблер для IBM-701.

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

Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы

С середины 50-х годов начался следующий период в эволюции вычислительной техники, связанный с появлением новой технической базы – полупроводниковых элементов. Применение транзисторов вместо часто перегоравших электронныхламп привело к повышению надежности компьютеров. Теперь машины могут непрерывно работать достаточно долго, чтобы на них можно было возложить выполнение практически важных задач. Снижается потребление вычислительными машинами электроэнергии, совершенствуются системы охлаждения. Размеры компьютеров уменьшились. Снизилась стоимость эксплуатации и обслуживания вычислительной техники. Началось использование ЭВМ коммерческими фирмами. Одновременно наблюдается бурное развитие алгоритмических языков (LISP, COBOL, ALGOL-60, PL-1 и т.д.). Появляются первые настоящие компиляторы, редакторы связей, библиотеки математических и служебных подпрограмм. Упрощается процесс программирования. Пропадает необходимость взваливать на одних и тех же людей весь процесс разработки и использования компьютеров. Именно в этот период происходит разделение персонала на программистов и операторов, специалистов по эксплуатации и разработчиков вычислительных машин.

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

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

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

Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ОС

Следующий важный период развития вычислительных машин относится к началу 60-х – 1980 г. В это время в технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов кинтегральным микросхемам . Вычислительная техника становится более надежной и дешевой. Растет сложность и количество задач, решаемых компьютерами. Повышается производительностьпроцессоров .

Повышению эффективности использования процессорного времени мешает низкая скорость работы механических устройств ввода-вывода (быстрый считыватель перфокарт мог обработать 1200 перфокарт в минуту, принтеры печатали до 600 строк в минуту). Вместо непосредственного чтения пакета заданий с перфокарт в память начинают использовать его предварительную запись, сначала на магнитную ленту, а затем и на диск. Когда в процессе выполнения задания требуется ввод данных, они читаются с диска. Точно так же выходная информация сначала копируется в системный буфер и записывается на ленту или диск, а печатается только после завершения задания. Вначале действительные операции ввода-вывода осуществлялись в режиме off-line, то есть с использованием других, более простых, отдельно стоящих компьютеров. В дальнейшем они начинают выполняться на том же компьютере, который производит вычисления, то есть в режиме on-line. Такой прием получает название spooling (сокращение от Simultaneous Peripheral Operation On Line) или подкачки-откачки данных. Введение техники подкачки-откачки в пакетные системы позволило совместить реальные операции ввода-вывода одного задания с выполнением другого задания, но потребовало разработки аппаратапрерываний для извещенияпроцессора об окончании этих операций.

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

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

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

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

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

    Развитие параллелизма в архитектуре. Прямой доступ к памяти и организация каналов ввода-вывода позволили освободить центральный процессор от рутинных операций.

Не менее важна в организации мультипрограммирования роль операционной системы . Она отвечает за следующие операции.

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

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

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

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

    Организация хранения информации на внешних носителях в виде файлов и обеспечение доступа к конкретному файлу только определенным категориям пользователей.

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

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

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

Появление электронно-лучевых дисплеев и переосмысление возможностей применения клавиатур поставили на очередь решение этой проблемы. Логическим расширением систем мультипрограммирования стали time-sharing системы, или системы разделения времени 1) . В нихпроцессор переключается между задачами не только на время операций ввода-вывода, но и просто по прошествии определенного времени. Эти переключения происходят так часто, что пользователи могут взаимодействовать со своими программами во время их выполнения, то есть интерактивно. В результате появляется возможность одновременной работы нескольких пользователей на одной компьютерной системе. У каждого пользователя для этого должна быть хотя бы одна программа в памяти. Чтобы уменьшить ограничения на количество работающих пользователей, была внедрена идея неполного нахождения исполняемой программы в оперативной памяти. Основная часть программы находится на диске, и фрагмент, который необходимо в данный момент выполнять, может быть загружен в оперативную память, а ненужный – выкачан обратно на диск. Это реализуется с помощью механизма виртуальной памяти. Основным достоинством такого механизма является создание иллюзии неограниченной оперативной памяти ЭВМ.

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

Параллельно внутренней эволюции вычислительных систем происходила и внешняя их эволюция. До начала этого периода вычислительные комплексы были, как правило, несовместимы. Каждый имел собственную операционную систему , свою систему команд и т. д. В результате программу, успешно работающую на одном типе машин, необходимо было полностью переписывать и заново отлаживать для выполнения на компьютерах другого типа. В начале третьего периода появилась идея создания семейств программно совместимых машин, работающих под управлением одной и той жеоперационной системы . Первым семейством программно совместимых компьютеров, построенных наинтегральных микросхемах , стала серия машин IBM/360. Разработанное в начале 60-х годов, это семейство значительно превосходило машины второго поколения по критерию цена/производительность. За ним последовала линия компьютеров PDP, несовместимых с линией IBM, и лучшей моделью в ней стала PDP-11.

Сила "одной семьи" была одновременно и ее слабостью. Широкие возможности этой концепции (наличие всех моделей: от мини-компьютеров до гигантских машин; обилие разнообразной периферии; различное окружение; различные пользователи) порождали сложную и громоздкую операционную систему . Миллионы строчек Ассемблера, написанные тысячами программистов, содержали множество ошибок, что вызывало непрерывный поток публикаций о них и попыток исправления. Только воперационной системе OS/360 содержалось более 1000 известных ошибок. Тем не менее идея стандартизацииоперационных систем была широко внедрена в сознание пользователей и в дальнейшем получила активное развитие.

Четвертый период (с 1980 г. по настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы

Следующий период в эволюции вычислительных систем связан с появлением больших интегральных схем (БИС). В эти годы произошло резкое возрастание степени интеграции и снижение стоимости микросхем. Компьютер, не отличающийся по архитектуре от PDP-11, по цене и простоте эксплуатации стал доступен отдельному человеку, а не отделу предприятия или университета. Наступила эра персональных компьютеров. Первоначально персональные компьютеры предназначались для использования одним пользователем в однопрограммном режиме, что повлекло за собой деградацию архитектуры этих ЭВМ и ихоперационных систем (в частности, пропала необходимость защиты файлов и памяти, планирования заданий и т. п.).

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

Однако рост сложности и разнообразия задач, решаемых на персональных компьютерах, необходимость повышения надежности их работы привели к возрождению практически всех черт, характерных для архитектуры больших вычислительных систем.

В середине 80-х стали бурно развиваться сети компьютеров, в том числе персональных, работающих под управлением сетевых илираспределенных операционных систем .

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

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

В дальнейшем автономные операционные системы мы будем называть классическимиоперационными системами .

Просмотрев этапы развития вычислительных систем, мы можем выделить шесть основных функций, которые выполняли классические операционные системы в процессе эволюции:

    Планирование заданий и использования процессора .

    Обеспечение программ средствами коммуникации и синхронизации.

    Управление памятью.

    Управление файловой системой.

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

    Обеспечение безопасности

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

Основные понятия, концепции ОС

В процессе эволюции возникло несколько важных концепций, которые стали неотъемлемой частью теории и практики ОС . Рассматриваемые в данном разделе понятия будут встречаться и разъясняться на протяжении всего курса. Здесь дается их краткое описание.

Системные вызовы

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

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

Основное отличие состоит в том, что при системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode). Поэтомусистемные вызовы иногда еще называют программнымипрерываниями , в отличие от аппаратныхпрерываний , которые чаще называют простопрерываниями .

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

В большинстве операционных систем системный вызов осуществляется командой программногопрерывания (INT). Программноепрерывание – это синхронное событие, которое может быть повторено при выполнении одного и того же программного кода.

Прерывания

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

Исключительные ситуации

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

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

Главная задача файловой системы (file system) – скрыть особенности ввода-вывода и дать программисту простую абстрактную модель файлов, независимых от устройств. Для чтения, создания, удаления, записи, открытия и закрытия файлов также имеется обширная категория системных вызовов (создание, удаление, открытие, закрытие, чтение и т.д.). Пользователям хорошо знакомы такие связанные с организацией файловой системы понятия, как каталог, текущий каталог, корневой каталог, путь. Для манипулирования этими объектами воперационной системе имеютсясистемные вызовы . Файловая системаОС описана в лекциях 11–12.

Процессы, нити

Концепция процесса в ОС одна из наиболее фундаментальных. Процессы подробно рассмотрены в лекциях 2–7. Там же описаны нити, или легковесные процессы.

Архитектурные особенности ОС

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

Монолитное ядро

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

Во многих операционных системах смонолитным ядром сборка ядра, то есть его компиляция, осуществляется отдельно для каждого компьютера, на который устанавливаетсяоперационная система . При этом можно выбрать список оборудования и программных протоколов, поддержка которых будет включена в ядро. Так как ядро является единой программой, перекомпиляция – это единственный способ добавить в него новые компоненты или исключить неиспользуемые. Следует отметить, что присутствие в ядре лишних компонентов крайне нежелательно, так как ядро всегда полностью располагается в оперативной памяти. Кроме того, исключение ненужных компонентов повышает надежностьоперационной системы в целом.

Монолитное ядро – старейший способ организацииоперационных систем . Примером систем смонолитным ядром является большинство Unix-систем.

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

Многоуровневые системы (Layered systems)

Продолжая структуризацию, можно разбить всю вычислительную систему на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты уровня N-1. Нижним уровнем в таких системах обычно является hardware, верхним уровнем – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой (Dijkstra) и его студентами в 1968 г. Эта система имела следующие уровни:

Рис. 1.2. Слоеная система THE

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

Виртуальные машины

В начале лекции мы говорили о взгляде на операционную систему как навиртуальную машину , когда пользователю нет необходимости знать детали внутреннего устройства компьютера. Он работает с файлами, а не с магнитными головками и двигателем; он работает с огромной виртуальной, а не ограниченной реальной оперативной памятью; его мало волнует, единственный он на машине пользователь или нет. Рассмотрим несколько иной подход. Пустьоперационная система реализуетвиртуальную машину для каждого пользователя, но не упрощая ему жизнь, а, наоборот, усложняя. Каждая такаявиртуальная машина предстает перед пользователем как голое железо – копия всего hardware в вычислительной системе, включаяпроцессор , привилегированные и непривилегированные команды, устройства ввода-вывода,прерывания и т.д. И он остается с этим железом один на один. При попытке обратиться к такому виртуальному железу на уровне привилегированных команд в действительности происходитсистемный вызов реальнойоперационной системы , которая и производит все необходимые действия. Такой подход позволяет каждому пользователю загрузить своюоперационную систему навиртуальную машину и делать с ней все, что душа пожелает.

Рис. 1.3. Вариант виртуальной машины

Первой реальной системой такого рода была система CP/CMS, или VM/370, как ее называют сейчас, для семейства машин IBM/370.

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

Микроядерная архитектура

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

Рис. 1.4. Микроядерная архитектура операционной системы

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

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

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

Смешанные системы

Все рассмотренные подходы к построению операционных систем имеют свои достоинства и недостатки. В большинстве случаев современныеоперационные системы используют различные комбинации этих подходов. Так, например, ядрооперационной системы Linux представляет собой монолитную систему с элементамимикроядерной архитектуры . При компиляции ядра можно разрешить динамическую загрузку и выгрузку очень многих компонентов ядра – так называемых модулей. В момент загрузки модуля его код загружается на уровне системы и связывается с остальной частью ядра. Внутри модуля могут использоваться любые экспортируемые ядром функции.

Другим примером смешанного подхода может служить возможность запуска операционной системы смонолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляетсямонолитным ядром . Данный подход сформировался в результате попыток использовать преимуществамикроядерной архитектуры , сохраняя по возможности хорошо отлаженный кодмонолитного ядра .

Наиболее тесно элементы микроядерной архитектуры и элементымонолитного ядра переплетены в ядре Windows NT. Хотя Windows NT часто называют микроядернойоперационной системой , это не совсем так. Микроядро NT слишком велико (более 1 Мбайт), чтобы носить приставку "микро". Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерныхоперационных системах . В то же время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственнооперационным системам смонолитным ядром . По мнению специалистов Microsoft, причина проста: чисто микроядерный дизайн коммерчески невыгоден, поскольку неэффективен.

Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой .

Классификация ОС

Существует несколько схем классификации операционных систем . Ниже приведена классификация по некоторым признакам с точки зрения пользователя.

Реализация многозадачности

По числу одновременно выполняемых задач операционные системы можно разделить на два класса:

    многозадачные (Unix, OS/2, Windows);

    однозадачные (например, MS-DOS).

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

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

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

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

Поддержка многопользовательского режима

По числу одновременно работающих пользователей ОС можно разделить на:

    однопользовательские (MS-DOS, Windows 3.x);

    многопользовательские (Windows NT, Unix).

Наиболее существенное отличие между этими ОС заключается в наличии умногопользовательских систем механизмов защиты персональных данных каждого пользователя.

Многопроцессорная обработка

Вплоть до недавнего времени вычислительные системы имели один центральный процессор . В результате требований к повышению производительности появилисьмногопроцессорные системы , состоящие из двух и болеепроцессоров общего назначения, осуществляющих параллельное выполнение команд. Поддержка мультипроцессирования является важным свойствомОС и приводит к усложнению всех алгоритмов управления ресурсами. Многопроцессорная обработка реализована в такихОС , как Linux, Solaris, Windows NT, и ряде других.

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

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

Системы реального времени

В разряд многозадачных ОС , наряду спакетными системами исистемами разделения времени , включаются такжесистемы реального времени , не упоминавшиеся до сих пор.

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

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

Приведенная классификация ОС не является исчерпывающей. Более подробно особенности применения современныхОС рассмотрены в [Олифер, 2001 ].

Заключение

Мы рассмотрели различные взгляды на то, что такое операционная система ; изучили историю развитияоперационных систем ; выяснили, какие функции обычно выполняютоперационные системы ; наконец, разобрались в том, какие существуют подходы к построениюоперационных систем . Следующую лекцию мы посвятим выяснению понятия "процесс" и вопросам планирования процессов.

Приложение 1.

Некоторые сведения об архитектуре компьютера

Основными аппаратными компонентами компьютера являются: основная память, центральный процессор и периферийные устройства. Для обмена данными между собой эти компоненты соединены группой проводов, называемой магистралью (см.рис.1.5 ).

Рис. 1.5. Некоторые компоненты компьютера

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

Выполнение различных операций с данными осуществляется изолированной частью компьютера, называемой центральным процессором (ЦП). ЦП также имеет ячейки для запоминания информации, называемые регистрами. Их разделяют на регистры общего назначения и специализированные регистры. В современных компьютерах емкость регистра обычно составляет 4–8 байт. Регистры общего назначения используются для временного хранения данных и результатов операций. Для обработки информации обычно организовывается передача данных из ячеек памяти в регистры общего назначения, выполнение операции центральнымпроцессором и передача результатов операции в основную память.

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

Программы хранятся в виде последовательности машинных команд, которые должен выполнять центральный процессор . Каждая команда состоит из поля операции и полей операндов, то есть тех данных, над которыми выполняется данная операция. Весь набор машинных команд называется машинным языком.

Выполнение программы осуществляется следующим образом. Машинная команда, на которую указывает программный счетчик, считывается из памяти и копируется в регистр команд. Здесь она декодируется, после чего исполняется. После выполнения команды программный счетчик указывает на следующую команду. Эти действия, называемые машинным циклом, затем повторяются.

Взаимодействие с периферийными устройствами

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

Любая операция ввода-вывода предполагает диалог между ЦП и контроллером устройства. Когда процессору встречается команда, связанная с вводом-выводом, входящая в состав какой-либо программы, он выполняет ее, посылая сигналы контроллеру устройства. Это так называемый программируемый ввод-вывод.

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

В современных компьютерах также имеется возможность непосредственного взаимодействия между контроллером и основной памятью, минуя ЦП, – так называемый механизм прямого доступа к памяти.

1) Реальная эволюция операционных систем происходила не так гладко и планомерно, как это представлено в данном обзоре. Так, например, первая система с разделением времени Joss была реализована еще на ламповой машине Joniac безо всякой аппаратной поддержки.

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

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

Обучение в университете ведется по собственным учебным планам, разработанным ведущими российскими специалистами на основе международных образовательных стандартов Computer Curricula 2001 Computer Science. Изучать учебные курсы можно самостоятельно по учебникам или на сайте Интернет-университета, задания выполняются только на сайте. Для обучения необходимо зарегистрироваться на сайте университета. Удостоверение об окончании учебного курса или специальности выдается при условии выполнения всех заданий к лекциям и успешной сдачи итогового экзамена.

Содержание
Часть I. Обзор 13
Лекция 1. Введение 13

Что такое операционная система 13
Краткая история эволюции вычислительных систем 16
Основные понятия, концепции ОС 24
Архитектурные особенности ОС 27
Классификация ОС 32
Заключение 34
Часть II. Процессы и их поддержка в операционной системе 41
Лекция 2. Процессы 41

Понятие процесса 41
Состояния процесса 43
Операции над процессами и связанные с ними понятия 46
Заключение 54
Лекция 3. Планирование процессов 59
Уровни планирования 59
Критерии планирования и требования к алгоритмам 61
Параметры планирования 62
Вытесняющее и невытесняющее планирование 64
Алгоритмы планирования 65
Заключение 82
Лекция 4. Кооперация процессов и основные аспекты ее логической организации 87
Взаимодействующие процессы 87
Категории средств обмена информацией 89
Логическая организация механизма передачи информации 90
Нити исполнения 96
Заключение 100
Лекция 5. Алгоритмы синхронизации 105
Interleaving, race condition и взаимоисключения 105
Критическая секция 108
Программные алгоритмы организации взаимодействия процессов 111
Аппаратная поддержка взаимоисключений 117
Заключение 119
Лекция 6. Механизмы синхронизации 123
Семафоры 123
Мониторы 126
Сообщения 129
Эквивалентность семафоров, мониторов и сообщений 130
Заключение 133
Лекция 7. Тупики 141
Введение 141
Условия возникновения тупиков 143
Основные направления борьбы с тупиками 143
Игнорирование проблемы тупиков 144
Способы предотвращения тупиков 144
Обнаружение тупиков 149
Восстановление после тупиков 150
Заключение 151
Часть III. Управление памятью 155
Лекция 8. Организация памяти компьютера. Простейшие схемы управления памятью 155

Введение 155
Простейшие схемы управления памятью 161
Страничная память 166
Сегментная и сегментно-страничная организация памяти 168
Заключение 171
Лекция 9. Виртуальная память. Архитектурные средства поддержки виртуальной памяти 175
Понятие виртуальной памяти 175
Архитектурные средства поддержки виртуальной памяти 177
Заключение 185
Лекция 10. Аппаратно-независимый уровень управления виртуальной памятью 189
Исключительные ситуации при работе с памятью 189
Стратегии управления страничной памятью 190
Алгоритмы замещения страниц 191
Управление количеством страниц, выделенным процессу. Модель рабочего множества 197
Страничные демоны 200
Программная поддержка сегментной модели памяти процесса 201
Отдельные аспекты функционирования менеджера памяти 203
Заключение 205
Часть IV. Файловые системы 209
Лекция 11. Файлы с точки зрения пользователя 209

Введение 209
Общие сведения о файлах 212
Организация файлов и доступ к ним 214
Операции над файлами 217
Директории. Логическая структура файлового архива 218
Операции над директориями 222
Защита файлов 223
Заключение 224
Лекция 12. Реализация файловой системы 229
Общая структура файловой системы 229
Управление внешней памятью 232
Реализация директорий 240
Монтирование файловых систем 243
Связывание файлов 245
Кооперация процессов при работе с файлами 247
Надежность файловой системы 250
Производительность файловой системы 254
Реализация некоторых операций над файлами 256
Современные архитектуры файловых систем 259
Заключение 260
Часть V. Ввод-вывод 265
Лекция 13. Система управления вводом-выводом 265

Физические принципы организации ввода-вывода 266
Логические принципы организации ввода-вывода 276
Алгоритмы планирования запросов к жесткому диску 286
Заключение 291
Часть VI. Сети и сетевые операционные системы 295
Лекция 14. Сети и сетевые операционные системы 295

Для чего компьютеры объединяют в сети 296
Сетевые и распределенные операционные системы 297
Взаимодействие удаленных процессов как основа работы вычислительных сетей 298
Основные вопросы логической организации передачи информации между удаленными процессами 301
Понятие протокола 302
Многоуровневая модель построения сетевых вычислительных систем 304
Проблемы адресации в сети 308
Проблемы маршрутизации в сетях 315
Связь с установлением логического соединения и передача данных с помощью сообщений 318
Синхронизация удаленных процессов 320
Заключение 320
Часть VII. Проблемы безопасности операционных систем 325
Лекция 15. Основные понятия информационной безопасности 325

Введение 325
Угрозы безопасности 327
Формализация подхода к обеспечению информационной безопасности 329
Криптография как одна из базовых технологий безопасности ОС 331
Заключение 335
Лекция 16. Защитные механизмы операционных систем 339
Идентификация и аутентификация 339
Авторизация. Разграничение доступа к объектам ОС 342
Выявление вторжений. Аудит системы защиты 347
Анализ некоторых популярных ОС с точки зрения их защищенности 348
Заключение 353
Семинары 357
Семинары 1-2. Введение в курс практических занятий. Знакомство с операционной системой UNIX 357
Семинары 3-4. Процессы в операционной системе UNIX 385
Семинар 5. Организация взаимодействия процессов через pipe и FIFO в UNIX 403
Семинары 6-7. Средства System V IPC. Организация работы с разделяемой памятью в UNIX. Понятие нитей исполнения (thread) 431
Семинар 8. Семафоры в UNIX как средство синхронизации процессов 465
Семинар 9. Очереди сообщений в UNIX 479
Семинары 10-11. Организация файловой системы в UNIX. Работа с файлами и директориями. Понятие о memory mapped файлах 501
Семинары 12-13. Организация ввода-вывода в UNIX. Файлы устройств. Аппарат прерываний. Сигналы в UNIX 539
Семинары 14-15. Семейство протоколов TCP/IP. Сокеты (sockets) в UNIX и основы работы с ними 575
Литература 627.