История операционных систем для персонального компьютера. Первые операционные системы. Виды операционных систем

История развития операционных систем насчитывает четыре периода. Первый период (1945 -1955): сороковые годы 20 столетия ознаменовались появлением вычислительной техники, но операционных систем не было, доступ к вычислительным ресурсам заключался в машинном кодировании. Первое поколение ОС (50-е годы) – системы пакетной обработки. В таких системах задание обрабатывается как последовательность пакетов, и во время обработки отсутствует взаимодействие между пользователем и его заданием.

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

Второй период (1955 – 1965): с середины 50-х годов начался новый период в развитии вычислительной техники, связанный с появлением новой технической базы – полупроводниковых элементов. Компьютеры второго поколения стали более надежными, теперь они смогли непрерывно работать настолько долго, чтобы на них можно было возложить выполнение действительно практически важных задач. Именно в этот период произошло разделение персонала на программистов и операторов, эксплуатационников и разработчиков вычислительных машин.

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

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

Третий период (1965 – 1980):следующий важный период развития вычислительных машин относится к 1965-1980 годам (соответственно 3 и 4 поколение ОС). В это время в технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что дало большие возможности новому, третьему поколению компьютеров.

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

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

Итак, третье поколение ОС (с середины 60-х годов) – многорежимные ОС, которые одновременно могут работать и в режиме пакетной обработки, и в режиме разделения времени, и в режиме реального времени, и в режиме мультипроцессорной обработке.

Четвертое поколение (с середины 70-х годов) – операционные системы, позволяющие получать доступ к территориально распределенным ЭВМ – сетевые операционные системы.

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

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

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

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

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

На рынке операционных систем доминировали две системы: MS-DOS и UNIX. Однопрограммная однопользовательская ОС MS-DOS широко использовалась для компьютеров, построенных на базе микропроцессоров Intel 8088, а затем 80286, 80386 и 80486. Мультипрограммная многопользовательская ОС UNIX доминировала в среде «неинтеловских» компьютеров, особенно построенных на базе высокопроизводительных RISC-процессоров.

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

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

Что будем делать с полученным материалом:

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

Все темы данного раздела:

Понятие операционной системы
Существуют две группы определений операционной системы: «набор программ, управляющих оборудованием» и «набор программ, управляющих другими программами». Обе они имеют свой точный технический смысл,

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

Список операционных систем (основные ОС)
Это список известных операционных систем. Операционные системы могут быть классифицированы по базовой технологии (UNIX-подобные, пост-UNIX/потомки UΝΙΧ), типу лицензии (проприетарная

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

Принципы построения операционных систем
№ п/п Принцип Сущность 1. Частотный Наиболее часто встречающиеся операции выполняются наиболее

Архитектура на базе ядра в привилегированном режиме
Концепция архитектуры. Наиболее общим подходом к структуризации операционной системы является разде­ление всех ее модулей на две группы: ядро и вспомогательные модули. Ядро

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

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

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

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

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

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

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

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

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

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

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

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

Состояние процессов
В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний: ВЫПОЛНЕНИЕ – активное состояние процесса, во время которого процесс о

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

Алгоритмы планирования процессов
Планирование процессов включает в себя решение следующих задач: определение момента времени для смены выполняемого процесса; выбор процесса на выполнение из очереди готовых процессо

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

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

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

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

Типы адресов
Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы. Распределению подлежит вся оперативная память, не занятая опе

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

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

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

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

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

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

Семейство ОС компании Microsoft
Microsoft Windows – семейство проприетарных (программное обеспечение, являющееся частной собственностью авторов или правообладателей и не удовлетворяющее критериям свободного ПО) операционных систе

Семейство Windows NT
Операционные системы этого семейства в настоящее время работают на процессорах с архитектурами x86, x64, и Itanium,ARM. Ранние версии (до 4.0 включительно) также поддерживали некоторые RISC-процесс

Семейство ОС для карманных компьютеров
Логотип Windows® CE. Это семейство операционных систем реального времени было специально разработано для мобильных устройств. Поддерживаются процессоры ARM, MIPS, SuperH и x86. В отличие о

Рыночная доля Windows
Таблица 3 год «Скачивалось» всех версий 89,67 %

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

Интернет ресурсы
1. http://www.osp.ru/os – электронная версия журнала «Операционные системы» на информационном портале, посвященном вопросам технологии разработки и использования открытых информационных систем в уп

Поколения ОС также как и аппаратные средства отражают достижения в области электронных компонентов: 1 поколение – лампы, 2 поколение – транзисторы, 3 поколение – интегральные микросхемы (ИС), 4 поколение большие и сверхбольшие интегральные схемы – БИС и СБИС. Поколения компьютеров отличаются:

    стоимостью, габаритами, мощностью;

    быстродействием и объемом памяти.

Рассмотрим эволюцию операционных систем.

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

1 поколение (60-е годы ). Возникласистема пакетной обработки . В каждый момент времени ЭВМ использовалась для решения одной прикладной программы. Пользователи уже не работают с ЭВМ на физическом уровне. Программы и данные принимает человек-оператор. Задание на обработку формируется в виде пакета, представляющего собой совокупность отдельных программ и данных, разделенных специальными символами. Пакет может быть составлен на перфокартах или МЛ. В машине постоянно находится управляющая программа, которая считывает последовательно пользовательские программы и данные из пакета и загружает их на выполнение. Результаты выводятся на внешнее устройство, и составляют пакет результатов. Управляющая программа должна фиксировать время исполнения каждой программы, реагировать на определенные ситуации по управлению программами по мере их исполнения (прекращать выполнение). Другими словами, она должна выполнять внутрисистемные операции управления, которые пользователь осуществлял ранее на физическом уровне. Дополнительно эта программа должна автоматически переключать машину на исполнение программ из пакета по последовательной схеме (FIFO ). Такую системную программу можно назвать простейшей ОС, обеспечивающей обработку программ воднопрограммном пакетном режиме .

Недостатки:

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

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

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

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

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

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

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

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

ОС третьего поколения (70-80 г.г.) были многорежимными системами, обеспечивающими пакетную обработку, разделение времени, режим реального времени и мультипроцессорный режим. Они были громоздкими, дорогостоящими (монстры операционных систем). Например, фирме IBM разработка ОС/360 стоила 6 млрд. долларов, что соизмеримо с затратами американской программы NASA высадки человека на Луне. Такие ОС, будучи прослойкой, между пользователем и аппаратурой ЭВМ, привели к значительному усложнению вычислительной обстановки. Для выполнения простейшей программы необходимо было изучать сложные языки управления заданием (JCL – Job Control Language ). К этому периоду относится появление вытесняющей многозадачности (Preemptive scheduling ), и использование концепции баз данных для хранения больших объемов информации для организации распределенной обработки. Программисты перестали использовать перфокарты и магнитные ленты для хранения своих данных. Вводится приоритетное планирование (Prioritized scheduling ) и выделение квот на использование ограниченных ресурсов компьютеров (процессорного времени, дисковой памяти, физической (оперативной) памяти). При использовании компьютеров широкое распространение получила концепция распределения времени (time sharing ) , но ограниченность ресурсов приводила к перегрузке компьютеров и к неприемлемому времени ожидания ответа или результатов работы. Программистам приходилось компенсировать это неудобство работой в ночное время.

Четвертое поколение с середины 70-х. Период характеризуется уменьшением стоимости компьютеров и увеличением стоимости труда программиста. Появление персональных компьютеров позволило установить компьютер практически каждому пользователю на рабочем столе. Благодаря широкому распространению вычислительных сетей и средств оперативной обработки (режимon-line), пользователи получают доступ к территориально распределенным компьютерам. Появились микропроцессоры, на основе которых создаются все новые и новые PC, которые могут быть использованы, как автономно, так и в качестве терминалов более мощных вычислительных систем. При передаче информации по линиям связи усложняются проблемы защиты информации, шифрования данных. Возникло понятие сетевого компьютера (Network computer ) , способного получать все ресурсы через компьютерную сеть. Понятие файловой системы распространяется на данные, доступные по различным сетевым протоколам.

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

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

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

Модуль 1. Эволюция операционных систем

2.2. История развития ОС

История развития ОС

Поколения ОС, так же как и аппаратные средства связаны с достижениями в области создания электронных компонентов: ламп (1-е поколение), транзисторов (2-е поколение), интегральных микросхем (ИС, 3-е поколение), больших и сверхбольших интегральных схем (БИС и СБИС, 4-е и 5-е поколения). Рассмотрим эволюцию ОС более подробно.

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

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

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

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

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

Следует отметить основные недостатки, присущие вычислительным системам второго поколения:

1. Использование части машинного времени (времени процессора) на выполнение системной управляющей программы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ОС четвертого поколения (1970-80-е гг.) были многорежимными системами, обеспечивающими пакетную обработку, разделение времени, режим реального времени и мультипроцессорный режим. Они были громоздкими, дорогостоящими («монстры» операционных систем). Например, стоимость разработки ОС OS/360 фирмой IBM соизмерима с затратами на реализацию американским национальным космическим агентством программы высадки человека на луну. Такие ОС, будучи прослойкой, между пользователем и аппаратурой ЭВМ, привели к значительному усложнению вычислительной обстановки. Для выполнения простейшей программы необходимо было изучать сложные языки управления заданием (Job Control Language JCL ). К этому периоду относится появление вытесняющей многозадачности (Preemptive scheduling ) и использование концепции баз данных для хранения больших объемов информации для организации распределенной обработки. Программисты перестали использовать перфокарты и магнитные ленты для хранения своих данных. Вводится приоритетное планирование (Prioritized scheduling ) и выделение квот на использование ограниченных ресурсов компьютеров (процессорного времени, дисковой памяти, физической (оперативной) памяти).

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

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

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

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

Широкое внедрение получила концепция распределенной обработки данных. Развитием распределенной обработки данных стала технология «клиент – сервер» , в которой серверный процесс предоставляет возможность использовать свои ресурсы клиентскому процессу по соответствующему протоколу взаимодействия. Название сервера отображает вид ресурса, который предоставляется клиентским системам (сервер печати, сервер вычислений, сервер баз данных, сервер новостей, сервер FTP, сервер WWW и т.д.).

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

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

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

· управление аппаратными средствами;

· управление устройствами ввода- вывода;

· поддержку файловой системы;

· поддержку многозадачности (разделение использования памяти, времени выполнения);

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

· интерфейс пользователя (команды в MS DOS, Unix; графический интерфейс в ОС Windows);

· поддержка работы с общими данными в режиме коллективного пользования;

· поддержка работы в локальных и глобальных сетях.

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

· реализацию обработки прерываний;

· управление виртуальной памятью;

· планирование использования процессора;

· обслуживание драйверов устройств.

2.2.3. Особенности современного этапа развития ОС

Особенности современного этапа развития ОС

В 90-е годы практически все ОС, занимающие заметное место на рынке, стали сетевыми. Сетевые функции сегодня встраиваются в ядро ОС, являясь ее неотъемлемой частью. Операционные системы получили средства для работы со всеми основными технологиями локальных (Ethernet , Fast Ethernet , Gigabit Ethernet , Token Ring , FDDI , ATM ) и глобальных (Х.25 , frame relay , ISDN , ATM ) сетей, а также средства для создания составных сетей (IP , IPX , AppleTalk , RIP , OSPF , NLSP ). В ОС используются средства мультиплексирования нескольких стеков протоколов, за счет которого компьютеры могут поддерживать одновременную сетевую работу с разнородными клиентами и серверами. Появились специализированные ОС, которые предназначены исключительно для выполнения коммуникационных задач. Например, сетевая ОС IOS компании Cisco Systems , работающая в маршрутизаторах, организует в мультипрограммном режиме выполнение набора программ, каждая из которых реализует один из коммуникационных протоколов.

Во второй половине 90-х годов все производители ОС резко усилили поддержку средств работы с Internet (кроме производителей Unix -систем, в которых эта поддержка всегда была существенной). Кроме самого стека TCP/IP в комплект поставки начали включать утилиты, реализующие такие популярные сервисы Internet как telnet , ftp , DNS и Web . Влияние Internet проявилось и в том, что компьютер превратился из чисто вычислительного устройства в средство коммуникаций с развитыми вычислительными возможностями.

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

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

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

Кен Томпсон и Деннис Ритчи — создатели UNIX

Наверное, современному пользователю будет трудно осознать, что было время, когда никакой Windows не было. Еще труднее будет осознать, что до этого было время, когда никаких операционных систем не было вообще. Большие электронные вычислительные машины (предшественники современных персональных компьютеров) уже были, а операционной системы — нет. Неужели такое возможно, спросите вы? Как же тогда компьютер работал? И когда появилась первая операционная система?

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

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

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

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

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

Усложнение задач, которые возлагались на компьютеры, ставили вопрос о создании полноценной операционной системы. Идея витала в воздухе, попытку реализовать ее, правда, не очень удачную, взяла на себя компания American Telegraph & Telephone Bell Labs (сокращенно AT&T Bell Labs) в 1965 году. Свою разработку они назвали Multics — это должна была быть многопользовательская операционная система с дружественным интерфейсом. В ней было немало хороших находок: разноуровневая защита виртуальной памяти, ее большой объем, полноценная файловая система. Однако, окончательно реализовать проект так и не удалось, он был закрыт — компания не видела коммерческого применения данного продукта.

Один из разработчиков, участвовавших в проекте Multics, Кен Томпсон, в 1969 году решил модернизировать операционную систему под игру собственной разработки под названием Space Travel, в которой игрок мог путешествовать на звездолете по солнечной системе. Позже к проекту подключился Деннис Ритчи и еще несколько сотрудников AT&T Bell Labs. Им удалось написать ядро системы, которая соответствовала требованиям игры. Она умела производить операции с файлами (копировать, удалять), распечатывать документы. Был реализован терминал для управления системой в виде командной строки. Свой проект они первоначально называли Unics. Впоследствии название превратилось в UNIX. В 1971 году операционка, что называется, пошла в народ и сразу же приобрела широкую популярность, став стандартной операционной системой во многих исследовательских институтах того времени. Изначально UNIX был написан на ассемблере (язык низкого уровня, близкий к машинным кодам). В 1972 году UNIX был переписан на языке B, а в 1973 году — на языке программирования С, который был написан для этой системы Деннисом Ритчи.

Именно UNIX можно назвать первой полноценной операционной системой, в которой были заложены все основные принципы построения операционных систем. Одна из реализаций UNIX послужила прототипом для операционной системы Linux, ядро которой, кстати, лежит в основе мобильной операционной системы Android.

Интересный факт: разработкой Multics, послужившей основой для UNIX, руководил программист и математик Виктор Высотский — сын русских эмигрантов. Если вы владеете анлийским языком, посмотрите фильм от AT&T Bell Labs об истории операционной системы UNIX. Рассказчик — Виктор Высотский, разработчик и руководитель проекта Multics.

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

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

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

1. Первый период (1945–1955 гг.)

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

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

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

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

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

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

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

2. Второй период (1955 г.–начало 60-х)

Компьютеры на основе транзисторов. Пакетные операционные системы

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

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

Большая электронно-счетная машина БЭСМ-6

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

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

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

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

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

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 известных ошибок. Тем не менее идея стандартизации операционных систем была широко внедрена в сознание пользователей и в дальнейшем получила активное развитие.

4. Четвертый период (с 1980 г. по настоящее время)

Персональные компьютеры. Классические, сетевые и распределенные системы

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

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

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

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

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

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

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

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

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

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

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

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

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

Период Развитие ОС
до 1955 г. В XIX веке Чарльз Бэбидж предложил идею компьютера. Но технологии того времени не могли обеспечить изготовление деталей точной механики, которые были необходимы для этой машины. И его «аналитическая машина» так и не смогла заработать.В середине 40-х гг. XX в. появились ламповые вычислительные устройства. Это была скорее научно-исследовательская работа в области вычислительной техники, а не использование компьютеров в качестве инструмента решения каких-либо практических задач.

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

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

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

1965 – начало 70-х гг. В технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам. Для этого периода характерно также создание семейств программно-совместимых машин. Первым семейством программно-совместимых машин, построенных на интегральных микросхемах, явилась серия машин IBM/360.

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

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

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

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

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

К середине 70-х гг. получили большое распространение миникомпьютеры: Nova, PDP-11, HP. Их архитектура стала значительно проще, что упростило и операционные системы. ОС миникомпьютеров стали делать специализированными, например, только для управления в реальном времени (RT11 для PDP-11) или только для поддержания режима разделения времени. Эти операционные системы не были многопользовательскими.

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-е годы почти все ОС становятся сетевыми, способными работать с разнородными клиентами и серверами, поддерживают средства работы с Интернетом. Появляются специализированные сетевые ОС, предназначенные исключительно для выполнения коммуникационных задач, например, система IOS фирмы Cisco Systems работающая в маршрутизаторах.

Особое место уделяется корпоративным ОС, им отводится основная роль в развитии ОС в ближайшем будущем. Такая ОС должна устойчиво работать в крупных сетях больших предприятий. Для корпоративных систем характерна высокая степень масштабируемости, поддержка сетевой работы, развитые средства обеспечения безопасности, способность работать в гетерогенной среде. К корпоративным ОС в настоящее время относят Windows 2000, Windows NT, различные Unix-системы.

Эволюция операционных систем состоит из следующих этапов:

  • Последовательное выполнение заданий
  • Простая пакетная обработка
  • Мультипрограммирование в пакетных системах
  • Разделение времени
  • Современные ОС

Первая фаза развития ОС

Время ЭВМ дороже времени человека

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

Вторая фаза развития ОС

Время человека дороже времени ЭВМ

  • Интерактивное разделение времени: удобные файловые системы, проблемы с временем ответа
  • Персональные компьютеры: они дешевые, поэтому каждый терминал – ПК
  • Сеть позволяет организовать общий доступ и взаимодействие между машинами
  • Встроенные устройства: компьютеры помещаются в сотовые телефоны, стерео проигрыватели, телевизоры и пр.
  • Насколько там нужны сложные алгоритмы разделения времени.

Настоящее и будущее ОС

Будущее в научном развитии ОС

  • Очень маленькие ОС (для мобильных устройств)
  • Очень большие ОС (центр обработки данных, облачные вычисления)

Характеристики текущих ОС

  • Огромные миллионы строк исходного кода, 100-1000 человеко-лет разработки
  • Сложные: асинхронные, зависимые от аппаратного обеспечения, ориентированные на высокую производительность
  • Плохо понимаемые

Направление исследований

Постоянно возникают новые направления исследований

  • Встраиваемые системы (iPоd – плеер компании Apple потребовал разработки собственной унифицированной ОС)
  • Системы сенсоров (очень низкое энергопотребление, жесткие требования в памяти)
  • Одноранговые сети
  • Беспроводные сети
  • Маштабируемые системы, кластерные системы

Старые проблемы требуют новых подходов к решению

  • Эволюция смартфонов повторяет эволюцию ПК, которая повторяла эволюцию миникомпьютеров, а они в свою очередь минифреймов
Понравилось? Лайкни нас на Facebook