Лекция "Эволюция ОС"

  • Лекции
  • docx
  • 15.03.2017
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Некоторый прогресс в создании цифровых вычислительных машин произошел после второй мировой войны. В середине 40-х были созданы первые ламповые вычислительные устройства. В то время одна и та же группа людей участвовала и в проектировании, и в эксплуатации, и в программировании вычислительной машины. Это была скорее научно-исследовательская работа в области вычислительной техники, а не использование компьютеров в качестве инструмента решения каких-либо практических задач из других прикладных областей. Программирование осуществлялось исключительно на машинном языке. Об операционных системах не было и речи, все задачи организации вычислительного процесса решались вручную каждым программистом с пульта управления. Не было никакого другого системного программного обеспечения, кроме библиотек математических и служебных подпрограмм.
Иконка файла материала тема 3 вопрос 9.docx
тема 3 вопрос 9 эволюция ос Эволюция ОС Первый период (1945 ­1955) Известно, что компьютер был изобретен английским математиком Чарльзом Бэбиджем в конце  восемнадцатого века. Его "аналитическая машина" так и не смогла но­настоящему заработать, потому  что технологии того времени не удовлетворяли требованиям по изготовлению деталей точной  механики, которые были необходимы для вычислительной техники. Известно также, что этот  компьютер не имел операционной системы.  Некоторый прогресс в создании цифровых вычислительных машин произошел после второй мировой  войны. В середине 40­х были созданы первые ламповые вычислительные устройства. В то время одна и та же группа людей участвовала и в проектировании, и в эксплуатации, и в программировании  вычислительной машины. Это была скорее научно­исследовательская работа в области  вычислительной техники, а не использование компьютеров в качестве инструмента решения каких­ либо практических задач из других прикладных областей. Программирование осуществлялось  исключительно на машинном языке. Об операционных системах не было и речи, все задачи  организации вычислительного процесса решались вручную каждым программистом с пульта  управления. Не было никакого другого системного программного обеспечения, кроме библиотек  математических и служебных подпрограмм.1. Первый период (1945–1955 гг.) Ламповые машины. Операционных систем нет  электронно­вакуумная лампа Мы начнем исследование развития компьютерных комплексов с появления электронных  вычислительных систем (опуская историю механических и электромеханических устройств). Первые  шаги в области разработки электронных вычислительных машин были предприняты в конце Второй  мировой войны. В середине 40­х были созданы первые ламповые вычислительные устройства и  появился принцип программы, хранящейся в памяти машины (John Von Neumann, июнь 1945 г.). В то время одна и та же группа людей участвовала и в проектировании, и в эксплуатации, и в  программировании вычислительной машины. Это была скорее научно­исследовательская работа в  области вычислительной техники, а не регулярное использование компьютеров в качестве  инструмента решения каких­либо практических задач из других прикладных областей.  Программирование осуществлялось исключительно на машинном языке. Об операционных  системах не было и речи, все задачи организации вычислительного процесса решались  вручную каждым программистом с пульта управления. За пультом мог находиться только один  пользователь. Программа загружалась в память машины в лучшем случае с колоды перфокарт, а обычно с помощью  панели переключателей. Вычислительная система выполняла одновременно только одну операцию  (ввод­вывод или собственно вычисления). Отладка программ велась с пульта управления с помощью  изучения состояния памяти и регистров машины. В конце этого периода появляется первое системное программное обеспечение: в 1951–1952 гг.  возникают прообразы первых компиляторов с символических языков (Fortran и др.), а в 1954 г. Nat  Rochester разрабатывает Ассемблер для IBM­701. Существенная часть времени уходила на подготовку запуска программы, а сами программы  выполнялись строго последовательно. Такой режим работы называется последовательной  обработкой данных. В целом первый период характеризуется крайне высокой стоимостью вычислительных систем, их  малым количеством и низкой эффективностью использования. Второй период (1955 ­ 1965) С середины 50­х годов начался новый период в развитии вычислительной техники, связанный с  появлением новой технической базы ­ полупроводниковых элементов. Компьютеры второго  поколения стали более надежными, теперь они смогли непрерывно работать настолько долго, чтобы на них можно было возложить выполнение действительно практически важных задач. Именно в этотпериод произошло разделение персонала на программистов и операторов, эксплуатационщиков и  разработчиков вычислительных машин.  В эти годы появились первые алгоритмические языки, а следовательно и первые системные  программы ­ компиляторы. Стоимость процессорного времени возросла, что потребовало уменьшения непроизводительных затрат времени между запусками программ. Появились первые системы пакетной обработки, которые просто автоматизировали запуск одной программ за другой и тем самым  увеличивали коэффициент загрузки процессора. Системы пакетной обработки явились прообразом  современных операционных систем, они стали первыми системными программами, предназначенными  для управления вычислительным процессом. В ходе реализации систем пакетной обработки был  разработан формализованный язык управления заданиями, с помощью которого программист сообщал системе и оператору, какую работу он хочет выполнить на вычислительной машине. Совокупность  нескольких заданий, как правило в виде колоды перфокарт, получила название пакета заданий.  2. Второй период (1955 г.–начало 60­х) Компьютеры на основе транзисторов. Пакетные операционные системы С середины 50­х годов начался следующий период в эволюции вычислительной техники, связанный с  появлением новой технической базы – полупроводниковых элементов. Применение транзисторов  вместо часто перегоравших электронных ламп привело к повышению надежности компьютеров.  Теперь машины могут непрерывно работать достаточно долго, чтобы на них можно было возложить  выполнение практически важных задач. Снижается потребление вычислительными машинами  электроэнергии, совершенствуются системы охлаждения. Размеры компьютеров уменьшились.  Снизилась стоимость эксплуатации и обслуживания вычислительной техники. Началось использование ЭВМ коммерческими фирмами. Одновременно наблюдается бурное развитие алгоритмических языков (LISP, COBOL, ALGOL­60,  PL­1 и т.д.). Появляются первые настоящие компиляторы, редакторы связей, библиотеки  математических и служебных подпрограмм. Упрощается процесс программирования. Пропадает  необходимость взваливать на одних и тех же людей весь процесс разработки и использования  компьютеров. Именно в этот период происходит разделение персонала на программистов и  операторов, специалистов по эксплуатации и разработчиков вычислительных машин. Изменяется сам процесс прогона программ. Теперь пользователь приносит программу с входными  данными в виде колоды перфокарт и указывает необходимые ресурсы. Такая колода получает  название задания. Оператор загружает задание в память машины и запускает его на исполнение.  Полученные выходные данные печатаются на принтере, и пользователь получает их обратно через  некоторое (довольно продолжительное) время. Смена запрошенных ресурсов вызывает приостановку выполнения программ, в результате процессор  часто простаивает. Для повышения эффективности использования компьютера задания с похожими  ресурсами начинают собирать вместе, создавая пакет заданий. Появляются первые системы пакетной обработки, которые просто автоматизируют запуск одной  программы из пакета за другой и тем самым увеличивают коэффициент загрузки процессора. При реализации систем пакетной обработки был разработан формализованный язык управления  заданиями, с помощью которого программист сообщал системе и оператору, какую работу он хочет  выполнить на вычислительной машине. Системы пакетной обработки стали прообразом современных операционных систем, они были  первыми системными программами, предназначенными для управления вычислительным процессом Третий период (1965 ­ 1980) Следующий важный период развития вычислительных машин относится к 1965­1980 годам. В это  время в технической базе произошел переход от отдельных полупроводниковых элементов типа  транзисторов к интегральным микросхемам, что дало гораздо большие возможности новому, третьему  поколению компьютеров.  Для этого периода характерно также создание семейств программно­совместимых машин. Первым  семейством программно­совместимых машин, построенных на интегральных микросхемах, явилась  серия машин IBM/360. Построенное в начале 60­х годов это семейство значительно превосходиломашины второго поколения по критерию цена/произ­водительность. Вскоре идея программно­ совместимых машин стала общепризнанной.  Программная совместимость требовала и совместимости операционных систем. Такие операционные  системы должны были бы работать и на больших, и на малых вычислительных системах, с большим и с малым количеством разнообразной периферии, в коммерческой области и в области научных  исследований. Операционные системы, построенные с намерением удовлетворить всем этим  противоречивым требованиям, оказались чрезвычайно сложными "монстрами". Они состояли из  многих миллионов ассемблерных строк, написанных тысячами программистов, и содержали тысячи  ошибок, вызывающих нескончаемый поток исправлений. В каждой новой версии операционной  системы исправлялись одни ошибки и вносились другие.  Однако, несмотря на необозримые размеры и множество проблем, OS/360 и другие ей подобные  операционные системы машин третьего поколения действительно удовлетворяли большинству  требований потребителей. Важнейшим достижением ОС данного поколения явилась реализация  мультипрограммирования. Мультипрограммирование ­ это способ организации вычислительного  процесса, при котором на одном процессоре попеременно выполняются несколько программ. Пока  одна программа выполняет операцию ввода­вывода, процессор не простаивает, как это происходило  при последовательном выполнении программ (однопрограммный режим), а выполняет другую  программу (многопрограммный режим). При этом каждая программа загружается в свой участок  оперативной памяти, называемый разделом.  Другое нововведение ­ спулинг (spooling). Спулинг в то время определялся как способ организации  вычислительного процесса, в соответствии с которым задания считывались с перфокарт на диск в том  темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное  задание завершалось, новое задание с диска загружалось в освободившийся раздел.  Наряду с мультипрограммной реализацией систем пакетной обработки появился новый тип ОС ­  системы разделения времени. Вариант мультипрограммирования, применяемый в системах разделения времени, нацелен на создание для каждого отдельного пользователя иллюзии единоличного  использования вычислительной машины.  3. Третий период (начало 60­х – 1980 г.)  Компьютеры на основе интегральных микросхем. Первые многозадачные ОС  Следующий важный период развития вычислительных машин относится к началу 60­х – 1980 г. В это  время в технической базе произошел переход от отдельных полупроводниковых элементов типа  транзисторов к интегральным микросхемам. Вычислительная техника становится более надежной  и дешевой. Растет сложность и количество задач, решаемых компьютерами. Повышается  производительность процессоров. Повышению эффективности использования процессорного времени мешает низкая скорость работы  механических устройств ввода­вывода (быстрый считыватель перфокарт мог обработать 1200  перфокарт в минуту, принтеры печатали до 600 строк в минуту). Вместо непосредственного чтения  пакета заданий с перфокарт в память начинают использовать его предварительную запись, сначала на  магнитную ленту, а затем и на диск. Когда в процессе выполнения задания требуется ввод данных, они читаются с диска. Точно так же выходная информация сначала копируется в системный буфер и  записывается на ленту или диск, а печатается только после завершения задания. Вначале действительные операции ввода­вывода осуществлялись в режиме off­line, то есть с  использованием других, более простых, отдельно стоящих компьютеров. В дальнейшем они начинают  выполняться на том же компьютере, который производит вычисления, то есть в режиме on­line. Такой  прием получает название spooling (сокращение от Simultaneous Peripheral Operation On Line) или  подкачки­откачки данных. Введение техники подкачки­откачки в пакетные системы позволило  совместить реальные операции ввода­вывода одного задания с выполнением другого задания, но  потребовало разработки аппарата прерываний для извещения процессора об окончании этих  операций. Магнитные ленты были устройствами последовательного доступа, то есть информация считывалась с  них в том порядке, в каком была записана. Появление магнитного диска, для которого не важен  порядок чтения информации, то есть устройства прямого доступа, привело к дальнейшему развитию  вычислительных систем. При обработке пакета заданий на магнитной ленте очередность запусказаданий определялась порядком их ввода. При обработке пакета заданий на магнитном диске  появилась возможность выбора очередного выполняемого задания. Пакетные системы начинают  заниматься планированием заданий: в зависимости от наличия запрошенных ресурсов, срочности  вычислений и т.д. на счет выбирается то или иное задание. Дальнейшее повышение эффективности использования процессора было достигнуто с помощью  мультипрограммирования. Идея мультипрограммирования заключается в следующем: пока  одна программа выполняет операцию ввода­вывода, процессор не простаивает, как это  происходило при однопрограммном режиме, а выполняет другую программу. Когда операция  ввода­вывода заканчивается, процессор возвращается к выполнению первой программы. Эта идея напоминает поведение преподавателя и студентов на экзамене. Пока один студент  (программа) обдумывает ответ на вопрос (операция ввода­вывода), преподаватель (процессор)  выслушивает ответ другого студента (вычисления). Естественно, такая ситуация требует наличия в  комнате нескольких студентов. Точно так же мультипрограммирование требует наличия в памяти  нескольких программ одновременно. При этом каждая программа загружается в свой участок  оперативной памяти, называемый разделом, и не должна влиять на выполнение другой программы.  (Студенты сидят за отдельными столами и не подсказывают друг другу.) Появление мультипрограммирования требует настоящей революции в строении вычислительной  системы. Особую роль здесь играет аппаратная поддержка (многие аппаратные новшества появились еще на предыдущем этапе эволюции), наиболее существенные особенности которой перечислены  ниже.         Реализация защитных механизмов. Программы не должны иметь самостоятельного доступа к распределению ресурсов, что приводит к  появлению привилегированных и непривилегированных команд. Привилегированные команды,  например команды ввода­вывода, могут исполняться только операционной системой. Говорят, что  она работает в привилегированном режиме. Переход управления от прикладной программы к ОС  сопровождается контролируемой сменой режима. Кроме того, это защита памяти, позволяющая  изолировать конкурирующие пользовательские программы друг от друга, а ОС – от программ  пользователей. Наличие прерываний. Внешние прерывания оповещают ОС о том, что произошло асинхронное событие, например  завершилась операция ввода­вывода. Внутренние прерывания (сейчас их принято называть исключительными ситуациями) возникают,  когда выполнение программы привело к ситуации, требующей вмешательства ОС, например деление  на ноль или попытка нарушения защиты. Развитие параллелизма в архитектуре. Прямой доступ к памяти и организация каналов ввода­вывода позволили освободить центральный  процессор от рутинных операций. Не менее важна в организации мультипрограммирования роль операционной системы. Она отвечает за следующие операции. Организация интерфейса между прикладной программой и ОС при помощи  системных вызовов. Организация очереди из заданий в памяти и выделение процессора одному из  заданий потребовало планирования использования процессора. Переключение с одного задания на другое требует сохранения содержимого  регистров и структур данных, необходимых для выполнения задания, иначе говоря, контекста для  обеспечения правильного продолжения вычислений. Поскольку память является ограниченным ресурсом, нужны стратегии управления  памятью, то есть требуется упорядочить процессы размещения, замещения и выборки информации из памяти. обеспечение доступа к конкретному файлу только определенным категориям пользователей. Организация хранения информации на внешних носителях в виде файлов и  Поскольку программам может потребоваться произвести санкционированный обмен данными, необходимо их обеспечить средствами коммуникации. Для корректного обмена данными необходимо разрешать конфликтные  ситуации, возникающие при работе с различными ресурсами и предусмотреть координацию  программами своих действий, т.е. снабдить систему средствами синхронизации. Мультипрограммные системы обеспечили возможность более эффективного использования  системных ресурсов (например, процессора, памяти, периферийных устройств), но они еще долго  оставались пакетными. Пользователь не мог непосредственно взаимодействовать с заданием и  должен был предусмотреть с помощью управляющих карт все возможные ситуации. Отладка  программ по­прежнему занимала много времени и требовала изучения многостраничных распечаток  содержимого памяти и регистров или использования отладочной печати. Появление электронно­лучевых дисплеев и переосмысление возможностей применения клавиатур  поставили на очередь решение этой проблемы. Логическим расширением систем мультипрограммирования стали time­sharing системы, или  системы разделения времени.  В них процессор переключается между задачами не только на время операций ввода­вывода, но и просто по прошествии определенного времени. Эти переключения  происходят так часто, что пользователи могут взаимодействовать со своими программами во время их выполнения, то есть интерактивно. В результате появляется возможность одновременной работы  нескольких пользователей на одной компьютерной системе. У каждого пользователя для этого должна быть хотя бы одна программа в памяти. Чтобы уменьшить ограничения на количество работающих пользователей, была внедрена идея  неполного нахождения исполняемой программы в оперативной памяти. Основная часть  программы находится на диске, и фрагмент, который необходимо в данный момент выполнять, может  быть загружен в оперативную память, а ненужный – выкачан обратно на диск. Это реализуется с  помощью механизма виртуальной памяти. Основным достоинством такого механизма является  создание иллюзии неограниченной оперативной памяти ЭВМ. В системах разделения времени пользователь получил возможность эффективно производить  отладку программы в интерактивном режиме и записывать информацию на диск, не используя  перфокарты, а непосредственно с клавиатуры. Появление on­line­файлов привело к необходимости  разработки развитых файловых систем. Параллельно внутренней эволюции вычислительных систем происходила и внешняя их эволюция. До  начала этого периода вычислительные комплексы были, как правило, несовместимы. Каждый имел  собственную операционную систему, свою систему команд и т. д. В результате программу, успешно  работающую на одном типе машин, необходимо было полностью переписывать и заново отлаживать  для выполнения на компьютерах другого типа. В начале третьего периода появилась идея создания  семейств программно совместимых машин, работающих под управлением одной и той же  операционной системы. Первым семейством программно совместимых компьютеров, построенных на интегральных  микросхемах, стала серия машин IBM/360. Разработанное в начале 60­х годов, это семейство  значительно превосходило машины второго поколения по критерию цена/производительность. За ним  последовала линия компьютеров PDP, несовместимых с линией IBM, и лучшей моделью в ней стала  PDP­11. Сила «одной семьи» была одновременно и ее слабостью. Широкие возможности этой концепции  (наличие всех моделей: от мини­компьютеров до гигантских машин; обилие разнообразной периферии; различное окружение; различные пользователи) порождали сложную и громоздкую операционную  систему. Миллионы строчек Ассемблера, написанные тысячами программистов, содержали  множество ошибок, что вызывало непрерывный поток публикаций о них и попыток исправления. Только в операционной системе OS/360 содержалось более 1000 известных ошибок. Тем не менее  идея стандартизации операционных систем была широко внедрена в сознание пользователей и в  дальнейшем получила активное развитие. Четвертый период (1980 ­ настоящее время)Следующий период в эволюции операционных систем связан с появлением больших интегральных  схем (БИС). В эти годы произошло резкое возрастание степени интеграции и удешевление микросхем.  Компьютер стал доступен отдельному человеку, и наступила эра персональных компьютеров. С точки  зрения архитектуры персональные компьютеры ничем не отличались от класса миникомпьютеров типа PDP­11, но вот цена у них существенно отличалась. Если миникомпьютер дал возможность иметь  собственную вычислительную машину отделу предприятия или университету, то персональный  компьютер сделал это возможным для отдельного человека.  Компьютеры стали широко использоваться неспециалистами, что потребовало разработки  "дружественного" программного обеспечения, это положило конец кастовости программистов.  На рынке операционных систем доминировали две системы: MS­DOS и UNIX. Однопрограммная  однопользовательская ОС MS­DOS широко использовалась для компьютеров, построенных на базе  микропроцессоров Intel 8088, а затем 80286, 80386 и 80486. Мультипрограммная  многопользовательская ОС UNIX доминировала в среде "не­интеловских" компьютеров, особенно  построенных на базе высокопроизводительных RISC­процессоров.  В середине 80­х стали бурно развиваться сети персональных компьютеров, работающие под  управлением сетевых или распределенных ОС.  В сетевых ОС пользователи должны быть осведомлены о наличии других компьютеров и должны  делать логический вход в другой компьютер, чтобы воспользоваться его ресурсами, преимущественно  файлами. Каждая машина в сети выполняет свою собственную локальную операционную систему,  отличающуюся от ОС автономного компьютера наличием дополнительных средств, позволяющих  компьютеру работать в сети. Сетевая ОС не имеет фундаментальных отличий от ОС  однопроцессорного компьютера. Она обязательно содержит программную поддержку для сетевых  интерфейсных устройств (драйвер сетевого адаптера), а также средства для удаленного входа в  другие компьютеры сети и средства доступа к удаленным файлам, однако эти дополнения  существенно не меняют структуру самой операционной системы.  4. Четвертый период (с 1980 г. по настоящее время) Персональные компьютеры. Классические, сетевые и распределенные системы  Следующий период в эволюции вычислительных систем связан с появлением больших  интегральных схем (БИС). В эти годы произошло резкое возрастание степени интеграции и  снижение стоимости микросхем. Компьютер, не отличающийся по архитектуре от PDP­11, по цене и  простоте эксплуатации стал доступен отдельному человеку, а не отделу предприятия или  университета. Наступила эра персональных компьютеров. Первоначально персональные компьютеры предназначались для использования одним пользователем в однопрограммном режиме, что повлекло за собой деградацию архитектуры этих ЭВМ и их  операционных систем (в частности, пропала необходимость защиты файлов и памяти, планирования  заданий и т. п.). Компьютеры стали использоваться не только специалистами, что потребовало разработки  «дружественного» программного обеспечения. Однако рост сложности и разнообразия задач, решаемых на персональных компьютерах,  необходимость повышения надежности их работы привели к возрождению практически всех черт,  характерных для архитектуры больших вычислительных систем. В середине 80­х стали бурно развиваться сети компьютеров, в том числе персональных, работающих  под управлением сетевых или распределенных операционных систем. В сетевых операционных системах пользователи могут получить доступ к ресурсам другого  сетевого компьютера, только они должны знать об их наличии и уметь это сделать. Каждая машина в  сети работает под управлением своей локальной операционной системы, отличающейся от  операционной системы автономного компьютера наличием дополнительных средств (программной  поддержкой для сетевых интерфейсных устройств и доступа к удаленным ресурсам), но эти  дополнения не меняют структуру операционной системы. Распределенная система, напротив, внешне выглядит как обычная автономная система.  Пользователь не знает и не должен знать, где его файлы хранятся – на локальной или удаленной  машине – и где его программы выполняются. Он может вообще не знать, подключен ли его компьютерк сети. Внутреннее строение распределенной операционной системы имеет существенные отличия от  автономных систем. В дальнейшем автономные операционные системы мы будем называть классическими  операционными системами. Просмотрев этапы развития вычислительных систем, мы можем выделить шесть основных функций,  которые выполняли классические операционные системы в процессе эволюции:       Планирование заданий и использования процессора. Обеспечение программ средствами коммуникации и синхронизации. Управление памятью. Управление файловой системой. Управление вводом­выводом. Обеспечение безопасности Каждая из приведенных функций обычно реализована в виде подсистемы, являющейся структурным  компонентом ОС. В каждой операционной системе эти функции, конечно, реализовывались по­ своему, в различном объеме. Они не были изначально придуманы как составные части операционных  систем, а появились в процессе развития, по мере того как вычислительные системы становились все  более удобными, эффективными и безопасными. Эволюция вычислительных систем, созданных человеком, пошла по такому пути, но никто еще не  доказал, что это единственно возможный путь их развития. Операционные системы существуют  потому, что на данный момент их существование – это разумный способ использования  вычислительных систем. Рассмотрение общих принципов и алгоритмов реализации их функций и  составляет содержание большей части нашего курса, в котором будут последовательно описаны  перечисленные подсистемы. В обобщении темы «Эволюция операционных систем» предлагается краткая таблица, в которой  указаны основные вехи развития вычислительной техники и операционных систем. Период Развитие ОС до 1955 г. 1955 – 1965 гг. В XIX веке Чарльз Бэбидж предложил идею компьютера. Но технологии  того времени не могли обеспечить изготовление деталей точной  механики, которые были необходимы для этой машины. И его  «аналитическая машина» так и не смогла заработать.В середине 40­х гг.  XX в. появились ламповые вычислительные устройства. Это была скорее  научно­исследовательская работа в области вычислительной техники, а  не использование компьютеров в качестве инструмента решения каких­ либо практических задач. Программирование таких вычислительных  машин осуществлялось исключительно на машинном языке, и все задачи  организации вычислительного процесса решались вручную каждым  программистом с пульта управления. Никакого системного  программного обеспечения, кроме библиотек математических и  служебных подпрограмм, не было. Появление новой технической базы – полупроводниковых элементов.  Компьютеры второго поколения стали более надежными, теперь они  смогли непрерывно работать настолько долго, чтобы на них можно было  возложить выполнение действительно практически важных задач. В эти  годы появились первые алгоритмические языки, и первые системные  программы – компиляторы.Стоимость процессорного времени возросла, что потребовало уменьшения непроизводительных затрат времени между  запусками программ. Появились первые системы пакетной обработки,  которые просто автоматизировали запуск одной программ за другой, и  тем самым увеличивали коэффициент загрузки процессора. Системы  пакетной обработки явились прообразом современных операционныхсистем, они стали первыми системными программами, предназначенными для управления вычислительным процессом. В технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам. Для этого  периода характерно также создание семейств программно­совместимых  машин. Первым семейством программно­совместимых машин,  построенных на интегральных микросхемах, явилась серия машин  IBM/360.Программная совместимость требовала и совместимости  операционных систем. Такие операционные системы должны были  работать на больших и малых вычислительных системах с различными  периферийными устройствами, и обеспечивать применение  вычислительной системы в коммерческой области и в области научных  исследований. ОС, удовлетворяющие всем требованиям, были  громоздкими, сложными, они содержали множество ошибок, вызывающих нескончаемый поток исправлений. Примером такой ОС может служить  OS/360 (фирма IBM).В этот период были реализованы почти все  основные механизмы, присущие современным ОС:  мультипрограммирование, мультипроцессирование, поддержка  многотерминального многопользовательского режима, виртуальная  память, разграничение доступа, работа в сети.Мультипрограммирование – это способ организации вычислительного процесса, при котором на  одном процессоре попеременно выполняются несколько программ.  Мультипрограммирование было реализовано в системах пакетной  обработки и в системах разделения времени. Для возможности работы  с компьютером большого числа пользователей были разработаны  многотерминальные системы, когда каждый пользователь работает за  своим терминалом. Многотерминальный режим использовался и в  системах разделения времени, и в системах пакетной обработки. При  этом и пользователи, и оператор могли формировать свои задания и  управлять их выполнением со своего терминала. В режиме  мультипрограммирования каждая программа загружается в свой участок  оперативной памяти, называемый разделом.Другое нововведение в  машинах третьего поколения – спулинг (spooling) – способ организации  вычислительного процесса, в соответствии с которым задания  считывались с перфокарт на диск в том темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное задание  завершалось, новое задание с диска загружалось в освободившийся  раздел. В это время ОС стали неотъемлемой частью компьютеров,  взявшей на себя большую часть действий по организации  вычислительного процесса. В начале 70­х гг. появились первые прототипы сетевых операционных  систем, которые в отличие от многотерминальных ОС позволяли не  только рассредоточить пользователей, но и организовать распределенное  хранение и обработку данных между несколькими компьютерами,  связанными электрическими связями.К середине 70­х гг. получили  большое распространение миникомпьютеры: Nova, PDP­11, HP. Их  архитектура стала значительно проще, что упростило и операционные  системы. ОС миникомпьютеров стали делать специализированными,  например, только для управления в реальном времени (RT11 для PDP­11) или только для поддержания режима разделения времени. Эти  операционные системы не были многопользовательскими. 1965 – начало 70­х  гг. 70­е – 1980 гг. 1980 – 90­е гг. Этот период в эволюции операционных систем связан с появлением  больших интегральных схем (БИС). В эти годы произошло резкоевозрастание степени интеграции и удешевление микросхем. Компьютер  стал доступен отдельному человеку, и наступила эра персональных  компьютеров. Функционально они ничем не отличались от  миникомпьютеров типа PDP­11, но цена у них была существенно ниже.  Что позволило иметь собственный компьютер практически каждому  человеку, а не отделу или институту. Компьютеры стали использоваться  неспециалистами, что потребовало «дружественности» от программного  обеспечения. На рынке операционных систем в эти годы доминировали  две системы: MS­DOS и Unix. Однопрограммная однопользовательская  ОС MS­DOS широко использовалась для компьютеров, построенных на  базе микропроцессоров Intel 8088, а затем 80286, 80386 и  80486.Мультипрограммная многопользовательская ОС Unix  использовалась, в основном, на «неинтеловских» компьютерах, особенно  построенных на базе высокопроизводительных RISC­процессоров. Все  десятилетие происходило усовершенствование этой ОС, в результате  чего стали появляться ее новые разновидности: SunOS, HP­UX, Irix,  AIX.Значительное распространение персональных компьютеров  послужило катализатором для бурного роста локальных сетей. Ещё  одной важной разработкой этого десятилетия стало появление стека  протоколов TCP/IP, становление Интернета, стандартизация технологий  локальных сетей, и более интенсивное развитие сетевых операционных  систем (OS­Net фирмы Nowell, OS/2 фирм Microsoft и IBM). В 90­е годы почти все ОС становятся сетевыми, способными работать с  разнородными клиентами и серверами, поддерживают средства работы с  Интернетом. Появляются специализированные сетевые ОС,  предназначенные исключительно для выполнения коммуникационных  задач, например, систеliliмpа IOS фирмы CiscoSСистемы пакетной  обработки/emystн ли его компью тер к сети. Внутреннее строение ems  работающая в маршрутизаторах.Особое место уделяется корпоративным  ОС, им отводится основная роль в развитии ОС в ближайшем будущем.  Такая ОС должна устойчиво работать в крупных сетях больших  предприятий. Для корпоративных систем характерна высокая степень  масштабируемости, поддержка сетевой работы, развитые средства  обеспечения безопасности, способность работать в гетерогенной среде.К  корпоративным ОС в настоящее время относят Windows 2000,  WindowsNT, различные Unix­системы. Современный этап  развития ОС Эволюция операционных систем состоит из следующих этапов:  Последовательное выполнение заданий  Простая пакетная обработка  Мультипрограммирование в пакетных системах  Разделение времени  Современные ОС Первая фаза развития ОС Время ЭВМ дороже времени человека Один пользователь в один момент времени работает напрямую с консолью Первые «ОС» — общие библиотеки вв/выв Простой монитор пакетной обработки – убрать пользователя от компьютера. ОС –  программа для загрузки и исполнения пользовательских заданий и сохранения результатов Каналы данных, прерывания, одновременное выполнение операций вв/выв и  вычислений                        Защита памяти позволяет реализовывать многозадачность: несколько пользователей  используют одну систему ОС должна управлять взаимодействием, параллельностью К середине 60х ОС становятся большими и сложными Область ОС становится важной дисциплиной со своими принципами  Вторая фаза развития ОС Время человека дороже времени ЭВМ временем ответа Интерактивное разделение времени: удобные файловые системы, проблемы с  Персональные компьютеры: они дешевые, поэтому каждый терминал – ПК Сеть позволяет организовать общий доступ и взаимодействие между машинами Встроенные устройства: компьютеры помещаются в сотовые телефоны, стерео  проигрыватели, телевизоры и пр. Насколько там нужны сложные алгоритмы разделения времени. Настоящее и будущее ОС Будущее в научном развитии ОС Очень маленькие ОС (для мобильных устройств) Очень большие ОС (центр обработки данных, облачные вычисления) Характеристики текущих ОС Огромные миллионы строк исходного кода, 100­1000 человеко­лет разработки Сложные: асинхронные, зависимые от аппаратного обеспечения, ориентированные  на высокую производительность Плохо понимаемые Направление исследований Постоянно возникают новые направления исследований собственной унифицированной ОС) Встраиваемые системы (iPоd – плеер компании Apple потребовал разработки  Системы сенсоров (очень низкое энергопотребление, жесткие требования в памяти) Одноранговые сети Беспроводные сети Маштабируемые системы, кластерные системы Старые проблемы требуют новых подходов к решению Эволюция смартфонов повторяет эволюцию ПК, которая повторяла эволюцию  миникомпьютеров, а они в свою очередь минифреймов Эволюция операционных систем | Эволюция ОС Пытаясь понять основные требования, предъявляемые к операционным системам, а также  значение основных возможностей современных операционных систем, полезно проследить  за их эволюцией, происходившей на протяжении многих лет.   Последовательная обработка данных В самых первых компьютерах, в период от конца 40­х до средины 50­х годов, программы  непосредственно взаимодействовали с аппаратным обеспечением машины; операционных  систем в то время еще не было. Эти компьютеры управлялись с пульта управления,  состоящего из сигнальных ламп, тумблеров, некоторого устройства для ввода данных и  принтера. Программы, машинные коды и данные загружались через устройство ввода  данных (например, устройство ввода с перфокарт). Если из­за ошибки происходил останов  программы, о возникновении сбойной ситуации свидетельствовали аварийные сигнальные  лампы. Чтобы определить причину ошибки, программист должен был проверить состояние  регистров процессора и основной памяти. Если программа успешно завершала свою работу,ее выходные данные распечатывались на принтере. Ранние системы имели две основные проблемы: Расписание работы. На большинстве машин нужно было предварительно заказать  машинное время, записавшись в специальный график. Обычно пользователь мог заказать  время, кратное некоторому периоду, например, получасу. Тогда, записавшись на 1 час, он  мог закончить работу за 45 минут, что приводило к простою компьютера. С другой  стороны, если пользователь не укладывался в отведенное время, он должен был  прекращать работу, прежде чем задача завершит выполнение. Время подготовки к работе. Для запуска каждой программы, называемой заданием (job),  нужно было загрузить в память компилятор и саму программу, обычно составленную на  языке высокого уровня (исходный текст), сохранить скомпилированную программу  (объектный код), а затем загрузить и скомпоновать объектный код с библиотечными  функциями. Для каждого из этих этапов могли понадобиться установка и съем магнитных  лент или загрузка колоды перфокарт. При возникновении фатальной ошибки  беспомощному пользователю не оставалось ничего другого, как начинать весь  подготовительный процесс заново. Таким образом, значительное время затрачивалось лишь на то, чтобы подготовить программу к собственно исполнению. Такой режим работы можно назвать последовательной обработкой данных. Это название  отражает тот факт, что пользовательские программы исполнялись на компьютере  последовательно. Спустя некоторое время в попытке повысить эффективность  последовательной обработки были разработаны различные системные инструменты. К ним  относятся библиотеки функций, редакторы связей, загрузчики, отладчики и драйверы  ввода­вывода, существующие в виде программного обеспечения, общедоступного для всех  пользователей.   Простые пакетные системы Первые машины были очень дорогими, поэтому было важно использовать их как можно  эффективнее. Простои, происходившие из­за несогласованности расписания, а также  время, затраченное на подготовку задачи, — все это обходилось слишком дорого; эти  непроизводительные затраты были непозволительной роскошью. Чтобы повысить эффективность работы, была предложена концепция пакетной  операционной системы. Похоже, первые пакетные операционные системы (и вообще первые операционные системы какого бы то ни было типа) были разработаны в средине 50­х годов  в компании General Motors для машин IBM 701 [WEIZ81]. Впоследствии эта концепция  была усовершенствована и внедрена определенным кругом пользователей на IBM 704. В  начале 60­х годов некоторые поставщики разработали пакетные операционные системы для своих компьютеров. Одной из заметных систем того времени является IBSYS фирмы IBM,  разработанная для компьютеров 7090/7094 и оказавшая значительное влияние на другие  системы. Главная идея, лежащая в основе простых пакетных схем обработки, состоит в  использовании программы, известной под названием монитор (monitor). Используя  операционную систему такого типа, пользователь не имеет непосредственного доступа к  машине. Вместо этого он передает свое задание на перфокартах или магнитной ленте  оператору компьютера, который собирает разные задания в пакеты и помещает их в  устройство ввода данных. Так они передаются монитору. Каждая программа составлена  таким образом, что при завершении ее работы управление переходит к монитору, который  автоматически загружает следующую программу. Чтобы понять работу этой схемы, рассмотрим ее с точки зрения монитора и процессора. Работа схемы с точки зрения монитора. Монитор управляет последовательностью  событий. Чтобы это было возможно, большая его часть должна всегда находиться в  основной памяти и быть готовой к работе (рис. 2.3). Эту часть монитора называют  резидентным монитором. Оставшуюся часть составляют утилиты и общие функции,  которые загружаются в виде подпрограмм, вызываемых программой пользователя в началевыполнения каждого задания (если они для него требуются). Монитор считывает с  устройства ввода данных (обычно это устройство ввода с перфокарт или магнитная лента)  по одному заданию. При этом текущее задание размещается в области памяти,  предназначенной для программ пользователя, и ему передается управление. По завершении задания оно возвращает управление монитору, который сразу же начинает считывать  следующее задание. Результат исполнения каждого задания направляется на устройство  вывода, например принтер. Работа схемы с точки зрения процессора. Допустим, в некоторый момент времени  процессор исполняет команды, которые находятся в той части основной памяти, которую  занимает монитор. Это приводит к тому, что в другую область памяти считывается новое  задание. После того как задание полностью считано, монитор отдает процессору команду  перехода, по которой он должен начать исполнение программы пользователя. Процессор  переходит к обработке программы пользователя и выполняет ее команды до тех пор, пока  не дойдет до конца или пока не возникнет сбойная ситуация. В любом из этих двух случаев следующей командой, которую процессор извлечет из  памяти, будет команда монитора. Таким образом, фраза "контроль передается заданию"  означает, что процессор перешел к извлечению и выполнению команд программы  пользователя. Фраза же "контроль возвращается монитору" означает, что теперь процессор  извлекает из памяти и выполняет команды монитора. Как видите, монитор решает проблему разработки графика. Задания в пакетах  выстраиваются в очередь и выполняются без простоев настолько быстро, насколько это  возможно. Кроме того, монитор помогает в подготовке программы к исполнению. В  каждое задание включаются простые команды языка управления заданиями (job control  language — JCL). Это специальный тип языка программирования, используемый для того,  чтобы отдавать команды монитору. Рассмотрим простой пример, в котором нужно принять на обработку программу пользователя, составленную на языке FORTRAN, и  дополнительные данные, используемые этой программой. Все команды языка FORTRAN и  данные находятся на отдельных перфокартах или в отдельных записях на магнитной ленте. Каждое задание, кроме операторов языка FORTRAN и данных, содержит команды  управления заданием, каждая из которых начинается знаком $. Формат задания в целом  выглядит следующим образом: Чтобы выполнить это задание, монитор читает строку $FTN и загружает с запоминающего  устройства большой емкости (обычно это лента) компилятор соответствующего языка.  Компилятор преобразует программу пользователя в объектный код, который записывается  в память или на запоминающее устройство. Если этот код заносится в память, то операция  называется "компиляция, загрузка и запуск". Если же он записывается на магнитную ленту,  то нужна дополнительная команда $LOAD. Монитор, к которому вернулось управление  после компиляции, читает эту команду и обращается к загрузчику, который загружает  объектную программу в память (на место компилятора) и передает ей управление. В таком  режиме различные подсистемы совместно используют один и тот же участок основной  памяти, хотя в каждый момент времени работает только одна из этих подсистем. Во время выполнения программы пользователя по каждой команде ввода считывается  только одна строка данных. Команда ввода программы пользователя обращается к  подпрограмме ввода, которая является составной частью операционной системы.  Подпрограмма ввода проверяет, не произошло ли случайное считывание строки языка JCL.  Если это произошло, управление передается монитору. При успешном (или неудачном)  завершении задания пользователя монитор проверяет строки задания, пока не дойдет до  строки с командой на языке управления, что защищает систему от программ, в которых  оказалось слишком много или слишком мало строк с данными (иначе очередным заданием  могли оказаться излишние данные предыдущего задания, или часть нового задания могла  бы рассматриваться как недостающие данные предыдущего задания). Таким образом, монитор, или пакетная операционная система, — это обычная  компьютерная программа. Ее работа основана на способности процессора выбирать  команды из различных областей основной памяти; при этом происходит передача и возвратуправления. Желательно также использование и других возможностей аппаратного  обеспечения. Защита памяти. Во время работы программы пользователя она не должна носить  изменения в область памяти, в которой находится монитор. Если е такая попытка  предпринята, аппаратное обеспечение процессора должно обнаружить ошибку и передать  управление монитору. Затем монитор снимет задачу с выполнения, распечатает сообщение  об ошибке и загрузит следующее задание. Таймер. Таймер используется для того, чтобы предотвратить ситуацию, когда одна задача  захватит безраздельный контроль над системой. Таймер выставляется в начале каждого  задания. По истечении определенного промежутка времени программа пользователя  останавливается и управление передается монитору. Привилегированные команды. Некоторые команды машинного уровня имеют  повышенные привилегии и могут исполняться только монитором. Если процессор  натолкнется на такую команду во время исполнения программы пользователя, возникнет  ошибка, при которой управление будет передано монитору. В число привилегированных  команд входят команды ввода­вывода; это значит, что все устройства ввода­вывода  контролируются монитором. Это, например, предотвращает случайное чтение программой  пользователя команд управления, относящихся к следующему заданию. Если программе  пользователя нужно произвести ввод­вывод, она должна запросить для выполнения этих  операций монитор. Прерывания. В первых моделях компьютеров этой возможности не было. Она придает  операционной системе большую гибкость при передаче управления программе  пользователя и его возобновлении. Конечно, операционную систему можно разработать и без учета описанных выше  возможностей. Однако поставщики компьютеров скоро поняли, что это приведет к хаосу,  поэтому даже сравнительно простые пакетные операционные системы обращались к таким  возможностям аппаратного обеспечения. При работе пакетных операционных систем машинное время распределялось между  исполнением программы пользователя и монитора. При этом в жертву приносились два  вида ресурсов: монитор занимал некоторую часть оперативной памяти, им же потреблялось некоторое машинное время. И то и другое приводило к непроизводительным издержкам.  Несмотря на это, простые пакетные системы существенно повышали эффективность  использования компьютера.  Многозадачные пакетные системы Процессору часто приходилось простаивать даже при автоматическом выполнении заданий под управлением простой пакетной операционной системы. Проблема заключается в том,  что устройства ввода­вывода работают намного медленнее, чем процессор. На рис. 2.4  представлены соответствующие расчеты, выполненные для программы, которая  обрабатывает файл с записями, причем для обработки одной записи требуется в среднем  100 машинных команд. В этом примере 96% всего времени процессор ждет, пока  устройства ввода­вывода закончат передачу данных в файл и из него. На рис. 2.5,а показана такая ситуация для одной программы. Некоторое время процессор исполняет команды;  затем, дойдя до команды ввода­вывода, он должен подождать, пока она не закончится.  Только после этого процессор сможет продолжить работу. Эффективность использования процессора можно повысить. Мы знаем, что памяти должно хватить, чтобы разместить в ней операционную систему (резидентный монитор) и  программу пользователя. Представим, что в памяти достаточно места для операционной  системы и двух программ пользователя. Теперь, когда одно из заданий ждет завершения  операций ввода­вывода, процессор может переключиться на другое задание, для которого в данный момент ввод­вывод, скорее всего, не требуется (рис. 2.5,6). Более того, если  памяти достаточно для размещения большего количества программ, то процессор может  выполнять их параллельно, переключаясь с одной на другую (рис. 2.5,в). Такой режим  известен как многозадачность (multiprogramming) и является основной чертой  современных операционных систем.Приведем простой пример, иллюстрирующий преимущества многозадачности. Рассмотрим  компьютер, имеющий 256 К слов памяти, не используемых операционной системой, диск,  терминал и принтер. На обработку одновременно приняты три программы, JOB1, JOB2 и  JOB3, атрибуты которых перечислены в табл. 2.1. Предположим, что для выполнения  заданий JOB2 и JOB3 использование процессора минимально, и задание JOB3 постоянно  обращается к диску и принтеру. В простой среде с пакетной обработкой эти задания  выполняются последовательно. Для завершения JOB1 требуется 5 мин. Задание JOB2  должно ждать, пока пройдут эти 5 мин, после чего оно выполняется в течение 15 мин. По  истечении 20 мин начинает работу задание JOB3; его выполнение заканчивается через 30  мин после того, как оно было принято на обработку. Средний процент использования  ресурсов, производительность и время отклика показаны в столбце табл. 2.2,  соответствующем однозадачности, а на рис. 2.6,а показано использование различных  устройств в этом режиме. Очевидно, что эффективность использования всех ресурсов,  усредненная по всему периоду времени (30 мин), является крайне низкой. Теперь предположим, что задания выполняются одновременно под управлением  многозадачной операционной системы. Из­за того что они используют разные ресурсы, их  совместное выполнение на компьютере длится минимальное время (при условии, что  заданиям J0B2 и J0B3 предоставляется достаточно процессорного времени для поддержки  осуществляемого ими ввода и вывода в активном состоянии). Для выполнения задания  J0B1 потребуется 5 мин, но к этому времени задание J0B2 будет выполнено на треть, а  задание J0B3 — на половину. Все три задания будут выполнены через 15 мин. Если  посмотреть на столбец табл. 2.2, соответствующий многозадачному режиму, его  преимущества станут очевидны, как и из гистограммы, приведенной на рис. 2.6,6. Работа многозадачной пакетной системы, как и работа простой пакетной системы,  базируется на некоторых аппаратных особенностях компьютера. Наиболее значительными  дополнениями, полезными для многозадачности, являются аппаратное обеспечение,  поддерживающее прерывания ввода­вывода, и прямой доступ к памяти. Используя эти  возможности, процессор генерирует команду ввода­вывода для одного задания и  переходит к другому на то время, пока контроллером устройства выполняется ввод­вывод. После завершения операции ввода­вывода процессор получает прерывание, и управление  передается программе обработки прерываний из состава операционной системы. Затем  операционная система передает управление другому заданию. Многозадачные операционные системы сложнее систем последовательной обработки  заданий. Для того чтобы можно было обрабатывать несколько заданий одновременно, они  должны находиться в основной памяти, а для этого требуется система управления  памятью. Кроме того, если к работе готовы несколько заданий, процессор должен решить,  какое из них следует запустить, для чего необходим некоторый алгоритм планирования.  Эти концепции обсуждаются в следующих разделах данной главы.  Системы, работающие в режиме разделения времени Использование многозадачности в пакетной обработке может привести к существенному  повышению эффективности. Однако для многих заданий желательно обеспечить такой  режим, в котором пользователь мог бы непосредственно взаимодействовать с  компьютером. В самом деле, во многих случаях интерактивный режим является  обязательным условием работы. Многозадачность не только позволяет процессору одновременно обрабатывать несколько  заданий в пакетном режиме, но может быть использована и для обработки нескольких  интерактивных заданий. Такую организацию называют разделением времени, потому что  процессорное время распределяется между различными пользователями. В системе  разделения времени несколько пользователей одновременно получают доступ к системе с  помощью терминалов, а операционная система чередует исполнение программ каждого  пользователя через малые промежутки времени. Таким образом, если нужно одновременно  обслужить n пользователей, каждому из них предоставляется лишь 1/и часть полной  скорости компьютера, не считая затрат на работу операционной системы. Однако,  принимая во внимание относительно медленную реакцию человека, время отклика на  компьютере с хорошо настроенной системой будет сравнимо со временем реакциипользователя. Как пакетная обработка, так и разделение времени используют многозадачность. Основные отличия этих двух режимов перечислены в табл. 2.3. Одной из первых операционных систем разделения времени была система CTSS  (Compatible Time­Sharing System) [CORB62], разработанная в Массачусетском  технологическом институте группой, известной как Project MAC. Первоначально система  была разработана для IBM 709, а затем перенесена на IBM 7094. По сравнению с более поздними системами, CTSS была довольно примитивна. Она  работала на машине с основной памятью емкостью 32000 36­битовых слов, из которых  5000 слов занимал монитор. Когда управление должно было быть передано очередному  интерактивному пользователю, его программа и данные загружались в остальные 27000  слов основной памяти. Программа всегда загружалась так, что ее начало находилось в  ячейке номер 5000, что упрощало управление как монитором, так и памятью.  Приблизительно через каждые 0.2 с системные часы генерировали прерывание. При каждом прерывании таймера управление передавалось операционной системе, и процессор мог  перейти в распоряжение другого пользователя. Таким образом, данные текущего  пользователя через регулярные интервалы времени выгружались, а вместо них загружались  другие. Перед считыванием программы и данных нового пользователя программа и данные  предыдущего пользователя записывались на диск для сохранения до дальнейшего  выполнения. Впоследствии, когда очередь этого пользователя наступит снова, код и  данные его программы будут восстановлены в основной памяти. Чтобы уменьшить обмен с диском, содержимое памяти, занимаемое данными пользователя, записывается на него лишь в том случае, если для загрузки новой программы не хватает  места. Этот принцип проиллюстрирован на рис. 2.7. Предположим, что всего работает четыре пользователя, которым нужны следующие  объемы памяти: Сначала монитор загружает задание JOB1 и передает ему управление (о). Затем он  принимает решение передать управление заданию JOB2. Из­за того, что JOB2 занимает  больше памяти, чем JOB1, сначала нужно сохранить данные JOB1, а затем можно загружать JOB2 (б). Затем для обработки загружается JOB3. Но поскольку это задание меньше, чем  JOB2, часть задания JOB2 может оставаться в основной памяти, сокращая время записи на  диск (в). Позже монитор вновь передает управление заданию JOB1. Чтобы загрузить его в  память, на диск необходимо записать еще часть задания JOB2 (г). При загрузке задания  JOB4 в памяти остается часть заданий JOB1 и JOB2 (д). Если теперь будет активизировано  задание JOB1 или JOB2, то потребуется лишь частичная его загрузка. Следующим в этом  примере запускается задание JOB2. Для этого требуется, чтобы JOB4 и оставшаяся в  памяти часть JOB1 были записаны на диск, а в память была считана недостающая часть  JOB2. Подход CTSS по сравнению с современными принципами разделения времени является  примитивным, но вполне работоспособным. Его простота позволяла использовать монитор  минимальных размеров. Из­за того что задание всегда загружалось в одно и то же место в  памяти, не было необходимости применять во время загрузки методы перемещения  (которые рассматриваются позже). Необходим был лишь метод записи, позволяющий  уменьшить активность диска. Работая на машине 7094, CTSS могла обслуживать до 32  пользователей. С появлением разделения времени и многозадачности перед создателями операционных  систем появилось много проблем. Если в памяти находится несколько заданий, их нужно  защищать друг от друга, иначе одно задание может, например, изменить данные другого  задания. Если в интерактивном режиме работают несколько пользователей, то файловая  система должна быть защищена, чтобы к каждому конкретному файлу доступ был только у определенных пользователей. Нужно разрешать конфликтные ситуации, возникающие при  работе с различными ресурсами, например с принтером и устройствами хранения данных.  Нами будут рассмотрены эти и другие возможные проблемы, а также пути их решения.