Понятие операционной системы. Основные этапы развития операционных систем


Краткая история развития операционных систем

Возникновение и основные этапы развития операционных систем

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

BIOS – первый шаг к созданию операционных систем

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

Система пакетной обработки – прообраз современной операционной системы

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

Рисунок 1 Структура вычислительной системы с пакетной обработкой

Впервые, пакетная система была разработана в середине 50-х компанией General Motors для машин IBM 701. По-видимому, это была первая операционная система. Основная идея пакетной обработки состоит в том, чтобы управление загрузкой программ и распечатку результатов поручить маломощным и относительно дешевым машинам-сателлитам, которые подключаются к большой (основной) машине через высокоскоростные электронные каналы. При этом большая ЭВМ будет только решать задачу, полученную от машины-сателлита, и после завершения задачи передавать результаты по высокоскоростному каналу другой машине-сателлиту для распечатки.
Машины сателлиты работают самостоятельно, освобождая центральный процессор от необходимости управления медленными внешними устройствами. При этом распечатка результатов предыдущей задачи может происходить в ходе решения текущей задачи, и одновременно в электронную память машины-сателлита может считываться следующая задача. Такая организация системы пакетной обработки заданий известна как простая пакетная система.
Системы пакетной обработки заданий, реализованные в 50-е годы, стали прообразом современных операционных систем. В них впервые было реализовано программное обеспечение, используемое для управления исполнением прикладных программ.
Заметим здесь также, что описанный подход к построению H/W вполне сохранился до настоящего времени. Современные периферийные устройства, и, прежде всего, это накопители на жестких магнитных дисках, способны передавать большие объемы данных без участия центрального процессора. Забегая вперед, укажем, что только благодаря такому свойству аппаратуры компьютера существуют и эффективно работают современные многозадачные операционные системы.

Многозадачные операционные системы

Первые многозадачные операционные системы появились в 60-е годы в результате дальнейшего развития систем пакетной обработки заданий. Основным стимулом к их появления стали новые аппаратные возможности ЭВМ.
Во-первых, появились новые эффективные носители информации, на которых можно было легко автоматизировать поиск требуемых данных: магнитные ленты, магнитные цилиндры и магнитные диски. Это, в свою очередь, изменило структуру прикладных программ – теперь они могли в процессе работы загрузить дополнительные данные для вычислений или процедуры из стандартных библиотек.
Заметим теперь, что простая пакетная система, приняв задачу, обслуживает ее вплоть до полного завершения, а это значит, что во время загрузки дополнительных данных или кода процессор простаивает, при этом стоимость простоя процессора возрастает с ростом его производительности, так как более производительный процессор мог бы сделать за время простоя большее количество полезной работы.
Во-вторых, производительность процессоров существенно возросла, и потери процессорного времени в простых пакетных системах стали недопустимо велики.
В этой связи логичным шагом стало появление многозадачных пакетных систем. Необходимым условием для создания многозадачных систем является достаточный объем памяти компьютера. Для многозадачности объем памяти должен быть достаточен для размещения, по крайней мере, двух программ одновременно.
Основная идея многозадачности вполне очевидна – если текущая программа приостанавливается в ожидании завершения ввода-вывода, то процессор переходит к работе с другой программой, которая в данный момент готова к выполнению.
Однако, переход к другой задаче должен быть сделан так, чтобы сохранить возможность вернуться к брошенной задаче спустя некоторое время и продолжить ее работу с точки останова. Для реализации такой возможности в операционную систему потребовалось ввести специальную структуру данных, определяющую текущее состояние каждой задачи – контекст процесса. Контекст процесса определен в любой современной операционной системе таким образом, чтобы данных из него было бы достаточно для полного восстановления работы прерванной задачи.
Появление многозадачности потребовало реализации в составе операционной системы сразу нескольких фундаментальных подсистем, которые также представлены в любой современной операционной системе. Перечислим их:
1) подсистема управления процессорами – определяет какую задачу и в какое время следует передать процессору для обслуживания;
2) подсистема управления памятью – обеспечивает бесконфликтное использование памяти сразу несколькими программами;
3) подсистема управления процессами – обеспечивает бесконфликтное разделение ресурсов компьютера (например, магнитных дисков или общих подпрограмм) сразу несколькими программами.
В рамках этого курса будет подробно рассмотрена реализация указанных подсистем в современных операционных системах.
Почти сразу после появления многозадачных операционных систем, было замечено, что многозадачность полезна не только для повышения коэффициента использования процессора. Например, на основе многозадачности можно реализовать многопользовательский режим работы компьютера, т.е. подключить к нему несколько терминалов одновременно, причем для пользователя за каждым терминалом будет создана полная иллюзия, что он работает с машиной один. До эпохи массового использования персональных компьютеров, многопользовательский режим был основным режимом работы практически для всех ЭВМ. Повсеместная поддержка многопользовательского режима резко расширила круг пользователей компьютеров, сделала его доступным для людей различных профессий, что в конечном итоге и привело к современной компьютерной революции и появлению ПК.
При этом в зависимости от алгоритмов, положенных в основу работы подсистемы управления процессорами, операционная система, а с ней и вся ЭВМ, приобретает различные свойства. Например, многозадачная пакетная система, переключающаяся на другую задачу только при невозможности продолжить текущую, способна обеспечить максимальную пропускную способность компьютера, т.е. максимизировать среднее число задач, решаемых в единицу времени, но из-за непредсказуемости времени ответа многозадачная пакетная система совершенно не подходит для интерактивной системы, немедленно реагирующей на пользовательский ввод.
Многозадачная система с принудительным вытеснением задачи по истечению кванта времени идеально подходит для интерактивной системы, но не обеспечивает максимальной производительности для вычислительных задач.
При изучении темы "управление процессорами" в рамках данного курса будут рассмотрены особенности многих конкретных алгоритмов, показаны компромиссные решения, подходящие для универсальных операционных систем, ориентированных на решение широкого круга задач.
В качестве вывода отметим, что появление многозадачности было вызвано желанием максимально использовать процессор, исключив по возможности его простои, и в настоящее время многозадачность является неотъемлемым качеством практически любой современной операционной системы.

Операционные системы с поддержкой виртуальной памяти

Появление системы виртуальной памяти в конце 60-х, стало последним шагом на пути к современным операционным системам. Появление в дальнейшем графических пользовательских интерфейсов и даже поддержка сетевого взаимодействия уже не были столь революционными решениями, хотя и существенно повлияли и на развитие аппаратуры компьютеров, и на развитие самих операционных систем.
Толчком к появлению виртуальной памяти стали сложности управления памятью в многозадачных операционных системах. Основные проблемы здесь следующие:
- Программы, как правило, требуют для своего размещения непрерывную область памяти. В ходе работы, когда программа завершается, она освобождает память, но этот регион памяти далеко не всегда пригоден для размещения новой программы. Он или слишком мал, и тогда для размещения программы приходится искать участок в другой области памяти, или слишком велик, и тогда после размещения новой программы останется неиспользуемый фрагмент. При работе операционной системы, вскоре образуется очень много таких фрагментов – суммарный объем свободной памяти велик, но разместить новую программу не удается так как нет ни одной достаточно длинной непрерывной свободной области. Такое явление называется фрагментацией памяти.
- В случае, когда несколько программ одновременно находятся в общей памяти, ошибочные или преднамеренные действия со стороны какой-либо программы могут нарушить выполнение других программ, кроме того, данные или результаты работы одних программ могут быть несанкционированно прочитаны другими программами.
Как будет показано в рамках данного курса дальше, виртуальная память не только идеально решает подобные проблемы, но также предоставляет новые возможности для дальнейшей оптимизации работы всей вычислительной системы.
Решающей предпосылкой для появления системы виртуальной памяти стал механизм свопинга (от англ. to swap – менять, обменивать).
Идея свопинга состоит в том, чтобы выгружать из ОЗУ во вторичную память (на магнитный диск) программы, временно снятые с выполнения, и загружать их обратно в ОЗУ, когда они становятся готовыми к дальнейшему выполнению. Таким образом, происходит постоянный обмен программами между ОЗУ и вторичной памятью.
Свопинг позволяет освободить место в оперативной памяти для загрузки новых программ за счет выталкивания во вторичную память программ, которые не могут выполняться в данный момент. Свопинг достаточно эффективно решает проблему нехватки оперативной памяти и фрагментации, но не решает проблемы защиты.
Виртуальная память также основана на выталкивании части программ и данных из оперативной памяти во вторичную память, но реализуется гораздо сложнее и требует обязательной поддержки от аппаратных средств процессора. Конкретные механизмы работы виртуальной памяти будут рассмотрены в дальнейшем.
В конечном итоге, система виртуальной памяти организует собственное адресное пространство для каждой запущенной программы, которое называется виртуальное адресное пространство. При этом участки виртуального адресного пространства, по усмотрению операционной системы, могут отображаться либо на участки оперативной памяти, либо на участки вторичной памяти (см. Рисунок 2).


Рисунок 2 Отображение виртуального адресного пространства

При использовании виртуальной памяти, программы не смогут ошибочно или преднамеренно обратиться к данным других программ или самой операционной системы – подсистема виртуальной памяти гарантирует защиту данных. Кроме того, неиспользуемые в данный момент области виртуального адресного пространства отображаются во вторичную память, т.е. данные из этих областей хранятся не в ОЗУ, а во вторичной памяти, что решает проблему нехватки оперативной памяти. Наконец, области виртуального адресного пространства могут отображаться на произвольные участки ОЗУ, при этом соседние участки виртуального адресного пространства не обязательно должны быть соседними в ОЗУ, что решает проблему фрагментации.
Как уже было сказано, виртуальная память впервые была использована в реальных операционных системах в конце 60-х, но широкое распространение виртуальная память получила только в 80-х (UNIX, VAX/VMS), а повсеместно стала применяться в персональных компьютерах лишь в середине 90-х годов (OS/2, Linux, Windows NT). В настоящее время, виртуальная память, наряду с многозадачностью, является неотъемлемой частью практически любой современной операционной системы.

Графические интерфейсы пользователя

С конца 80-х, персональные компьютеры получили повсеместное распространение, и в сообщество пользователей ПК оказалось вовлечено множество людей различных специальностей. Многие из них не имели специальной компьютерной подготовки, но хотели использовать компьютер в своей работе, т.к. использование компьютера давало ощутимые преимущества в их деле.
С другой стороны, усложнение операционных систем и прикладных программ сделало управление ими достаточно сложной задачей даже для специалистов, и интерфейс командной строки, который к этому времени стал стандартом для операционных систем, перестал удовлетворять практическим запросам.
Наконец, появились новы аппаратные возможности: цветные графические мониторы, высокопроизводительные графические контроллеры и манипуляторы типа мышь.
Таким образом, в конце 80-х сложились все условия для повсеместного перехода на графический интерфейс пользователя: с одной стороны возникла потребность в более простом и удобном механизме управления компьютером, с другой стороны, развитие аппаратных средств позволяло построить такой механизм.
Основная идея графического интерфейса пользователя состоит в следующем:
- пользователю, в зависимости от текущей ситуации, предлагается выбрать один из нескольких альтернативных вариантов дальнейших действий;
- возможные варианты действий пользователя представлены на экране ЭВМ в виде текстовых строк (меню) или схематичных рисунков (пиктограмм);
- для выбора одного из вариантов дальнейших действий достаточно совместить на экране монитора указатель (курсор) с элементом меню или пиктограммой и нажать заранее определенную клавишу (обычно это <пробел>, <ввод> или кнопка мышки), чтобы проинформировать систему о сделанном выборе.
Первый графический интерфейс был разработан в 81 году в компании Xerox. Говорят, что посещение главой компании Microsoft Билом Гейтсом компании Xerox и знакомство с ее разработками в области графических пользовательских интерфейсов, подвигли Microsoft на создание собственных графических интерфейсов пользователя.
В настоящее время наиболее совершенным графическим интерфейсом обладает, по-видимому, операционные системы семейства Windows, эти графические интерфейсы являются как бы стандартов де-факто для графических интерфейсов пользователя.
Использование графического интерфейса оказалось настолько простым и интуитивно понятным, что компьютеры в настоящее время стали эффективно использовать в своей работе люди, которые даже не имеют никакого представления об архитектуре самого компьютера, операционной системы или прикладной программы.
В конечном итоге, появление графических интерфейсов пользователя в составе операционных систем и прикладных программ оказало колоссальное влияние на компьютеризацию современного общества.

Встроенная поддержка сети

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

История наиболее распространенных операционных систем

Операционная система UNIX

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

Проект операционной системы Multics

В проекте Multics в период 1965 – 1969 гг. совместно участвовали компании Bell Labs и General Electric. Целью проекта Multics было создание новой многопользовательской многозадачной интерактивной операционной системы, сочетающей удобство использования с мощной и эффективной системой управления ресурсами. В основу Multics были положены следующие технические решения:
- виртуальная память с сегментно-страничной организацией, контролирующая права доступа на запись, чтение или исполнение для каждого сегмента;
- централизованная файловая система, обеспечивающая организацию данных, даже находящихся на разных физических устройствах, в виде единой древовидной структуры каталогов/файлов;
- отображение содержимого файла в виртуальное адресное пространство процесса с использованием механизмов управления виртуальной памятью.
Все эти решения характерны и для современных операционных систем. Однако проект Multics не был завершен. Руководство компании Bell Labs приняло решение о выходе из проекта, посчитав дальнейшее финансирование проекта нецелесообразным, так как большие средства, уже вложенные в проект, не приносили отдачи.
Несмотря на досрочное прекращение, в ходе проекта Multics были определены базовые принципы управления ресурсами и архитектуры операционных систем, которые успешно используются до настоящего времени, а специалисты, участвующие в проекте, получили бесценный опыт. Среди участников проекта Multics были Кен Томпсон и Деннис Ритчи, будущие авторы первой версии UNIX.

Возникновение операционной системы UNIX

После прекращения проекта Multics, Кен Томпсон, Деннис Ритчи и некоторые другие сотрудники Bell Labs продолжили исследовательскую работу в области операционных систем, и вскоре предложили идею усовершенствованной файловой системы. По счастливому стечению обстоятельств, компания Bell Labs в то время испытывала острую потребность в удобных и эффективных средствах ведения документации, и новая файловая система могла здесь оказаться полезной.
В 1969 Кен Томпсон реализовал на машине PDP-7 операционную систему, включающую в себя новую файловую систему, а также специальные средства управления процессами и памятью, позволяющие работать на одной машине PDP-7 сразу двум пользователям в режиме разделения времени. Первыми пользователями новой операционной системы стали сотрудники патентного отдела Bell Labs.
Брайан Керниган предложил назвать новую систему UNICS – Uniplexed Information and Computing System. Название понравилось разработчикам, отчасти еще и потому, что напоминало Multics. Вскоре название стали записывать как UNIX – произносится также, но запись короче на одну букву. Это название дошло до настоящего времени.
В 1971 году, после переноса UNIX на PDP-11, была выпущена первая редакция документации, и новая операционная система появилась уже официально.
Первая редакция UNIX была написана на ассемблере, что накладывало определенные трудности при переносе операционной системы на другие платформы, поэтому для работы над второй редакцией UNIX, Кен Томпсон разработал собственный язык программирования B. Вторая редакция вышла в 1972 году и содержала программные каналы, позволяющие устанавливать взаимодействие между программами, одновременно выполняющимися на ЭВМ.
Появление операционной системы, написанной не на ассемблере, было революционным шагом в области системного программирования, но язык B содержал в себе ряд ограничений, сдерживающих его применение. Поэтому в 1973 году Деннис Ритчи разработал язык C, и операционная система была переписана на новом языке.
В 1975 году появилась первая коммерческая версия UNIX, известная как UNIX v.6 и UNIX начала свое триумфальное шествие по миру.

Основные этапы развития UNIX

1976. В университете г. Беркли сложилась группа студентов и профессоров, серьезна занявшаяся системой UNIX. В последствие группой университета Беркли основала собственную ветвь развития ОС UNIX – BSD UNIX (Berkeley Software Distribution). В ветви BSD впервые появились такие известные компоненты UNIX, как текстовый редактор vi, стек протоколов TCP/IP, страничный механизм в системе управления виртуальной памятью.
1977. Первый опыт по переносу UNIX на другую аппаратную платформу (отличную от PDP-11). В университете Воллонгонга в Австралии профессор Джюрис Рейндфельдс частично перенес UNIX на 32 разрядную машину.
1978. Томпсон и Ритчи в Bell Labs осуществили полный перенос UNIX на 32 разрядную машину. Перенос сопровождался существенными изменениями в организации системы, которые позволили упростить последующие переносы UNIX на другие платформы. Одновременно язык C был расширен практически до современного состояния.
1978. Специально для поддержки UNIX в Bell Labs создано подразделение USG (UNIX Support Group).
1982. USG выпустила UNIX System III, которая аккумулировала лучшие решения, представленные в различных версиях UNIX, известных к тому времени. Впервые представлены именованные программные каналы.
1983. Выход Unix System V. В ней впервые представлены семафоры, средства разделения памяти и очереди сообщений, а для повышения производительности использовано кэширование данных.
1984. USG преобразована в лабораторию по развитию UNIX – USDL (UNIX System Development Laboratories). Выпущена версия UNIX System V Release 2 (SVR2). В системе реализована возможность блокировки файлов и копирования совместно используемых страниц памяти при записи.
1986. Появление графического интерфейса для UNIX-подобных операционных систем – графическая система X Windows.
1987. USDL выпустила UNIX System V Release 3 (SVR3). Впервые представлены современные возможности межпроцессного взаимодействия, разделение удаленных файлов, обработка сигналов.
1989. Выход UNIX System V Release 4 (SVR4). UNIX впервые реализована на основе концепции микроядра. Введена поддержка процессов реального времени, и легковесных процессов.

Операционная система Linux

В настоящее время операционная система Linux переживает этап бурного развития. И хотя это молодая операционная система, возраст которой всего чуть более 10 лет, она уже успела получить признание многих тысяч пользователей.
У истоков операционной системы Linux стоял Линус Торвальдс, в то время студент-первокурсник, который в конце 1991 г. поместил в Интернет разработанную им микро операционную систему Linux и пригласил всех желающих принять участие в развитии этой системы. В результате к проекту подключилось множество талантливых программистов, и совместными усилиями большого числа людей, взаимодействующих через Интернет, была разработана весьма совершенная операционная система.
В основу Linux легли некоторые решения из UNIX BSD 4.2, и поэтому Linux обычно рассматривают как самостоятельную ветвь UNIX-подобных операционных систем.
В настоящее время Linux развивается в рамках технологии Open Source – открытых исходных текстов, доступных всем желающим. Любой человек может разработать и послать свои изменения или дополнения к Linux, а инсталляцию Linux можно получить бесплатно через Интернет.
В настоящее время Linux также разделился на несколько самостоятельных ветвей, между которыми все еще много общего, но есть отличия в реализации некоторых компонентов, как в ядре системы, так и в различных утилитах.
Операционная система Linux сейчас рассматривается многими людьми как серьезная альтернатива операционным системам семейства Windows. Система Linux устойчиво работает и обеспечивает высокую производительность. Единственное, что все еще сдерживает распространение Linux, это недостаточное число офисных прикладных программ, таких как текстовые процессоры или электронные таблицы. Но в последнее время количество таких программ неуклонно растет, а качество их пользовательских интерфейсов приближается к привычному для пользователей Windows.
Еще одна проблема системы Linux состоит в том, что она обычно отстает с поддержкой новейших аппаратных средств, но это тоже имеет свое объяснение. Разработчики этих аппаратных средств всегда предоставляют ведущим производителям операционных систем сведения о них еще до появления данного аппаратного средства на рынке, поэтому, например, Windows обычно обеспечивает поддержку новых аппаратных средств сразу же при их появлении на рынке. Авторитет системы Linux в среде разработчиков аппаратных средств неуклонно растет, поэтому можно надеяться, что проблема поддержки аппаратных средств скоро решиться.

Операционная система Windows

В настоящее время семейство операционных систем Windows – это наиболее массовые операционные система для персональных компьютеров. Все эти операционные системы имеют весьма схожий (и весьма совершенный!) графический интерфейс пользователя, но существенно различаются по внутреннему строению.
В семействе Windows, операционные системы Windows 95/98/Me представляют ветвь потребительских операционных систем, ориентированных, прежде всего, на домашнее использование, а система Windows XP в первую очередь ориентирована на 64-х битную платформу, и в 32-х битной реализации отличается от Windows 2000 в основном интерфейсом.
Современная операционная система Windows 2000 является типичной многозадачной операционной системой, поддерживающей виртуальную память, файловую систему, сеть, графический интерфейс пользователя, средства мультимедиа. Она прямо происходит от Windows NT и практически не имеет ничего общего с операционной системой MS-DOS, широко распространенной около десятилетия назад. Тем не менее, развитие операционных систем Microsoft происходило последовательно, и их историю логичнее всего начать именно от DOS.
1983. Выходит операционная система MS-DOS 2.0, включающая поддержку накопителя на жестком диске, файловой системы с иерархической структурой имен файлов, загружаемых драйверов устройств. В дальнейшем, все версии Windows, вплоть до Windows NT работали как надстройка над DOS версии не ниже 2.0, используя его файловую систему и системные функции для работы с аппаратурой компьютера.
1985. Выходит первая версия Windows – Windows 1.01. В то время Windows еще не является полноценной операционной системой и требует для своей работы операционную систему DOS 2.0. Система Windows 1.01 поддерживает только не перекрывающиеся окна и позволяет пользователям переключаться между программами без их перезапуска. К моменту появления Windows 1.01, на рынке уже представлено несколько графических оболочек для DOS, однако все они, как и Windows, не пользуются особой популярностью из-за отсутствия программ. Кроме того, работа в не перекрывающихся окнах неудобна.
1987. Выходит версия Windows 2.0, поддерживающая перекрывающиеся окна. Одновременно с выходом Windows 2.0 на рынке появляется электронная таблица Microsoft Excel и текстовый процессор Word 1.0 – по настоящему удобное программное обеспечение для Windows. Благодаря удобному графическому интерфейсу и наличию полезных прикладных программ, версия Windows 2.0 становится популярной, за пол года продано миллион копий.
1988. Выходит версия Windows 2.1, поддерживающая расширенную память на процессоре 80286 и многозадачность на процессоре 80386. Для этой версии становится обязательным наличие в составе компьютера накопителя на жестком магнитном диске (до этого достаточно было дискет).
1990. Выходит версия Windows 3.0. Она запускается в защищенном режиме процессора и поддерживает свопинг для программ и данных, основанный на дескрипторах блоков памяти. При этом, пока данные из некоторого блока памяти не требуются, система может по своему усмотрению перемещать этот блок в памяти и даже сбрасывать на диск его данные. Но когда эти данные понадобятся какой либо программе, она должна указать это системе и передать ей дескриптор блока памяти для идентификации требуемого блока (при выделении блока памяти система возвращает его дескриптор). Получив требование на доступ к памяти, система блокирует данный блок в памяти и передает приложению указатель на начало блока. Система больше не может перемещать этот блок памяти, пока приложение не проинформирует ее, что обращение к данным из этого блока памяти больше не требуется. Начиная с версии Windows 3.0 программы MS-DOS могут запускаться в окне.
1992. Выходит версия Windows 3.1, которая представляет собой просто дальнейшее усовершенствование Windows 3.0, но это первая версия Windows, получившая широкое распространение в России. Вскоре Windows 3.1 становится самой популярной по числу инсталляций системой в США и удерживает первенство вплоть до 1997 года.
1993. Выходит версия Windows 3.11, дополненная поддержкой сети (электронная почта, совместный доступ к файлам, рабочие группы).
1993. Выходит операционная система Windows NT (NT – New Technology) – первая полноценная операционная система семейства Windows, не требующая для своей работы базиса в виде MS-DOS. Для работы Windows NT требуется процессор не ниже 80386, в ней реализована полноценная виртуальная память, вытесняющая многозадачность, новая файловая система. Начиная с Windows NT, разделились потребительская и профессиональная ветви.
1995. Выходит операционная система Windows 95, являясь дальнейшим развитием Windows 3.11, она становится первой потребительской версией Windows, не требующей для своей работы DOS. В Windows 95 впервые представлен новый графический интерфейс пользователя, очень удобный, интуитивно понятный, он выводит Windows на первое место в мире по удобству использования и качеству пользовательского интерфейса.
1996. Выходит операционная система Windows NT4. Она является дальнейшим развитием Windows NT и получает пользовательский интерфейс Windows 95. В скором времени операционная система Windows NT4 станет одной из самых популярных для профессиональной работы.
2000. Выходит операционная система Windows 2000. Она в основном унаследовала внутреннюю архитектуру Windows NT, но было введено ряд дополнительных сервисов, например, поддержка распределенных вычислений.
2000. Выходит операционная система Windows Me, являющаяся дальнейшим развитием Windows 95/98. Однако объявлено, что она станет последней потребительская версией Windows. Отделившаяся в 1993 году потребительская ветвь вновь сливается с профессиональной, и дальше будет развиваться единая ветвь Windows XP.
и т.д. и т.п.
2006. Vista

Этапы развития операционных систем

Резюме к главе 1

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

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

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

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

Контрольные вопросы к главе 1

1. В чем отличие операционных систем от других программ? 2. Каковы основные функции операционной системы? 3. Какие виды программного обеспечения Вы знаете? 4. Что является основной частью операционной системы? 5. Какие категории операционных систем Вам известны? 6. Возможно ли экстраполировать (распространить) принципы построения операционных систем на разработку прикладных программ?


ГЛАВА 2. ИСТОРИЯ РАЗВИТИЯ ОПЕРАЦИОННЫХ СИСТЕМ

Первый период (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-х стали бурно развиваться сети персональных компьютеров, работающие под управлением сетевых или распределенных ОС.

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

ВСЕРОССИЙСКИЙ ЗАОЧНЫЙ ФИНАНСОВО-ЭКОНОМИЧЕСКИЙ ИНСТИТУТ

КАФЕДРА АВТОМАТИЗИРОВАННОЙ ОБРАБОТКИ ЭКОНОМИЧЕСКОЙ ИНФОРМАТИКИ

КУРСОВАЯ РАБОТА

по дисциплине «Информатика »

«Назначение, эволюция и классификация операционных систем»

Исполнитель:

Смертин Николай Олегович

Специальность Менеджмент организации

Группа 2 (ФНО)

№ зачетной книжки 10ММД46177 Руководитель:

Хохлова Ольга Александровна

Архангельск – 2011

Введение…………………………………………………………………………… 3

1. Назначение, эволюция и классификация операционных систем…………… 4

Введение……………………………………………………………………… 4

1.1. Назначение операционных систем…………………………………….. 5

1.2. Классификация операционных систем………………………………… 11

1.3. Эволюция операционных систем………………………………………. 13

Заключение…………………………………………………………………… 15

2. Практическая часть……………………………………………………………...16

2.1. Общая характеристика задачи………………………………………….. 16

2.2. Описание алгоритма решения………………………………………….. 18

Список литературы…………………………………………………………………21

Приложения………………………………………………………………………. 22

Введение

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

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

В практической части контрольной работы на основании исходных данных будет сформирована ведомость зарплаты организации. В ходе выполнения практической части будут использованы табличный процессор MS Excel, мастер сводных таблиц и диаграмм, изучены возможности функции ПРОСМОТР().

Работа выполненана ПКIntelPentiumIV – 2,4 ГГц/ 1024 МbRAM/ 80 GbHDD/ RW/DVD 52x32x52x/ FDD 1,44

Для выполнения работы использовались следующие программы:

1. Операционнаясистема – Microsoft Windows XP Professional

2. Текстовый редактор «MSWord – 2007»

3. Табличный процессор «MSExcel– 2007»

1. Назначение, эволюция и классификация операционных

систем.

План

Введение

1.1. Назначение операционных систем

1.2. Классификация операционных систем

1.3. Эволюция операционных систем

Заключение

Введение

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

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

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

1.1 Назначение операционных систем

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

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

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

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

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

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

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

· Безопасность. Современная ОС должна защищать данные и другие ресурсы вычислительной системы от несанкционированного доступа. Чтобы ОС обладала свойством безопасности, она должна как минимум иметь в своем составе средства определения легальности пользователей, предоставления легальным пользователям дифференцированных прав доступа к ресурсам, а так же обладать фиксации всех «подозрительных» для безопасности системы событий. Свойство безопасности особенно важно для сетевых ОС. В таких ОС к задаче контроля доступа добавляется задача защиты данных, передаваемых по сети;

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


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

В основном эволюцию развития ОС разделяют на 5 поколений:

Первое поколение (1940 – 50). Только появились ламповые вычислительные устройства. Разработан принцип программы. ОС отсутствуют, вся работа по управлению ведется разработчиками.

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

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

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

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

Также существует 5 основных подходов к построению ОС


  • Монолитное ядро

  • Микроядернаяархитектура

  • Многоуровневая система

  • Виртуальная машина

  • Смешанная система

  1. Архитектура операционной системы. Классификация операционных систем. Эффективность и требования, предъявляемые к ОС.
Рассмотрим существующие архитектуры ОС.

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

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

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

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

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

У ОС сформировалась своя классификация:


  • по назначению (общего, специального),

  • по режиму обработки задач (однозадачные, мультипрограммные),

  • по способу взаимодействия с системой (диалоговые, с пакетной обработкой)

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

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

  • Надежность и отказоустойчивость.

  • Безопасность (защищенность).

  • Предсказуемость.

  • Расширяемость.

  • Переносимость.

  • Совместимость.

  • Удобство.

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

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

Процессы могут находиться в пяти основных состояниях:


  • рождение,

  • готовность,

  • исполнение,

  • ожидание,

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

  • состояние, в котором находится процесс;

  • адрес команды, которая должна быть выполнена для него следующей;

  • содержимое регистров процессора;

  • данные, необходимые для планирования использования процессора и управления памятью;

  • учетные данные;

  • сведения об устройствах ввода-вывода, связанных с процессом.
Из состояния в состояние процесс переводится операционной системой в результате выполнения над ним операций. Операционная система может выполнять над процессами следующие пары операций:

  • создание процесса - завершение процесса,

  • приостановка процесса - запуск процесса,

  • блокирование процесса - разблокирование процесса,

  • изменение приоритета процесса.


  1. Уровни планирования процессов в операционных системах. Основные цели и критерии планирования и параметры, на которых оно основывается. Алгоритмы планирования.
Планирование – это работа по определению того, в какой момент времени прервать выполнение одного процесса и какому процессу предоставить возможность выполняться.

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


  • долгосрочное;

  • краткосрочное;

  • среднесрочное.
К числу целей можно отнести следующие:

  • Справедливость.

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

  • Сокращение полного времени выполнения.

  • Сокращение времени ожидания.

  • Сокращение времени отклика.
Критерии планирования:

  • Предсказуемость.

  • Минимальные накладные расходы.

  • Равномерная загрузка ресурсов вычислительной системы

  • Масштабируемость
Параметры планирования:

  • Статические – предельные значения ресурсов системы: размер оперативной памяти, максимальное количество памяти на диске для осуществления свопинга, количество подключенных устройств ввода-вывода и т.п.

  • Динамические – значения ресурсов системы на текущий момент.
Алгоритмы планирования

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

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

ShortestJobFirst. Если выбирать процесс не по порядку (как в FCFS и RR ), а основываясь на его минимальном времени непрерывного использования процессора, то это позволит повысить производительность алгоритма планирования использования процессора. Описанный алгоритм получил название «кратчайшая работа первой» (англ. ShortestJobFirst , SJF ).

Основную сложность при реализации алгоритма SJF представляет невозможность точно знать в каждом случае время исполнения очередного процесса.


  1. Кооперация процессов и основные аспекты ее логической организации (санкционированное взаимодействие процессов)
Для нормального функционирования процессов операционная система старается максимально обособить их друг от друга. Тем не менее существуют причины для их взаимодействия:

  • Повышение скорости работы.

  • Совместное использование данных.

  • Модульная конструкция какой-либо системы.

  • Удобства работы пользователя
Категории средств обмена информацией

  • Сигнальные.

  • Канальные.

  • Разделяемая память.
Логическая организация механизма передачи информации

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

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

Особенности передачи информации с помощью линий связи

Буферизация


  • Буфер нулевой емкости или отсутствует.

  • Буфер ограниченной емкости.

  • Буфер неограниченной емкости.
Поток ввода/вывода и сообщения

  • Поток ввода-вывода. Операции передачи/приема не интересуются содежимим данных

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

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


  1. Алгоритмы синхронизации (алгоритмы корректной организации взаимодействия процессов).
Критическая секция

Критическая секция – часть программы, результат выполнения которой может непредсказуемо меняться, если переменные, относящиеся к ней, изменяются другими потоками в то время, когда выполнение этой части еще не завершено. В примере критическая секция – файл “заказов”, являющийся разделяемым ресурсом для процессов R и S.

Алгоритм Деккера - первое известное корректное решение проблемы взаимного исключения.

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

Процессы объявляют о намерении войти в критическую секцию; это проверяется внешним циклом «while». Если другой процесс не заявил о таком намерении, в критическую секцию можно безопасно войти (вне зависимости от того, чья сейчас очередь). Взаимное исключение всё равно будет гарантировано, так как ни один из процессов не может войти в критическую секцию до установки этого флага (подразумевается, что, по крайней мере, один процесс войдёт в цикл «while»). Это также гарантирует продвижение, так как не будет ожидания процесса, оставившего «намерение» войти в критическую секцию. В ином случае, если переменная другого процесса была установлена, входят в цикл «while» и переменная turn будет показывать, кому разрешено войти в критическую секцию. Процесс, чья очередь не наступила, оставляет намерение войти в критическую секцию до тех пор, пока не придёт его очередь (внутренний цикл «while»). Процесс, чья очередь пришла, выйдет из цикла «while» и войдёт в критическую секцию.

Не требует специальных Test-and-set инструкций, по этому легко переносим на разные языки программирования и архитектуры компьютеров

Действует только для двух процессов

Алгоритм Петерсона - программный алгоритм взаимного исключения потоков исполнения кода.

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

Как и алгоритм Деккера, действует только для 2 процессов

Более простая реализация, чем у алгоритма Деккера

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

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


  1. Специальные механизмы синхронизации – семафоры Дейкстры, мониторы Хора, очереди сообщений.
Семафоры

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

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

Обобщающее средство синхронизации процессов предложил Дейкстра, который ввел новые примитивы, обозначаемые V (“открытие”) и P (“закрытие”), оперирующие над целыми неотрицательными переменными, называемыми семафорами.

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

Смысл P(S) заключается в проверке текущего значения семафора S, и если S>0, то осуществляется переход к следующей за примитивом операции, иначе процесс переходит в состояние ожидания.

Процесс блокируется; S=S-1;

Операция V(S) связана с увеличением значения S на 1 и переводом одного или нескольких процессов в состояние готовности к исполнению процессором.

В простом случае, когда семафор работает в режиме 2-х состояний (S>0 и S=0), ео алгоритм работы полностью совпадает с алгоритмом работs мьютекса, а S выполняет роль блокирующей переменной.

“+”: пассивное ожидание (постановка в очередь и автоматическая выдача ресурсов)


  • возможность управления группой однородных ресурсов
“-”: не указывают непосредственно на критический ресурс

  • некорректное использование операций может привести к нарушению работоспособности (например, переставив местами операции P(e) и P(b) в функции Writer()).
Мониторы

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

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

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

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

Для организации не только взаимоисключений, но и очередности процессов, подобно семафорам f(full) и e(empty), было введено понятие условных переменных, над которыми можно совершать две операции wait и signal, отчасти похожие на операции P и V над семафорами.

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

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

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

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

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

Очереди сообщений

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

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

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

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

Основные функции управления очередью:


  • Создание новой очереди

  • Открытие существующей очереди

  • Чтение и удаление сообщений из очереди

  • Чтение без последующего удаления

  • Добавление сообщения в очередь

  • Завершение использование очереди

  • Удаление из очереди всех сообщений

  • Определение числа элементов в очереди

  1. Взаимоблокировки, тупиковые ситуации, "зависания" системы

страница 1

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

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

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

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

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


Рис. 3.2.

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

Началось интенсивное развитие методов управления данными, возникала такая важная функция ОС, как реализация ввода-вывода без участия центрального процесса – так называемый спулинг (от англ. SPOOL – Simultaneous Peripheral Operation on Line ).

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

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

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

Одной из первых ОС, использующих эти новейшие решения, была операционная система МСР (главная управляющая программа ), созданная фирмой Burroughs для своих компьютеров В5000 в 1963 году. В этой ОС были реализованы многие концепции и идеи, ставшие впоследствии стандартными для многих операционных систем (рис.3.3):

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

Известной системой разделения времени того периода стала система CTSS (Compatible Time Sharing System ) – совместимая система разделения времени, разработанная в Массачусетском технологическом институте (1963 год) для компьютера IBM -7094 . Эта система была использована для разработки в этом же институте совместно с Bell Labs и General Electric системы разделения времени следующего поколения MULTICS (Multiplexed Information And Computing Service ). Примечательно, что эта ОС была написана в основном на языке высокого уровня EPL (первая версия языка PL/1 фирма IBM ).

Одним из важнейших событий в истории операционных систем считается появление в 1964 году семейства компьютеров под названием System /360 фирмы IBM , а позже System /370. Это было первой в мире реализацией концепции семейства программно и информационно совместимых компьютеров, ставшей впоследствии стандартной для всех фирм компьютерной отрасли.


Рис. 3.3.

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

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

В начале 70-х годов появились первые сетевые ОС, которые позволили не только рассредоточить пользователей, как в системах телеобработки данных, но и организовать распределенное хранение и обработку данных между компьютерами, соединенными электрическими связями. Известен проект ARPANET MO США. В 1974 году IBM объявила о создании собственной сетевой архитектуры SNA для своих мэйнфреймов, обеспечивающей взаимодействие типа " терминал – терминал ", " терминал – компьютер ", " компьютер – компьютер ". В Европе активно разрабатывалась технология построения сетей с коммутацией пакетов на основе протоколов Х.25.

К середине 70-х годов наряду с мэйнфреймами широкое распространение получили мини-компьютеры ( PDP-11 , Nova, HP). Архитектура мини-компьютеров была значительно проще, многие функции мультипрограммных ОС мэйнфреймов были усечены. Операционные системы мини-ЭВМ стали делать специализированными ( RSX -11M – разделение времени , RT-11 – OC реального времени) и не всегда многопользовательскими.

Важной вехой в истории мини-компьютеров и вообще в истории операционных систем явилось создание ОС UNIX . Написал эту систему Кен Томпсон (Ken Thompson), один из специалистов по компьютерам в BELL Labs , работавший над проектом MULTICS . Собственно, его UNIX – это усеченная однопользовательская версия системы MULTICS . Первоначальное название этой системы – UNICS (UNiplexed Information and Computing Service ) – "примитивная информационная и компьютерная служба". Так в шутку была названа эта система, поскольку MULTICS (MULTiplexed Information and Computing Service ) – мультиплексная информационная и компьютерная служба. С середины 70-х годов началось массовое использование ОС UNIX , написанной на 90% на языке С. Широкое распространение С-компиляторов сделало UNIX уникальной переносимой OC, а поскольку она поставлялась вместе с исходными кодами, то она стала первой открытой операционной системой. Гибкость, элегантность, мощные функциональные возможности и открытость позволили ей занять прочные позиции во всех классах компьютеров – от персональных до супер-ЭВМ .

Доступность мини-компьютеров послужила стимулом для создания локальных сетей. В простейших ЛВС компьютеры соединялись через последовательные порты. Первое сетевое приложение для ОС UNIX – программа UUCP ( Unix to Unix Copy Program) – появилось в 1976 году.

Дальнейшее развитие сетевых систем шло со стеком протоколов TCP/IP . В 1983 году он был принят MO США в качестве стандарта и использован в сети ARPANET . В этом же году ARPANET разделилась на MILNET (для военного ведомства США) и новую ARPANET , которую стали называть Internet .

Все восьмидесятые годы характерны появлением все более совершенных версий UNIX : Sun OS, HP-UX , Irix, AIX и др. Для решения проблемы их совместимости были приняты стандарты POSIX и XPG, определяющие интерфейсы этих систем для приложений.

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

Наиболее популярной версией ОС раннего этапа развития персональных компьютеров была MS-DOS компании Microsoft – однопрограммная, однопользовательская ОС с интерфейсом командной строки. Многие функции, обеспечивающие удобство работы пользователя, в этой ОС предоставлялись дополнительными программами – оболочкой Norton Commander , PC Tools и др. Наибольшее влияние на развитие программного обеспечения ПК оказала операционная среда Windows , первая версия которой появилась в 1985 году. Сетевые функции также реализовались с помощью сетевых оболочек и появились в MS-DOS версии 3.1. В это же время вышли в свет сетевые продукты Microsoft – MS-NET , а позже – LAN Manager , Windows for Workgroup, а затем и Windows NT.

Другим путем пошла компания Novell, ее продукт NetWare является операционной системой со встроенными сетевыми функциями. ОС NetWare распространялась как