j Операционные системы: учеб. пособие. Автор Дроздов / Купить книгу, доставка почтой, скачать бесплатно, читать онлайн, низкие цены со скидкой, ISBN 978-5-222-25569-8

{{common_error}}
СКИДКИ! При заказе книг на сумму от 1500 руб. – скидка 50% от стоимости доставки в пункты выдачи BoxBerry и CDEK,
при заказе книг на сумму от 3000 руб. — скидка 80% от стоимости доставки в пункты выдачи BoxBerry и CDEK.

Операционные системы: учеб. пособие. (Дроздов)Купить книгу, доставка почтой, скачать бесплатно, читать онлайн, низкие цены со скидкой, ISBN 978-5-222-25569-8

Операционные системы: учеб. пособие
Название книги Операционные системы: учеб. пособие
Автор Дроздов
Год публикации 2016
Издательство Феникс
Раздел каталога Информационные и компьютерные технологии (ID = 121)
Серия книги Высшее образование
ISBN 978-5-222-25569-8
EAN13 9785222255698
Артикул O0071498
Количество страниц 361
Тип переплета матовая+лакировка
Формат 84*108/32
Вес, г 383

Посмотрите, пожалуйста, возможно, уже вышло следующее издание этой книги и оно здесь представлено:

Аннотация к книге "Операционные системы: учеб. пособие"
автор Дроздов

В учебном пособии рассматриваются общие принципы функционирования операционных систем (ОС), а также основные алгоритмы и структуры данных, используемые при разработке отдельных подсистем и модулей ОС: описываются подсистемы управления устройствами, данными, процессами и памятью. В качестве примеров ОС рассмотрены Windows, UNIX и MS-DOS. Учебное пособие предназначено для студентов, обучающихся по направлениям подготовки бакалавриата 09.03.04 "Программная инженерия" и 02.03.03 "Математическое обеспечение и администрирование информационных систем".

Читать онлайн выдержки из книги "Операционные системы: учеб. пособие"
(Автор Дроздов)

К сожалению, посмотреть онлайн и прочитать отрывки из этого издания на нашем сайте сейчас невозможно, а также недоступно скачивание и распечка PDF-файл.

До книги"Операционные системы: учеб. пособие"
Вы также смотрели...

Читать онлайн выдержки из книги "Операционные системы: учеб. пособие" (Автор Дроздов)

С. Н. Дроздов
ОПЕРАЦИОННЫЕ СИСТЕМЫ
Учебное пособие
Рекомендовано УМО РАЕ по классическому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлениям подготовки 09.03.04
«Программная инженерия», 02.03.03 «Математическое обеспечение и администрирование информационных систем» (протокол № 491 от 24 декабря 2014 года)
Ростов-на-Дону «Феникс» 2016
ВВЕДЕНИЕ
Предметом изучения в данном курсе являются операционные системы (ОС) современных компьютеров.
Операционные системы можно отнести к наиболее сложным, структурированным и формализованным достижениям научно-технического интеллекта человечества. Современная ОС — это миллионы строк кода, для разработки и сопровождения которого требуются усилия сотен программистов.
В первом приближении ОС можно определить как комплекс программ, обеспечивающих интерфейс между аппаратурой компьютера, прикладными программами и пользователем компьютера. Соответственно этому определению все функции, выполняемые ОС, подчинены решению двух основных задач:

организация эффективной работы аппаратуры компьютера;

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

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

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

практическое воплощение этих принципов, алгоритмов, структур в наиболее распространенных современных ОС.

В задачи курса не входит обучение практическим приемам работы с конкретными ОС. Это гораздо лучше делать самостоятельно. С другой стороны, не ставится и задача научить слушателей разрабатывать новые ОС. Хотелось бы, чтобы студенты при изучении данного предмета достигли такого уровня знаний, который можно сравнить с уровнем знаний об устройстве автомобиля, полезным хорошему водителю. Ему не обязательно быть автомехаником, однако он должен в основных чертах понимать, что находится под капотом и как оно там все функционирует. Примерно та же степень понимания требуется программисту, который должен решать прикладные задачи, грамотно и эффективно используя возможности операционной системы. С другой стороны, материал данного учебного пособия может послужить основой для дальнейшего, более глубокого изучения проблем проектирования и реализации ОС.
Материал учебного пособия разделен на пять частей. В первой части излагаются основные сведения об ОС, их истории, структуре и функциях, о критериях оценки ОС и их отдельных подсистем. Приводится также сжатый обзор основных понятий архитектуры компьютеров, без которых невозможно понимание функционирования ОС.
В остальных частях учебного пособия рассматриваются основные функциональные подсистемы ОС, к которым традиционно относятся подсистемы управления устройствами, данными, процессами и памятью. В отличие от большинства книг на сходные темы, наиболее важный аспект функционирования ОС, которым, безусловно, является управление процессами, рассматривается не в начале курса, а лишь после знакомства с управлением периферийными устройствами и файловыми системами. Это дает возможность сделать изложение вопросов управления процессами более предметным, позволяет иллюстрировать понятия процесса и ресурса на примерах работы с файлами и устройствами.
Для каждой из подсистем ОС вначале рассматриваются основные понятия и проблемы, связанные с ее работой, а затем дается краткое описание реализации соответствующей подсистемы в конкретных ОС. Основное внимание уделяется при этом трем системам: MS-DOS, Microsoft Windows и UNIX. Если выбор Windows и UNIX объясняется их широкой распространенностью в настоящее время и в ближайшей перспективе, то MS-DOS, хотя и утратившая свои позиции, остается наиболее реалистичным примером однозадачной ОС. Это позволяет отделить изложение общих проблем и решений, относящихся ко всем типам ОС, от значительно более сложных задач, связанных с реализацией многозадачности. Кроме того, знакомство с MS-DOS позволяет лучше понять многие особенности пришедшей ей на смену системы Windows.
Работа выполнена в рамках базовой части государственного задания по теме «Информационно-алгоритмическое обеспечение систем цифрового управления, автономной высокоточной навигации и технического зрения для перспективных летательных аппаратов: разработка теоретических основ проектирования, алгоритмов, способов эффективной и надежной программной реализации, использование высокопроизводительной вычислительной инфраструктуры для экспериментального моделирования».
Часть 1. ОСНОВНЫЕ СВЕДЕНИЯ ОБ ОПЕРАЦИОННЫХ СИСТЕМАХ

Краткий очерк истории ОС

Изучение истории развития ОС показывает, что все существенные продвижения в области архитектуры ОС связаны с влиянием двух основных факторов:

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

принципиально новые идеи, возникающие у проектировщиков ОС.

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

Предыстория ОС

Вскоре после того как в конце 40-х гг. XX в. были созданы первые электронные компьютеры, очень остро встала проблема повышения эффективности использования оборудования, и прежде всего — центрального процессора.
Типичный компьютер первого-второго поколений представлял собой большую комнату, уставленную шкафами и увитую кабелями. Каждое из основных устройств — центральный процессор, оперативная память, накопители на магнитных лентах, устройства ввода с перфокарт, принтер — занимало один или несколько «шкафов» или «тумб», наполненных радиолампами и механическими частями.
Все это стоило больших денег, потребляло бешеное количество электроэнергии и регулярно ломалось.
Как вспоминают разработчики первого советского компьютера МЭСМ (Малой(!) электронной счетной машины), «накал шести тысяч радиоламп создавал температуру накаленной солнцем пустыни». При включении машины приходилось зимой открывать все окна, чтобы удержать температуру в машинном зале не выше 30° [8].
В таких условиях машинное время стоило очень дорого. Тем не менее обычная практика использования ЭВМ не способствовала экономии. Как правило, программист, разрабатывавший программу, заказывал ежедневно несколько часов машинного времени, в течение которого монопольно использовал компьютер. Выполнив очередной запуск отлаживаемой программы (которую надо было каждый раз вводить либо с клавиатуры, либо, в лучшем случае, с перфокарт или перфоленты), пользователь получал распечатку (чаще всего в виде массива цифр), анализировал результаты, вносил изменения в программу и снова запускал ее. Таким образом, в ходе сеанса отладки дорогостоящее оборудование простаивало 99% времени, пока программист осмысливал результаты и работал с устройствами ввода/вывода. Кроме того, сбой при вводе одной перфокарты мог потребовать начать сначала всю работу программы.
Возникла великая идея — использовать сам компьютер для повышения эффективности работы с ним же.
Одно из ответвлений этой идеи — создание языков и систем программирования — рассматривается в отдельных курсах. Другим важным шагом стало возложение на специальную компьютерную программу части тех функций, которые до этого выполнял оператор или сам программист.
Программы такого рода назывались обычно мониторами (не путать с монитором как устройством вывода, который в то время был редчайшей экзотикой!). Монитор принимал команды, состоявшие, как правило, из 1-2 букв названия и 1-3 аргументов, заданных 8-ричными или 16-ричными числами. Типичными командами были, например:

загрузка данных с перфокарт по указанному адресу памяти;

просмотр и корректировка (с пишущей машинки) значений в указанном диапазоне адресов;

пошаговое выполнение программы с выдачей результатов каждой команды на пишущую машинку;

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

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

Пакетные ОС

История собственно ОС началась с появления в конце 1950-х гг. первых систем, организовывавших работу по пакетному принципу.
Важнейшим организационным изменением, происшедшим на этом этапе развития, стало массовое изгнание программистов из машинных залов как фактора, лишь вносящего сумятицу в работу.
Теперь от программиста требовалось собрать пакет перфокарт, содержащий его программу, данные к ней, а также управляющие перфокарты. Эти карты на специально разработанном языке управления заданиями (JCL, Job Control Language) объясняли операционной системе, чье это задание, что нужно сделать с программой (например, передать ее транслятору с Фортрана), что предпринять в случае успешной трансляции (вероятно, пустить на решение), что — при наличии ошибок (например, перейти к другой программе), откуда взять исходные данные (например, с такого-то цилиндра магнитного диска). Кроме того, там могли быть даже указания на то, сколько метров бумаги можно выделить на распечатку и какое максимальное время может занять работа программы.
Обойтись без столь подробных инструкций было нельзя, потому что программист не присутствовал при запуске задания и не мог вмешаться лично.
Подготовленный пакет передавался вместе с другими подобными пакетами оператору ЭВМ, перед которым стояли две основные задачи: чтобы в устройстве ввода не переводились пакеты заданий и чтобы в принтере не заканчивалась бумага. Когда процессор заканчивал обработку задания и печать его результатов, он вводил следующий пакет и приступал к его обработке. Так достигалась основная цель пакетного режима — исключить простои процессора из-за нерасторопности людей.
В скором времени разработчики ОС осознали, что исчерпаны далеко не все резервы повышения загрузки процессора. Операции ввода и печати требовали лишь очень небольшой доли от полной производительности процессора. Кроме того, в ходе работы программы случались обращения к периферийным устройствам (например, к магнитным лентам, а затем к дискам), при выполнении которых процессор опять простаивал. Целесообразно было найти способ, чтобы в эти периоды ожидания загрузить процессор другой работой. Но для этого необходимо, чтобы в памяти процессора находились сразу несколько программ, тогда ОС смогла бы переключать процессор на выполнение той программы, которая в данный момент может работать.
Такая организация работы, когда в памяти находятся несколько программ и система в определенные моменты переключает выполнение с одной программы на другую, была названа мультипрограммированием. Эта важная идея в разных воплощениях пережила те пакетные системы, в которых она впервые была реализована, и является основой для функционирования практически всех современных ОС.
Среди наиболее развитых пакетных ОС с мультипрограммированием нельзя не назвать OS/360 [10], основную ОС знаменитого в 60-70 гг. ХХ в. семейства ЭВМ IBM 360/370.

ОС с разделением времени

На рубеже 60-70 гг. ХХ в. распространенным и не слишком дорогим периферийным устройством становятся мониторы (сначала монохромные и работающие только в текстовом режиме). При этом процессор и ОЗУ остаются самыми дорогими и громоздкими устройствами вычислительной системы. В этих условиях возникает и быстро приобретает популярность принципиально новый тип ОС — системы с разделением времени.
К одной ЭВМ подключается несколько десятков рабочих мест, оборудованных дисплеем (этот термин тогда обозначал комбинацию из монитора и клавиатуры) и совместно использующих вычислительные ресурсы ЭВМ. Процессорное время делится на кванты длительностью в несколько десятков миллисекунд, и по истечении каждого кванта процессор может быть переключен на обслуживание другого процесса, другого дисплея. Так как теперь подготовку текстов программ выполняют сами программисты за дисплеями, а работа по редактированию текста требует очень малых затрат процессорного времени, процессор успевает обслужить все рабочие места практически без ощутимой задержки. Большая часть времени процессора уделяется небольшому числу рабочих мест, где в данный момент запущены на выполнение программы. При этом, средняя скорость работы каждой программы уменьшается, по крайней мере, во столько раз, сколько программ выполняется одновременно.
Режим разделения времени стал огромным облегчением для программистов, которые вновь смогли в некоторой степени почувствовать себя «хозяевами» ЭВМ и получили возможность запускать программы на трансляцию и отладку хоть каждые 5 минут. Это позволило сократить сроки разработки и отладки программ.
Для трудоемких вычислительных заданий, предусматривающих счет по ранее отлаженным программам, режим разделения времени менее эффективен, чем пакетный, поскольку частое переключение процессора между выполняемыми программами требует дополнительных затрат времени.
Системы разделения времени функционируют в режиме диалога с пользователем, поэтому вместо громоздких, детализированных операторов JCL в них используются более простые команды, выполняющие элементарные действия — запуск программы, выдача на экран файла или каталога, копирование или удаление файла и т. п. Пользователю не нужно предвидеть заранее все возможные исходы выполнения команды, гораздо проще увидеть результат выполнения на экране и после этого принять решение, какую команду выполнять следующей. В то же время некоторые часто повторяющиеся последовательности команд удобно описать один раз в виде «пакетного задания» и затем при необходимости использовать. В этом плане системы разделения времени сохраняют те удобные возможности, которые предоставляли пакетные системы.
Первоначально в качестве аппаратной основы систем разделения времени должны были использоваться «большие» ЭВМ, которые позднее стало принято называть «мейнфреймами» (mainframes). Позднее, по мере прогресса вычислительной техники, это стало по плечу даже мини-ЭВМ (так назывался в те годы класс компьютеров, занимавших всего лишь один-два небольших шкафчика). Следует особо упомянуть серию мини-ЭВМ PDP-11, имевшую широчайшее распространение во всем мире в течение полутора десятков лет.
Этот период (1970-е гг. в мире, 1980-е — в СССР) характерен глубоким развитием теории и практики создания мощных ОС, содержащих развитые средства управления процессами и памятью, реализующих многопользовательский режим работы. Из большого числа подобных систем особого упоминания заслуживает UNIX — единственная система, благополучно дожившая до нашего времени.

Однозадачные ОС для персональных компьютеров

В середине 70-х годов был изобретен микропроцессор, а к началу 80-х микропроцессоры стали догонять по функциональным характеристикам ранее использовавшиеся «большие» процессоры. Эта ситуация сделала почти бесполезным режим разделения времени: зачем делить один процессор между многими задачами и многими пользователями, если проще и дешевле дать отдельный микропроцессор каждому пользователю? Разделение времени осталось целесообразным разве что в отношении суперкомпьютеров.
Появление и бурное распространение персональных компьютеров (ПК) вызвало к жизни новое поколение ОС, которые оказались во много раз проще своих предшественниц. Ненужной оказалась многопользовательская защита. На первых порах показалась ненужной и многозадачность. Все это можно было расценить как явный регресс в развитии ОС.
Наиболее популярной ОС для ранних восьмиразрядных ПК была система CP/M известной тогда фирмы Digital Research, однако с появлением в начале 1980-х гг. знаменитой машины IBM PC лидерство было прочно перехвачено системой MS- DOS фирмы Microsoft.

Многозадачные ОС для ПК с графическим интерфейсом

Быстрое развитие технологии привело к тому, что к концу 80-х годов ПК оказались в состоянии решать значительно более сложные и трудоемкие задачи, чем раньше. При этом многие из достижений прежних этапов развития ОС оказались вновь востребованными, но теперь уже в новых условиях, среди которых надо назвать резкое повышение мощности процессоров и объема памяти, появление высококачественных графических мониторов и развитие сетевых технологий.
Стала реальной такая вещь, как многозадачная ОС для ПК. Надо сказать, что первоначально идея системы, в которой один пользователь запускает одновременно несколько приложений, большинству специалистов казалась пустым пижонством и вызывала насмешки: «Почему бы не выполнить несколько программ по очереди?» Сейчас с таким взглядом смешно даже спорить.
На смену ОС, которые выполняли текстовые команды, вводимые пользователем с клавиатуры, пришли системы, в которых взаимодействие с пользователем основано на использовании GUI (Graphical User Interface, графический интерфейс пользователя).
Первый экспериментальный компьютер с GUI-интерфейсом был разработан в лаборатории Xerox PARC в 1973 г. Широкое распространения графического интерфейса стало возможным в 1980-е гг., после того как были достигнуты серьезные успехи в повышении мощности процессоров, создании памяти большого объема, производстве мониторов с высоким разрешением. В 1984 г. компания Apple Computers начала производство компьютеров Macintosh с ОС Mac OS. В 1985 г. Microsoft выпустила первую версию системы Windows в виде оболочки, которая запускалась поверх MS-DOS.
Значительная часть ПК работала в составе локальных вычислительных сетей, а в начале 1990-х гг. широкое распространение стал получать Интернет. Это привело к тому, что вопросы защиты данных пользователя вновь приобрели первостепенное значение.

ОС для мобильных устройств

С середины 1990-х гг. широкое распространение стали получать мобильные устройства — карманные компьютеры и смартфоны. Первоначально требования минимизации размеров и энергопотребления привели к очередному витку упрощения ОС. Например, очень распространенный на рубеже веков карманный компьютер Palm имел однозадачную операционную систему. При этом удавалось успешно имитировать многозадачность за счет быстрого перезапуска программ, хранившихся в основной памяти.
Дальнейшее совершенствование оборудования привело к снятию ограничений и к реализации прорывных изменений в архитектуре мобильных устройств и их программного обеспечения. Этапную роль сыграл выпуск компанией Apple в 2007 г. телефонов iPhone, а в 2010-м — планшетов iPad, работающих под управлением ОС iOS. Конкурентами Apple являются системы на базе ОС Google Android и на версиях Windows для мобильных устройств.
Характерными особенностями нового поколения ОС являются:

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

поддержка разнообразных периферийных устройств, таких как сенсорные экраны, Wi-Fi модемы, встроенные фото- и видеокамеры;

широкое использование интернет-сервисов;

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

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

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

По назначению

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

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

У Иногда выделяют также такой класс ОС, как системы с «нежестким» реальным временем. Это такие системы, которые не могут гарантировать точное соблюдение временных соотношений, но «очень стараются», то есть содержат средства для приоритетного выполнения заданий, критичных по времени. Такой системе нельзя доверить управление ракетой, но она вполне справится с демонстрацией видеофильма. Выделение подобных систем в отдельный класс имеет скорее рекламное значение, позволяя таким системам, как Windows и некоторые версии UNIX, тоже называть себя «системами реального времени».
У Прочие специализированные системы. Это различные ОС, ориентированные прежде всего на эффективное решение задач определенного класса, с большим или меньшим ущербом для прочих задач. В настоящее время повышение производительности вычислительных систем делает возможным применение систем общего назначения для большинства специализированных применений, кроме задач, требующих жесткого реального времени. Так, например, в 1970-е гг. довольно распространенной была система MUMPS, ориентированная на информационное обслуживание медицинских учреждений. Эта система, включавшая в себя удобные средства программирования и управления базами данных, сохранила некоторое число поклонников до настоящего времени, однако не как самостоятельная ОС, а как прикладная программа, работающая в среде Windows или другой ОС общего назначения.

По характеру взаимодействия с пользователем

Пакетные ОС, обрабатывающие заранее подготовленные задания.

Диалоговые ОС, выполняющие команды пользователя в интерактивном режиме. Красивое слово «интерактивный» означает постоянное взаимодействие системы с пользователем.

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

Встроенные ОС, не взаимодействующие с пользователем.

По числу одновременно выполняемых задач

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

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

По числу пользователей

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

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

По аппаратурной основе

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

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

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

Распределенные ОС. Их отличие от сетевых заключается в том, что распределенная система, используя ресурсы локальной сети, представляет их пользователю как единую систему, не разделенную на отдельные машины. Несмотря на то, что исследования в области распределенных систем ведутся уже десятки лет, практическое использование подобных систем в настоящее время весьма ограниченно, что обусловлено трудностью их эффективной и безопасной реализации. Наиболее известным проектом в области распределенных ОС является Plan 9, разрабатываемый в Bell Labs [39].

По характеру лицензии

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

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

Достоинством проприетарного ПО является гарантированная техническая поддержка со стороны фирмы-производителя, включающая консультации, регулярную рассылку обновлений и исправлений.
Наиболее распространенной проприетарной ОС в настоящее время является Microsoft Windows. Из других ОС можно отметить QNX, OS X (ранее Mac OS), iOS, Solaris, UNIX System 5, Novell NetWare.

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

Имеются различные виды лицензий на свободное ПО. Некоторые из них основаны на принципе «авторского лева» (copyleft), в противоположность «авторскому праву» (copyright). Этот принцип означает, что при распространении продуктов, созданных с использованием свободного ПО, не могут накладываться дополнительные ограничения по сравнению с исходной лицензией. В частности, принцип copyleft запрещает создание проприетарных продуктов, хотя бы в небольшой части использующих свободное ПО. Такое требование содержится в широко используемой лицензии GNU [18]. Другие типы лицензий на свободное ПО (лицензии MIT, FreeBSD [18]) не включают требований copyleft.
Лицензии на свободное ПО не содержат требования бесплатного распространения, однако на практике разрешение свободного копирования оставляет возможность оплаты только для дополнительных услуг, таких как техническое обслуживание, регулярное обновление, консультирование и т. п.
Отсутствие компании-правообладателя не означает бесхозности свободного ПО. Вокруг серьезных продуктов, таких как ОС, организуются сообщества программистов и пользователей, занимающихся развитием и тестированием системы, подготовкой документации, созданием и распространением пакетов программ для данной ОС.
Серьезным достоинством свободного ПО является полная доступность исходных текстов, что, с одной стороны, делает возможной коллективную работу над анализом и совершенствованием системы, а с другой — гарантирует отсутствие «закладок» — скрытых фрагментов кода, дающих производителю ПО возможность как угодно контролировать работу программ.
К наиболее популярным ОС, распространяемым на основе лицензий свободного ПО, относится большинство UNIX- подобных систем, включая Linux и FreeBSD. Частично свободной является ОС Google Android.

Критерии оценки ОС

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

Надежность

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

Эффективность

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

Удобство

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

Масштабируемость

Довольно странный термин масштабируемость (scalability) означает возможность настройки системы для использования в разных вариантах, в зависимости от мощности вычислительной системы, от набора конкретных периферийных устройств, от роли, которую играет конкретный компьютер (сервер, рабочая станция или изолированный компьютер), от назначения компьютера (домашний, офисный, исследовательский и т. п.).
Гарантией масштабируемости служит продуманная модульная структура системы, позволяющая в ходе установки системы собирать и настраивать нужную конфигурацию. Возможен и другой подход, когда под общим названием объединяются по сути разные системы, обеспечивающие в разумных пределах программную совместимость. Примером могут служить версии Windows NT/2000/XP/Vista/7/8, Windows 95/98/ME и Windows CE/Mobile.
В некоторых случаях фирмы, производящие программное обеспечение, искусственно отключают в более дешевых версиях системы те возможности, которые на самом деле реализованы, но становятся доступны, только если пользователь покупает лицензию на более дорогую версию. Но это уже вопрос, связанный не с технической стороной дела, а с маркетинговой политикой.

Способность к развитию

Чтобы сложная программа имела шансы просуществовать долго, в нее изначально должны быть заложены возможности для будущего развития.
Одним из главных условий способности системы к развитию является хорошо продуманная модульная структура, в которой четко определены функции каждого модуля и его взаимосвязи с другими модулями. При этом создается возможность совершенствования отдельных модулей с минимальным риском вызвать нежелательные последствия для других частей системы.
Важным требованием к развитию ОС является совместимость версий снизу вверх, означающая возможность безболезненного перехода от старой версии к новой, без потери ранее наработанных прикладных программ и без необходимости резкой смены всех навыков пользователя. Обратная совместимость — сверху вниз — как правило, не гарантируется, поскольку в ходе развития система приобретает новые возможности, не реализованные в старых версиях. Программа из Windows XP будет, скорее всего, нормально работать и в Windows 7; наоборот — не обязательно.
Совместимость версий — благо для пользователя, однако на практике она часто приводит к консервации давно отживших свой век особенностей или же просто неудачных решений, принятых в ранней версии системы. В документации подобные архаизмы помечаются как «устаревшие» (obsolete или deprecated), но полного отказа от них, как правило, не происходит (а вдруг где-то еще работает прикладная программа, написанная двадцать лет назад с использованием именно этих средств?). Компромиссным решением является возможность запуска системы или отдельных программ в режиме совместимости со старыми версиями ОС.
Как правило, наиболее консервативной стороной любой ОС являются не алгоритмы, а структуры системных данных, поэтому дальновидные разработчики заранее строят структуры «на вырост»: закладывают в них резервные поля, используют переменные вместо некоторых констант, устанавливают количественные ограничения с большим запасом и т. п.

Мобильность

Под мобильностью, или переносимостью (portability), понимается возможность переноса программы (в данном случае ОС) на другую аппаратную платформу, то есть на другой тип процессора и другую архитектуру компьютера. Здесь имеется в виду перенос с умеренными трудозатратами, не требующий полной переработки системы.
Свойство мобильности не столь однозначно положительно, как может показаться. Чтобы программа была мобильна, при
ее разработке следует отказаться от глубокого использования особенностей конкретной архитектуры ( таких как количество и функциональные возможности регистров процессора, нестандартные машинные команды и т. п.). Мобильная программа должна быть написана на языке достаточно высокого уровня (часто используется язык Си), который можно реализовать на компьютерах любой архитектуры. Платой за мобильность всегда является некоторая потеря эффективности, поэтому немобильные системы распространены достаточно широко.
С другой стороны, история системного программирования усеяна останками замечательных, эффективных и удобных, но немобильных ОС, вымерших вместе с процессорами, для которых они предназначались. В то же время мобильная система UNIX продолжает процветать пятый десяток лет, намного пережив те компьютеры, для которых она первоначально создавалась. Примерно 5-10% исходных текстов UNIX написаны на языке ассемблера и должны переписываться заново при переносе на новую архитектуру. Остальная часть системы написана на Си и практически не требует изменений при переносе.
Некоторым компромиссом являются многоплатформенные ОС (например, Windows NT), изначально спроектированные для использования на нескольких аппаратных платформах, но не гарантирующие возможность переноса на новые, не предусмотренные заранее архитектуры.

ОС и аппаратура компьютера

Архитектура компьютера

Понятие архитектура в данной книге будет везде означать совокупность тех структурных характеристик аппаратуры вычислительной системы, которые могут оказывать влияние на работу программ. С этой точки зрения, например, не играет роли, собран ли компьютер как моноблок или же системный
Часть 3. ФАЙЛЫ

Основные задачи управления данными

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

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

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

обеспечение надежности хранения данных и их восстановления в случае сбоев;

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

управление одновременным совместным доступом к данным со стороны нескольких процессов.

Характеристики файлов и архитектура файловых систем

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

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

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

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

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

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

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

В Windows , начиная с Vista, имеется возможность сохранения теневых копий (shadow copies) при изменении файлов. По существу, теневые копии содержат хранящиеся в сжатом виде изменения. Они позволяют, при необходимости, вернуться к одной из прежних версий файла.

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

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

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

СОДЕРЖАНИЕ
Часть 1. Основные сведения об операционных системах6

Предыстория ОС7

Пакетные ОС9

ОС с разделением времени 10

Однозадачные ОС для персональных компьютеров 12

Многозадачные ОС для ПК с графическим интерфейсом 13

ОС для мобильных устройств 14

По назначению15

По характеру взаимодействия с пользователем17

По числу одновременно выполняемых задач 17

По числу пользователей 17

По аппаратурной основе 18

По характеру лицензии 18

Надежность 21

Эффективность 22

Удобство 23

Масштабируемость23

Способность к развитию 24

Мобильность 25

Архитектура компьютера 26

Система прерываний 27

Режимы работы процессора32

Загрузка ОС 33

Основные функции ОС 34

Структура ОС 35

Структурные компоненты ОС35

Ядро ОС36

Варианты архитектуры ядра 38

Системные функции 43

ОС, используемые в дальнейшем изложении44

MS-DOS 44

Семейство ОС Windows 45

ОС UNIX и POSIX-совместимые системы47

Контрольные вопросы51

Часть 2. Периферийные устройства 54

Классификация периферийных устройств и их архитектура 55

Устройства последовательного и произвольного доступа 56

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

Физические, логические и виртуальные устройства 57

Архитектура подсистемы ввода/вывода 59

Способы организации ввода/вывода63

Постановка задачи63

Ввод/вывод без проверки готовности 64

Ввод/вывод по опросу готовности 64

Ввод/вывод по прерываниям65

Ввод/вывод по периодическому опросу66

Активное и пассивное ожидание 67

Синхронный и асинхронный ввод/вывод 69

Драйверы устройств71

Понятие драйвера и его функции 71

Примерная структура драйвера 72

Высокоуровневые драйверы 73

Шина USB и драйверы USB 74

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

Клавиатура76

Мышь и сенсорный экран79

Монитор 80

Диски81

Структура магнитного диска 82

Геометрия диска и адресация секторов 85

Разделы и логические тома 87

Средства доступа к дискам93

Буферизация и кэширование94

Понятие буферизации 94

Сглаживание неравномерности скоростей процессов 94

Распараллеливание ввода и обработки 95

Согласование размеров логической и физической записи ...95

Кэширование дисков96

Опережающее чтение105

Управление устройствами в MS-DOS 106

Уровни доступа к устройствам106

Драйверы устройств в MS-DOS 108

Управление устройствами в Windows 109

Драйверы устройств в Windows109

Доступ к устройствам 111

Управление устройствами в UNIX 112

Драйверы устройств в UNIX112

Устройство как специальный файл 114

Контрольные вопросы115

Основные задачи управления данными118

Жесткие и символические связи122

Размещение файлов 127

Защита данных 132

Совместное использование файлов процессами 134

Файловая система FAT и управление данными в MS-DOS 136

Общая характеристика системы FAT136

Структуры данных на диске137

Создание и удаление файла 142

Работа с файлами в MS-DOS144

Файловая система exFAT 150

Файловые системы и управление данными в UNIX 150

Архитектура файловой системы s5fs 150

Структуры данных файловой системы UNIX 154

Доступ к данным в UNIX 160

Развитие файловых систем UNIX 161

Файловая система NTFS и управление данными в Windows 164

Особенности файловой системы NTFS164

Структуры дисковых данных166

Потоки данных 170

Точки повторного анализа и жесткие связи170

Доступ к данным 172

Защита данных 175

Контрольные вопросы181

Часть 4. Процессы 183

Основные задачи управления процессами183

Реализация многозадачного режима 184

Понятия процесса и ресурса 184

Квазипараллельное выполнение процессов 186

Состояния процесса 187

Вытесняющая и невытесняющая диспетчеризация 192

Дескриптор и контекст процесса 195

Реентерабельность системных функций196

Дисциплины диспетчеризации и приоритеты

процессов 200

Нити процессов 210

Проблемы взаимодействия процессов 213

Изоляция процессов и их взаимодействие 213

Проблема взаимного исключения процессов214

Двоичные семафоры Дейкстры 219

Средства взаимодействия процессов 222

Примеры задач взаимодействия процессов 227

Понятие о мониторах231

Проблема тупиков 234

Некоторые межсистемные понятия 240

Стандартные устройства ввода/вывода 240

Командная строка 242

Среда процесса 243

Код завершения процесса 244

4.5. Управление процессами в MS-DOS 245

Процессы в MS-DOS 245

Запуск программы 246

Завершение работы программы247

Перехват прерываний и резидентные программы249

Управление процессами в Windows 252

Понятие объекта в Windows 253

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

Планировщик Windows257

Процесс и нить как объекты 260

Синхронизация нитей 261

Сообщения 269

Управление процессами в UNIX 272

Жизненный цикл процесса 272

Группы процессов 275

Программные каналы 276

Сигналы277

Средства взаимодействия процессов

в стандарте POSIX 280

Планирование процессов281

Интерпретатор команд shell 286

Контрольные вопросы290

Часть 5. Память293

Основные задачи управления памятью 293

Виртуальные и физические адреса294

Распределение памяти без использования в

иртуальных адресов 296

Настройка адресов296

Распределение с фиксированными разделами 297

Распределение с динамическими разделами299

5.4. Сегментная организация памяти300

Страничная организация памяти 304

5.5.1. Структура страничной памяти 304

Загрузка страниц по требованию 305

Алгоритмы замещения страниц308

Двухуровневая страничная адресация309

Сравнение сегментной и страничной организации310

Управление памятью в MS-DOS313

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

5.8.1. Структура адресного пространства 316

Регионы317

Отображение исполняемых файлов321

Отображение файлов на память 322

Стеки и кучи324

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

Контрольные вопросы333

Заключение 335
Рекомендации по дальнейшему чтению336
Список использованных источников 338
Предметный указатель342
Возможна доставка книги в , а также в любой другой город страны Почтой России, СДЭК, ОЗОН-доставкой или транспортной компанией.
{{searchData}}
whatsup