Предпосылки появления первых ОС.
Идея компьютера была предложена английским математиком Чарльзом Бэбиджем (Charles Babage) в середине девятнадцатого века. Его механическая «аналитическая машина» так и не смогла по-настоящему заработать, потому что технологии того времени не удовлетворяли требованиям, необходимым для изготовления нужных деталей точной механики. Конечно, никакой речи об операционной системе для этого «компьютера» не шло.
Настоящее рождение цифровых вычислительных машин произошло вскоре после окончания Второй мировой войны. В середине 40-х были созданы первые ламповые вычислительные устройства.
В эти годы появились первые алгоритмические языки, и таким образом к библиотекам математических и служебных подпрограмм добавился новый тип системного программного обеспечения — трансляторы.
Пакетная обработка данных заключалась в управлении обработкой перфокарт. От программиста требовалось собрать пакет перфокарт, содержащий его программу, данные к ней, а также управляющие перфокарты. Эти карты на специально разработанном языке управления заданиями (JCL, Job Control Language) объясняли системе и оператору, какие действия и в какой последовательности он хочет выполнить на вычислительной машине. Типовой набор директив обычно включал признак начала отдельной работы, вызов транслятора, вызов загрузчика, признаки начала и конца исходных данных. Кроме того, там могли быть указания на то, сколько метров бумаги можно выделить на распечатку и какое максимальное время может занять работа программы.
Мультипрограммные ОС мейнфреймов.
В это время в технической базе вычислительных машин произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что открыло путь к появлению следующего поколения компьютеров. Такая организация работы, когда в памяти находятся несколько программ и система в определенные моменты переключает выполнение с одной программы на другую, называется мультипрограммированием. Большие функциональные возможности интегральных схем сделали возможным реализацию на практике сложных компьютерных архитектур, таких, например, как IBM/360.
|
В этот период были реализованы практически все основные механизмы, присущие современным ОС: мультипрограммирование, мультипроцессирование, поддержка многотерминального многопользовательского режима, виртуальная память, файловые системы, разграничение доступа и сетевая работа.
В мультипрограммном пакетном режиме процессор не простаивал, пока одна программа выполняла операцию ввода-вывода, а переключался на другую готовую к выполнению программу. Для того чтобы хотя бы частично вернуть пользователям ощущение непосредственного взаимодействия с компьютером, был разработан другой вариант мультипрограммных систем — системы разделения времени.
На рубеже 60-70 гг. распространенным и не слишком дорогим периферийным устройством становятся мониторы. При этом процессор и ОЗУ остаются самыми дорогими и громоздкими устройствами вычислительной системы. В этих условиях возникают ОС с разделением времени. К одной ЭВМ подключается несколько десятков рабочих мест, оборудованных дисплеем (монитор + клавиатура) и совместно использующих вычислительные ресурсы ЭВМ. Первоначально в качестве аппаратной основы систем разделения времени должны были использоваться «большие» ЭВМ, которые позднее стало принято называть «мейнфреймами» (mainframes).
|
В начале 70-х годов появились первые сетевые операционные системы, которые в отличие от многотерминальных ОС позволяли не только рассредоточить пользователей, но и организовать распределенное хранение и обработку данных между несколькими компьютерами, связанными электрическими связями. Из общего числа подобных систем особого упоминания заслуживает UNIX – единственная система, благополучно дожившая до нашего времени.
ОС миникомпьютеров.
К середине 70-х годов наряду с мэйнфреймами широкое распространение получили мини-компьютеры, такие как PDP-11, Nova, HP. Мини-компьютеры первыми использовали преимущества больших интегральных схем, позволившие реализовать достаточно мощные функции при сравнительно невысокой стоимости компьютера. Архитектура мини-компьютеров была значительно упрощена по сравнению с мэйнфреймами, что нашло отражение и в их операционных системах. ОС стали специализированными, например, только для управления в реальном времени или только для поддержания режима разделения времени.
Важной вехой в истории операционных систем явилось создание ОС UNIX. Она была разработана для режима разделения времени в мини-компьютере PDP-7. Ее распространение обусловлено сравнительно легким переносом на разные аппаратные платформы, а также возможностью открытого редактирования кодов.
Вместе с этим распространение мини-компьютеров привело к созданию локальных сетей. Первые локальные сети строились с помощью нестандартного коммуникационного оборудования, в простейшем случае — путем прямого соединения последовательных портов компьютеров. Программное обеспечение также было нестандартным и реализовывалось в виде пользовательских приложений. Первое сетевое приложение для ОС UNIX — программа UUCP — появилась в 1976 году и начала распространяться с версией 7 AT&T UNIX с 1978 года. Эта программа позволяла копировать файлы с одного компьютера на другой в пределах локальной сети через различные аппаратные интерфейсы.
|
ОС в 80-е годы.
К наиболее важным событиям этого десятилетия можно отнести разработку стека TCP/IP в конце 70-х годов, становление Интернета, стандартизацию технологий локальных сетей, появление персональных компьютеров и операционных систем для них. В 1983 году стек протоколов TCP/IP был принят Министерством обороны США в качестве военного стандарта. Внедрение протоколов TCP/IP в ARPANET придало этой сети все основные черты, которые отличают современный Интернет.
Все десятилетие было отмечено постоянным появлением новых, все более совершенных версий ОС UNIX: SunOS, HP-UX, Irix, AIX и многие другие, в которых производители компьютеров адаптировали код ядра и системных утилит для своей аппаратуры.
С появлением персональных компьютеров компьютеры стали широко использоваться неспециалистами, что потребовало создание ОС с «дружественным» интерфейсом. Появилась MS-DOS компании Microsoft. Это была однопрограммная однопользовательская ОС с интерфейсом командной строки, способная стартовать с дискеты. Основными задачами для нее были управление файлами, расположенными на гибких и жестких дисках в UNIX-подобной иерархической файловой системе, а также поочередный запуск программ. MS-DOS не была защищена от программ пользователя.
Наибольшее влияние на развитие программного обеспечения для персональных компьютеров оказала операционная среда Windows компании Microsoft, представлявшая собой надстройку над MS-DOS. Сетевые функции также реализовывались в основном сетевыми оболочками, работавшими поверх ОС. Вместе с выпуском версии MS-DOS 3.1 в 1984 году компания Microsoft также выпустила продукт - MS-NET.
В 1987 году в результате совместных усилий Microsoft и IBM появилась первая многозадачная операционная система для персональных компьютеров с процессором Intel 80286, в полной мере использующая возможности защищенного режима — OS/2. Она поддерживала вытесняющую многозадачность, виртуальную память, графический пользовательский интерфейс и виртуальную машину для выполнения DOS-приложений. Сетевые разработки компаний Microsoft и IBM привели к появлению NetBIOS — транспортного протокола и одновременно интерфейса прикладного программирования для локальных сетей.
В 80-е годы были приняты основные стандарты на коммуникационные технологии для локальных сетей: в 1980 году — Ethernet, в 1985 — Token Ring, в конце 80-х — FDDI. Это позволило обеспечить совместимость сетевых операционных систем на нижних уровнях, а также стандартизовать интерфейс ОС с драйверами сетевых адаптеров. Для персональных компьютеров применялись не только специально разработанные для них операционные системы, подобные MS-DOS, NetWare и OS/2, но и адаптировались уже существующие ОС. Появление процессоров Intel 80286 и особенно 80386 с поддержкой мультипрограммирования позволило перенести на платформу персональных компьютеров ОС UNIX.
Современные ОС.
В 90-е годы практически все операционные системы, занимающие заметное место на рынке, стали сетевыми.
Во второй половине 90-х годов все производители операционных систем резко усилили поддержку средств работы с Интернетом. Кроме самого стека TCP/IP в комплект поставки начали включать утилиты, реализующие такие популярные сервисы Интернета, как telnet, ftp, DNS и Web.
Особое внимание в течение всего последнего десятилетия уделялось корпоративным сетевым операционным системам. Корпоративная операционная система отличается способностью хорошо и устойчиво работать в крупных сетях, которые характерны для больших предприятий, имеющих отделения в десятках городов и, возможно, в разных странах. Для корпоративной ОС очень важно наличие средств централизованного администрирования и управления, позволяющих в единой базе данных хранить учетные записи о десятках тысяч пользователей, компьютеров, коммуникационных устройств и модулей программного обеспечения, имеющихся в корпоративной сети. Первой успешной реализацией справочной службы корпоративного масштаба была система StreetTalk компании Banyan. К настоящему времени наибольшее признание получила справочная служба NDS компании Novell, выпущенная впервые в 1993 году для первой корпоративной версии NetWare 4.O.
Современным операционным системам присуща многоплатформенностъ, то есть способность работать на различных типах компьютеров. Используя адаптивные механизмы, операционная система сама подбирает параметры операционной среды, например, тайм-ауты в коммуникационных протоколах часто определяются в зависимости от условий работы сети. Распределение оперативной памяти между процессами осуществляется автоматически с помощью механизмов виртуальной памяти в зависимости от активности этих процессов и информации о частоте использования ими той или иной страницы.
Классификация ОС.
ОС классифицируются:
- по назначению;
- по характеру взаимодействия с пользователем;
- по числу одновременно выполняемых задач;
- по числу пользователей;
- по аппаратной основе.
По назначению выделяют:
- системы общего назначения (ОC, предназначенные для решения широкого круга задач, включая запуск различных приложений, разработку и отладку программ, работу с сетью и мультимедиа);
- системы реального времени. Важный класс систем, предназначенных для управления объектами (такими как летательные аппараты, технологические установки, автомобили, сложная бытовая техника и т.п.);
- прочие специализированные системы. Это различные ОС, ориентированные на эффективное решение задач определенного класса, с большим или меньшим ущербом для прочих задач (например, Novell Netware – система, обеспечивающая надежное и эффективное функционирование локальных сетей).
По характеру взаимодействия с пользователем выделяют:
- пакетные ОС, обрабатывающие заранее подготовленные задания;
- диалоговые ОС, выполняющие команды пользователя в диалоговом режиме;
- ОС с графическим интерфейсом, предполагает наряду с поддержкой диалогового режима, использование мыши;
- встроенные ОС, не взаимодействующие с пользователем.
По числу одновременно выполняемых задач выделяют:
- однозадачные ОС, в которых в каждый момент времени может существовать не более чем один пользовательский процесс + системные процессы, например, выполняющие ввод/вывод (MS-DOS);
- многозадачные ОС, обеспечивающие параллельное выполнение нескольких последовательных процессов;
По числу пользователей выделяют:
- однопользовательские ОС, с полным доступом пользователя к ресурсам системы. Используются для изолированных компьютеров, не допускающих доступа к ресурсам данного компьютера по сети или с удаленных терминалов;
- многопользовательские ОС. Их важной компонентой являются средства защиты данных и процессов каждого пользователя, основанные на понятии владельца ресурса и на точном указании прав доступа, предоставленных каждому пользователю системы.
По аппаратной основе выделяют:
- однопроцессорные ОС (MS-DOS, Win 98, Win 95);
- многопроцессорные ОС. В задачи таких систем входит эффективное распределение выполняемых заданий по процессорам и организация согласованной работы всех процессоров (Win XP, Vista, Server 2003, 2008, Win 7, Win 8, Ubuntu);
- автономные ОС, которые выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а также предназначены для управления вычислительными процессами;
- сетевые ОС. Они включают возможность доступа к другим компьютерам по локальной сети, работы с файловыми и другими серверами;
- серверные ОС. В отличие от сетевых они предоставляют пользователю возможность работы в распределенной сети как в единой системе, не разделенные на отдельные машины.
Основные понятия операционных систем реального времени (ОСРВ)
ОСРВ – программа, распределяющая вычислительные ресурсы таким образом, чтобы обеспечить выполнение требований реального времени для приложения, использующего ОСРВ.
Система (приложение) реального времени – программная система, в которой корректность работы зависит не только от результатов вычислений, но также от времени получения этих результатов. Система должна завершить обработку события (выработать отклик) не позднее заранее определенного момента времени.
Реальное время определяется соотношением срока исполнения и временем отклика. Существует несколько типов реального времени:
- жесткое реальное время требует, чтобы время отклика никогда не превышало срок исполнения. Примеры: система управления двигателем, система торможения, подушка безопасности.
- комбинированное реальное время комбинирует два срока выполнения – короткого «с допуском» и более длинного «жесткого». Примеры: мультимедиа приложения, высокоскоростные сети передачи данных.
- реальное время с допусками предполагает дифференциацию времени отклика при условии, что среднее время отклика равно сроку исполнения. Примеры: экранный редактор, сеть передачи данных, сервер базы данных.
Базовые объекты ОСРВ:
- задача - единица обработки, выполняющаяся конкурентно с другими задачами. Задачи являются основным средством обработки внутренних событий. Задача имеет некоторое значение приоритета, определяющее ее относительные претензии на захват процессора. Эти претензии удовлетворяются ОС по определенному алгоритму. Вместо приоритета может использоваться значение срока исполнения.
- обработчики прерываний - единица обработки, инициированная аппаратным прерыванием асинхронно по отношению к выполнению задач и самой ОС. Обработчики прерываний являются основным средством обнаружения возникновения внешних и временных событий.
- с емафоры предназначены для взаимосключающего доступа задач (и обработчиков прерываний) к критическим секциям кода, т.е. к разделяемым ресурсам.
- сообщения предназначены для обмена данными любого типа между задачами и обработчиками прерываний.
- с обытия (флаги, сигналы) предназначены для обмена двоичными данными между задачами и обработчиками прерываний.
- т аймеры предназначены для задания временных интервалов для задач, а также подсчета абсолютного значения времени.
- с четчики предназначены для отслеживания абсолютного значения или перемещения механических устройств (например, угла поворота вала).
Типы ОСРВ:
1) Временной циклический исполнитель. Обработка событий привязана к временным промежуткам (таймерным слотам).
2) Система, построенная на обработчиках прерываний. Обработка событий выполняется вложенными обработчиками прерываний.
3) Приоритетный планировщик позволяет добиться гарантированного соблюдения сроков исполнения (исполнимости) при некотором оптимальном способе назначения приоритетов.
Примеры ОСРВ:
1. OSEK/VDX. Спецификации встроенной операционной системы реального времени (OS), коммуникационная подсистема (COM) и управление сетью (NM). Основная область применения - транспортные средства (автомобили).
2. Real-Time Linux. Модификации ОС общего назначения для применения в приложениях реального времени. Существует несколько совершенно различных решений, в частности: архитектура с интегрированным ядром реального времени, архитектура с модифицированным планировщиком реального времени.
Тема 8. Критерии оценки ОС: надёжность, эффективность, удобство, масштабируемость, способность к развитию, мобильность.
1) Надёжность это самый важный критерий ОС, включающий
- способность сохранять минимум работоспособности в условиях программных сбоев и ошибок;
- способность, как минимум, диагностировать, а как максимум, компенсировать хотя бы некоторые типы аппаратных сбоев;
- ОС не должна содержать собственных (внутренних) ошибок;
- способность противодействовать явно неразумным действиям пользователя.
2) Эффективность. Эффективность любой программы определяется двумя показателями «время» и «память».
Временные показатели:
- производительность системы - усредненное количество полезной вычислительной работы, выполняемой в единицу времени;
- время реакции системы на действия пользователя.
Эти показатели могут противоречить друг другу. Например, в системах разделения времени увеличение кванта времени повышает производительность (за счет сокращения числа переключений процессов), но ухудшает время реакции.
3) Удобство пользователя. Например, система или ее часть удобна, если она позволяет легко решать те задачи, которые встречаются наиболее часто, но в то же время содержит средства для решения широкого круга менее стандартных задач.
4)Масштабируемость - возможность настройки системы для использования в разных вариантах в зависимости от мощности системы. Гарантия масштабируемости – продуманная модульная структура системы, позволяющая в ходе установки системы собирать и настраивать нужную конфигурацию.
5) Способность к развитию. При использовании модульной структуры с четко определенными функциями каждого модуля, создается возможность совершенствования отдельных модулей с минимальным риском вызвать нежелательные последствия для других частей системы.
6) Мобильность - возможность переноса ОС на другую аппаратную платформу, т.е. на другой тип процессора и другую архитектуру компьютера.
Тема 9. Основные функции и структура ОС. Понятие ядра системы.
Выделяются четыре основные группы функций, выполняемых системой:
· Управление устройствами. Имеются в виду все периферийные устройства, подключаемые к компьютеру, – клавиатура, монитор, принтеры, диски и т.п.
· Управление данными. Под этим термином понимается работа с файлами
· Управление процессами. Эта сторона работы ОС связана с запуском и завершением работы программ, обработкой ошибок, обеспечением параллельной работы нескольких программ на одном компьютере.
· Управление памятью. Оперативная память компьютера – это такой ресурс, которого всегда не хватает. В этих условиях разумное планирование использования памяти является важнейшим фактором эффективной работы.
Имеется еще несколько важных обязанностей, ложащихся на ОС:
Организация интерфейса с пользователем. Формы интерфейса могут быть разнообразными, в зависимости от типа и назначения ОС: язык управления пакетами заданий, набор диалоговых команд, средства графического интерфейса.
· Защита данных. Как только система перестает быть достоянием одного изолированного от внешнего мира пользователя, вопросы защиты данных от несанкционированного доступа приобретают первостепенную важность. ОС, обеспечивающая работу в сети или в системе разделения времени, должна соответствовать имеющимся стандартам безопасности.
· Ведение статистики. В ходе работы ОС должна собираться, храниться и анализироваться разнообразная информация: о количестве времени, затраченном различными программами и пользователями, об интенсивности использования ресурсов, о попытках некорректных действий пользователей, о сбоях оборудования и т.п. Собранная информация хранится в системных журналах и в учетных записях пользователей.
Наиболее общими видами структуризации можно считать два:
- ОС разделена на подсистемы, соответствующие перечисленным выше группам функций;
- структурное деление связано с понятием ядра системы.
Ядро - это основная часть операционной системы, является резидентной частью системы, т.е. к ядру относится тот программный код, который постоянно находится в памяти в течение всей работы системы. Остальные модули ОС являются транзитными, т.е. подгружаются в память с диска по мере необходимости на время своей работы. К транзитным частям системы относятся:
· утилиты (utilities) – отдельные системные программы, решающие частные задачи, такие как форматирование и проверку диска, поиск данных в файлах, мониторинг (отслеживание) работы системы и многое другое;
· системные библиотеки подпрограмм, позволяющие прикладным программам использовать различные специальные возможности, поддерживаемые системой (например, библиотеки для графического вывода, для работы с мультимедиа и т.п.);
· интерпретатор команд – программа, выполняющая ввод команд пользователя, их анализ и вызов других модулей для выполнения команд;
· системный загрузчик – программа, которая при запуске ОС (например, при включении питания) обеспечивает загрузку системы с диска, ее инициализацию и старт;
· другие виды программ, в зависимости от конкретной системы.
Не менее важным является определение ядра, основанное на отличиях в режиме работы компьютера. Все современные процессоры поддерживают два режима: привилегированный режим (он же режим ядра, kernel mode) и непривилегированный (режим задачи, режим пользователя, user mode). Программы, работающие в режиме ядра, имеют полный, неограниченный доступ ко всем ресурсам компьютера: его командам, адресам, портам ввода/вывода и т.п. В режиме задачи возможности программы ограничены, она, в частности, не может выполнить некоторые специальные команды, она должна обращаться к ядру для выполнения многих системных действий.
· Драйверы устройств - программы, предназначенные для обслуживания конкретных периферийных устройств, работают в режиме ядра. Драйверы подключаются к ядру в процессе загрузки системы, они могут загружаться и выгружаться в ходе работы системы.
· Для обращения прикладных программ к ОС, используется документированный набор системных вызовов и функций API (Applied Programming Interface). Под системными вызовами понимаются функции, реализуемые программами ядра системы. При их выполнении происходит переход из режима пользователя в режим ядра и обратно. API-функции описаны в документации ОС, независимо от того, выполняются ли они ядром или системными библиотеками, работающими в режиме пользователя. В Windows несколько разных API-функций обращаются к одному и тому же недокументированному системному вызову, но имеют различные обрамляющие части, работающие в режиме пользователя.