Востокин С.В.. Операционные системы. Экзаменационные вопросы по разделам дисциплины. Учебник предназначен для студентов специальности Фундамен тальная информатика и информационные технологии
Скачать 2.09 Mb.
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САМАРСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ ИМЕНИ АКАДЕМИКА С. П. КОРОЛЕВА» С.В. ВОСТОКИН ОПЕРАЦИОННЫЕ СИСТЕМЫ 2-е издание, исправленное и дополненное Рекомендовано редакционно-издательским советом федерального государственного автономного образовательного учреждения выс- шего образования «Самарский национальный исследовательский университет имени академика С.П. Королева» в качестве учебника для студентов, обучающихся по основной образовательной програм- ме высшего образования по направлению подготовки 09.03.01 Ин- форматика и вычислительная техника © Самарский университет, 2018 ISBN 978-5-7883-1242-2 С А М А Р А Издательство Самарского университета 2018 2 УДК 004.451(075) ББК 32.973.26-018.2я7 В 780 Рецензенты: д-р техн. наук, проф. С.П. О р л о в ; д-р физ.-мат. наук, проф. Д.Л. Г о л о в а ш к и н Востокин, Сергей Владимирович В780 Операционные системы: учеб. / С.В. Востокин. – 2-е изд., испр. и доп. – Электрон. текст. и граф. дан. (2,15 Мб). – Самара: Изд-во Самарского университета, 2018. – 1 опт. ком- пакт-диск (CD-ROM). – Систем. требования: ПК Pentium; Adobe Acrobat Reader. – Загл. с титул. экрана. ISBN 978-5-7883-1242-2 Рассмотрены основные вопросы дисциплины «Операционные систе- мы»: обзор операционных систем, проектирование и архитектуры операци- онных систем, управление процессами и потоками, мультипроцессорная обработка, методы синхронизации процессов, проблема тупиков, методы управления памятью, основы организации ввода-вывода и файловых си- стем. Рассмотрены практические вопросы программирования на примере операционной системы Windows. Приведены экзаменационные вопросы по разделам дисциплины. Учебник предназначен для студентов специальности «Фундамен- тальная информатика и информационные технологии» и направления под- готовки «Информатика и вычислительная техника». УДК 004.451(075) ББК 32.973.26-018.2я7 © Самарский университет, 2018 3 ОПЕРАЦИОННЫЕ СИСТЕМЫ Редактор Н . С . К у п р и я н о в а Компьютерная верстка Л . Р . Д м и т р и е н к о Подписано для тиражирования 16.04.2018. Объем издания 2,15 Mб. Количество носителей 1 экз. Тираж 10 экз. ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САМАРСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ ИМЕНИ АКАДЕМИКА С.П. КОРОЛЕВА» 443086, Самара, Московское шоссе, 34. Изд-во Самарского университета. 443086, Самара, Московское шоссе, 34. 4 Оглавление Раздел I. Основные понятия ............................................................................ 5 Лекция 1. Определение операционной системы. Первые операционные системы ................................................................... 5 Лекция 2. Современные операционные системы ...................................... 11 Экзаменационные вопросы по разделу I ................................................... 22 Раздел II. Проектирование операционных систем ................................... 23 Лекция 3. Требования к операционным системам и обзор подходов их реализации ................................................................ 23 Лекция 4. Архитектуры операционных систем ........................................ 29 Экзаменационные вопросы по разделу II .................................................. 38 Раздел III. Управление процессами ............................................................. 39 Лекция 5. Понятие процесса, методы планирования ............................... 39 Лекция 6. Многозадачность в операционной системе Windows ............ 47 Лекция 7. Синхронизация с использованием разделяемых переменных .................................................................................................. 56 Лекция 8. Процедурные методы синхронизации в операционной системе Windows ......................................................................................... 65 Лекция 9. Тупики и защита от них ............................................................. 74 Экзаменационные вопросы по разделу III ................................................. 84 Раздел IV. Управление памятью .................................................................. 86 Лекция 10. Методы управления памятью .................................................. 86 Лекция 11. Средства аппаратной поддержки управления памятью в архитектуре x86_32 .................................................................................. 96 Лекция 12. Обзор алгоритмов замещения страниц................................. 105 Лекция 13. Управление виртуальной памятью в ОС Windows............. 113 Экзаменационные вопросы по разделу IV .............................................. 122 Раздел V. Организация ввода – вывода .................................................... 123 Лекция 14. Введение во взаимодействие с внешними устройствами .............................................................................................. 123 Экзаменационные вопросы по разделу V ................................................ 132 Библиографический список ........................................................................ 133 5 Раздел I. ОСНОВНЫЕ ПОНЯТИЯ Лекция 1. Определение операционной системы. Первые операционные системы Определение операционной системы, операционная система как виртуальная машина и как система управления ресурсами. Поколе- ния компьютеров и операционных систем. Операционная система – это комплекс программ, которые выступают как интерфейс между устройствами вычислительной си- стемы и прикладными программами, предназначены для управления устройствами и вычислительными процессами, а также для эффек- тивного распределения вычислительных ресурсов и организации надёжных вычислений. Таким образом, операционная система – это программное обеспечение, выполняющее две функции: 1) предоставление пользо- вателю-программисту более удобной в использовании «виртуальной машины», скрывающей реальное оборудование; 2) обеспечение эф- фективного использования компьютера путем рационального управ- ления его ресурсами. Рассмотрим для чего необходим программный интерфейс между оборудованием и программой пользователя на примере. Ис- пользование большинства компьютеров на уровне машинного языка затруднительно, особенно при организации ввода-вывода. Напри- мер, для чтения блока данных с гибкого диска программист может использовать 16 различных команд контроллера NEC PD765, каждая из которых требует 13 параметров: номера поверхности на диске, сектора на дорожке и других. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающих, в том числе, наличие и типы ошибок, которые необходимо анализиро- 6 вать. Кроме этого, работа с диском требует специальной организа- ции кода программы, связанной с необходимостью обработки пре- рываний, отслеживания состояния двигателя привода для уменьше- ния износа диска с сохранением высокой скорости обращения, орга- низации хранения данных и учета других особенностей. При работе с диском, используя функции операционной си- стемы, программисту достаточно представлять данные в виде неко- торого набора файлов, каждый из которых имеет имя. Работа с фай- лом заключается в открытии, выполнении чтения или записи, а за- тем в закрытии файла. Программа, которая скрывает от программи- ста все реалии аппаратуры и предоставляет возможность простого, удобного чтения или записи файлов – это операционная система. Операционная система ограждает программистов от аппаратуры дискового накопителя и предоставляет ему простой файловый ин- терфейс, берет на себя обработку прерываний, управление таймера- ми и оперативной памятью, а также другие низкоуровневые пробле- мы. В каждом случае абстракция (например, файл), с которой, бла- годаря операционной системе, может иметь дело пользователь, го- раздо проще и удобнее в обращении, чем реальная аппаратура, ле- жащая в основе этой абстракции. С этой точки зрения функцией операционной системы является предоставление пользователю не- которой расширенной или «виртуальной машины», которую легче программировать и с которой легче работать, чем непосредственно с аппаратурой, составляющей реальную машину. Программист-пользователь считает, что операционная система прежде всего обеспечивает удобный интерфейс. Разработчик аппа- ратуры имеет представление об операционной системе как о некото- ром механизме, управляющем всеми частями сложной системы. Со- временные вычислительные системы состоят из процессоров, памя- ти, таймеров, дисков, накопителей на магнитных лентах, сетевой коммуникационной аппаратуры, принтеров и других устройств. Функцией операционной системы является распределение процес- соров, памяти, устройств и данных между процессами, конкуриру- ющими за эти ресурсы. Операционная система должна управлять всеми ресурсами вычислительной машины таким образом, чтобы обеспечить максимальную эффективность ее функционирования. 7 Критерием эффективности может быть, например, пропускная спо- собность или реактивность системы. Управление ресурсами включа- ет решение двух общих, не зависящих от типов ресурсов задач: пла- нирование ресурсов и мониторинг ресурсов. Планирование ресурса – это определение кому, когда, а для делимых ресурсов и в каком количестве, необходимо выделить дан- ный ресурс. Мониторинг (отслеживание состояния ресурса) – поддержание оперативной информации о том, занят или не занят ресурс, а для де- лимых ресурсов – какое количество ресурса уже распределено, а ка- кое свободно. Для решения этих общих задач управления ресурсами разные операционные системы используют различные алгоритмы. Это, в конечном счете, определяет их облик в целом, включая характери- стики производительности, область применения и даже пользова- тельский интерфейс. Рассмотренное функциональное определение операционной системы применимо к большинству современных операционных систем общего назначения. Для понимания основных механизмов, используемых в совре- менных операционных системах, кратко рассмотрим историю их развития. Применимость той или иной архитектурной идеи в про- граммном обеспечении (software) во многом определяется наличием и доступностью аппаратного обеспечения (hardware). Первое поколение компьютеров и операционных систем (1945-1955 гг.), электронные лампы и коммутационные панели. Изобретателем цифрового компьютера считается английский мате- матик Чарльз Беббидж. В 1833 году им был предложен проект меха- нической универсальной цифровой вычислительной машины – про- образа современной ЭВМ. Первыми действующими компьютерами являлись: компьютер Z3, созданный немецким инженером Конрадом Цузе (1941); компьютер Марк I, созданный американским инжене- ром Говардом Эйкеном (1941); компьютер ЭНИАК, разработанный Джоном Экертом и Джоном Мокли (1945). Первые компьютеры бы- ли электромеханическими (реле). В поздних моделях реле были за- менены электронными лампами. Первые компьютеры программировались на абсолютном ма- шинном языке, управление основными функциями машины осу- 8 ществлялось путем соединения коммутационных панелей провода- ми. Такая панель являлась носителем программы и подключалась к компьютеру. Также для записи программ использовались перфори- рованные ленты. В начале 50-х панели и ленты были заменены пер- фокартами. На компьютерах первого поколения занимались только пря- мыми числовыми вычислениями, например, расчетами таблиц сину- сов, косинусов, логарифмов. Компьютеры имели военные приложе- ния: расчет стреловидных крыльев и управляемых ракет, расчет баллистических таблиц для стрельбы. Компьютеры не имели опера- ционных систем. Программирование осуществлялось в интерактив- ном режиме: пользователь-программист получал полный контроль над машиной на время отладки программы и выполнения вычисле- ний. В некотором смысле первые компьютеры напоминали совре- менные персональные ЭВМ. Рис. 1.1. Машинный зал с компьютером IBM 7094, НАСА. На переднем плане внизу – считыватель перфокарт Второе поколение компьютеров и операционных систем (1955-1965 гг.), транзисторы и системы пакетной обработки за- даний. С появлением в середине 50-х годов транзисторов компью- 9 теры стали достаточно надежными и могли без сбоев работать дли- тельное время. Такие компьютеры назывались мейнфреймами. Они располагались в специальных помещениях с кондиционированным воздухом, ими управлял целый штат профессиональных операторов. Цена одного из известных мейнфреймов IBM 7090/94 (рис. 1.1) со- ставляла $2,900,000, а стоимость аренды $63,500 в месяц. Рассмотрим организацию работы на IBM 7090/94 и подобных машинах. Для программирования использовался язык высокого уровня Фортран или Ассемблер. Программа для компьютера внача- ле писалась на бумаге, а затем переносилась на перфокарты при по- мощи перфораторов: электронно-механических устройств, похожих на печатающие машинки (рис. 1.2). Каждая перфокарта представля- ла одну строчку кода программы. Перфокарты выполняли функции современных текстовых редакторов. Программа – это колода перфо- карт, которая вставлялась в устройство для считывания. Результат работы очередной задачи отображался на принтере. Если в процессе расчетов был необходим компилятор языка Фортран, то оператору необходимо было брать его из карточного шкафа и загружать в ма- шину отдельно. Рис. 1.2. Перфоратор IBM 026 С учетом высокой стоимости оборудования необходимо было повысить эффективность использования машинного времени, сокра- тить простои машины при загрузке программ в память. Данную 10 функцию реализовывали первые операционные системы – системы пакетной обработки. Рассмотрим автоматизацию расчетов на мейнфрейме IBM 7094 с использованием пакетной системы IBSYS (рис. 1.3). Рис.1.3. Схема работы пакетной системы Рис. 1.4. Считыватель-перфоратор 1402, управляющий блок 1401 и принтер 1403 фирмы IBM Для подготовки пакета заданий использовались относительно недорогие компьютеры IBM 1401 (рис.1.4). К такому компьютеру подключался считыватель перфокарт и устройство записывания магнитных лент. Примерно после часа сбора пакета заданий лента перематывалась и ее относили в машинную комнату. Там ее уста- навливали на лентопротяжное устройство, подключенное к мейн- 7094 1401 1401 Считыватель перфокарт, выходная лента Мейнфрейм, вход- ная, системная, вы- ходная ленты Принтер вход- ная лента 11 фрейму. Также к нему подключалась лента с программой операци- онной системы и выходная лента. По мере накопления выходные данные записывались на ленту вместо того, чтобы идти на печать. После обработки всего пакета заданий входные и выходные ленты менялись на новые для следующего цикла обработки. Печать ре- зультатов на принтере также осуществлялась под управлением ма- ломощного и недорогого компьютера IBM 1401. Большие компьютеры второго поколения использовались глав- ным образом для научных и технических вычислений, таких как ре- шение дифференциальных уравнений в частных производных, часто встречающихся в физике, и инженерных задачах. Поэтому режим ра- боты с непродолжительными этапами ввода-вывода с использованием магнитных лент значительно оптимизировал загрузку мейнфрейма. Кроме этого, длительные операции, такие как считывание перфокарт и печать на медленных принтерах, происходили одновременно с рас- четами. Такой способ взаимодействия с внешними устройствами по- лучил название автономного (off-line) в отличие от интерактивного способа (on-line), используемого в системах третьего поколения. Принципы пакетной обработки, несмотря на появление в 60-х годах, широко используются в современных системах для аналогич- ных целей: оптимизации загрузки дорогостоящей системы. Приме- ром современной пакетной системы является система TORQUE (Terascale Open-Source Resource and QUEue Manager), Slurm (Simple Linux Utility for Resource Management), служащие для управления суперкомпьютерами. Также пакетные режимы имеются во всех со- временных операционных системах разделения времени (Unix, macOS, Microsoft Windows). Лекция 2. Современные операционные системы Поколения компьютеров и операционных систем: интегральные схемы и многозадачность, персональные компьютеры. Классифика- ция и примеры операционных систем. Третье поколение компьютеров и операционных систем (1965-1980 гг.), интегральные схемы и многозадачность. Даль- 12 нейшее развитие компьютерная индустрия получила при появлении технологии мелкомасштабных интегральных схем, которая давала преимущество в цене и качестве по сравнению с машинами второго поколения, созданными из отдельных транзисторов. Основные разработки в области архитектуры современных операционных систем появились именно на компьютерах третьего поколения. Операционные системы, состоящие из миллионов строк, написанных тысячами программистов, на два или три порядка пре- вышали по сложности первые системы типа IBSYS. Основу к появлению сложного системного программного обеспечения заложила фирма IBM, которая выпустила серию про- граммно-совместимых машин семейства IBM /360. Эти компьютеры различались только ценой и производительностью. Так как все ма- шины семейства имели одинаковую структуру и набор команд, про- граммы, написанные для одного компьютера, могли работать на других. Компьютеры семейства IBM /360 могли использоваться как для сложных научных расчетов, так и для статистической обработ- ки, сортировки и печати. Предполагалось, что одну операционную систему можно будет использовать как с несколькими внешними устройствами, так и с большим их количеством. Одно семейство компьютеров было призвано удовлетворить потребности всех поку- пателей. Первой операционной системой для компьютеров IBM /360 была OS /360 (IBM System /360 Operating System). Разработкой си- стемы руководил Фред Брукс, описавший ее в знаменитой книге «Мифический человеко-месяц». В этом проекте впервые столкну- лись с проблемой сложности программного обеспечения, с него начала развиваться дисциплина программной инженерии, впервые были применены многие технические приемы, используемые в со- временных операционных системах. Самым важным достижением OS /360 являлось использование многозадачности. На компьютере IBM 7094, когда текущая работа приостанавливалась в ожидании данных с магнитной ленты или других устройств, центральный процессор бездействовал до оконча- ния ввода-вывода. Данная ситуация была некритичной при обработ- ке задач численного моделирования. Однако для универсальной си- стемы, на которой обрабатывались задачи, связанные с сортировкой и другой обработкой информации на лентах, время простоя оказы- 13 валось существенным и составляло 80-90%. Необходимо было пред- ложить решение, предотвращающее длительный простой дорогосто- ящих процессоров. Решение проблемы было найдено. Оно заключалось в разбие- нии памяти на несколько разделов, каждому из которых давалось отдельное задание (рис.2.1). Пока одно задание ожидало завершения операций ввода-вывода, другое могло использовать центральный процессор. Если в оперативной памяти размещалось достаточное количество заданий, центральный процессор мог быть загружен по- чти 100% времени. Для реализации многозадачности потребовалось разработать аппаратуру защиты памяти и средства обработки пре- рываний. Применение многозадачности позволило отказаться от процедуры предварительной подготовки данных на магнитных лен- тах и выгрузки на ленту для печати. Данные процедуры являлись обычными фоновыми операциями ввода-вывода. Технический при- ем получил название спулинг (spooling – simultaneous peripheral operation on line). Рис. 2.1. Многозадачная система с тремя заданиями в памяти Операционная система OS /360 и другие операционные си- стемы третьего поколения являлись, по сути, сложными системами пакетной обработки. Главный недостаток таких систем заключался в том, что, несмотря на оптимизацию работы вычислительной си- стемы, организация работы самих программистов являлась неэф- фективной. Промежуток времени между передачей задания и по- лучением результата составлял несколько часов. Сбой при компи- ляции, связанный с незначительной синтаксической ошибкой, при- водил к большой потере времени. Желание применить принципы ОС Задача 1 Задача 2 Задача 3 Очередь задач 14 интерактивной разработки, известные по компьютерам первого поколения на новых системах, привело к появлению режима разде- ления времени. Режим разделения времени – вариант многозадачности, при котором у каждого пользователя есть свой диалоговый терминал. Так как пользователи чаще выдают короткие команды компиляции при отладке программ, компьютер может обеспечить быстрое ин- терактивное обслуживание нескольких пользователей. Первая система разделения времени CTSS (Compatible Time- Sharing System) была разработана Фернандо Корбато и его командой в Массачусетском технологическом институте (M.I.T.) на специаль- но переделанном компьютере IBM 7094. Впоследствии в 1962 году решения, использовавшиеся в демонстрационной системе CTSS, легли в основу проекта первой полноценной системы с разделением времени, названной Multiplexed Information and Computer System (Multics) на компьютере GE-645, позднее Honeywell 6180. Работа над системой Multics продолжалась вплоть до 1969 го- да, но коммерческого успеха она не имела. Однако этот проект имел определяющее значение для дальнейшего развития компьютерных технологий. В системе Multics впервые реализованы: сегментно- страничная виртуальная память; отображение файлов на адресное пространство процессов; динамическое связывание исполняемой программы с библиотеками. В ней применялись даже более сложные и гибкие механизмы взаимодействия процессов через разделяемые сегменты, чем в современных системах. Использовалось «горячее» реконфигурирование системы с заменой процессоров, блоков памя- ти, жестких дисков без остановки обслуживания пользователей. Multics – одна из первых мультипроцессорных систем. Multics была также одной из первых систем, в которой большое внимание уделя- лось безопасности взаимодействия между программами и пользова- телями. Более того, она была самой первой операционной системой, задуманной изначально и реализованной как безопасная. Дополни- тельно к этому в Multics одной из первых была реализована иерар- хическая файловая система, имена файлов могли быть практически произвольной длины и содержать любые символы. Файл или ди- ректория могли иметь несколько имён (короткое и длинное), были доступны для использования символьные ссылки (symlink) между директориями. В Multics был впервые реализован (теперь уже 15 стандартный) подход использования стеков для каждого вычисли- тельного процесса в ядре системы: с отдельным стеком для каждо- го уровня безопасности вокруг ядра. Multics явилась одной из пер- вых операционных систем, написанных на языке высокого уровня PL/I. Можно сказать, что идея «облачных» вычислений, популяр- ная в настоящее время, также берет начало от системы Multics – компьютерного предприятия общественного пользования 60-70 годов прошлого века. Важным моментом развития компьютерной индустрии во времена третьего поколения был феноменальных рост миникомпью- теров, начиная с выпуска корпорацией DEC в 1961 году компьютера PDP-1 и наиболее коммерчески успешной модели PDP-11. Особен- ностью этого семейства являлась низкая цена ($120,000, что состав- ляло 5% цены мейнфрейма IBM) и сопоставимая с мейнфреймами производительность на нечисловых задачах. Кроме этого, PDP-11 отличалась удачной «ортогональной» системой команд: можно было отдельно запоминать команды, и отдельно – методы доступа к опе- рандам. Все регистры, в том числе служебные (указатель стека, счетчик команд), одинаково использовались со всеми командами. Все эти факторы способствовали очень широкому распростра- нению компьютеров этого семейства, а вместе с ними и операцион- ной системы Unix. Операционная система UNIX была разработана сотрудниками Bell Labs, в первую очередь Кеном Томпсоном, Ден- нисом Ритчи и Дугласом Макилроем. В 1969 году Кен Томпсон, стремясь реализовать идеи, которые были положены в основу Mul- tics, но на более скромном аппаратном обеспечении (DEC PDP-7), написал первую версию новой операционной системы. Брайан Кер- ниган придумал для неё название – UNICS (UN-multiplexed Infor- mation and Computing System – примитивная информационная и вычислительная служба) – в противовес Multics. Позже это назва- ние сократилось до UNIX. В ноябре 1971 года вышла версия для PDP-11. Эта версия получила название «первая редакция» (Edition 1) и была первой официальной версией. Системное время все реализа- ции UNIX отсчитывают с 1 января 1970 года. UNIX-системы имеют большую историческую важность. UNIX популяризовала предложенную в Multics идею иерархической файловой системы с произвольной глубиной вложенности. Еще од- ной инновацией Multics, популяризированной UNIX, являлся интер- 16 претатор команд. Так как интерпретатор и команды операционной системы – обычные программы, пользователь мог выбирать их в со- ответствии со своими предпочтениями или даже написать собствен- ную оболочку. Наконец, новые команды можно добавлять к системе без перекомпиляции ядра. Предложенный в командной строке UNIX способ создания цепочек программ, последовательно обрабатываю- щих данные (конвейер, pipeline), способствовал использованию па- раллельной обработки данных. Существенными особенностями UNIX были полная ориента- ция на текстовый ввод-вывод и предположение, что размер машин- ного слова кратен восьми битам. Первоначально в UNIX не было даже редакторов двоичных файлов – система полностью конфигу- рировалась с помощью текстовых команд. Наибольшей и наимень- шей единицей ввода-вывода служил текстовый байт, что полностью отличало ввод-вывод UNIX от ввода-вывода других операционных систем. Ориентация на текстовый восьмибитный байт сделала UNIX более масштабируемой и переносимой, чем другие операционные системы. UNIX способствовала широкому распространению регу- лярных выражений, которые были впервые реализованы в текстовом редакторе ed для UNIX. Возможности, предоставляемые UNIX- программами, стали основой стандартных интерфейсов операцион- ных систем (POSIX). Среди примеров известных UNIX подобных операционных систем: BSD, Solaris, Linux, Minix, Android, MeeGo, NeXTSTEP, macOS. Отметим, что в нашей стране также были распространены компьютеры, аналогичные семействам IBM /360 и DECPDP. В конце 70-х начале 80-х годов в СССР и ряде соцстран разрабатывалось се- мейство управляющих ЭВМ (СМ ЭВМ). Наиболее развитой линией в семействе СМ ЭВМ был ряд машин, совместимых по системе ко- манд и архитектуре с машинами PDP-11фирмы DEC. На них, например, использовались операционные системы РАФОС (аналог RT-11, системы реального времени для компьютера PDP-11), ДЕ- МОС (советско-российский клон Unix, созданный на основе BSD). Аналогом серии мейнфреймов IBM /360 и /370 в СССР яв- лялась «Единая система электронных вычислительных машин» (ЕС ЭВМ). Операционная система ОС ЕС разрабатывалась как клон OS /360 путем дизассемблирования и адаптации исходных ко- 17 дов. Версия ОС ЕС 7 использовала концепцию гипервизора (вир- туальной машины). Эта версия – аналог операционной системы VM, еще одного типа операционных систем компьютеров серии /360 /370. В целом можно отметить, что третье поколение компьютеров являлось источником основных архитектурных инноваций, исполь- зуемых в современных операционных системах. Роль четвертого поколения заключается в широком внедрении этих инноваций. Четвертое поколение компьютеров и операционных си- стем (с 1980 года), персональные вычисления. Следующий этап эволюции операционных систем связан с появлением больших инте- гральных схем (БИС), по-английски large scale integration (LSI). С точки зрения аппаратной архитектуры персональные компьютеры (микрокомпьютеры) были похожи на PDP-11, но значительно усту- пали по цене. Теперь каждый желающий получил возможность ку- пить собственный компьютер. Первой операционной системой для микрокомпьютеров была CP/M (Control Program for Microcomputers), разработчик Гари Килдэлл, Digital Research. Она работала на первых 8-разрядных си- стемах с процессором Intel 8080, Zilog Z80. С появлением в 1981 го- ду новой серии IBM PC – совместимых компьютеров, на базе 16 разрядного процессора Intel 8088, на рынке программного обеспече- ния микрокомпьютеров операционную систему CP/M сменила си- стема MS- DOS компании Microsoft. Операционные системы для первых микрокомпьютеров пол- ностью основывались на вводе команд с клавиатуры. Однако еще в 60-е годы в научно-исследовательском институте Стэнфорда (Stan- ford ResearchInstitute) Дугласом Энгельбартом был изобретен графи- ческий интерфейс пользователя (GUI, Graphical User Interface), в ко- тором элементы интерфейса (меню, кнопки, значки, списки и т. п.), представленные пользователю на дисплее, исполнены в виде графи- ческих изображений. Графический интерфейс был реализован в про- тотипе современных персональных компьютеров Xerox Alto, разра- ботанном в исследовательском центре Xerox PARC в 1973 году. На Xerox Alto использовались программы с графическими ме- ню, пиктограммами и другими элементами, ставшие привычными лишь с появлением операционных систем Mac OS и Microsoft Windows. Для Xerox Alto были разработаны текстовые процессоры 18 Bravo и Gypsy, работавшие по принципу WYSIWYG (предшествен- ники Microsoft Word), редакторы графической информации (растро- вых изображений, печатных плат, интегральных схем и др.), среда Smalltalk (объектно-ориентированное программирование). Первой успешной коммерческой реализацией GUI для пер- сональных компьютеров была система Apple Macintosh, изготов- ленная под руководством Стива Джобса в 1984 году. Под влиянием успехов Apple фирма Microsoft в 1985 году выпускает свою реали- зацию GUI – систему Windows. На протяжении 10 лет система Win- dows исполняла роль графической оболочки поверх MS-DOS. Были разработаны еще две линейки настольных операционных систем. Семейство Windows 9x включает в себя Windows 95, Windows 98 и Windows ME. Оно являлось промежуточным семейством 32-разрядных систем. Семейство Windows NT – современные версии операцион- ной системы Windows, берущие начало от системы Windows NT 3.1, выпущенной в 1993 году. Наиболее популярные версии операцион- ных систем этого семейства: Windows NT 4.0; Windows 2000 (NT 5.0); Windows XP (NT 5.1); Windows Vista (NT 6.0); Windows 7 (NT 6.1); Windows 8 (NT 6.2) ); Windows 10 (NT 10.0). Главными конкурентами систем Windows в персональных вы- числениях становятся различные производные системы Unix: семей- ство операционных систем Apple macOS (BSD), Google Android (Linux), Ubuntu (Linux). Для серверных приложений и высокопроиз- водительных вычислений операционная система Unix (в частности, Linux) является доминирующей операционной системой. Современные компьютеры и операционные системы. Раз- витие аппаратных технологий приводит к уменьшению размеров, повышению быстродействия, увеличению коммуникационных воз- можностей, снижению стоимости и распространению вычислитель- ной техники. В распоряжении крупнейших компаний, таких как Google, Amazon, Facebook, Microsoft и др. находится огромная вы- числительная инфраструктура, включающая центры обработки и хранения данных, сети передачи данных, спутники связи и перифе- рийное оборудование. Важнейшим видом периферийного оборудо- вания являются мобильные устройства, включая смартфоны, план- шетные компьютеры, автомобильные компьютеры, встраиваемые системы. По некоторым оценкам с данной инфраструктурой непо- средственно взаимодействует примерно 90% всего населения Земли. 19 Новые технологии в области операционных систем, по-видимому, будут связаны с развитием методов управления и внедрением вы- числений во все сферы человеческой жизни. Для такой формы вы- числений используется термин ubiquitous computing – «вездесущие вычисления». «Вездесущие вычисления» охватывают широкий набор направлений, связанных с операционными системами, вклю- чая распределённые вычисления, мобильные вычисления, мобиль- ные сети, сенсорные сети, человеко-машинное взаимодействие и искусственный интеллект. Рассмотрим некоторые классификационные признаки и при- меры операционных систем. По признаку поддержки многозадачности различают одноза- дачные и многозадачные операционные системы. Однозадачные си- стемы в основном выполняют функцию предоставления расширен- ной машины. Из рассмотренных операционных систем однозадач- ными являются MS-DOS, CP/M, RT-11 (версии SJ, SL), ранние вер- сии Unix. Примеры многозадачных систем – Unix, Windows, опера- ционная система персональных компьютеров с графическим интер- фейсом IBM OS/2. По числу пользователей операционные системы делятся на однопользовательские и многопользовательские. Главное отличие многопользовательских систем – это наличие средств защиты ин- формации одного пользователя от несанкционированного доступа со стороны других пользователей. Многозадачные системы могут быть однопользовательскими, например, Windows 3.1. Теоретически воз- можны однозадачные многопользовательские системы. Одной из первых многопользовательских систем с развитыми механизмами защиты была система Multics. Пример другой однопользовательской системы Microsoft – MS-DOS. В системах на базе ядра NT реализо- ваны полноценные механизмы защиты многопользовательского ре- жима. По аппаратным средствам, на которых функционируют опе- рационные системы, их можно разделить на системы для мейн- фреймов, миникомпьютеров, микрокомпьютеров. Примеры этих операционных систем были рассмотрены в историческом обзоре. Существуют также встраиваемые системы. Они работают непосред- ственно в устройствах, которыми управляют: средствах управления техническими процессами; станках с ЧПУ; банкоматах, платежных 20 терминалах; телекоммуникационном оборудовании (Windows IoT, QNX). В отдельную группу можно выделить операционные системы мобильных устройств: смартфонов, планшетных компьютеров, ум- ных часов и др. (iOS, Android, Windows 10 Mobile). Самые произво- дительные компьютеры нашего времени (суперкомпьютеры и кла- стерные системы) в основном работают под управлением Linux. В классификации, основанной на аппаратных средствах, разделение идет по возможности работы с устройствами ввода-вывода и пери- ферийным оборудованием. Наименьшие возможности у встраивае- мых систем интеллектуальных смарт-карт (Java Card, MULTOS). Наибольшие возможности – у суперкомпьютеров. По особенностям работы в сети операционные системы де- лятся на сетевые и распределенные. Сетевая операционная система – это обычная система, расширенная поддержкой сетевого взаимодей- ствия. По методам реализации сетевых функций системы различа- ются по способам реализации справочной информации о сетевых ресурсах и адресации; механизмам обеспечения прозрачности до- ступа. В линейке Windows первой сетевой системой была Windows for Workgroups 3.1. Распределённая операционная система, динами- чески и автоматически распределяя работы по различным машинам системы для обработки, заставляет набор сетевых машин обрабаты- вать информацию параллельно. Пользователь распределённой опе- рационной системы не имеет сведений, на какой машине выполня- ется его работа. Примеры распределенных систем – Plan 9, Amoeba. Существует несколько вариантов реализации многозадачных операционных систем. В зависимости от способа переключения с задачи на задачу различают системы с не вытесняющей многозадач- ностью и вытесняющей многозадачностью. Вытесняющая многоза- дачность предполагает использование прерываний от таймера как основной способ переключения задач. Операционные системы се- мейств Windows 1.0-3.11 использовали не вытесняющую многоза- дачность, а Windows 9x, WindowsNT – вытесняющую. Еще одним аспектом реализации многозадачности является использование концепции нитей (потоков) исполнения – многоза- дачности внутри одного процесса. Нити использовались в Windows, начиная с Windows 95. Многозадачные системы можно разделить на три большие группы по критерию эффективности алгоритма планирования и, что 21 эквивалентно, по областям применения многозадачных операцион- ных систем. Критерии эффективности системы пакетной обработки ори- ентированы на обеспечение максимальной пропускной способности, максимально полной загрузки вычислительной системы. Критерий характеризуется процентом загрузки центрального процессора; ко- личеством заданий, выполняемых в единицу времени; оборотным временем (среднее время вычисления задачи). В таких системах вы- бор нового задания для выполнения определяется от текущей внут- ренней ситуации, складывающейся в системе. Время выполнения задачи зависит от того, какие задачи загружены одновременно с ней и как в них происходит ввод-вывод. Поэтому невозможно гаранти- ровать выполнение некоторого задания в течение определенного интервала времени, что является недостатком. Система разделения времени устраняет данный недостаток пакетных систем. В таких системах распределение времени процес- сора организовано на основе квантования: периодического пере- ключения управления между всеми одновременно запущенными задачами. С точки зрения задачи это создает иллюзию монопольного использования процессора (концепция терминала). Эффективность систем разделения времени определяется эргономическими показа- телями, связанными с субъективными ощущениями пользователя, как быстро система обрабатывает команды терминала. Системы раз- деления времени обладают меньшей пропускной способностью из-за того, что ресурсы процессора тратятся на постоянное переключение между задачами. Реальное время в операционных системах – это способность операционной системы обеспечить требуемый уровень сервиса в определённый промежуток времени. Системы реального времени применяют для управления техническими объектами. В них суще- ствует предельно допустимое время, в течение которого должна быть выполнена программа управления объектом. Это время назы- вается временем реакции, а свойство операционных систем опера- тивно реагировать на события – реактивностью. Различают системы жёсткого реального времени – с режимом работы системы, при ко- тором нарушение временных ограничений равнозначно отказу си- стемы (RTLinux); системы мягкого реального времени – с режимом 22 работы системы, при котором нарушения временных ограничений приводят к снижению качества работы (QNX, RT-11, Windows IoT). Другими важными классификационными признаками являют- ся: возможность исполнения операционной системы на разном типе компьютеров; особенности архитектур и типов ядра; используемые методы управления памятью; организация файловых систем. Они рассматриваются в следующих разделах лекционного курса. Экзаменационные вопросы по разделу I 1. Определение операционной системы и ее функции. Понятие виртуальной машины. Управление ресурсами. 2. История разработки операционных систем, поколения ЭВМ и операционных систем. Влияние аппаратуры на развитие опера- ционных систем. Лампы – коммутационные панели. Транзисто- ры – пакетные системы. Интегральные схемы – многозадач- ность. СБИС – персональные компьютеры. 3. Классификация и примеры операционных систем. Многозадач- ность. Вид многозадачности. Многопоточная обработка. Крите- рии эффективности многозадачных операционных систем. 23 |